fix(bundle,cross): use ivi-homescreen -b flag, not --b=

ivi-homescreen registers the option as "b,bundle" (cxxopts), so the long
form is --bundle and --b= is rejected — the embedder fails to start. Only
the short -b <dir> form works. Fix the runnable run command executed over
SSH (cross --run), the bundle/runnable hints, tests, and docs.

Signed-off-by: Joel Winarske <joel.winarske@outlook.com>
This commit is contained in:
Joel Winarske
2026-06-20 20:23:46 -07:00
parent 8c5e9ee224
commit 16ab1fd572
6 changed files with 10 additions and 10 deletions
+3 -3
View File
@@ -125,7 +125,7 @@ emb setup --config ../configs --yes
emb bundle --app-path ./app/my_app --arch arm64 --build
# 4. Run it on the target
# ivi-homescreen --b=<workspace>/bundle/my_app-release-arm64
# ivi-homescreen -b <workspace>/bundle/my_app-release-arm64
```
`emb setup` runs every phase; you can also run them individually
@@ -450,12 +450,12 @@ emb cross <project-dir|manifest.yaml> [options]
| `--build` | off | Configure + build the embedder under the resolved profile, one build per `cross.backends` entry. |
| `--backend <name>` | all | Build only the named `cross.backends` entries. Repeatable. |
| `--deb` | off | With `--build`: package each backend binary into a root-free `.deb` (Depends auto-derived from the binary's needed libraries). |
| `--app <dir>` | — | With `--build`: also build this Flutter app for the target and assemble a **runnable bundle** (embedder + engine + flutter_assets + icudtl + libapp), runnable as `./homescreen --b=.`. |
| `--app <dir>` | — | With `--build`: also build this Flutter app for the target and assemble a **runnable bundle** (embedder + engine + flutter_assets + icudtl + libapp), runnable as `./homescreen -b .`. |
| `-m`, `--mode <mode>` | `release` | Runtime mode for the `--app` bundle (`debug`/`profile`/`release`). |
| `--tar` | off | Also produce a `.tar.gz` of each runnable bundle. |
| `--deploy <user@host>` | — | With `--app`: send each runnable bundle to the board over SSH — rsync when the target has it, else a tar-over-SSH fallback (port/opts reused from `cross.sysroot` when device-sourced). |
| `--deploy-dir <path>` | `ivi-homescreen` | Remote destination dir for `--deploy`. |
| `--run` | off | After `--deploy`, run the bundle on the target over SSH (`./homescreen --b=.`). |
| `--run` | off | After `--deploy`, run the bundle on the target over SSH (`./homescreen -b .`). |
| `--clean` | off | Remove this target's build + overlay dirs (keeps the toolchain + sysroot), then exit. |
| `--clean-all` | off | Also remove the downloaded / extracted toolchain + sysroot and the apt / deb caches, then exit. |
| `--update-lock` | off | Regenerate this target's `emb.lock` entry from the resolved toolchain/sysroot (accepts an intentional URL / version change). See [Reproducible builds](#reproducible-builds-emblock). |
+1 -1
View File
@@ -58,7 +58,7 @@ The bundle directory (`data/flutter_assets`, `data/icudtl.dat`,
ivi-homescreen runs:
```sh
ivi-homescreen --b=<workspace>/bundle/my_app-release-arm64
ivi-homescreen -b <workspace>/bundle/my_app-release-arm64
```
## 4. Self-describing packages
+1 -1
View File
@@ -117,7 +117,7 @@ class BundleCommand extends Command<int> {
}
progress.complete('Bundle assembled: ${result.outputDir}');
_logger.info('Run with: ivi-homescreen --b=${result.outputDir}');
_logger.info('Run with: ivi-homescreen -b ${result.outputDir}');
return ExitCode.success.code;
}
}
+2 -2
View File
@@ -791,7 +791,7 @@ class CrossCommand extends Command<int> {
final bin = await runnable.install(binary, outDir);
_logger.info(
' ${r.backend ?? ""}: runnable → ${outDir.path} '
'(run: ./${p.basename(bin.path)} --b=.)',
'(run: ./${p.basename(bin.path)} -b .)',
);
if (tar) {
final archive = await runnable.tar(outDir);
@@ -860,7 +860,7 @@ class CrossCommand extends Command<int> {
return ExitCode.software.code;
}
progress.complete('Deployed → $host:$destDir (via ${res.method})');
final runCmd = './$binName --b=.';
final runCmd = './$binName -b .';
if (!run) {
_logger.info(' run on target: ssh $host "cd $destDir && $runCmd"');
return ExitCode.success.code;
+1 -1
View File
@@ -15,7 +15,7 @@ import 'package:path/path.dart' as p;
/// lib/libflutter_engine.so # target-arch engine
/// ```
///
/// Run on the target as `./homescreen --b=<dir>`. The `data/` + `lib/` halves
/// Run on the target as `./homescreen -b <dir>`. The `data/` + `lib/` halves
/// come from the bundle pipeline; this just drops the embedder in beside them.
class RunnableBundle {
RunnableBundle({ProcessRunner runProcess = defaultProcessRunner})
+2 -2
View File
@@ -160,7 +160,7 @@ void main() {
final argv = Deployer().runArgv(
'pi@board',
'ivi-homescreen',
'./homescreen --b=.',
'./homescreen -b .',
port: 2222,
);
expect(argv, [
@@ -168,7 +168,7 @@ void main() {
'-p',
'2222',
'pi@board',
"cd 'ivi-homescreen' && ./homescreen --b=.",
"cd 'ivi-homescreen' && ./homescreen -b .",
]);
});
}