urbit/nix/lib/boot-fake-ship.nix
Brendan Hay 3a0b975f4d
build: expose configurable arguments when booting/testing fake ships
This also sets -l (lite boot) by default for boot-fake-ship to speed
up the initial pier creation used by pills/tests, and uses
urbit.meta.arguments by default for tests - seems a little less likely
to footgun.
2020-11-05 10:25:31 +01:00

55 lines
1.0 KiB
Nix

{ lib, stdenvNoCC, cacert }:
{ urbit, herb, arvo ? null, pill, ship, arguments ? [ "-l" ] }:
let
args = arguments ++ [ "-d" "-F" "${ship}" "-B" "${pill}" ]
++ lib.optionals (arvo != null) [ "-A" "${arvo}" ];
in stdenvNoCC.mkDerivation {
name = "fake-${ship}";
buildInputs = [ cacert urbit herb ];
phases = [ "buildPhase" "installPhase " ];
buildPhase = ''
if ! [ -f "$SSL_CERT_FILE" ]; then
header "$SSL_CERT_FILE doesn't exist"
exit 1
fi
set -xeuo pipefail
urbit ${lib.concatStringsSep " " args} ./pier
cleanup () {
if [ -f ./pier/.vere.lock ]; then
kill $(< ./pier/.vere.lock) || true
fi
set +x
}
trap cleanup EXIT
check () {
[ 3 -eq "$(herb ./pier -d 3)" ]
}
if check && sleep 10 && check; then
header "boot success"
herb ./pier -p hood -d '+hood/exit'
else
header "boot failure"
kill $(< ./pier/.vere.lock) || true
exit 1
fi
'';
installPhase = ''
mv ./pier $out
'';
}