Hi,

On Thu, Nov 12, 2015 at 11:36:08AM +0100, Ana Guerrero Lopez wrote:
> Please consider adding a -emulator package to allow run slurm
> in emulation mode as described at [1].
> Your git repo [2] doesn't seem to be up to date, so I made a patch
> against the current package in unstable.
> 
> [1] http://slurm.schedmd.com/faq.html#multi_slurmd
> [2] http://anonscm.debian.org/cgit/collab-maint/slurm-llnl.git

Here is an updated patch. This patch adds a new binary slurm-client-emulator
with the binaries rebuilt with the emulator build options.

I prefered adding a new binary with the binaries renamed. There
are another possibilities such as adding the binaries from
slurm-client-emulator directly in the binary slurm-wlm-emulator
and/or renaming the binaries from slurm-client and using alternatives
here too. I found the solution I chose the simplest one.

Ana
>From da4d2cc11246f7e09ff4ab9d0acbb63ac46f25a3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ana=20Guerrero=20L=C3=B3pez?= <a...@ekaia.org>
Date: Wed, 2 Dec 2015 00:00:50 +0100
Subject: [PATCH] Update packaging to add the slurm emulator.

This commit add two new packages slurm-wlm-emulator and
slurm-client-emulator to run slurm in emulator mode as described at
http://slurm.schedmd.com/faq.html#multi_slurmd
---
 debian/changelog                     | 15 ++++++++++++++
 debian/control                       | 21 +++++++++++++++++++
 debian/rules                         | 40 ++++++++++++++++++++++++++++++++++++
 debian/slurm-client-emulator.install | 18 ++++++++++++++++
 debian/slurm-wlm-emulator.install    |  3 +++
 debian/slurm-wlm-emulator.postinst   | 15 ++++++++++++++
 debian/slurm-wlm-emulator.prerm      | 14 +++++++++++++
 debian/slurmctld.install             |  2 +-
 debian/slurmctld.postinst            |  1 +
 debian/slurmctld.prerm               |  1 +
 debian/slurmd.install                |  4 ++--
 debian/slurmd.postinst               |  2 ++
 debian/slurmd.prerm                  | 13 ++++++++++++
 13 files changed, 146 insertions(+), 3 deletions(-)
 create mode 100644 debian/slurm-client-emulator.install
 create mode 100644 debian/slurm-wlm-emulator.install
 create mode 100644 debian/slurm-wlm-emulator.postinst
 create mode 100644 debian/slurm-wlm-emulator.prerm
 create mode 100644 debian/slurmd.prerm

diff --git a/debian/changelog b/debian/changelog
index 7b6f186..ca7e131 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,18 @@
+slurm-llnl (15.08.4-2) UNRELEASED; urgency=medium
+
+  * Add package slurm-wlm-emulator. This package provides binaries that are
+    already in the slurmd and slurmctld package. These packages binaries
+    have now the suffix -wlm and the binaries in slurm-wln-emulator got
+    the suffix -wlm-emulator.
+    The binaries are handled with alternatives, having the emulator package
+    a higher priority value.
+  * Add slurm-client-emulator with all the same binaries from slurm-client
+    built in emulator mode, these are the binaries to use when running thr
+    daemons from slurm-wlm-emulator.
+    Binaries have appended suffix -emulator to avoid conflicts.
+
+ -- Ana Guerrero Lopez <a...@debian.org>  Tue, 01 Dec 2015 23:09:08 +0100
+
 slurm-llnl (15.08.4-1) unstable; urgency=medium
 
   * New upstream release
diff --git a/debian/control b/debian/control
index 527f995..26fa986 100644
--- a/debian/control
+++ b/debian/control
@@ -435,3 +435,24 @@ Description: transitional dummy package for slurmdbd
  This is a transitional dummy package for slurmdbd
  It can safely be removed.
 
+Package: slurm-wlm-emulator
+Architecture: any
+Depends: ${misc:Depends},
+ slurmctld (= ${binary:Version}),
+ slurmd (= ${binary:Version})
+Description: SLURM emulator
+ SLURM, the Simple Linux Utility for Resource Management,
+ is an open-source cluster resource management and job scheduling.
+ .
+ This package installs the emulator binaries: slurmd, slurmctld
+ and slurmstepd.
+
+Package: slurm-client-emulator
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends},
+Description: SLURM client side commands for the emulator
+ SLURM stands for Simple Linux Utility for Resource Management, it
+ is an open-source cluster resource management and job scheduling system
+ that strives to be simple, scalable, portable, fault-tolerant, and
+ interconnect agnostic.
+ This package contains all client side commands for the emulator.
diff --git a/debian/rules b/debian/rules
index c66b6a9..f46dbce 100755
--- a/debian/rules
+++ b/debian/rules
@@ -11,12 +11,22 @@ include /usr/share/dpkg/architecture.mk
 %:
 	dh $@ --builddirectory --parallel --with systemd
 
+override_dh_auto_clean:
+	dh_auto_clean
+	dh_auto_clean --builddirectory build-emulator
+	rm -rf $(CURDIR)/debian/tmp-emulator
+
 # We run configure with --disable-debug to avoid the default use of -O0 and
 # consequent unprotected source functions, causing lintian report
 # hardening-no-fortify-functions
 # Notice that -g in CFLAGS is still provided by dpkg-buildflags
 override_dh_auto_configure:
 	dh_auto_configure -- --sysconfdir=/etc/slurm-llnl --localstatedir=/var/run/slurm-llnl --with-munge --without-blcr --enable-pam --without-rpath --disable-debug
+	dh_auto_configure --builddirectory build-emulator -- -sysconfdir=/etc/slurm-llnl --localstatedir=/var/run/slurm-llnl --with-munge --without-blcr --enable-pam --without-rpath --disable-debug --enable-front-end --enable-multiple-slurmd
+
+override_dh_auto_build:
+	dh_auto_build
+	dh_auto_build --builddirectory build-emulator
 
 override_dh_auto_install:
 	dh_auto_install
@@ -42,6 +52,36 @@ override_dh_auto_install:
 		pod2man $$i > debian/tmp/usr/share/man/man1/$$(basename $$i).1; \
 	done
 
+	# Rename binaries that are also in the slurm-wlm-emulator
+	mv debian/tmp/usr/sbin/slurmctld debian/tmp/usr/sbin/slurmctld-wlm
+	mv debian/tmp/usr/sbin/slurmd debian/tmp/usr/sbin/slurmd-wlm
+	mv debian/tmp/usr/sbin/slurmstepd debian/tmp/usr/sbin/slurmstepd-wlm
+
+	dh_auto_install --builddirectory build-emulator  --destdir=$(CURDIR)/debian/tmp-emulator
+	# Rename binaries in the emulator packages
+	mv debian/tmp-emulator/usr/sbin/slurmctld debian/tmp-emulator/usr/sbin/slurmctld-wlm-emulator
+	mv debian/tmp-emulator/usr/sbin/slurmd debian/tmp-emulator/usr/sbin/slurmd-wlm-emulator
+	mv debian/tmp-emulator/usr/sbin/slurmstepd debian/tmp-emulator/usr/sbin/slurmstepd-wlm-emulator
+	mv debian/tmp-emulator/usr/bin/sshare	debian/tmp-emulator/usr/bin/sshare-emulator
+	mv debian/tmp-emulator/usr/bin/scancel 	debian/tmp-emulator/usr/bin/scancel-emulator
+	mv debian/tmp-emulator/usr/bin/sattach 	debian/tmp-emulator/usr/bin/sattach-emulator
+	mv debian/tmp-emulator/usr/bin/sbatch 	debian/tmp-emulator/usr/bin/sbatch-emulator
+	mv debian/tmp-emulator/usr/bin/sreport 	debian/tmp-emulator/usr/bin/sreport-emulator
+	mv debian/tmp-emulator/usr/bin/sbcast 	debian/tmp-emulator/usr/bin/sbcast-emulator
+	mv debian/tmp-emulator/usr/bin/srun 	debian/tmp-emulator/usr/bin/srun-emulator
+	mv debian/tmp-emulator/usr/bin/squeue 	debian/tmp-emulator/usr/bin/squeue-emulator
+	mv debian/tmp-emulator/usr/bin/sprio 	debian/tmp-emulator/usr/bin/sprio-emulator
+	mv debian/tmp-emulator/usr/bin/smap 	debian/tmp-emulator/usr/bin/smap-emulator
+	mv debian/tmp-emulator/usr/bin/sdiag 	debian/tmp-emulator/usr/bin/sdiag-emulator
+	mv debian/tmp-emulator/usr/bin/strigger debian/tmp-emulator/usr/bin/strigger-emulator
+	mv debian/tmp-emulator/usr/bin/sinfo 	debian/tmp-emulator/usr/bin/sinfo-emulator
+	mv debian/tmp-emulator/usr/bin/salloc 	debian/tmp-emulator/usr/bin/salloc-emulator
+	mv debian/tmp-emulator/usr/bin/sacct	debian/tmp-emulator/usr/bin/sacct-emulator
+	mv debian/tmp-emulator/usr/bin/sacctmgr debian/tmp-emulator/usr/bin/sacctmgr-emulator
+	mv debian/tmp-emulator/usr/bin/scontrol debian/tmp-emulator/usr/bin/scontrol-emulator
+	mv debian/tmp-emulator/usr/bin/sstat	debian/tmp-emulator/usr/bin/sstat-emulator
+
+
 override_dh_strip:
 	dh_strip -plibslurm29 --dbg-package=libslurm29-dbg
 	dh_strip -plibslurmdb29 --dbg-package=libslurmdb29-dbg
diff --git a/debian/slurm-client-emulator.install b/debian/slurm-client-emulator.install
new file mode 100644
index 0000000..7b9ce9b
--- /dev/null
+++ b/debian/slurm-client-emulator.install
@@ -0,0 +1,18 @@
+debian/tmp-emulator/usr/bin/sshare-emulator 	/usr/bin/
+debian/tmp-emulator/usr/bin/scancel-emulator 	/usr/bin/
+debian/tmp-emulator/usr/bin/sattach-emulator 	/usr/bin/
+debian/tmp-emulator/usr/bin/sbatch-emulator 	/usr/bin/
+debian/tmp-emulator/usr/bin/sreport-emulator 	/usr/bin/
+debian/tmp-emulator/usr/bin/sbcast-emulator 	/usr/bin/
+debian/tmp-emulator/usr/bin/srun-emulator 		/usr/bin/
+debian/tmp-emulator/usr/bin/squeue-emulator 	/usr/bin/
+debian/tmp-emulator/usr/bin/sprio-emulator 		/usr/bin/
+debian/tmp-emulator/usr/bin/smap-emulator 		/usr/bin/
+debian/tmp-emulator/usr/bin/sdiag-emulator 		/usr/bin/
+debian/tmp-emulator/usr/bin/strigger-emulator 	/usr/bin/
+debian/tmp-emulator/usr/bin/sinfo-emulator 		/usr/bin/
+debian/tmp-emulator/usr/bin/salloc-emulator 	/usr/bin/
+debian/tmp-emulator/usr/bin/sacct-emulator 		/usr/bin/
+debian/tmp-emulator/usr/bin/sacctmgr-emulator 	/usr/bin/
+debian/tmp-emulator/usr/bin/scontrol-emulator 	/usr/bin/
+debian/tmp-emulator/usr/bin/sstat-emulator 		/usr/bin/
diff --git a/debian/slurm-wlm-emulator.install b/debian/slurm-wlm-emulator.install
new file mode 100644
index 0000000..ecc511c
--- /dev/null
+++ b/debian/slurm-wlm-emulator.install
@@ -0,0 +1,3 @@
+debian/tmp-emulator/usr/sbin/slurmctld-wlm-emulator	/usr/sbin/
+debian/tmp-emulator/usr/sbin/slurmd-wlm-emulator	/usr/sbin/
+debian/tmp-emulator/usr/sbin/slurmstepd-wlm-emulator	/usr/sbin/
diff --git a/debian/slurm-wlm-emulator.postinst b/debian/slurm-wlm-emulator.postinst
new file mode 100644
index 0000000..dded80f
--- /dev/null
+++ b/debian/slurm-wlm-emulator.postinst
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+set -e
+
+if [ "$1" = "configure" ] ; then
+
+  update-alternatives --install /usr/sbin/slurmctld slurmctld /usr/sbin/slurmctld-wlm-emulator 60
+  update-alternatives --install /usr/sbin/slurmd slurmd /usr/sbin/slurmd-wlm-emulator 60 \
+    --slave /usr/sbin/slurmstepd slurmstepd /usr/sbin/slurmstepd-wlm-emulator
+
+fi
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/slurm-wlm-emulator.prerm b/debian/slurm-wlm-emulator.prerm
new file mode 100644
index 0000000..a37d95c
--- /dev/null
+++ b/debian/slurm-wlm-emulator.prerm
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+set -e
+
+case "$1" in
+	remove|deconfigure)
+		update-alternatives --remove slurmctld /usr/sbin/slurmctld-wlm-emulator
+		update-alternatives --remove slurmd /usr/sbin/slurmd-wlm-emulator
+		;;
+esac
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/slurmctld.install b/debian/slurmctld.install
index 22db354..4f42c2a 100644
--- a/debian/slurmctld.install
+++ b/debian/slurmctld.install
@@ -1 +1 @@
-usr/sbin/slurmctld
+usr/sbin/slurmctld-wlm
diff --git a/debian/slurmctld.postinst b/debian/slurmctld.postinst
index cb04cfa..5721a88 100644
--- a/debian/slurmctld.postinst
+++ b/debian/slurmctld.postinst
@@ -22,6 +22,7 @@ case "$1" in
       chown slurm:slurm /var/lib/slurm-llnl
       chown slurm:slurm /var/lib/slurm-llnl/slurmctld
       chown slurm:slurm /var/log/slurm-llnl
+      update-alternatives --install /usr/sbin/slurmctld slurmctld /usr/sbin/slurmctld-wlm 50
     ;;
 
     abort-upgrade|abort-remove|abort-deconfigure)
diff --git a/debian/slurmctld.prerm b/debian/slurmctld.prerm
index 8c65149..52b61b9 100644
--- a/debian/slurmctld.prerm
+++ b/debian/slurmctld.prerm
@@ -22,6 +22,7 @@ case "$1" in
         scancel --state=pending
         scancel --state=running
       fi
+      update-alternatives --remove slurmctld /usr/sbin/slurmctld-wlm
     ;;
 
     upgrade)
diff --git a/debian/slurmd.install b/debian/slurmd.install
index 6d15e33..2926fc1 100644
--- a/debian/slurmd.install
+++ b/debian/slurmd.install
@@ -1,2 +1,2 @@
-usr/sbin/slurmd
-usr/sbin/slurmstepd
+usr/sbin/slurmd-wlm
+usr/sbin/slurmstepd-wlm
diff --git a/debian/slurmd.postinst b/debian/slurmd.postinst
index 629911e..6dc5c33 100644
--- a/debian/slurmd.postinst
+++ b/debian/slurmd.postinst
@@ -30,6 +30,8 @@ case "$1" in
         STARTOPTION="startclean"
       fi
 
+      update-alternatives --install /usr/sbin/slurmd slurmd /usr/sbin/slurmd-wlm 50 \
+	--slave /usr/sbin/slurmstepd slurmstepd /usr/sbin/slurmstepd-wlm
     ;;
 
     abort-upgrade|abort-remove|abort-deconfigure)
diff --git a/debian/slurmd.prerm b/debian/slurmd.prerm
new file mode 100644
index 0000000..7dffaa6
--- /dev/null
+++ b/debian/slurmd.prerm
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+set -e
+
+case "$1" in
+	remove|deconfigure)
+		update-alternatives --remove slurmd /usr/sbin/slurmd-wlm
+		;;
+esac
+
+#DEBHELPER#
+
+exit 0
-- 
2.6.2

Reply via email to