diff options
Diffstat (limited to 'pkgs/build-support/vm/rpm/run-in-uml.sh')
-rw-r--r-- | pkgs/build-support/vm/rpm/run-in-uml.sh | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/pkgs/build-support/vm/rpm/run-in-uml.sh b/pkgs/build-support/vm/rpm/run-in-uml.sh new file mode 100644 index 000000000000..3f1c7c0d6e81 --- /dev/null +++ b/pkgs/build-support/vm/rpm/run-in-uml.sh @@ -0,0 +1,35 @@ +export > initial-env-vars + +source $stdenv/setup + +ensureDir $out/nix-support +echo "$system" > $out/nix-support/system +cat $image/name > $out/nix-support/name +cat $image/full-name > $out/nix-support/full-name + +echo $PATH > path +ln -s $boot $NIX_BUILD_TOP/worker # work around a stupid bug (no dots allowed in kernel arguments?) + +# UML requires an existing $HOME. +mkdir dummy +export HOME=$(pwd)/dummy + +# Run UML. +startLog "uml-run" +touch log +tail -n +0 -f log & # show UML output as it appears +tailPid=$! + +echo "running UML using image $image/image ($(cat $image/full-name))" +linux mem=384M ubd0=cow,$image/image root=/dev/root rootflags=/ rootfstype=hostfs \ + init="$SHELL $NIX_BUILD_TOP/worker $NIX_BUILD_TOP" con=null || true +echo "UML finished" + +sleep 1 # drain `tail', hacky +kill $! +stopLog + +if ! test -e success; then + echo "UML build script failed" + exit 1 +fi |