Commit 6957eabe authored by Devon Carew's avatar Devon Carew Committed by GitHub

tweak the doctor check for host compatibility (#9720)

parent e8c46927
......@@ -44,7 +44,6 @@ class Doctor {
if (_validators == null) {
_validators = <DoctorValidator>[];
_validators.add(new _FlutterValidator());
_validators.add(new _HostExecutableValidator());
if (_androidWorkflow.appliesToHostPlatform)
_validators.add(_androidWorkflow);
......@@ -213,39 +212,26 @@ class _FlutterValidator extends DoctorValidator {
));
messages.add(new ValidationMessage('Engine revision ${version.engineRevisionShort}'));
messages.add(new ValidationMessage('Tools Dart version ${version.dartSdkVersion}'));
final String genSnapshotPath =
artifacts.getArtifactPath(Artifact.genSnapshot);
// Check that the binaries we downloaded for this platform actually run on it.
if (!_genSnapshotRuns(genSnapshotPath)) {
messages.add(new ValidationMessage.error('Downloaded executables cannot execute '
'on host (see https://github.com/flutter/flutter/issues/6207 for more information)'));
}
return new ValidationResult(valid, messages,
statusInfo: 'on ${os.name}, channel ${version.channel}');
}
}
class _HostExecutableValidator extends DoctorValidator {
_HostExecutableValidator() : super('Host Executable Compatibility');
bool _genSnapshotRuns(String genSnapshotPath) {
final int kExpectedExitCode = 255;
try {
return processManager.runSync(<String>[genSnapshotPath]).exitCode == kExpectedExitCode;
} catch (error) {
return false;
}
}
@override
Future<ValidationResult> validate() async {
final String genSnapshotPath =
artifacts.getArtifactPath(Artifact.genSnapshot);
final List<ValidationMessage> messages = <ValidationMessage>[];
final bool hostExecutablesRun = _genSnapshotRuns(genSnapshotPath);
final ValidationType valid = hostExecutablesRun ? ValidationType.installed : ValidationType.missing;
if (hostExecutablesRun) {
messages.add(new ValidationMessage('Downloaded executables execute on host'));
} else {
messages.add(new ValidationMessage.error(
'Downloaded executables cannot execute on host. See https://github.com/flutter/flutter/issues/6207 for more information'));
}
return new ValidationResult(valid, messages);
bool _genSnapshotRuns(String genSnapshotPath) {
final int kExpectedExitCode = 255;
try {
return processManager.runSync(<String>[genSnapshotPath]).exitCode == kExpectedExitCode;
} catch (error) {
return false;
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment