Skip to main content

max / goingson

Turn off linuxdeploy's strip pass on an Alloy build host linuxdeploy bundles its own binutils, and Fedora 43 links with -z pack-relative-relocs, so every bundled library carries a .relr.dyn section (SHT_RELR, type 0x13) that binutils rejects. Measured building inside the fw13 Alloy image: it hit libxkbcommon, libxml2, libxslt, libyuv and libzstd among others, which is most of what a GTK/WebKit app bundles, and cargo-tauri reports the lot as 'failed to run linuxdeploy' with the cause swallowed. Conditional rather than unconditional because stripping still works on Pop and still saves download size. Same shape as alloy's build/privilege.sh and for the same reason: a transition where two hosts need different things, losing its branch once no build host runs anything else. _private/scripts/build-dist.sh already carried NO_STRIP=true; the move to Bento recipes dropped it, which is how this came back.
Author: Max Johnson <me@maxj.phd> · 2026-09-04 16:04 UTC
Signed with PGP, not checked
Commit: be39bc81cd78553a103425d1bfd53a23babd42bf
Parent: bc55a5d
1 file changed, +21 insertions, -0 deletions
@@ -25,7 +25,28 @@
25 25 sh_ok(h, "cd " + r + " && cargo test --workspace " + feature_flags());
26 26
27 27 step("build");
28 + // LINUXDEPLOY CANNOT STRIP A FEDORA 43 LIBRARY, so the strip pass is turned off
29 + // on an Alloy host and left alone everywhere else.
30 + //
31 + // Measured 2026-09-04 building this app inside the fw13 Alloy image: linuxdeploy
32 + // bundles its own binutils, and Fedora 43 links with `-z pack-relative-relocs`,
33 + // so every bundled library carries a `.relr.dyn` section (SHT_RELR, type 0x13)
34 + // that binutils rejects with "unknown type [0x13]" and "Unable to recognise the
35 + // format of the input file". It hit libxkbcommon, libxml2, libxslt, libyuv and
36 + // libzstd among others -- not a stray library, most of what a GTK/WebKit app
37 + // bundles. cargo-tauri reports the whole thing as `failed to run linuxdeploy`
38 + // and swallows the cause, so the error names nothing you could act on.
39 + //
40 + // Conditional rather than unconditional because stripping still works today and
41 + // still saves download size: Pop ships older libraries with no SHT_RELR. This is
42 + // the same shape as build/privilege.sh in alloy, for the same reason -- a
43 + // transition where two hosts need different things -- and it loses its branch
44 + // the same way, once no build host runs anything but Alloy.
45 + //
46 + // `_private/scripts/build-dist.sh` already carried NO_STRIP=true and the move to
47 + // Bento recipes dropped it, which is how this came back.
28 48 sh_ok(h, "cd " + r + " && . ~/.tauri/passwords.env && " +
49 + "if grep -q '^ID=alloy' /usr/lib/os-release; then export NO_STRIP=true; fi; " +
29 50 "TAURI_SIGNING_PRIVATE_KEY=$HOME/.tauri/goingson.key " +
30 51 "TAURI_SIGNING_PRIVATE_KEY_PASSWORD=$GOINGSON_TAURI_PASSWORD " +
31 52 "cargo tauri build");