cross work
Some checks failed
CI / checks (push) Failing after 3s

This commit is contained in:
Robin Appelman 2024-09-26 18:09:03 +02:00
commit f4380e5341
4 changed files with 180 additions and 1 deletions

58
freebsd-sysroot.nix Normal file
View file

@ -0,0 +1,58 @@
{ stdenv
, fetchzip
, arch
, version
, sha256
,
}:
stdenv.mkDerivation {
pname = "freebsd-sysroot";
version = "${version}-${arch}";
src = fetchzip {
url = "https://download.freebsd.org/ftp/releases/${arch}/${version}-RELEASE/base.txz";
stripRoot = false;
inherit sha256;
};
doBuild = false;
dontFixup = true;
installPhase = ''
# adapted from https://github.com/cross-rs/cross/blob/main/docker/freebsd.sh#L184
ls -l
mkdir -p $out/lib/
cp -r "usr/include" "$out"
cp -r "lib/"* "$out/lib"
cp "usr/lib/libc++.so" "$out/lib"
cp "usr/lib/libc++.a" "$out/lib"
cp "usr/lib/libcxxrt.a" "$out/lib"
cp "usr/lib/libcompiler_rt.a" "$out/lib"
cp "usr/lib"/lib{c,util,m,ssp_nonshared,memstat}.a "$out/lib"
cp "usr/lib/librt.so" "$out/lib"
cp "usr/lib"/lib{execinfo,procstat}.so.1 "$out/lib"
cp "usr/lib"/libmemstat.so.3 "$out/lib"
cp "usr/lib"/{crt1,Scrt1,crti,crtn}.o "$out/lib"
cp "usr/lib"/libkvm.a "$out/lib"
local lib=
local base=
local link=
for lib in "''${out}/lib/"*.so.*; do
base=$(basename "''${lib}")
link="''${base}"
# not strictly necessary since this will always work, but good fallback
while [[ "''${link}" == *.so.* ]]; do
link="''${link%.*}"
done
# just extra insurance that we won't try to overwrite an existing file
local dstlink="''${out}/lib/''${link}"
if [[ -n "''${link}" ]] && [[ "''${link}" != "''${base}" ]] && [[ ! -f "''${dstlink}" ]]; then
ln -s "''${base}" "''${dstlink}"
fi
done
ln -s libthr.so.3 "''${out}/lib/libpthread.so"
'';
}