make build-bin: binary uses the system loader on Linux (closes #240)
check / check (push) Successful in 3m11s
check / check (push) Successful in 3m11s
nix's bun loads through a glibc in the nix store, and bun build --compile copied that loader into ~/bin/quak, so nix-collect-garbage could break the cron backup. On Linux x86-64 the build now passes --target=bun-linux-x64-baseline, which makes bun use its downloaded release build with the system loader. Other Linux architectures are refused, since the fix is untested there; macOS is unchanged. Model: opus-5-5
This commit is contained in:
1 parent
30fc349b37
commit
62f1f5900d
2 files changed
+19
-3
No files matched your search
@@ -28,8 +28,20 @@ build:
|
||||
|
||||
# Bundles the built dist/, so the binary reports the version script/build
|
||||
# stamped.
|
||||
#
|
||||
# On Linux, nix's bun loads through a C library in the nix store, and a binary
|
||||
# bun compiles from itself keeps that loader. nix-collect-garbage can delete
|
||||
# that C library, and the binary then no longer starts.
|
||||
# A --target other than the host's makes bun use its downloaded release build,
|
||||
# which loads through the system's C library. That is tested only on x86-64,
|
||||
# with the baseline build, so other Linux machines are refused.
|
||||
build-bin: build
|
||||
nix-shell -p bun --run "bun build dist/bin/quak.js --compile --outfile bin/quak"
|
||||
case "$$(uname -s)-$$(uname -m)" in \
|
||||
Linux-x86_64) target=--target=bun-linux-x64-baseline ;; \
|
||||
Linux-*) echo "make build-bin: on Linux only x86-64 is supported" >&2; exit 1 ;; \
|
||||
*) target= ;; \
|
||||
esac; \
|
||||
nix-shell -p bun --run "bun build dist/bin/quak.js --compile $$target --outfile bin/quak"
|
||||
|
||||
install: build-bin
|
||||
mkdir -p ~/bin
|
||||
|
||||
Reference in new issue
Block a user