From a74b705e5dc8870c2516b8dfa71d7a510b4d4246 Mon Sep 17 00:00:00 2001 From: Justin Bedo Date: Tue, 4 Sep 2018 10:14:28 +1000 Subject: proof of concept expression --- test.nix | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 test.nix (limited to 'test.nix') diff --git a/test.nix b/test.nix new file mode 100644 index 0000000..84c95b3 --- /dev/null +++ b/test.nix @@ -0,0 +1,72 @@ +{pkgs ? import {}}: + +with pkgs; + +let + + qsub = drv: lib.overrideDerivation drv ({ ppn ? 1, mem ? 1, walltime ? "24:00:00", args, builder, ... }: { + builder = "/bin/bash"; + args = let + script = writeScript "qsub-script" '' + #!${stdenv.shell} + while [ ! -e /stornext/HPCScratch/$PBS_JOBID ] ; do + sleep 5 + done + set -a + . /stornext/HPCScratch/$PBS_JOBID + set +a + TMPDIR=/tmp/$PBS_JOBID + TEMP=$TMPDIR + TMP=$TMPDIR + NIX_BUILD_TOP=$TMPDIR + mkdir $TMPDIR + cd $TMPDIR + rm /stornext/HPCScratch/$PBS_JOBID + ${builder} ${lib.escapeShellArgs args} && touch /stornext/HPCScratch/$PBS_JOBID + cd / + rm -rf $TMPDIR + ''; + + qsub = writeScript "qsub" '' + #!/bin/bash + PATH=/usr/bin:/bin:/usr/sbin:/sbin + SHELL=/bin/sh + NIX_BUILD_CORES=${toString ppn} + id=$(qsub -l nodes=1:ppn=${toString ppn},mem=${toString mem}gb,walltime=${walltime} ${script}) + set > /stornext/HPCScratch/$id + while qstat ''${id%%.} 2> /dev/null > /dev/null ; do + sleep 5 + done + if [[ -e /stornext/HPCScratch/$id ]] ; then + rm /stornext/HPCScratch/$id + exit 0 + fi + exit 1 + ''; + + in [ "-c" qsub ]; + }); + + qstat = stdenv.mkDerivation rec { + name = "qstat"; + buildCommand = "/usr/bin/qstat > $out"; + }; + + grep = x: stdenv.mkDerivation rec { + name = "grep"; + buildInputs = [ bwa ]; + buildCommand = "/usr/bin/grep distefano.l ${x} > $out"; + }; + + dummy = x: stdenv.mkDerivation rec { + name = "dummy"; + buildCommand = "sleep 5 && echo ${toString x} > $out"; + }; + + +in stdenv.mkDerivation rec { + name = "dummies"; + dummies = map dummy [1 2 3 4 5]; + buildCommand = "for f in ${toString dummies} ; cat $f >> $out"; +} + -- cgit v1.2.3