bscpkgs/garlic/garlicd/garlicd
Rodrigo Arias Mallo cb5bcd7097 garlicd: add to index and check for error
The garlicd is now available under garlic.garlid and it requires the
extra-sandbox-path option to be properly set.
2021-02-15 16:20:06 +01:00

69 lines
1.4 KiB
Bash
Executable File

#!/bin/bash
set -e
msg() {
>&2 echo "garlicd: $@"
}
if [ -z "$1" ]; then
>&2 echo "usage: garlicd <bscpkgs directory>"
exit 1
fi
export PATH="@extraPath@:$PATH"
bscpkgsdir=$(readlink -f "$1")
garlic_sandbox=$(nix show-config |\
grep extra-sandbox-paths |\
grep -o '/garlic=[^ ]*')
if [ -z "$garlic_sandbox" ]; then
msg "Missing extra-sandbox-paths /garlic mountpoint"
msg "Check the ~/.config/nix/nix.conf file"
exit 1
fi
mountdir_rel=$(echo "$garlic_sandbox" | sed 's@^/garlic=@@g')
mountdir=$(readlink -f "$mountdir_rel")
run="$mountdir/run"
completed="$mountdir/completed"
[ -p "$run" ] || mkfifo "$run"
[ -p "$completed" ] || mkfifo "$completed"
cd "$bscpkgsdir"
while true; do
msg "Waiting for experiments ..."
read -r tre < "$run"
msg "Attempting to run: $tre"
msg "Copying files to MN4..."
# It fails if the user doesn't have nix-store, but is already copied
# with the post build hook
nix copy --to ssh://mn1 $tre || true
msg "Launching the experiment..."
garlic -R "$tre"
msg "Fetching results..."
results=$(garlic -Fv "$tre")
msg "results=\"$results\""
msg "Searching drv..."
drv=$(nix-store -q --deriver $results)
msg "drv = \"$drv\""
if [ -z "$drv" ]; then
msg "Something failed, drv is empty. Check the logs."
exit 1
fi
echo -n "$drv" >> "$completed"
msg "execution completed :-)"
done