ci: drop nix libiconv from darwin build (portable macOS binary)
macos-build-test / build (push) Failing after 1m36s
build-ci-image / build (push) Successful in 9m45s
ci / gate (push) Successful in 2m59s

The smoke-test caught the aarch64 binary linking a /nix/store libiconv.dylib
— non-portable (won't exist on a user's Mac). The Apple SDK already provides
a system libiconv stub, so removing pkgs.libiconv makes the linker resolve
-liconv to /usr/lib instead. The smoke-test now fails if any /nix/store dylib
is linked.
This commit is contained in:
claude@clouddev1
2026-06-14 21:36:08 +00:00
parent d5fb47bcc8
commit 4d004f5847
2 changed files with 14 additions and 7 deletions
+8 -2
View File
@@ -34,6 +34,12 @@ jobs:
f="target/$t/release/rdbms-playground"
file "$f"
echo "--- linked libs (otool -L) ---"
otool -L "$f" 2>/dev/null | head -8 || true
otool -L "$f"
# Portability guard: a distributable macOS binary must link only
# system libs (/usr/lib, /System/Library) — never a /nix/store path.
if otool -L "$f" | grep -q /nix/store; then
echo "ERROR: $t binary links a /nix/store dylib — not portable"; exit 1
fi
echo "OK: $t links only system libraries"
done
echo "=== both darwin targets built ==="
echo "=== both darwin targets built + portable ==="
+6 -5
View File
@@ -62,12 +62,13 @@
devShells.default = pkgs.mkShell {
buildInputs = buildInputs ++ pkgs.lib.optionals pkgs.stdenv.isDarwin [
# macOS release builds (aarch64/x86_64-apple-darwin) link AppKit
# (arboard) + libSystem; the nix toolchain's own clang resolves the
# frameworks via the Apple SDK provided here. (The Mac runner also
# has full Xcode, but the devShell stays self-contained.) `libiconv`
# is linked by several crates on darwin.
# (arboard) + libSystem; the Apple SDK provides those framework/
# system-lib stubs as *system* paths (/usr/lib, /System/Library), so
# the resulting binary is portable. NOTE: do NOT add `pkgs.libiconv`
# — it makes the linker prefer the nix-store libiconv.dylib, baking a
# /nix/store path into the binary (non-portable). The SDK's own
# libiconv stub resolves `-liconv` to /usr/lib/libiconv instead.
pkgs.apple-sdk
pkgs.libiconv
];
nativeBuildInputs = nativeBuildInputs ++ [
rust