mirror of
https://github.com/ilyakooo0/nixpkgs.git
synced 2024-11-10 08:39:08 +03:00
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
This commit is contained in:
parent
e84b0c94f0
commit
ac724e7bbc
@ -95,6 +95,8 @@
|
||||
./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
Normal file
63
nixos/modules/services/computing/torque/mom.nix
Normal file
@ -0,0 +1,63 @@
|
||||
{ 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
Normal file
96
nixos/modules/services/computing/torque/server.nix
Normal file
@ -0,0 +1,96 @@
|
||||
{ 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
Normal file
41
pkgs/servers/computing/torque/default.nix
Normal file
@ -0,0 +1,41 @@
|
||||
{ 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;
|
||||
};
|
||||
}
|
@ -7205,6 +7205,8 @@ let
|
||||
|
||||
tomcat_mysql_jdbc = callPackage ../servers/http/tomcat/jdbc/mysql { };
|
||||
|
||||
torque = callPackage ../servers/computing/torque { };
|
||||
|
||||
axis2 = callPackage ../servers/http/tomcat/axis2 { };
|
||||
|
||||
unifi = callPackage ../servers/unifi { };
|
||||
|
Loading…
Reference in New Issue
Block a user