Always require --local-engine-host
if --local-engine
(#133003)
Closes #132245.
This commit is contained in:
parent
97e434f86a
commit
a021015ef6
@ -308,12 +308,10 @@ class UserMessages {
|
||||
"you have compiled the engine in that directory, which should produce an 'out' directory";
|
||||
String get runnerLocalEngineOrWebSdkRequired =>
|
||||
'You must specify --local-engine or --local-web-sdk if you are using a locally built engine or web sdk.';
|
||||
// TODO(matanlurey): Make this an error, https://github.com/flutter/flutter/issues/132245.
|
||||
String runnerLocalEngineRequiresHostEngine({bool warning = false}) =>
|
||||
'${warning ? 'Warning! ' : ''}You are using a locally built engine (--local-engine) but have not specified --local-engine-host.\n'
|
||||
String get runnerLocalEngineRequiresHostEngine =>
|
||||
'You are using a locally built engine (--local-engine) but have not specified --local-engine-host.\n'
|
||||
'You may be building with a different engine than the one you are running with. '
|
||||
'See https://github.com/flutter/flutter/issues/132245 for details (in the future this will become '
|
||||
'an error).';
|
||||
'See https://github.com/flutter/flutter/issues/132245 for details.';
|
||||
String runnerNoEngineBuild(String engineBuildPath) =>
|
||||
'No Flutter engine build found at $engineBuildPath.';
|
||||
String runnerNoWebSdk(String webSdkPath) =>
|
||||
|
@ -276,11 +276,6 @@ Future<T> runInContext<T>(
|
||||
platform: globals.platform,
|
||||
fileSystem: globals.fs,
|
||||
flutterRoot: Cache.flutterRoot!,
|
||||
// TODO(matanlurey): https://github.com/flutter/flutter/issues/132245.
|
||||
// Even though we *think* this feature is stable, we'd like to verify
|
||||
// that automated tests are all providing `--local-engine-host` before
|
||||
// enforcing it for all users.
|
||||
treatMissingLocalEngineHostAsFatal: runningOnBot,
|
||||
),
|
||||
Logger: () => globals.platform.isWindows
|
||||
? WindowsStdoutLogger(
|
||||
|
@ -33,20 +33,17 @@ class LocalEngineLocator {
|
||||
required FileSystem fileSystem,
|
||||
required String flutterRoot,
|
||||
required UserMessages userMessages,
|
||||
bool treatMissingLocalEngineHostAsFatal = false,
|
||||
}) : _platform = platform,
|
||||
_logger = logger,
|
||||
_fileSystem = fileSystem,
|
||||
_flutterRoot = flutterRoot,
|
||||
_userMessages = userMessages,
|
||||
_treatMissingLocalEngineHostAsFatal = treatMissingLocalEngineHostAsFatal;
|
||||
_userMessages = userMessages;
|
||||
|
||||
final Platform _platform;
|
||||
final Logger _logger;
|
||||
final FileSystem _fileSystem;
|
||||
final String _flutterRoot;
|
||||
final UserMessages _userMessages;
|
||||
final bool _treatMissingLocalEngineHostAsFatal;
|
||||
|
||||
/// Returns the engine build path of a local engine if one is located, otherwise `null`.
|
||||
Future<EngineBuildPaths?> findEnginePath({
|
||||
@ -170,26 +167,6 @@ class LocalEngineLocator {
|
||||
return engineSourcePath;
|
||||
}
|
||||
|
||||
// Determine the host engine directory associated with the local engine:
|
||||
// Strip '_sim' since there are no host simulator builds.
|
||||
String _getHostEngineBasename(String localEngineBasename) {
|
||||
if (localEngineBasename.startsWith('web_') ||
|
||||
localEngineBasename.startsWith('wasm_') ||
|
||||
localEngineBasename.startsWith('host_')) {
|
||||
// Don't modify the web or host local engine's basename.
|
||||
return localEngineBasename;
|
||||
}
|
||||
|
||||
String tmpBasename = localEngineBasename.replaceFirst('_sim', '');
|
||||
tmpBasename = tmpBasename.substring(tmpBasename.indexOf('_') + 1);
|
||||
// Strip suffix for various archs.
|
||||
const List<String> suffixes = <String>['_arm', '_arm64', '_x86', '_x64'];
|
||||
for (final String suffix in suffixes) {
|
||||
tmpBasename = tmpBasename.replaceFirst(RegExp('$suffix\$'), '');
|
||||
}
|
||||
return 'host_$tmpBasename';
|
||||
}
|
||||
|
||||
EngineBuildPaths _findEngineBuildPath({
|
||||
required String engineSourcePath,
|
||||
String? localEngine,
|
||||
@ -209,16 +186,10 @@ class LocalEngineLocator {
|
||||
}
|
||||
|
||||
if (localHostEngine == null) {
|
||||
// TODO(matanlurey): https://github.com/flutter/flutter/issues/132245, always throwToolExit.
|
||||
if (_treatMissingLocalEngineHostAsFatal) {
|
||||
throwToolExit(_userMessages.runnerLocalEngineRequiresHostEngine());
|
||||
}
|
||||
_logger.printStatus(_userMessages.runnerLocalEngineRequiresHostEngine(warning: true));
|
||||
throwToolExit(_userMessages.runnerLocalEngineRequiresHostEngine);
|
||||
}
|
||||
final String basename = localHostEngine ?? _fileSystem.path.basename(engineBuildPath);
|
||||
final String hostBasename = _getHostEngineBasename(basename);
|
||||
engineHostBuildPath = _fileSystem.path.normalize(
|
||||
_fileSystem.path.join(_fileSystem.path.dirname(engineBuildPath), hostBasename),
|
||||
_fileSystem.path.join(_fileSystem.path.dirname(engineBuildPath), localHostEngine),
|
||||
);
|
||||
if (!_fileSystem.isDirectorySync(engineHostBuildPath)) {
|
||||
throwToolExit(_userMessages.runnerNoEngineBuild(engineHostBuildPath), exitCode: 2);
|
||||
|
@ -43,7 +43,7 @@ void main() {
|
||||
);
|
||||
|
||||
expect(
|
||||
await localEngineLocator.findEnginePath(localEngine: 'ios_debug'),
|
||||
await localEngineLocator.findEnginePath(localEngine: 'ios_debug', localHostEngine: 'host_debug'),
|
||||
matchesEngineBuildPaths(
|
||||
hostEngine: '/arbitrary/engine/src/out/host_debug',
|
||||
targetEngine: '/arbitrary/engine/src/out/ios_debug',
|
||||
@ -58,7 +58,7 @@ void main() {
|
||||
.writeAsStringSync('sky_engine:file:///symlink/src/out/ios_debug/gen/dart-pkg/sky_engine/lib/');
|
||||
|
||||
expect(
|
||||
await localEngineLocator.findEnginePath(localEngine: 'ios_debug'),
|
||||
await localEngineLocator.findEnginePath(localEngine: 'ios_debug', localHostEngine: 'host_debug'),
|
||||
matchesEngineBuildPaths(
|
||||
hostEngine: '/symlink/src/out/host_debug',
|
||||
targetEngine: '/symlink/src/out/ios_debug',
|
||||
@ -84,7 +84,7 @@ void main() {
|
||||
);
|
||||
|
||||
expect(
|
||||
await localEngineLocator.findEnginePath(engineSourcePath: '$kArbitraryEngineRoot/src', localEngine: 'ios_debug'),
|
||||
await localEngineLocator.findEnginePath(engineSourcePath: '$kArbitraryEngineRoot/src', localEngine: 'ios_debug', localHostEngine: 'host_debug'),
|
||||
matchesEngineBuildPaths(
|
||||
hostEngine: '/arbitrary/engine/src/out/host_debug',
|
||||
targetEngine: '/arbitrary/engine/src/out/ios_debug',
|
||||
@ -119,7 +119,7 @@ void main() {
|
||||
expect(logger.traceText, contains('Local engine source at /arbitrary/engine/src'));
|
||||
});
|
||||
|
||||
testWithoutContext('works but produces a warning if --local-engine is specified but not --local-engine-host', () async {
|
||||
testWithoutContext('fails if --local-engine-host is omitted', () async {
|
||||
final FileSystem fileSystem = MemoryFileSystem.test();
|
||||
final Directory localEngine = fileSystem
|
||||
.directory('$kArbitraryEngineRoot/src/out/android_debug_unopt_arm64/')
|
||||
@ -135,33 +135,6 @@ void main() {
|
||||
platform: FakePlatform(environment: <String, String>{}),
|
||||
);
|
||||
|
||||
expect(
|
||||
await localEngineLocator.findEnginePath(localEngine: localEngine.path),
|
||||
matchesEngineBuildPaths(
|
||||
hostEngine: '/arbitrary/engine/src/out/host_debug_unopt',
|
||||
targetEngine: '/arbitrary/engine/src/out/android_debug_unopt_arm64',
|
||||
),
|
||||
);
|
||||
expect(logger.statusText, contains('Warning! You are using a locally built engine (--local-engine) but have not specified --local-engine-host'));
|
||||
});
|
||||
|
||||
testWithoutContext('fails if --local-engine-host is emitted and treatMissingLocalEngineHostAsFatal is set', () async {
|
||||
final FileSystem fileSystem = MemoryFileSystem.test();
|
||||
final Directory localEngine = fileSystem
|
||||
.directory('$kArbitraryEngineRoot/src/out/android_debug_unopt_arm64/')
|
||||
..createSync(recursive: true);
|
||||
fileSystem.directory('$kArbitraryEngineRoot/src/out/host_debug_unopt/').createSync(recursive: true);
|
||||
|
||||
final BufferLogger logger = BufferLogger.test();
|
||||
final LocalEngineLocator localEngineLocator = LocalEngineLocator(
|
||||
fileSystem: fileSystem,
|
||||
flutterRoot: 'flutter/flutter',
|
||||
logger: logger,
|
||||
userMessages: UserMessages(),
|
||||
platform: FakePlatform(environment: <String, String>{}),
|
||||
treatMissingLocalEngineHostAsFatal: true,
|
||||
);
|
||||
|
||||
await expectLater(
|
||||
localEngineLocator.findEnginePath(localEngine: localEngine.path),
|
||||
throwsToolExit(message: 'You are using a locally built engine (--local-engine) but have not specified --local-engine-host'),
|
||||
@ -186,7 +159,7 @@ void main() {
|
||||
);
|
||||
|
||||
expect(
|
||||
await localEngineLocator.findEnginePath(localEngine: localEngine.path),
|
||||
await localEngineLocator.findEnginePath(localEngine: localEngine.path, localHostEngine: 'host_debug'),
|
||||
matchesEngineBuildPaths(
|
||||
hostEngine: '/arbitrary/engine/src/out/host_debug',
|
||||
targetEngine: '/arbitrary/engine/src/out/ios_debug',
|
||||
@ -212,7 +185,7 @@ void main() {
|
||||
);
|
||||
|
||||
expect(
|
||||
await localEngineLocator.findEnginePath(localEngine: localEngine.path),
|
||||
await localEngineLocator.findEnginePath(localEngine: localEngine.path, localHostEngine: localEngine.path),
|
||||
matchesEngineBuildPaths(
|
||||
hostEngine: '/arbitrary/engine/src/out/host_debug',
|
||||
targetEngine: '/arbitrary/engine/src/out/host_debug',
|
||||
@ -237,7 +210,7 @@ void main() {
|
||||
);
|
||||
|
||||
expect(
|
||||
await localEngineLocator.findEnginePath(localEngine: localEngine.path),
|
||||
await localEngineLocator.findEnginePath(localEngine: localEngine.path, localHostEngine: localEngine.path),
|
||||
matchesEngineBuildPaths(
|
||||
hostEngine: '/arbitrary/engine/src/out/host_debug_unopt_arm64',
|
||||
targetEngine: '/arbitrary/engine/src/out/host_debug_unopt_arm64',
|
||||
@ -264,7 +237,7 @@ void main() {
|
||||
);
|
||||
|
||||
expect(
|
||||
await localEngineLocator.findEnginePath(localEngine: localEngine.path),
|
||||
await localEngineLocator.findEnginePath(localEngine: localEngine.path, localHostEngine: 'host_debug'),
|
||||
matchesEngineBuildPaths(
|
||||
hostEngine: '/arbitrary/engine/src/out/host_debug',
|
||||
targetEngine: '/arbitrary/engine/src/out/ios_debug_sim',
|
||||
@ -292,7 +265,7 @@ void main() {
|
||||
);
|
||||
|
||||
expect(
|
||||
await localEngineLocator.findEnginePath(localEngine: localEngine.path),
|
||||
await localEngineLocator.findEnginePath(localEngine: localEngine.path, localHostEngine: 'host_debug_unopt'),
|
||||
matchesEngineBuildPaths(
|
||||
hostEngine: '/arbitrary/engine/src/out/host_debug_unopt',
|
||||
targetEngine: '/arbitrary/engine/src/out/ios_debug_sim_unopt',
|
||||
@ -315,7 +288,7 @@ void main() {
|
||||
);
|
||||
|
||||
await expectToolExitLater(
|
||||
localEngineLocator.findEnginePath(localEngine: localEngine.path),
|
||||
localEngineLocator.findEnginePath(localEngine: localEngine.path, localHostEngine: 'host_debug'),
|
||||
contains('No Flutter engine build found at /arbitrary/engine/src/out/host_debug'),
|
||||
);
|
||||
});
|
||||
@ -344,7 +317,7 @@ void main() {
|
||||
);
|
||||
|
||||
expect(
|
||||
await localEngineLocator.findEnginePath(localEngine: 'ios_debug'),
|
||||
await localEngineLocator.findEnginePath(localEngine: 'ios_debug', localHostEngine: 'host_debug'),
|
||||
matchesEngineBuildPaths(
|
||||
hostEngine: 'flutter/engine/src/out/host_debug',
|
||||
targetEngine: 'flutter/engine/src/out/ios_debug',
|
||||
@ -366,7 +339,7 @@ void main() {
|
||||
);
|
||||
|
||||
await expectToolExitLater(
|
||||
localEngineLocator.findEnginePath(localEngine: '/path/to/nothing'),
|
||||
localEngineLocator.findEnginePath(localEngine: '/path/to/nothing', localHostEngine: '/path/to/nothing'),
|
||||
contains('Unable to detect local Flutter engine src directory'),
|
||||
);
|
||||
});
|
||||
@ -390,7 +363,7 @@ void main() {
|
||||
);
|
||||
|
||||
expect(
|
||||
await localWasmEngineLocator.findEnginePath(localEngine: localWasmEngine.path),
|
||||
await localWasmEngineLocator.findEnginePath(localEngine: localWasmEngine.path, localHostEngine: localWasmEngine.path),
|
||||
matchesEngineBuildPaths(
|
||||
hostEngine: '/arbitrary/engine/src/out/wasm_whatever',
|
||||
targetEngine: '/arbitrary/engine/src/out/wasm_whatever',
|
||||
@ -408,7 +381,7 @@ void main() {
|
||||
);
|
||||
|
||||
expect(
|
||||
await localWebEngineLocator.findEnginePath(localEngine: localWebEngine.path),
|
||||
await localWebEngineLocator.findEnginePath(localEngine: localWebEngine.path, localHostEngine: localWebEngine.path),
|
||||
matchesEngineBuildPaths(
|
||||
hostEngine: '/arbitrary/engine/src/out/web_whatever',
|
||||
targetEngine: '/arbitrary/engine/src/out/web_whatever',
|
||||
|
Loading…
x
Reference in New Issue
Block a user