Unverified Commit afe4830a authored by Zachary Anderson's avatar Zachary Anderson Committed by GitHub

[flutter_tool] Various fixes for 'run' for Fuchisa. (#44920)

parent 55530d90
{
"program": {
"data": "data/flutter_gallery"
},
"sandbox": {
"services": [
"fuchsia.cobalt.LoggerFactory",
"fuchsia.fonts.Provider",
"fuchsia.logger.LogSink",
"fuchsia.modular.Clipboard",
"fuchsia.sys.Environment",
"fuchsia.sys.Launcher",
"fuchsia.ui.input.ImeService",
"fuchsia.ui.policy.Presenter",
"fuchsia.ui.scenic.Scenic"
]
}
}
{
"program": {
"data": "data/hello_world"
},
"sandbox": {
"services": [
"fuchsia.cobalt.LoggerFactory",
"fuchsia.fonts.Provider",
"fuchsia.logger.LogSink",
"fuchsia.modular.Clipboard",
"fuchsia.sys.Environment",
"fuchsia.sys.Launcher",
"fuchsia.ui.input.ImeService",
"fuchsia.ui.policy.Presenter",
"fuchsia.ui.scenic.Scenic"
]
}
}
...@@ -102,7 +102,7 @@ class FuchsiaAmberCtl { ...@@ -102,7 +102,7 @@ class FuchsiaAmberCtl {
/// the Fuchsia package server that it was accessing via [serverUrl]. /// the Fuchsia package server that it was accessing via [serverUrl].
Future<bool> pkgCtlRepoRemove(FuchsiaDevice device, FuchsiaPackageServer server) async { Future<bool> pkgCtlRepoRemove(FuchsiaDevice device, FuchsiaPackageServer server) async {
final String repoUrl = 'fuchsia-pkg://${server.name}'; final String repoUrl = 'fuchsia-pkg://${server.name}';
final RunResult result = await device.shell('pkgctl repo remove --repo-url $repoUrl'); final RunResult result = await device.shell('pkgctl repo rm $repoUrl');
return result.exitCode == 0; return result.exitCode == 0;
} }
} }
...@@ -246,14 +246,25 @@ class FuchsiaDevice extends Device { ...@@ -246,14 +246,25 @@ class FuchsiaDevice extends Device {
printError('Failed to find a free port'); printError('Failed to find a free port');
return LaunchResult.failed(); return LaunchResult.failed();
} }
// Try Start with a fresh package repo in case one was left over from a
// previous run.
final Directory packageRepo = final Directory packageRepo =
fs.directory(fs.path.join(getFuchsiaBuildDirectory(), '.pkg-repo')); fs.directory(fs.path.join(getFuchsiaBuildDirectory(), '.pkg-repo'));
packageRepo.createSync(recursive: true); try {
if (packageRepo.existsSync()) {
packageRepo.deleteSync(recursive: true);
}
packageRepo.createSync(recursive: true);
} catch (e) {
printError('Failed to create Fuchisa package repo directory '
'at ${packageRepo.path}: $e');
return LaunchResult.failed();
}
final String appName = FlutterProject.current().manifest.appName; final String appName = FlutterProject.current().manifest.appName;
final Status status = logger.startProgress( final Status status = logger.startProgress(
'Starting Fuchsia application...', 'Starting Fuchsia application $appName...',
timeout: null, timeout: null,
); );
FuchsiaPackageServer fuchsiaPackageServer; FuchsiaPackageServer fuchsiaPackageServer;
...@@ -332,8 +343,7 @@ class FuchsiaDevice extends Device { ...@@ -332,8 +343,7 @@ class FuchsiaDevice extends Device {
} }
// Instruct tiles_ctl to start the app. // Instruct tiles_ctl to start the app.
final String fuchsiaUrl = final String fuchsiaUrl = 'fuchsia-pkg://$packageServerName/$appName#meta/$appName.cmx';
'fuchsia-pkg://$packageServerName/$appName#meta/$appName.cmx';
if (!await fuchsiaDeviceTools.tilesCtl.add(this, fuchsiaUrl, <String>[])) { if (!await fuchsiaDeviceTools.tilesCtl.add(this, fuchsiaUrl, <String>[])) {
printError('Failed to add the app to tiles'); printError('Failed to add the app to tiles');
return LaunchResult.failed(); return LaunchResult.failed();
...@@ -345,8 +355,15 @@ class FuchsiaDevice extends Device { ...@@ -345,8 +355,15 @@ class FuchsiaDevice extends Device {
await fuchsiaDeviceTools.amberCtl.pkgCtlRepoRemove(this, fuchsiaPackageServer); await fuchsiaDeviceTools.amberCtl.pkgCtlRepoRemove(this, fuchsiaPackageServer);
} }
// Shutdown the package server and delete the package repo; // Shutdown the package server and delete the package repo;
printTrace('Shutting down the tool\'s package server.');
fuchsiaPackageServer?.stop(); fuchsiaPackageServer?.stop();
packageRepo.deleteSync(recursive: true); printTrace('Removing the tool\'s package repo: at ${packageRepo.path}');
try {
packageRepo.deleteSync(recursive: true);
} catch (e) {
printError('Failed to remove Fuchsia package repo directory '
'at ${packageRepo.path}: $e.');
}
status.cancel(); status.cancel();
} }
......
...@@ -58,7 +58,9 @@ class FuchsiaKernelCompiler { ...@@ -58,7 +58,9 @@ class FuchsiaKernelCompiler {
'--filesystem-root', fsRoot, '--filesystem-root', fsRoot,
'--packages', '$multiRootScheme:///$relativePackagesFile', '--packages', '$multiRootScheme:///$relativePackagesFile',
'--output', fs.path.join(outDir, '$appName.dil'), '--output', fs.path.join(outDir, '$appName.dil'),
'--no-link-platform', // TODO(zra): Add back when this is supported again.
// See: https://github.com/flutter/flutter/issues/44925
// '--no-link-platform',
'--split-output-by-packages', '--split-output-by-packages',
'--manifest', manifestPath, '--manifest', manifestPath,
'--component-name', appName, '--component-name', appName,
......
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