40 lines
		
	
	
	
		
			813 B
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
	
		
			813 B
		
	
	
	
		
			Bash
		
	
	
	
	
	
source common.sh
 | 
						|
 | 
						|
case $system in
 | 
						|
    *linux*)
 | 
						|
        ;;
 | 
						|
    *)
 | 
						|
        exit 0;
 | 
						|
esac
 | 
						|
 | 
						|
set -m # enable job control, needed for kill
 | 
						|
 | 
						|
profiles="$NIX_STATE_DIR"/profiles
 | 
						|
rm -f $profiles/*
 | 
						|
 | 
						|
nix-env -p $profiles/test -f ./gc-runtime.nix -i gc-runtime
 | 
						|
 | 
						|
outPath=$(nix-env -p $profiles/test -q --no-name --out-path gc-runtime)
 | 
						|
echo $outPath
 | 
						|
 | 
						|
echo "backgrounding program..."
 | 
						|
$profiles/test/program &
 | 
						|
sleep 2 # hack - wait for the program to get started
 | 
						|
child=$!
 | 
						|
echo PID=$child
 | 
						|
 | 
						|
nix-env -p $profiles/test -e gc-runtime
 | 
						|
nix-env -p $profiles/test --delete-generations old
 | 
						|
 | 
						|
cp $TOP/scripts/find-runtime-roots.pl $TEST_ROOT/foo.pl
 | 
						|
chmod +x $TEST_ROOT/foo.pl
 | 
						|
NIX_ROOT_FINDER=$TEST_ROOT/foo.pl nix-store --gc
 | 
						|
 | 
						|
kill -- -$child
 | 
						|
 | 
						|
if ! test -e $outPath; then
 | 
						|
    echo "running program was garbage collected!"
 | 
						|
    exit 1
 | 
						|
fi
 | 
						|
 | 
						|
exit 0
 |