aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJustin Bedo <cu@cua0.org>2018-09-20 13:57:12 +1000
committerJustin Bedo <cu@cua0.org>2018-09-20 14:34:36 +1000
commit33a121a7bad5b2608cc41ce60ab3d65676541fa6 (patch)
treedbbce4154a85988f3bfd9b13d42ad5d37f04e18a /lib
parentf0a8a4de59ea79f56e074ddd16eff0ce1782dfe8 (diff)
Wrap some tools and make an example pipeline
Diffstat (limited to 'lib')
-rw-r--r--lib/qsub.nix45
1 files changed, 45 insertions, 0 deletions
diff --git a/lib/qsub.nix b/lib/qsub.nix
new file mode 100644
index 0000000..ba9456f
--- /dev/null
+++ b/lib/qsub.nix
@@ -0,0 +1,45 @@
+{lib}:
+
+
+{ ppn ? 1, mem ? 1, walltime ? "24:00:00" }: drv: lib.overrideDerivation drv ({ 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 ];
+})