summaryrefslogtreecommitdiff
blob: ffcd24aef9413516984cb0a3001122c4e115ca4d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# Copyright 1999-2005 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/sys-cluster/torque/torque-1.2.0_p5.ebuild,v 1.3 2005/09/05 13:21:54 tantive Exp $

inherit flag-o-matic eutils

MY_P="${P/_}"
DESCRIPTION="A freely downloadable cluster resource manager and queuing system based on OpenPBS"
HOMEPAGE="http://www.clusterresources.com/products/torque/"
SRC_URI="http://www.clusterresources.com/downloads/torque/${MY_P}.tar.gz
		 mirror://gentoo/${PN}-1.2.0_p1-respect-destdir.patch.gz
		 mirror://gentoo/${PN}-1.2.0_p1-respect-ldflags.patch.gz
		 http://www-rcf.usc.edu/~garrick/torque-1.2.0p5-jobnanny.patch
		 http://www-rcf.usc.edu/~garrick/torque-1.2.0p5-jobdepterm2.patch"
LICENSE="openpbs"

SLOT="0"
KEYWORDS="~amd64 ~ppc ~ppc64 x86"
IUSE="doc tcltk X"
PROVIDE="virtual/pbs"

# ed is used by makedepend-sh
DEPEND_COMMON="virtual/libc
			   X? ( virtual/x11 )
			   tcltk? ( dev-lang/tcl )
			   !virtual/pbs"
DEPEND="${DEPEND_COMMON}
		sys-apps/ed"
RDEPEND="${DEPEND_COMMON}
		 net-misc/openssh"
PDEPEND=">=sys-cluster/openpbs-common-1.1.0"

S="${WORKDIR}/${MY_P}"

SPOOL_LOCATION="/usr/spool" # this needs to move to /var later on
PBS_SERVER_HOME="${SPOOL_LOCATION}/PBS/"

src_unpack() {
	append-ldflags -Wl,-z,now

	unpack ${A}
	EPATCH_OPTS="-p1 -d ${S}" epatch ${DISTDIR}/${PN}-1.2.0_p1-respect-ldflags.patch.gz || die "Failed to fix ldflags"
	EPATCH_OPTS="-p1 -d ${S}" epatch ${DISTDIR}/${PN}-1.2.0_p1-respect-destdir.patch.gz || die "Failed to fix Makefiles for DESTDIR"
	EPATCH_OPTS="-p1 -d ${S}" epatch ${DISTDIR}/${PN}-1.2.0p5-jobnanny.patch || die "Failed to apply job-nanny patch"
	EPATCH_OPTS="-p1 -d ${S}" epatch ${DISTDIR}/${PN}-1.2.0p5-jobdepterm2.patch || die "Failed to apply job-dep cleanup patch"

	# Tries to use absolute /tmp/ for tempfiles which fails miserably.
	sed -i -e "s|/tmp/|\${TMPDIR}/|g" ${S}/buildutils/makedepend-sh || die "Failed TMPDIR change"
}

src_compile() {
#	local myconf
#	use X || myconf="--disable-gui"
#	use tcltk && myconf="${myconf} --with-tcl"
#	use doc && myconf="${myconf} --enable-docs"
	append-flags -DJOB_DELETE_NANNY

	./configure \
		$(use_enable X gui) \
		$(use_with tcltk tcl) \
		$(use_enable doc docs) \
		--prefix=/usr \
		--mandir=/usr/share/man \
		--libdir="\${exec_prefix}/$(get_libdir)/pbs" \
		--enable-server \
		--enable-mom \
		--enable-clients \
		--enable-shared \
		--enable-depend-cache \
		$(use_with scp) \
		$(use_enable tcltk tcl-qstat) \
		--set-server-home=${PBS_SERVER_HOME} \
		--set-environ=/etc/pbs_environment || die "./configure failed"

	emake || die "emake failed"
}

# WARNING
# OpenPBS is extremely stubborn about directory permissions. Sometimes it will
# just fall over with the error message, but in some spots it will just ignore
# you and fail strangely. Likewise it also barfs on our .keep files!
pbs_createspool() {
	root="$1"
	s="${SPOOL_LOCATION}"
	h="${PBS_SERVER_HOME}"
	sp="${h}/server_priv"

	chmod 755 ${root}${SPOOL_LOCATION} ${root}${PBS_SERVER_HOME}

	for a in \
			0755:${h} 0755:${h}/aux 0700:${h}/checkpoint \
			0755:${h}/mom_logs 0751:${h}/mom_priv 0751:${h}/mom_priv/jobs \
			0755:${h}/sched_logs 0750:${h}/sched_priv \
			0755:${h}/server_logs \
			0750:${h}/server_priv 0755:${h}/server_priv/accounting \
			0750:${h}/server_priv/acl_groups 0750:${h}/server_priv/acl_hosts \
			0750:${h}/server_priv/acl_svr 0750:${h}/server_priv/acl_users \
			0750:${h}/server_priv/jobs 0750:${h}/server_priv/queues \
			1777:${h}/spool 1777:${h}/undelivered ;
	do
		d="${a/*:}"
		m="${a/:*}"
		if [ ! -d "${d}" ]; then
			install -d -m${m} ${root}${d}
		else
			chmod ${m} ${root}${d}
		fi
	done
}

src_install() {
	# Make directories first
	pbs_createspool "${D}"

	make DESTDIR=${D} install || die

	dodoc INSTALL PBS_License.txt README.torque Release_Notes
	# Init scripts come from openpbs-common
	#newinitd ${FILESDIR}/pbs-init.d pbs
	#newconfd ${FILESDIR}/pbs-conf.d pbs
	dosym /usr/$(get_libdir)/pbs/libpbs.a /usr/$(get_libdir)/libpbs.a

	# this file MUST exist for PBS/Torque to work
	# but try to preserve any customatizations that the user has made
	dodir /etc
	if [ -f ${ROOT}/etc/pbs_environment ]; then
		cp ${ROOT}/etc/pbs_environment ${D}/etc/pbs_environment
	else
		touch ${D}/etc/pbs_environment
	fi

	if [ -f "${ROOT}/usr/spool/PBS/server_name" ]; then
		cp "${ROOT}/usr/spool/PBS/server_name" "${D}/usr/spool/PBS/server_name"
	fi
}

pkg_postinst() {
	# make sure the damn directories exist
	pbs_createspool "${ROOT}"
}