Blob Blame History Raw

# comment out snap if building a real release
%define name torque
%define version 2.1.10
#%%define snap 200604251602
%define release 8

# The following options are supported:
#   --with server_name=hostname
#   --with homedir=directory
#   --with[out] rcp
#   --with[out] gui
#   --with[out] tcl


# Hrm, should we default to the name of the buildhost?  That seems only
# slightly better than picking a hostname at random.  This is exactly the kind
# of compile-time default that doesn't work well with distributable packages.
# Let's force the issue with the non-sensical "localhost".
#
# Note that "localhost" doesn't actually work.  You must either define the
# correct hostname here, pass '--with server_name=foo' to rpmbuild, or be sure
# that $PBS_SERVER_HOME/server_name contains the correct hostname.
%define server_name localhost

# change as you wish
%define use_rcp 0
%define use_tcl 1
%define build_gui 1

# these are non-defaults, but fit better into most RPM-based systems
%define torquehomedir %_localstatedir/torque



# --with/--without processing
# first, error if conflicting options are used
%{?_with_rcp: %{?_without_rcp: %{error: both _with_rcp and _without_rcp}}}
%{?_with_tcl: %{?_without_tcl: %{error: both _with_tcl and _without_tcl}}}
%{?_with_gui: %{?_without_gui: %{error: both _with_gui and _without_gui}}}

# did we find any --with options?
%{?_with_rcp: %define use_rcp 1}
%{?_with_tcl: %define use_tcl 1}
%{?_with_gui: %define build_gui 1}

%{?_with_server_name:%define server_name %(set -- %{_with_server_name}; echo $1 | grep -v with | sed 's/=//')}
%{?_with_homedir:%define torquehomedir %(set -- %{_with_homedir}; echo $1 | grep -v with | sed 's/=//')}

# did we find any --without options?
%{?_without_rcp: %define use_rcp 0}
%{?_without_tcl: %define use_tcl 0}
%{?_without_gui: %define build_gui 0}

# Set up all options as disabled
%define rcpflags    --with-rcp=/usr/bin/scp
%define tclflags    --without-tcl
%define guiflags    --disable-gui

# Enable options that we want
%if %use_rcp
%define rcpflags    --with-rcp=mom_rcp
%endif

%if %build_gui
%define guiflags   --enable-gui
%endif

%if %use_tcl
%if %build_gui
%define tclflags    --with-tcl --with-tk
%else
%define tclflags    --with-tcl --without-tk
%endif
%endif

# finish up the configs...
%define server_nameflags --with-default-server=%{server_name}


%define shared_description %(echo -e "TORQUE (Tera-scale Open-source Resource and QUEue manager) is a resource \\nmanager providing control over batch jobs and distributed compute nodes.  \\nTORQUE is based on OpenPBS version 2.3.12 and incorporates scalability, \\nfault tolerance, and feature extension patches provided by USC, NCSA, OSC, \\nthe U.S. Dept of Energy, Sandia, PNNL, U of Buffalo, TeraGrid, and many \\nother leading edge HPC organizations.\\n\\nThis build was configured with:\\n  %{server_nameflags}\\n  %{tclflags}\\n  %{guiflags}\\n  %{rcpflags}\\n")


Summary: Tera-scale Open-source Resource and QUEue manager
Name: %{name}
Version: %{version}
Release: %{?snap:0.%{release}.%{snap}cvs}%{!?snap:%{release}}%{?dist}
Source: torque-%{version}%{?snap:-snap.%snap}.tar.gz
Source2: xpbs.desktop
Source3: xpbsmon.desktop
Source4: xpbs.png
Source5: xpbsmon.png
Source6: README-localhost
Source7: pbs-config-multilib
License: OpenPBS
Group: System Environment/Daemons
URL: http://www.clusterresources.com/products/torque/
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
Provides: pbs
BuildRequires: desktop-file-utils, pam-devel, xauth, readline-devel, ncurses-devel
Requires(posttrans): /usr/sbin/alternatives
Requires(preun): /usr/sbin/alternatives
Conflicts: pbspro, openpbs, openpbs-oscar
Obsoletes: torque-localhost

Patch0: torque-2.1.10-NI_MAXSERV.patch

%if %use_tcl
BuildRequires: tcl-devel
%endif
%if %build_gui
BuildRequires: tk-devel
%else
Obsoletes: torque-gui
%endif
%if ! %use_rcp
Requires: openssh-clients
%endif

%description
%shared_description
This package holds just a few shared files and directories.


%prep
%setup -q -n torque-%{version}%{?snap:-snap.%snap}
%patch0 -p1

%__install -pm 644 %{SOURCE2} %{SOURCE3} %{SOURCE4} %{SOURCE5} %{SOURCE6} %{SOURCE7} .


%build
%configure --includedir=%{_includedir}/torque \
  --with-server-home=%{torquehomedir} --with-pam=/%{_lib}/security \
  --with-sendmail=/usr/sbin/sendmail \
  %{server_nameflags} %{guiflags} %{tclflags} %{rcpflags}

%__cp -vf pbs-config-multilib pbs-config
%__make %{?_smp_mflags}
 


%install
%__rm -rf "$RPM_BUILD_ROOT"
%__make install DESTDIR=$RPM_BUILD_ROOT INSTALL="%{__install} -p"

# remove files we don't need
%__rm -f $RPM_BUILD_ROOT/%_libdir/*.la
%__rm -f $RPM_BUILD_ROOT/%_libdir/*/buildindex
%__rm -f $RPM_BUILD_ROOT/%{_lib}/security/pam_pbssimpleauth.{a,la}
touch -r pbs-config-multilib $RPM_BUILD_ROOT/%{_bindir}/pbs-config

# install initscripts
%__mkdir_p $RPM_BUILD_ROOT%{_initrddir}
for daemon in pbs_mom pbs_sched pbs_server; do
  %__sed -e 's|^PBS_HOME=.*|PBS_HOME=%{torquehomedir}|' \
         -e 's|^PBS_DAEMON=.*|PBS_DAEMON=%{_sbindir}/'$daemon'|' \
         -e 's|chkconfig: 345|chkconfig: -|' \
        < contrib/init.d/$daemon > $RPM_BUILD_ROOT%{_initrddir}/$daemon
  %__chmod 755 $RPM_BUILD_ROOT%{_initrddir}/$daemon
done

%if %{build_gui}
# This is really trivial, but cleans up an rpmlint warning
%__sed -i -e 's|%_lib/../||' $RPM_BUILD_ROOT%{_bindir}/xpbs

# install .desktop files and my ugly icons
desktop-file-install --vendor fedora                   \
        --dir $RPM_BUILD_ROOT%{_datadir}/applications  \
        --add-category X-Fedora                        \
        xpbs.desktop
desktop-file-install --vendor fedora                   \
        --dir $RPM_BUILD_ROOT%{_datadir}/applications  \
        --add-category X-Fedora                        \
        xpbsmon.desktop
%__install -d $RPM_BUILD_ROOT%{_datadir}/pixmaps
%__install -p -m0644 xpbs.png xpbsmon.png $RPM_BUILD_ROOT%{_datadir}/pixmaps

%endif


# alternatives stuff
for bin in qalter qdel qhold qrls qselect qstat qsub
do
    mv $RPM_BUILD_ROOT%{_bindir}/$bin $RPM_BUILD_ROOT%{_bindir}/${bin}-torque
    mv $RPM_BUILD_ROOT%{_mandir}/man1/${bin}.1 \
       $RPM_BUILD_ROOT%{_mandir}/man1/${bin}-torque.1
done


%clean
%__rm -rf "$RPM_BUILD_ROOT"


%post
if %__grep -q "PBS services" /etc/services;then
   : PBS services already installed
else
   cat<<-__EOF__>>/etc/services
	# Standard PBS services
	pbs           15001/tcp           # pbs server (pbs_server)
	pbs           15001/udp           # pbs server (pbs_server)
	pbs_mom       15002/tcp           # mom to/from server
	pbs_mom       15002/udp           # mom to/from server
	pbs_resmom    15003/tcp           # mom resource management requests
	pbs_resmom    15003/udp           # mom resource management requests
	pbs_sched     15004/tcp           # scheduler
	pbs_sched     15004/udp           # scheduler
	__EOF__
fi


%files
%defattr(-, root, root)
%doc README.torque torque.setup Release_Notes CHANGELOG PBS_License.txt README-localhost
%config(noreplace) %{torquehomedir}/pbs_environment
%config(noreplace) %{torquehomedir}/server_name
%dir %{torquehomedir}
%{torquehomedir}/aux
%{torquehomedir}/spool


%package docs
Group: Documentation
Summary: Documentation files for TORQUE
Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}
Provides: pbs-docs
%description docs
%shared_description
This package holds the documentation files.

%files docs
%defattr(-, root, root)
%doc doc/admin_guide.ps
%{_mandir}/man*/*
%exclude %{_mandir}/man1/qsub-torque.1.gz
%exclude %{_mandir}/man1/qalter-torque.1.gz
%exclude %{_mandir}/man1/qdel-torque.1.gz
%exclude %{_mandir}/man1/qhold-torque.1.gz
%exclude %{_mandir}/man1/qrls-torque.1.gz
%exclude %{_mandir}/man1/qselect-torque.1.gz
%exclude %{_mandir}/man1/qstat-torque.1.gz


%package scheduler
Group: System Environment/Daemons
Summary: Simple fifo scheduler for TORQUE
Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}
Provides: pbs-scheduler
%description scheduler
%shared_description
This package holds the fifo C scheduler.

%files scheduler
%defattr(-, root, root)
%attr(0755, root, root) %{_sbindir}/pbs_sched
%{_initrddir}/pbs_sched
%dir %{torquehomedir}/sched_priv
%config(noreplace) %{torquehomedir}/sched_priv/*
%{torquehomedir}/sched_logs

%post scheduler
/sbin/chkconfig --add pbs_sched

%preun scheduler
if [ $1 -eq 0 ]; then
   /sbin/service pbs_sched stop 
   /sbin/chkconfig --del pbs_sched
fi


%package server
Group: System Environment/Daemons
Summary: The main part of TORQUE
Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}
Provides: pbs-server
%description server
%shared_description
This package holds the server.

%files server
%defattr(-, root, root)
%attr(0755, root, root) %{_sbindir}/pbs_server
%attr(0755, root, root) %{_sbindir}/momctl
%{_initrddir}/pbs_server
%{torquehomedir}/server_logs
%{torquehomedir}/server_priv

%post server
/sbin/chkconfig --add pbs_server

%preun server
if [ $1 -eq 0 ]; then
   /sbin/service pbs_server stop 
   /sbin/chkconfig --del pbs_server
fi


%package mom
Group: System Environment/Daemons
Summary: Node execution daemon for TORQUE
Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}
Provides: pbs-mom
%description mom
%shared_description
This package holds the execute daemon required on every node.

%files mom
%defattr(-, root, root)
%attr(0755, root, root) %{_sbindir}/pbs_mom
%{_initrddir}/pbs_mom
%if %{use_rcp}
%attr(4755 root root) %{_sbindir}/pbs_rcp
%endif
%{torquehomedir}/mom_priv
%{torquehomedir}/mom_logs
%{torquehomedir}/checkpoint
%{torquehomedir}/undelivered

%post mom
/sbin/chkconfig --add pbs_mom

%preun mom
if [ $1 -eq 0 ]; then
   /sbin/service pbs_mom stop 
   /sbin/chkconfig --del pbs_mom
fi


%package client
Group: Applications/System
Summary: Client part of TORQUE
Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}
Provides: pbs-client
%description client
%shared_description
This package holds the command-line client programs.

%posttrans client
/usr/sbin/alternatives --install %{_bindir}/qsub qsub %{_bindir}/qsub-torque 10 \
        --slave %{_mandir}/man1/qsub.1.gz qsub-man \
                %{_mandir}/man1/qsub-torque.1.gz \
        --slave %{_bindir}/qalter qalter %{_bindir}/qalter-torque \
        --slave %{_mandir}/man1/qalter.1.gz qalter-man \
                %{_mandir}/man1/qalter-torque.1.gz \
        --slave %{_bindir}/qdel qdel %{_bindir}/qdel-torque \
        --slave %{_mandir}/man1/qdel.1.gz qdel-man \
                %{_mandir}/man1/qdel-torque.1.gz \
        --slave %{_bindir}/qhold qhold %{_bindir}/qhold-torque \
        --slave %{_mandir}/man1/qhold.1.gz qhold-man \
                %{_mandir}/man1/qhold-torque.1.gz \
        --slave %{_bindir}/qrls qrls %{_bindir}/qrls-torque \
        --slave %{_mandir}/man1/qrls.1.gz qrls-man \
                %{_mandir}/man1/qrls-torque.1.gz \
        --slave %{_bindir}/qselect qselect %{_bindir}/qselect-torque \
        --slave %{_mandir}/man1/qselect.1.gz qselect-man \
                %{_mandir}/man1/qselect-torque.1.gz \
        --slave %{_bindir}/qstat qstat %{_bindir}/qstat-torque \
        --slave %{_mandir}/man1/qstat.1.gz qstat-man \
                %{_mandir}/man1/qstat-torque.1.gz

%preun client
if [ $1 -eq 0 ]; then
  /usr/sbin/alternatives --remove qsub %{_bindir}/qsub-torque
fi

%files client
%defattr(-, root, root)
%{_bindir}/q*
%{_bindir}/chk_tree
%{_bindir}/hostn
%{_bindir}/nqs2pbs
%{_bindir}/pbsdsh
%{_bindir}/pbsnodes
%{_bindir}/printjob
%{_bindir}/printtracking
%{_bindir}/tracejob
%attr(4755 root root) %{_sbindir}/pbs_iff
%{_sbindir}/pbs_demux
%if %use_tcl
%{_bindir}/pbs_tclsh
%endif
%{_mandir}/man1/qsub-torque.1.gz
%{_mandir}/man1/qalter-torque.1.gz
%{_mandir}/man1/qdel-torque.1.gz
%{_mandir}/man1/qhold-torque.1.gz
%{_mandir}/man1/qrls-torque.1.gz
%{_mandir}/man1/qselect-torque.1.gz
%{_mandir}/man1/qstat-torque.1.gz


%package gui
Group: Applications/System
Summary: Graphical clients for TORQUE
Requires: %{name}-client = %{?epoch:%{epoch}:}%{version}-%{release}
Provides: xpbs xpbsmon
Provides: %{name}-x11tools
%description gui
%shared_description
This package holds the graphical clients.


%if %{build_gui}
%files gui
%defattr(-, root, root)
%{_bindir}/pbs_wish
%{_bindir}/xpbs
%{_bindir}/xpbsmon
%{_libdir}/xpbs
%{_libdir}/xpbsmon
%{_datadir}/applications/*.desktop
%{_datadir}/pixmaps/*.png
%endif


%package -n lib%{name}
Summary: Run-time libs for programs which will use the %{name} library
Group: Development/Libraries
Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}

%description -n lib%{name}
%shared_description
This package includes the shared libraries
necessary for running TORQUE programs.

%files -n lib%{name}
%defattr(-, root, root)
%{_libdir}/*.so.*

%post -n lib%{name} -p /sbin/ldconfig
%postun -n lib%{name} -p /sbin/ldconfig

%package -n lib%{name}-devel
Summary: Development tools for programs which will use the %{name} library
Group: Development/Libraries
Requires: lib%{name} = %{?epoch:%{epoch}:}%{version}-%{release}

%description -n lib%{name}-devel
%shared_description
This package includes the header files and static libraries
necessary for developing programs which will use %{name}.

%files -n lib%{name}-devel
%defattr(-, root, root)
%{_libdir}/*.a
%{_libdir}/*.so
%{_includedir}/torque
%{_bindir}/pbs-config

%package pam
Summary: PAM module for TORQUE MOM nodes
Group: System Environment/Base

%description pam
%shared_description
A simple PAM module to authorize users on PBS MOM nodes with a running job.

%files pam
%defattr(-, root, root)
%doc src/pam/README.pam
/%{_lib}/security/pam_pbssimpleauth.so


%changelog
* Sun Jul 26 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.1.10-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild

* Wed Feb 25 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.1.10-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild

* Mon Apr 16 2008 Garrick Staples <garrick@usc.edu> 2.1.10-6
- add alternatives system

* Thu Feb 14 2008 Garrick Staples <garrick@usc.edu> 2.1.10-5
- fix missing NI_MAXSERV on fedora9

* Thu Jan  3 2008 Garrick Staples <garrick@usc.edu> 2.1.10-4
- correct pbs-config build typo

* Thu Jan  3 2008 Garrick Staples <garrick@usc.edu> 2.1.10-3
- rebuild because tcl was bumped

* Thu Dec 13 2007 Garrick Staples <garrick@usc.edu> 2.1.10-2
- fix multilib conflicts

* Wed Dec 12 2007 Garrick Staples <garrick@usc.edu> 2.1.10-1
- bump to 2.1.10

* Wed Oct  3 2007 Garrick Staples <garrick@usc.edu> 2.1.9-1
- bump to 2.1.9

* Fri Aug 31 2007 Garrick Staples <garrick@usc.edu> 2.1.8-3
- correct License tag

* Wed Aug 15 2007 Garrick Staples <garrick@usc.edu> 2.1.8-2
- correct errors in desktop entry files

* Tue Mar 13 2007 Garrick Staples <garrick@usc.edu> 2.1.8-1
- bump to 2.1.8
- ensure daemons have the correct path to sendmail
- don't need rpath configure patch anymore

* Wed Feb 14 2007 Garrick Staples <garrick@usc.edu> 2.1.6-5
- rebuilding because tcl8.5 was downgraded to tcl8.4

* Tue Feb  6 2007 Garrick Staples <garrick@usc.edu> 2.1.6-4
- rebuilding with new tcl

* Sat Feb  3 2007 Garrick Staples <garrick@usc.edu> 2.1.6-3
- trying to resolve tcl8.5 buildindex issue

* Fri Feb  2 2007 Garrick Staples <garrick@usc.edu> 2.1.6-2
- rebuild for tcl8.5

* Tue Oct 24 2006 Garrick Staples <garrick@usc.edu> 2.1.6-1
- fixes more regressions from Friday

* Sat Oct 21 2006 Garrick Staples <garrick@usc.edu> 2.1.5-1
- fixes "qsub -o /dev/null" regression

* Fri Oct 20 2006 Garrick Staples <garrick@usc.edu> 2.1.4-1
- bump to fix "Spool Job Race condition" on bugtraq

* Mon Oct 16 2006 Garrick Staples <garrick@usc.edu> 2.1.3-3
- correct unowned directories

* Thu Oct 12 2006 Garrick Staples <garrick@usc.edu> 2.1.3-2
- missing BR ncurses-devel and readline-devel

* Thu Oct 12 2006 Garrick Staples <garrick@usc.edu> 2.1.3-1
- bump to 2.1.3

* Sun Aug 27 2006 Garrick Staples <garrick@usc.edu> 2.1.2-3
- FC6 mass rebuild

* Wed Aug  2 2006 Garrick Staples <garrick@usc.edu> 2.1.2-2
- fix incorrect _pam_getpwnam_r usage in pam module

* Tue Aug  1 2006 Garrick Staples <garrick@usc.edu> 2.1.2-1
- bump to 2.1.2
- fix bz #200830
- enable new pam module

* Thu Jun 22 2006 Garrick Staples <garrick@usc.edu> 2.1.1-3
- rebuild

* Thu Jun 22 2006 Garrick Staples <garrick@usc.edu> 2.1.1-2
- rebuild with added README-localhost

* Thu Jun 22 2006 Garrick Staples <garrick@usc.edu> 2.1.1-1
- bump to 2.1.1

* Mon May 15 2006 Garrick Staples <garrick@usc.edu> 2.1.0p0-3
- get rid of the annoying "localhost only" package

* Fri May 12 2006 Garrick Staples <garrick@usc.edu> 2.1.0p0-2
- fix pbs_server segfault when mom_job_sync is enabled

* Thu May 11 2006 Garrick Staples <garrick@usc.edu> 2.1.0p0-1
- bump to final release

* Tue Apr 25 2006 Garrick Staples <garrick@usc.edu> 2.1.0p0-0.11.200604251602cvs
- bump to fix "mem" job resources for non-serial jobs
- rm.h is now installed

* Fri Apr 21 2006 Garrick Staples <garrick@usc.edu> 2.1.0p0-0.10.200604211036cvs
- bump

* Fri Apr 21 2006 Garrick Staples <garrick@usc.edu> 2.1.0p0-0.9.200604171430cvs
- fix qsub write return check

* Thu Apr 20 2006 Garrick Staples <garrick@usc.edu> 2.1.0p0-0.8.200604171430cvs
- fix pbs_sched error opening lockfile and immediately exiting

* Mon Apr 17 2006 Garrick Staples <garrick@usc.edu> 2.1.0p0-0.7.200604171430cvs
- importing to fedora extras

* Mon Apr 17 2006 Garrick Staples <garrick@usc.edu> 2.1.0p0-0.6.200604171430cvs
- add %%{dist} tag
- cleanup the cleanups in spec
- bump to matching upstream
- move headers to /usr/include/torque/

* Wed Apr 12 2006 Garrick Staples <garrick@usc.edu> 2.1.0p0-0.5.200604071240cvs
- remove rpath

* Tue Apr 11 2006 Garrick Staples <garrick@usc.edu> 2.1.0p0-0.4.200604071240cvs
- fix release string to match fedora guidelines

* Fri Apr  7 2006 Garrick Staples <garrick@usc.edu> 2.1.0p0-0.3.200604071240
- spec and initscript cleanups

* Wed Apr  5 2006 Garrick Staples <garrick@usc.edu> 2.1.0p0-0.2.200604051756
- add .desktop files

* Wed Apr  5 2006 Garrick Staples <garrick@usc.edu> 2.1.0p0-0.1.200604051756
- Initial package for Fedora Extras