Added TORQUE package and nixos module

Resource management system for submitting and controlling
jobs on supercomputers, clusters, and grids

http://www.adaptivecomputing.com/products/open-source/torque

Changed files
+204
nixos
modules
services
computing
pkgs
servers
computing
torque
top-level
+2
nixos/modules/module-list.nix
···
./services/backup/rsnapshot.nix
./services/backup/sitecopy-backup.nix
./services/backup/tarsnap.nix
./services/continuous-integration/jenkins/default.nix
./services/continuous-integration/jenkins/slave.nix
./services/databases/4store-endpoint.nix
···
./services/backup/rsnapshot.nix
./services/backup/sitecopy-backup.nix
./services/backup/tarsnap.nix
+
./services/computing/torque/server.nix
+
./services/computing/torque/mom.nix
./services/continuous-integration/jenkins/default.nix
./services/continuous-integration/jenkins/slave.nix
./services/databases/4store-endpoint.nix
+63
nixos/modules/services/computing/torque/mom.nix
···
···
+
{ config, pkgs, lib, ... }:
+
+
with lib;
+
+
let
+
+
cfg = config.services.torque.mom;
+
torque = pkgs.torque;
+
+
momConfig = pkgs.writeText "torque-mom-config" ''
+
$pbsserver ${cfg.serverNode}
+
$logevent 225
+
'';
+
+
in
+
{
+
options = {
+
+
services.torque.mom = {
+
enable = mkEnableOption "torque computing node";
+
+
serverNode = mkOption {
+
type = types.str;
+
description = "Hostname running pbs server.";
+
};
+
+
};
+
+
};
+
+
config = mkIf cfg.enable {
+
environment.systemPackages = [ pkgs.torque ];
+
+
systemd.services.torque-mom-init = {
+
path = with pkgs; [ torque utillinux procps inetutils ];
+
+
script = ''
+
pbs_mkdirs -v aux
+
pbs_mkdirs -v mom
+
hostname > /var/spool/torque/server_name
+
cp -v ${momConfig} /var/spool/torque/mom_priv/config
+
'';
+
+
serviceConfig.Type = "oneshot";
+
unitConfig.ConditionPathExists = "!/var/spool/torque";
+
};
+
+
systemd.services.torque-mom = {
+
path = [ torque ];
+
+
wantedBy = [ "multi-user.target" ];
+
requires = [ "torque-mom-init.service" ];
+
after = [ "torque-mom-init.service" "network.target" ];
+
+
serviceConfig = {
+
Type = "forking";
+
ExecStart = "${torque}/bin/pbs_mom";
+
PIDFile = "/var/spool/torque/mom_priv/mom.lock";
+
};
+
};
+
+
};
+
}
+96
nixos/modules/services/computing/torque/server.nix
···
···
+
{ config, pkgs, lib, ... }:
+
+
with lib;
+
+
let
+
cfg = config.services.torque.server;
+
torque = pkgs.torque;
+
in
+
{
+
options = {
+
+
services.torque.server = {
+
+
enable = mkEnableOption "torque server";
+
+
};
+
+
};
+
+
config = mkIf cfg.enable {
+
environment.systemPackages = [ pkgs.torque ];
+
+
systemd.services.torque-server-init = {
+
path = with pkgs; [ torque utillinux procps inetutils ];
+
+
script = ''
+
tmpsetup=$(mktemp -t torque-XXXX)
+
cp -p ${torque}/bin/torque.setup $tmpsetup
+
sed -i $tmpsetup -e 's/pbs_server -t create/pbs_server -f -t create/'
+
+
pbs_mkdirs -v aux
+
pbs_mkdirs -v server
+
hostname > /var/spool/torque/server_name
+
cp -prv ${torque}/var/spool/torque/* /var/spool/torque/
+
$tmpsetup root
+
+
sleep 1
+
rm -f $tmpsetup
+
kill $(pgrep pbs_server) 2>/dev/null
+
kill $(pgrep trqauthd) 2>/dev/null
+
'';
+
+
serviceConfig = {
+
Type = "oneshot";
+
RemainAfterExit = true;
+
};
+
+
unitConfig = {
+
ConditionPathExists = "!/var/spool/torque";
+
};
+
};
+
+
systemd.services.trqauthd = {
+
path = [ torque ];
+
+
requires = [ "torque-server-init.service" ];
+
after = [ "torque-server-init.service" ];
+
+
serviceConfig = {
+
Type = "forking";
+
ExecStart = "${torque}/bin/trqauthd";
+
};
+
};
+
+
systemd.services.torque-server = {
+
path = [ torque ];
+
+
wantedBy = [ "multi-user.target" ];
+
wants = [ "torque-scheduler.service" "trqauthd.service" ];
+
before = [ "trqauthd.service" ];
+
requires = [ "torque-server-init.service" ];
+
after = [ "torque-server-init.service" "network.target" ];
+
+
serviceConfig = {
+
Type = "forking";
+
ExecStart = "${torque}/bin/pbs_server";
+
ExecStop = "${torque}/bin/qterm";
+
PIDFile = "/var/spool/torque/server_priv/server.lock";
+
};
+
};
+
+
systemd.services.torque-scheduler = {
+
path = [ torque ];
+
+
requires = [ "torque-server-init.service" ];
+
after = [ "torque-server-init.service" ];
+
+
serviceConfig = {
+
Type = "forking";
+
ExecStart = "${torque}/bin/pbs_sched";
+
PIDFile = "/var/spool/torque/sched_priv/sched.lock";
+
};
+
};
+
+
};
+
}
+41
pkgs/servers/computing/torque/default.nix
···
···
+
{ stdenv, fetchurl, openssl, flex, bison, pkgconfig, groff, libxml2, utillinux }:
+
+
stdenv.mkDerivation rec {
+
name = "torque-4.2.8";
+
+
src = fetchurl {
+
name = "${name}.tar.gz";
+
url = "http://www.adaptivecomputing.com/index.php?wpfb_dl=2730";
+
sha256 = "1sjpvndzm9ccdmfwdf9887ppmapawfsh5qdkzr92kadg5jxp796j";
+
};
+
+
buildInputs = [ openssl flex bison pkgconfig groff libxml2 utillinux ];
+
+
enableParallelBuilding = true;
+
+
preConfigure = ''
+
for s in fifo cray_t3e dec_cluster msic_cluster sgi_origin umn_cluster; do
+
substituteInPlace src/scheduler.cc/samples/$s/Makefile.in \
+
--replace "schedprivdir = " "schedprivdir = $out/"
+
done
+
+
for f in $(find ./ -name Makefile.in); do
+
echo patching $f...
+
sed -i $f -e '/PBS_MKDIRS/d'
+
done
+
'';
+
+
postInstall = ''
+
mv $out/sbin/* $out/bin/
+
rmdir $out/sbin
+
cp -v buildutils/pbs_mkdirs $out/bin/
+
cp -v torque.setup $out/bin/
+
chmod +x $out/bin/pbs_mkdirs $out/bin/torque.setup
+
'';
+
+
meta = with stdenv.lib; {
+
homepage = http://www.adaptivecomputing.com/products/open-source/torque;
+
description = "Resource management system for submitting and controlling jobs on supercomputers, clusters, and grids";
+
platforms = platforms.linux;
+
};
+
}
+2
pkgs/top-level/all-packages.nix
···
tomcat8 = callPackage ../servers/http/tomcat/8.0.nix { };
tomcat_mysql_jdbc = callPackage ../servers/http/tomcat/jdbc/mysql { };
axis2 = callPackage ../servers/http/tomcat/axis2 { };
···
tomcat8 = callPackage ../servers/http/tomcat/8.0.nix { };
tomcat_mysql_jdbc = callPackage ../servers/http/tomcat/jdbc/mysql { };
+
+
torque = callPackage ../servers/computing/torque { };
axis2 = callPackage ../servers/http/tomcat/axis2 { };