bscpkgs/garlic/pp/store.nix

55 lines
1.4 KiB
Nix
Raw Normal View History

2020-10-29 17:44:48 +01:00
{
stdenv
}:
{
experimentStage
, trebuchetStage
}:
with builtins;
#assert typeOf experimentStage == "string";
#assert typeOf trebuchetStage == "string";
let
# We cannot keep the context of the string when called from a derivation, as
# they will produce a different resultTree derivation vs called from the
# garlic script tool.
#_experimentStage = unsafeDiscardStringContext experimentStage;
#_trebuchetStage = unsafeDiscardStringContext trebuchetStage;
experimentName = baseNameOf (experimentStage);
trebuchetName = baseNameOf (trebuchetStage);
garlicTemp = "/tmp/garlic";
in
#assert hasContext _trebuchetStage == false;
#assert hasContext _experimentStage == false;
stdenv.mkDerivation {
name = "resultTree";
preferLocalBuild = true;
__noChroot = true;
phases = [ "installPhase" ];
installPhase = ''
exp=${garlicTemp}/${experimentName}
if [ ! -e "$exp" ]; then
echo "$exp: not found"
echo "Run the experiment and fetch the results with:"
echo
#echo " garlic -RF -t ${trebuchetStage}"
echo -e "\e[30;48;5;2mgarlic -RF -t ${trebuchetStage}\e[0m"
echo
echo "cannot continue building $out, aborting"
exit 1
fi
mkdir -p $out
cp -aL $exp $out/
ln -s ${trebuchetStage} $out/trebuchet
ln -s ${experimentStage} $out/experiment
'';
}