MCPcopy Create free account
hub / github.com/MiniZinc/MiniZincIDE / setLocation

Method setLocation

MiniZincIDE/process.cpp:134–224  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

132#endif
133
134void MznDriver::setLocation(const QString &mznDistribPath)
135{
136 clear();
137
138 _mznDistribPath = mznDistribPath;
139 MznProcess p;
140 QRegularExpression version_regexp("version (\\d+)\\.(\\d+)\\.(\\d+)");
141 _minizincExecutable = QStringList({"minizinc"});
142
143#ifdef Q_OS_MAC
144 int isTranslated = 0;
145 {
146 size_t size = sizeof(isTranslated);
147 if (sysctlbyname("sysctl.proc_translated", &isTranslated, &size, NULL, 0) == -1) {
148 isTranslated = 0;
149 }
150 }
151
152 if (isTranslated) {
153 _minizincExecutable = QStringList({"arch", "-arch", "arm64", "minizinc"});
154 }
155 for (int i = 0; i <= isTranslated; i++) {
156 if (i == 1) {
157 _minizincExecutable = QStringList({"minizinc"});
158 }
159 try {
160 auto result = p.run({"--version"});
161 _versionString = result.stdOut + result.stdErr;
162 QRegularExpressionMatch path_match = version_regexp.match(_versionString);
163 if (path_match.hasMatch()) {
164 break;
165 }
166 } catch (ProcessError& e) {
167 if (i == isTranslated) {
168 clear();
169 throw;
170 }
171 }
172 }
173#else
174 try {
175 auto result = p.run({"--version"});
176 _versionString = result.stdOut + result.stdErr;
177 } catch (ProcessError&) {
178 clear();
179 throw;
180 }
181#endif
182
183 QRegularExpressionMatch path_match = version_regexp.match(_versionString);
184 if (path_match.hasMatch()) {
185 _version = QVersionNumber(
186 path_match.captured(1).toInt(),
187 path_match.captured(2).toInt(),
188 path_match.captured(3).toInt()
189 );
190 } else {
191 QString message = _versionString;

Callers 3

initMethod · 0.80
loadDriverMethod · 0.80

Calls 4

DriverErrorClass · 0.85
runMethod · 0.45
toStringMethod · 0.45
clearMethod · 0.45

Tested by

no test coverage detected