diff --git a/lib/src/cross/dockerfile_emitter.dart b/lib/src/cross/dockerfile_emitter.dart index 54318fa..7b31efd 100644 --- a/lib/src/cross/dockerfile_emitter.dart +++ b/lib/src/cross/dockerfile_emitter.dart @@ -43,13 +43,14 @@ class ToolchainImage { # container: # emb cross --target --build -w $workspace FROM $fromImage -# Build tooling: cmake/ninja/meson/make/pkg-config + the embedder's host codegen +# Build tooling: cmake/ninja/meson/pkg-config + the embedder's host codegen # (wayland-scanner via libwayland-bin; git/curl for the engine-header fetch). -# meson builds `augment` libraries (e.g. libdisplay-info) into the sysroot. +# build-essential gives meson a native (build-machine) compiler — required to +# configure even a cross build when rebuilding `augment` libs (libdisplay-info). RUN apt-get update \\ && apt-get install -y --no-install-recommends \\ - cmake ninja-build meson make pkg-config tar xz-utils rsync ca-certificates \\ - libwayland-bin git curl \\ + cmake ninja-build meson build-essential pkg-config \\ + tar xz-utils rsync ca-certificates libwayland-bin git curl \\ && rm -rf /var/lib/apt/lists/* ENV FLUTTER_WORKSPACE=$workspace COPY toolchain $dir/toolchain diff --git a/lib/src/cross/overlay_builder.dart b/lib/src/cross/overlay_builder.dart index e7ed315..26f76f5 100644 --- a/lib/src/cross/overlay_builder.dart +++ b/lib/src/cross/overlay_builder.dart @@ -212,7 +212,12 @@ class OverlayBuilder { /// actionable rather than a bare "failed to build into overlay". void _check(AugmentLib lib, String step, ProcessResult r) { if (r.exitCode == 0) return; - final detail = '${r.stderr}'.trim(); + // meson/cmake write diagnostics to stdout as often as stderr, so surface + // both — otherwise a "meson setup failed (exit 1)" is undebuggable. + final detail = [ + '${r.stderr}', + '${r.stdout}', + ].map((s) => s.trim()).where((s) => s.isNotEmpty).join('\n'); throw OverlayBuildException( '${lib.pkg}: $step failed (exit ${r.exitCode})' '${detail.isEmpty ? '' : '\n$detail'}', diff --git a/test/src/cross/dockerfile_emitter_test.dart b/test/src/cross/dockerfile_emitter_test.dart index 9f0baad..f917a72 100644 --- a/test/src/cross/dockerfile_emitter_test.dart +++ b/test/src/cross/dockerfile_emitter_test.dart @@ -22,6 +22,7 @@ void main() { expect(df, contains('cmake')); expect(df, contains('ninja-build')); expect(df, contains('meson')); // builds augment libs (libdisplay-info) + expect(df, contains('build-essential')); // native cc for meson configure expect(df, contains('libwayland-bin')); // wayland-scanner for wayland-egl expect(df, contains('FROM ${ToolchainImage.defaultFrom}')); expect(df, contains('emb.triple="aarch64-none-linux-gnu"'));