aboutsummaryrefslogtreecommitdiff
path: root/sysutils/torque
diff options
context:
space:
mode:
authorAlejandro Pulver <alepulver@FreeBSD.org>2006-10-06 02:32:32 +0000
committerAlejandro Pulver <alepulver@FreeBSD.org>2006-10-06 02:32:32 +0000
commit60356915691d093c5aefefe3db3b9fd4b7628856 (patch)
treeb0c050f44c52296bfdb8ad3732cabea1c9c0d563 /sysutils/torque
parent7996676565c41226325902093f636c66da667f49 (diff)
downloadports-60356915691d093c5aefefe3db3b9fd4b7628856.tar.gz
ports-60356915691d093c5aefefe3db3b9fd4b7628856.zip
Notes
Diffstat (limited to 'sysutils/torque')
-rw-r--r--sysutils/torque/Makefile66
-rw-r--r--sysutils/torque/distinfo3
-rw-r--r--sysutils/torque/files/patch-fifo-Makefile.in11
-rw-r--r--sysutils/torque/files/patch-mom_mach.c361
-rw-r--r--sysutils/torque/files/patch-pbs_mkdirs.in19
-rw-r--r--sysutils/torque/files/pbs_mom.sh.in27
-rw-r--r--sysutils/torque/files/pbs_sched.sh.in27
-rw-r--r--sysutils/torque/files/pbs_server.sh.in27
-rw-r--r--sysutils/torque/files/pkg-message.in40
-rw-r--r--sysutils/torque/pkg-descr9
-rw-r--r--sysutils/torque/pkg-plist73
11 files changed, 663 insertions, 0 deletions
diff --git a/sysutils/torque/Makefile b/sysutils/torque/Makefile
new file mode 100644
index 000000000000..e3b50afac9f7
--- /dev/null
+++ b/sysutils/torque/Makefile
@@ -0,0 +1,66 @@
+# New ports collection makefile for: torque
+# Date created: 20 Jul 2006
+# Whom: trasz
+#
+# $FreeBSD$
+#
+
+PORTNAME= torque
+PORTVERSION= 2.1.2
+CATEGORIES= sysutils parallel
+MASTER_SITES= http://www.clusterresources.com/downloads/torque/
+
+MAINTAINER= trasz@pin.if.uz.zgora.pl
+COMMENT= Open source resource manager
+
+RESTRICTED= Redistribution is only permitted for non-commercial, non-profit purposes
+GNU_CONFIGURE= yes
+CONFIGURE_ARGS= --with-rcp=scp
+USE_GMAKE= yes
+USE_RC_SUBR= pbs_server.sh pbs_sched.sh pbs_mom.sh
+SUB_FILES= pkg-message
+USE_LDCONFIG= yes
+
+MAN1= qalter.1 qdel.1 qhold.1 qmove.1 qmsg.1 qorder.1 qrerun.1 \
+ qrls.1 qselect.1 qsig.1 qstat.1 qsub.1 pbs.1 pbsdsh.1 \
+ nqs2pbs.1 basl2c.1 xpbs.1 xpbsmon.1 qmgr.1
+
+MAN3= rpp.3 tm.3 pbs_alterjob.3 pbs_connect.3 pbs_default.3 \
+ pbs_deljob.3 pbs_disconnect.3 pbs_geterrmsg.3 pbs_holdjob.3 \
+ pbs_locate.3 pbs_manager.3 pbs_movejob.3 pbs_msgjob.3 \
+ pbs_orderjob.3 pbs_rerunjob.3 pbs_rescquery.3 \
+ pbs_rescreserve.3 pbs_rlsjob.3 pbs_runjob.3 pbs_selectjob.3 \
+ pbs_selstat.3 pbs_sigjob.3 pbs_stagein.3 pbs_statjob.3 \
+ pbs_statnode.3 pbs_statque.3 pbs_statserver.3 pbs_submit.3 \
+ pbs_terminate.3
+
+MAN7= pbs_job_attributes.7 pbs_queue_attributes.7 \
+ pbs_server_attributes.7 pbs_resources_aix4.7 \
+ pbs_resources_digitalunix.7 pbs_resources_aix5.7 \
+ pbs_resources_darwin.7 pbs_resources_freebsd.7 \
+ pbs_resources_fujitsu.7 pbs_resources_hpux10.7 \
+ pbs_resources_hpux11.7 pbs_resources_irix5.7 \
+ pbs_resources_irix6.7 pbs_resources_irix6array.7 \
+ pbs_resources_linux.7 pbs_resources_netbsd.7 \
+ pbs_resources_solaris5.7 pbs_resources_solaris7.7 \
+ pbs_resources_sp2.7 pbs_resources_sunos4.7 \
+ pbs_resources_unicos8.7 pbs_resources_unicosmk2.7
+
+MAN8= pbs_mom.8 pbsnodes.8 pbs_sched_basl.8 pbs_sched_cc.8 \
+ pbs_sched_tcl.8 pbs_server.8 qdisable.8 qenable.8 \
+ qrun.8 qstart.8 qstop.8 qterm.8
+
+MLINKS= pbs_sched_cc.8 pbs_sched.8 \
+ pbs_resources_freebsd.7 pbs_resources.7
+
+.include <bsd.port.pre.mk>
+
+.if ${OSVERSION} < 500000
+BROKEN= Doesn't build on 4.x
+.endif
+
+post-install:
+ ${INSTALL_SCRIPT} ${WRKSRC}/torque.setup ${EXAMPLESDIR}
+ @${CAT} ${PKGMESSAGE}
+
+.include <bsd.port.post.mk>
diff --git a/sysutils/torque/distinfo b/sysutils/torque/distinfo
new file mode 100644
index 000000000000..fc5de70bb324
--- /dev/null
+++ b/sysutils/torque/distinfo
@@ -0,0 +1,3 @@
+MD5 (torque-2.1.2.tar.gz) = f1b37efb5d4770a0105c66294a05d140
+SHA256 (torque-2.1.2.tar.gz) = c7bade897fc12f27f128e4081c8ed1f3137bf42684ca239c48b18eb01314710a
+SIZE (torque-2.1.2.tar.gz) = 2686724
diff --git a/sysutils/torque/files/patch-fifo-Makefile.in b/sysutils/torque/files/patch-fifo-Makefile.in
new file mode 100644
index 000000000000..3a196cb805f9
--- /dev/null
+++ b/sysutils/torque/files/patch-fifo-Makefile.in
@@ -0,0 +1,11 @@
+--- src.orig/scheduler.cc/samples/fifo/Makefile.in Wed Jul 19 22:47:42 2006
++++ src/scheduler.cc/samples/fifo/Makefile.in Wed Jul 19 22:59:44 2006
+@@ -132,7 +132,7 @@
+ XPBSMON_DIR = $(libdir)/xpbsmon
+
+ # Support files used by the scheduler
+-schedprivdir = $(PBS_SERVER_HOME)/sched_priv
++schedprivdir = ${prefix}/share/examples/torque/var/spool/torque/sched_priv
+ schedpriv_DATA = sched_config resource_group holidays dedicated_time
+
+ EXTRA_DIST = $(schedpriv_DATA)
diff --git a/sysutils/torque/files/patch-mom_mach.c b/sysutils/torque/files/patch-mom_mach.c
new file mode 100644
index 000000000000..ff94b2bdb9c3
--- /dev/null
+++ b/sysutils/torque/files/patch-mom_mach.c
@@ -0,0 +1,361 @@
+--- src/resmom/freebsd/mom_mach.c.orig Tue Jun 20 02:23:04 2006
++++ src/resmom/freebsd/mom_mach.c Thu Sep 14 19:09:58 2006
+@@ -370,40 +370,10 @@
+ continue;
+
+ nps++;
+- cputime += tvk(pp->kp_proc.p_rtime);
+
+- if (pp->kp_proc.p_ru == NULL) {
+- struct pstats ps;
+-
+- DBPRT(("%s: p_stats 0x%lx\n", id,
+- (u_long)pp->kp_proc.p_stats))
+- if (pp->kp_proc.p_stats == NULL)
+- continue;
+-
+- if (kvm_read(kd, (u_long)pp->kp_proc.p_stats, &ps,
+- sizeof(ps)) != sizeof(ps)) {
+- log_err(errno, id, "kvm_read(pstats)");
+- continue;
+- }
+- cputime += tv(ps.p_ru.ru_utime) +
+- tv(ps.p_ru.ru_stime) +
+- tv(ps.p_cru.ru_utime) +
+- tv(ps.p_cru.ru_stime);
+- }
+- else {
+- struct rusage ru;
+-
+- DBPRT(("%s: p_ru 0x%lx\n", id,
+- (u_long)pp->kp_proc.p_ru))
+- if (kvm_read(kd, (u_long)pp->kp_proc.p_ru, &ru,
+- sizeof(ru)) != sizeof(ru)) {
+- log_err(errno, id, "kvm_read(session)");
+- continue;
+- }
+- cputime += tv(ru.ru_utime) + tv(ru.ru_stime);
+- }
++ cputime += pp->ki_runtime / 1000000;
+ DBPRT(("%s: ses %d pid %d cputime %d\n", id,
+- sess_tbl[i], pp->kp_proc.p_pid, cputime))
++ sess_tbl[i], pp->ki_pid, pp->ki_runtime / 1000000))
+ }
+
+ if (nps == 0)
+@@ -434,11 +404,9 @@
+ if (!injob(pjob, sess_tbl[i]))
+ continue;
+
+- memsize += ctob(pp->kp_eproc.e_vm.vm_tsize +
+- pp->kp_eproc.e_vm.vm_dsize +
+- pp->kp_eproc.e_vm.vm_ssize);
++ memsize += pp->ki_size;
+ DBPRT(("%s: ses %d pid=%d totmem=%lu\n", id,
+- sess_tbl[i], pp->kp_proc.p_pid, memsize))
++ sess_tbl[i], pp->ki_pid, pp->ki_size))
+ }
+
+ return (memsize);
+@@ -461,10 +429,10 @@
+ if (!injob(pjob, sess_tbl[i]))
+ continue;
+
+- memsize += ctob(pp->kp_eproc.e_vm.vm_rssize);
++ memsize += pp->ki_rssize * PAGE_SIZE;
+ DBPRT(("%s: pid=%d ses=%d mem=%d totmem=%d\n", id,
+- pp->kp_proc.p_pid, sess_tbl[i],
+- pp->kp_eproc.e_vm.vm_rssize, memsize))
++ pp->ki_pid, sess_tbl[i],
++ pp->ki_rssize * PAGE_SIZE, memsize))
+ }
+
+ return (memsize);
+@@ -485,9 +453,7 @@
+ if (!injob(pjob, sess_tbl[i]))
+ continue;
+
+- if (ctob(pp->kp_eproc.e_vm.vm_tsize +
+- pp->kp_eproc.e_vm.vm_dsize +
+- pp->kp_eproc.e_vm.vm_ssize) > limit)
++ if (pp->ki_size > limit)
+ return (TRUE);
+ }
+
+@@ -732,7 +698,7 @@
+ const void *b)
+
+ {
+- return((int)((struct kinfo_proc *)a)->kp_eproc.e_paddr - (int)((struct kinfo_proc *)b)->kp_eproc.e_paddr);
++ return((int)((struct kinfo_proc *)a)->ki_paddr - (int)((struct kinfo_proc *)b)->ki_paddr);
+ }
+
+ int bs_cmp(
+@@ -741,7 +707,7 @@
+ const void *member)
+
+ {
+- return((int)((struct session *)key)->s_leader - (int)((struct kinfo_proc *)member)->kp_eproc.e_paddr);
++ return((int)((struct session *)key)->s_leader - (int)((struct kinfo_proc *)member)->ki_paddr);
+ }
+
+
+@@ -786,24 +752,10 @@
+
+ qsort(proc_tbl, nproc, sizeof(struct kinfo_proc), qs_cmp);
+
+- for (i=0, kp=proc_tbl; i<nproc; i++, kp++) {
+- if (kvm_read(kd, (u_long)kp->kp_eproc.e_sess, &ss, sizeof(ss))
+- != sizeof(ss)) {
+- sprintf(log_buffer,
+- "kvm_read: %s", kvm_geterr(kd));
+- log_err(errno, id, log_buffer);
+- return (PBSE_SYSTEM);
+- }
+- if (ss.s_leader == kp->kp_eproc.e_paddr ||
+- ss.s_leader == NULL) {
+- sid = kp->kp_proc.p_pid;
+- }
+- else {
+- leader = bsearch(&ss, proc_tbl, nproc,
+- sizeof(struct kinfo_proc), bs_cmp);
+- sid = leader ? leader->kp_proc.p_pid : 0;
+- }
+- sess_tbl[i] = sid;
++ for (i=0; i<nproc; i++) {
++ struct kinfo_proc *pp = &proc_tbl[i];
++
++ sess_tbl[i] = pp->ki_sid;
+ }
+
+ return (PBSE_NONE);
+@@ -1012,8 +964,8 @@
+ continue;
+
+ DBPRT(("%s: send signal %d to pid %d\n", id,
+- sig, pp->kp_proc.p_pid))
+- (void)kill(pp->kp_proc.p_pid, sig);
++ sig, pp->ki_pid))
++ (void)kill(pp->ki_pid, sig);
+ ++ct;
+ }
+ return ct;
+@@ -1118,36 +1070,10 @@
+ if (jobid != sess_tbl[i])
+ continue;
+
+- cputime += tvk(pp->kp_proc.p_rtime);
+-
+- if (pp->kp_proc.p_ru == NULL) {
+- struct pstats ps;
+-
+- if (pp->kp_proc.p_stats == NULL)
+- continue;
+-
+- if (kvm_read(kd, (u_long)pp->kp_proc.p_stats, &ps,
+- sizeof(ps)) != sizeof(ps)) {
+- log_err(errno, id, "kvm_read(pstats)");
+- continue;
+- }
+- cputime += tv(ps.p_ru.ru_utime) +
+- tv(ps.p_ru.ru_stime) +
+- tv(ps.p_cru.ru_utime) +
+- tv(ps.p_cru.ru_stime);
+- }
+- else {
+- struct rusage ru;
++ cputime += pp->ki_runtime / 1000000;
+
+- if (kvm_read(kd, (u_long)pp->kp_proc.p_ru, &ru,
+- sizeof(ru)) != sizeof(ru)) {
+- log_err(errno, id, "kvm_read(session)");
+- continue;
+- }
+- cputime += tv(ru.ru_utime) + tv(ru.ru_stime);
+- }
+ DBPRT(("%s: ses %d pid %d cputime %d\n", id,
+- jobid, pp->kp_proc.p_pid, cputime))
++ jobid, pp->ki_pid, cputime))
+
+ }
+
+@@ -1166,37 +1092,11 @@
+ for (i=0; i<nproc; i++) {
+ struct kinfo_proc *pp = &proc_tbl[i];
+
+- if (pid != pp->kp_proc.p_pid)
++ if (pid != pp->ki_pid)
+ continue;
+
+- cputime = tvk(pp->kp_proc.p_rtime);
+-
+- if (pp->kp_proc.p_ru == NULL) {
+- struct pstats ps;
+-
+- if (pp->kp_proc.p_stats == NULL)
+- break;
+-
+- if (kvm_read(kd, (u_long)pp->kp_proc.p_stats, &ps,
+- sizeof(ps)) != sizeof(ps)) {
+- log_err(errno, id, "kvm_read(pstats)");
+- break;
+- }
+- cputime += tv(ps.p_ru.ru_utime) +
+- tv(ps.p_ru.ru_stime) +
+- tv(ps.p_cru.ru_utime) +
+- tv(ps.p_cru.ru_stime);
+- }
+- else {
+- struct rusage ru;
++ cputime = pp->ki_runtime / 1000000;
+
+- if (kvm_read(kd, (u_long)pp->kp_proc.p_ru, &ru,
+- sizeof(ru)) != sizeof(ru)) {
+- log_err(errno, id, "kvm_read(session)");
+- break;
+- }
+- cputime += tv(ru.ru_utime) + tv(ru.ru_stime);
+- }
+ DBPRT(("%s: pid %d cputime %d\n", id, pid, cputime))
+
+ sprintf(ret_string, "%.2f", (double)cputime * cputfactor);
+@@ -1261,13 +1161,11 @@
+ continue;
+
+ found = 1;
+- addmem = pp->kp_eproc.e_vm.vm_tsize +
+- pp->kp_eproc.e_vm.vm_dsize +
+- pp->kp_eproc.e_vm.vm_ssize;
++ addmem = pp->ki_size;
+ memsize += addmem;
+ }
+ if (found) {
+- sprintf(ret_string, "%ukb", ctob(memsize) >> 10); /* KB */
++ sprintf(ret_string, "%ukb", memsize / 1024); /* KB */
+ return ret_string;
+ }
+
+@@ -1289,13 +1187,11 @@
+ for (i=0; i<nproc; i++) {
+ struct kinfo_proc *pp = &proc_tbl[i];
+
+- if (pid != pp->kp_proc.p_pid)
++ if (pid != pp->ki_pid)
+ continue;
+
+- memsize = pp->kp_eproc.e_vm.vm_tsize +
+- pp->kp_eproc.e_vm.vm_dsize +
+- pp->kp_eproc.e_vm.vm_ssize;
+- sprintf(ret_string, "%ukb", ctob(memsize) >> 10); /* KB */
++ memsize = pp->ki_size;
++ sprintf(ret_string, "%ukb", memsize / 1024); /* KB */
+ return ret_string;
+ }
+
+@@ -1358,10 +1254,10 @@
+ continue;
+
+ found = 1;
+- resisize += pp->kp_eproc.e_vm.vm_rssize;
++ resisize += pp->ki_rssize * PAGE_SIZE;
+ }
+ if (found) {
+- sprintf(ret_string, "%ukb", ctob(resisize) >> 10); /* KB */
++ sprintf(ret_string, "%ukb", resisize / 1024); /* KB */
+ return ret_string;
+ }
+
+@@ -1385,11 +1281,11 @@
+ for (i=0; i<nproc; i++) {
+ struct kinfo_proc *pp = &proc_tbl[i];
+
+- if (pid != pp->kp_proc.p_pid)
++ if (pid != pp->ki_pid)
+ continue;
+
+- resisize = pp->kp_eproc.e_vm.vm_rssize;
+- sprintf(ret_string, "%ukb", ctob(resisize) >> 10); /* KB */
++ resisize = pp->ki_rssize * PAGE_SIZE;
++ sprintf(ret_string, "%ukb", resisize / 1024); /* KB */
+ return ret_string;
+ }
+
+@@ -1462,12 +1358,12 @@
+ for (i=0; i<nproc; i++) {
+ struct kinfo_proc *pp = &proc_tbl[i];
+
+- if (pp->kp_eproc.e_pcred.p_ruid == 0)
++ if (pp->ki_ruid == 0)
+ continue;
+
+ jobid = sess_tbl[i];
+ DBPRT(("%s: pid %d sid %u\n",
+- id, (int)pp->kp_proc.p_pid, jobid))
++ id, (int)pp->ki_pid, jobid))
+ for (j=0; j<njids; j++) {
+ if (jids[j] == jobid)
+ break;
+@@ -1548,12 +1444,12 @@
+ struct kinfo_proc *pp = &proc_tbl[i];
+
+ DBPRT(("%s[%d]: pid %d sid %u\n",
+- id, num_pids, pp->kp_proc.p_pid, sess_tbl[i]))
++ id, num_pids, pp->ki_pid, sess_tbl[i]))
+ if (jobid != sess_tbl[i])
+ continue;
+
+ checkret(&fmt, 100);
+- sprintf(fmt, " %d", pp->kp_proc.p_pid);
++ sprintf(fmt, " %d", pp->ki_pid);
+ fmt += strlen(fmt);
+ num_pids++;
+ }
+@@ -1591,11 +1487,11 @@
+ for (i=0; i<nproc; i++) {
+ struct kinfo_proc *pp = &proc_tbl[i];
+
+- if ((uid = pp->kp_eproc.e_pcred.p_ruid) == 0)
++ if ((uid = pp->ki_ruid) == 0)
+ continue;
+
+ DBPRT(("%s: pid %d uid %u\n",
+- id, (int)pp->kp_proc.p_pid, uid))
++ id, (int)pp->ki_pid, uid))
+ for (j=0; j<nuids; j++) {
+ if (uids[j] == uid)
+ break;
+@@ -1884,23 +1780,12 @@
+ continue;
+ }
+ else {
+- if (value != pp->kp_proc.p_pid)
++ if (value != pp->ki_pid)
+ continue;
+ }
+
+- if (pp->kp_proc.p_stats == NULL) {
+- rm_errno = RM_ERR_SYSTEM;
+- return NULL;
+- }
+-
+- if (kvm_read(kd, (u_long)pp->kp_proc.p_stats, &ps,
+- sizeof(ps)) != sizeof(ps)) {
+- log_err(errno, id, "kvm_read(pstats)");
+- rm_errno = RM_ERR_SYSTEM;
+- return NULL;
+- }
+ found = 1;
+- start = MIN(start, ps.p_start.tv_sec);
++ start = MIN(start, pp->ki_start.tv_sec);
+ }
+ if (found) {
+ sprintf(ret_string, "%ld", (long)((double)(now - start) * wallfactor));
+@@ -2035,7 +1920,7 @@
+ dirdev = sb.st_dev;
+ DBPRT(("dir has devnum %d\n", dirdev))
+
+- if (setfsent() == NULL) {
++ if (setfsent() == 0) {
+ log_err(errno, id, "setfsent");
+ rm_errno = RM_ERR_SYSTEM;
+ return NULL;
diff --git a/sysutils/torque/files/patch-pbs_mkdirs.in b/sysutils/torque/files/patch-pbs_mkdirs.in
new file mode 100644
index 000000000000..732193534b50
--- /dev/null
+++ b/sysutils/torque/files/patch-pbs_mkdirs.in
@@ -0,0 +1,19 @@
+--- buildutils/dpbs_mkdirs.in.orig Tue Jun 20 02:22:46 2006
++++ buildutils/pbs_mkdirs.in Thu Sep 14 15:06:48 2006
+@@ -105,6 +105,7 @@
+ #
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
++DESTDIR=@prefix@
+ CHK_TREE=${DESTDIR}@bindir@/chk_tree
+
+ PBS_DEFAULT_SERVER=@PBS_DEFAULT_SERVER@
+@@ -112,7 +113,7 @@
+ # PBS_SERVER_HOME is defined without DESTDIR so that DEFAULT_FILE and EVIRON
+ # can be based on SERVER_HOME. SERVER_HOME is defined a second time to pick
+ # up DESTDIR
+-test -n "$PBS_SERVER_HOME" || PBS_SERVER_HOME=@PBS_SERVER_HOME@
++test -n "$PBS_SERVER_HOME" || PBS_SERVER_HOME=/share/examples/torque/var/spool/torque/
+ test -n "$PBS_DEFAULT_FILE" || PBS_DEFAULT_FILE=${DESTDIR}@PBS_DEFAULT_FILE@
+ test -n "$PBS_ENVIRON" || PBS_ENVIRON=${DESTDIR}@PBS_ENVIRON@
+
diff --git a/sysutils/torque/files/pbs_mom.sh.in b/sysutils/torque/files/pbs_mom.sh.in
new file mode 100644
index 000000000000..60cde8368343
--- /dev/null
+++ b/sysutils/torque/files/pbs_mom.sh.in
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+# PROVIDE: pbs_mom
+# REQUIRE:
+#
+# Add the following lines to /etc/rc.conf.local or /etc/rc.conf
+# to enable this service:
+#
+# pbs_mom_enable (bool): Set to NO by default.
+# Set it to YES to enable pbs_mom.
+#
+
+. %%RC_SUBR%%
+
+name="pbs_mom"
+rcvar=${name}_enable
+
+pidfile=/var/spool/torque/mom_priv/mom.lock
+command=%%PREFIX%%/sbin/${name}
+
+load_rc_config $name
+
+: ${pbs_mom_enable="NO"}
+
+command_args=""
+
+run_rc_command "$1"
diff --git a/sysutils/torque/files/pbs_sched.sh.in b/sysutils/torque/files/pbs_sched.sh.in
new file mode 100644
index 000000000000..885be18bf945
--- /dev/null
+++ b/sysutils/torque/files/pbs_sched.sh.in
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+# PROVIDE: pbs_sched
+# REQUIRE: pbs_server
+#
+# Add the following lines to /etc/rc.conf.local or /etc/rc.conf
+# to enable this service:
+#
+# pbs_sched_enable (bool): Set to NO by default.
+# Set it to YES to enable pbs_sched.
+#
+
+. %%RC_SUBR%%
+
+name="pbs_sched"
+rcvar=${name}_enable
+
+pidfile=/var/spool/torque/sched_priv/sched.lock
+command=%%PREFIX%%/sbin/${name}
+
+load_rc_config $name
+
+: ${pbs_sched_enable="NO"}
+
+command_args=""
+
+run_rc_command "$1"
diff --git a/sysutils/torque/files/pbs_server.sh.in b/sysutils/torque/files/pbs_server.sh.in
new file mode 100644
index 000000000000..e19696a349fe
--- /dev/null
+++ b/sysutils/torque/files/pbs_server.sh.in
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+# PROVIDE: pbs_server
+# REQUIRE:
+#
+# Add the following lines to /etc/rc.conf.local or /etc/rc.conf
+# to enable this service:
+#
+# pbs_server_enable (bool): Set to NO by default.
+# Set it to YES to enable pbs_server.
+#
+
+. %%RC_SUBR%%
+
+name="pbs_server"
+rcvar=${name}_enable
+
+pidfile=/var/spool/torque/server_priv/server.lock
+command=%%PREFIX%%/sbin/${name}
+
+load_rc_config $name
+
+: ${pbs_server_enable="NO"}
+
+command_args=""
+
+run_rc_command "$1"
diff --git a/sysutils/torque/files/pkg-message.in b/sysutils/torque/files/pkg-message.in
new file mode 100644
index 000000000000..426b0058b8d7
--- /dev/null
+++ b/sysutils/torque/files/pkg-message.in
@@ -0,0 +1,40 @@
+***************************************************************
+You can find example configuration in
+
+ %%PREFIX%%/share/examples/torque/var/spool/torque
+
+On all machines, both server and computing nodes, copy it's
+contents into
+
+ /var/spool/torque/
+
+and put hostname of the server into
+
+ /var/spool/torque/server_name
+
+On computing nodes, put '$pbsserver ip.address.of.server' into
+
+ /var/spool/torque/mom_priv/config
+
+On server, put hostnames of computing nodes, one per line, into
+
+ /var/spool/torque/server_priv/nodes
+
+On computing nodes, add the following line to /etc/rc.conf:
+
+ pbs_mom_enable="YES"
+
+On TORQUE server, add the following lines to /etc/rc.conf:
+
+ pbs_server_enable="YES"
+ pbs_sched_enable="YES"
+
+To configure queues on server, execute
+
+ %%PREFIX%%/share/examples/torque/torque.setup <admin>
+
+For further information, see
+
+ http://www.clusterresources.com/torquedocs21/
+
+***************************************************************
diff --git a/sysutils/torque/pkg-descr b/sysutils/torque/pkg-descr
new file mode 100644
index 000000000000..57d945433616
--- /dev/null
+++ b/sysutils/torque/pkg-descr
@@ -0,0 +1,9 @@
+TORQUE is an open source resource manager providing control over
+batch jobs and distributed compute nodes. It is a community effort
+based on the original *PBS project and, with more than 1,200 patches,
+has incorporated significant advances in the areas of scalability,
+fault tolerance, and feature extensions contributed by NCSA, OSC,
+USC , the U.S. Dept of Energy, Sandia, PNNL, U of Buffalo, TeraGrid,
+and many other leading edge HPC organizations.
+
+WWW: http://www.clusterresources.com/pages/products/torque-resource-manager.php
diff --git a/sysutils/torque/pkg-plist b/sysutils/torque/pkg-plist
new file mode 100644
index 000000000000..2476cc20571e
--- /dev/null
+++ b/sysutils/torque/pkg-plist
@@ -0,0 +1,73 @@
+include/pbs_error.h
+include/pbs_ifl.h
+include/tm.h
+include/tm_.h
+include/rpp.h
+include/rm.h
+lib/libtorque.so.0
+lib/libtorque.so
+lib/libtorque.la
+lib/libtorque.a
+sbin/pbs_server
+sbin/pbs_sched
+sbin/pbs_mom
+sbin/pbs_iff
+bin/qalter
+bin/qdel
+bin/qhold
+bin/qmove
+bin/qorder
+bin/qmsg
+bin/qrerun
+bin/qrls
+bin/qselect
+bin/qsig
+bin/qstat
+bin/qsub
+bin/pbsdsh
+bin/qdisable
+bin/qenable
+bin/qrun
+bin/qstart
+bin/qstop
+bin/qterm
+bin/pbsnodes
+bin/qmgr
+bin/nqs2pbs
+sbin/pbs_demux
+sbin/momctl
+bin/chk_tree
+bin/hostn
+bin/printjob
+bin/printtracking
+bin/tracejob
+bin/pbs-config
+%%EXAMPLESDIR%%/torque.setup
+%%EXAMPLESDIR%%/var/spool/torque/pbs_environment
+%%EXAMPLESDIR%%/var/spool/torque/server_name
+%%EXAMPLESDIR%%/var/spool/torque/sched_priv/sched_config
+%%EXAMPLESDIR%%/var/spool/torque/sched_priv/resource_group
+%%EXAMPLESDIR%%/var/spool/torque/sched_priv/holidays
+%%EXAMPLESDIR%%/var/spool/torque/sched_priv/dedicated_time
+@dirrm %%EXAMPLESDIR%%/var/spool/torque/aux
+@dirrm %%EXAMPLESDIR%%/var/spool/torque/checkpoint
+@dirrm %%EXAMPLESDIR%%/var/spool/torque/mom_logs
+@dirrm %%EXAMPLESDIR%%/var/spool/torque/mom_priv/jobs
+@dirrm %%EXAMPLESDIR%%/var/spool/torque/mom_priv
+@dirrm %%EXAMPLESDIR%%/var/spool/torque/sched_logs
+@dirrm %%EXAMPLESDIR%%/var/spool/torque/sched_priv
+@dirrm %%EXAMPLESDIR%%/var/spool/torque/server_logs
+@dirrm %%EXAMPLESDIR%%/var/spool/torque/server_priv/jobs
+@dirrm %%EXAMPLESDIR%%/var/spool/torque/server_priv/queues
+@dirrm %%EXAMPLESDIR%%/var/spool/torque/server_priv/acl_svr
+@dirrm %%EXAMPLESDIR%%/var/spool/torque/server_priv/acl_hosts
+@dirrm %%EXAMPLESDIR%%/var/spool/torque/server_priv/acl_users
+@dirrm %%EXAMPLESDIR%%/var/spool/torque/server_priv/acl_groups
+@dirrm %%EXAMPLESDIR%%/var/spool/torque/server_priv/accounting
+@dirrm %%EXAMPLESDIR%%/var/spool/torque/server_priv
+@dirrm %%EXAMPLESDIR%%/var/spool/torque/undelivered
+@dirrm %%EXAMPLESDIR%%/var/spool/torque/spool
+@dirrm %%EXAMPLESDIR%%/var/spool/torque
+@dirrm %%EXAMPLESDIR%%/var/spool
+@dirrm %%EXAMPLESDIR%%/var
+@dirrm %%EXAMPLESDIR%%