Hi folks, I've identified a bug in the upstart job support that was added to the rpcbind package in the 0.2.0-8.1 NMU, so I have prepared a follow-up NMU. I am attaching both the debdiff between -8.1 and -8.2, and the debdiff between -8 and -8.2, for your reference.
This NMU will be uploaded to unstable shortly. Thanks, -- Steve Langasek Give me a lever long enough and a Free OS Debian Developer to set it on, and I can move the world. Ubuntu Developer http://www.debian.org/ [email protected] [email protected]
diff -Nru rpcbind-0.2.0/debian/changelog rpcbind-0.2.0/debian/changelog --- rpcbind-0.2.0/debian/changelog 2013-08-12 09:13:00.000000000 -0700 +++ rpcbind-0.2.0/debian/changelog 2013-08-31 12:47:38.000000000 -0700 @@ -1,3 +1,10 @@ +rpcbind (0.2.0-8.2) unstable; urgency=low + + * Fix an error in the Ubuntu compatibility of the upstart job regarding + initctl emit commands. Closes: #719357. + + -- Steve Langasek <[email protected]> Sat, 31 Aug 2013 19:47:34 +0000 + rpcbind (0.2.0-8.1) unstable; urgency=low * Non-maintainer upload, approved by Luk Claes. diff -Nru rpcbind-0.2.0/debian/rpcbind.upstart rpcbind-0.2.0/debian/rpcbind.upstart --- rpcbind-0.2.0/debian/rpcbind.upstart 2013-08-10 16:19:18.000000000 -0700 +++ rpcbind-0.2.0/debian/rpcbind.upstart 2013-08-14 16:14:35.000000000 -0700 @@ -34,5 +34,5 @@ end script # For compatibility with older upstart jobs in Ubuntu -post-start exec initctl emit --no-wait started portmap ON_BOOT=$ON_BOOT -pre-stop exec initctl emit --no-wait stopping portmap +post-start exec initctl emit --no-wait started JOB=portmap ON_BOOT=$ON_BOOT +pre-stop exec initctl emit --no-wait stopping JOB=portmap
=== modified file 'debian/changelog' --- a/debian/changelog 2012-06-16 00:02:37 +0000 +++ b/debian/changelog 2013-08-31 19:47:38 +0000 @@ -1,3 +1,24 @@ +rpcbind (0.2.0-8.2) unstable; urgency=low + + * Fix an error in the Ubuntu compatibility of the upstart job regarding + initctl emit commands. Closes: #719357. + + -- Steve Langasek <[email protected]> Sat, 31 Aug 2013 19:47:34 +0000 + +rpcbind (0.2.0-8.1) unstable; urgency=low + + * Non-maintainer upload, approved by Luk Claes. + * Convert rpcbind to Upstart. Closes: #719357. + * Fix to look directly in /run instead of via the /var/run symlink. + * Adjust init script to start rpcbind only in rcS, not to try to start it + again in runlevels [2345]: the service should always start reliably in + rcS, with no reason to ever restart it later. In practice, insserv + already ignores the request to run the script twice (considering it + "done" already after leaving runlevel S), so this is merely correcting + the documentation of the current behavior. Closes: #623377. + + -- Steve Langasek <[email protected]> Mon, 12 Aug 2013 18:11:48 +0200 + rpcbind (0.2.0-8) unstable; urgency=low * Relabel the files if SE Linux is active === modified file 'debian/control' --- a/debian/control 2012-06-16 00:02:37 +0000 +++ b/debian/control 2013-08-11 10:41:15 +0000 @@ -9,7 +9,7 @@ Package: rpcbind Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends}, lsb-base (>= 3.2-14), insserv (>= 1.14.0-2.1) | file-rc, initscripts (>= 2.88dsf-13.3) +Depends: ${shlibs:Depends}, ${misc:Depends}, lsb-base (>= 4.1+Debian3), insserv (>= 1.14.0-2.1) | file-rc, initscripts (>= 2.88dsf-13.3) Conflicts: portmap Provides: portmap Description: converts RPC program numbers into universal addresses === modified file 'debian/init.d' --- a/debian/init.d 2012-06-16 00:02:37 +0000 +++ b/debian/init.d 2013-08-12 16:08:42 +0000 @@ -6,7 +6,7 @@ # Provides: rpcbind # Required-Start: $network $local_fs # Required-Stop: $network $local_fs -# Default-Start: S 2 3 4 5 +# Default-Start: S # Default-Stop: 0 1 6 # Short-Description: RPC portmapper replacement # Description: rpcbind is a server that converts RPC (Remote @@ -78,12 +78,21 @@ case "$1" in start) + if init_is_upstart; then + exit 1 + fi start $OPTIONS ;; stop) + if init_is_upstart; then + exit 0 + fi stop ;; restart|force-reload) + if init_is_upstart; then + exit 1 + fi stop start $OPTIONS ;; === added file 'debian/patches/run-migration' --- a/debian/patches/run-migration 1970-01-01 00:00:00 +0000 +++ b/debian/patches/run-migration 2013-08-10 21:22:57 +0000 @@ -0,0 +1,44 @@ +Author: Steve Langasek <[email protected]> +Description: Fix to look directly in /run instead of via the /var/run symlink + Because /var may be a separate partition, and could even be mounted via NFS, + and in wheezy and later /var/run is a symlink to /run, look up our files in + /run directly. This ensures rpcbind can be started early in boot without + any races. +Index: oneiric/src/rpcbind.c +=================================================================== +--- oneiric.orig/src/rpcbind.c ++++ oneiric/src/rpcbind.c +@@ -89,7 +89,14 @@ + /* who to suid to if -s is given */ + #define RUN_AS "daemon" + +-#define RPCBINDDLOCK "/var/run/rpcbind.lock" ++#define RPCBINDDLOCK "/run/rpcbind.lock" ++ ++/* Bypass the libtirpc definition, because we know that /var/run is a compat ++ * symlink to /run. */ ++#ifdef _PATH_RPCBINDSOCK ++#undef _PATH_RPCBINDSOCK ++#endif ++#define _PATH_RPCBINDSOCK "/run/rpcbind.sock" + + int runasdaemon = 0; + int insecure = 0; +Index: oneiric/src/rpcinfo.c +=================================================================== +--- oneiric.orig/src/rpcinfo.c ++++ oneiric/src/rpcinfo.c +@@ -75,6 +75,13 @@ + #define MAX_VERS ((u_long)4294967295UL) + #define UNKNOWN "unknown" + ++/* Bypass the libtirpc definition, because we know that /var/run is a compat ++ * symlink to /run. */ ++#ifdef _PATH_RPCBINDSOCK ++#undef _PATH_RPCBINDSOCK ++#endif ++#define _PATH_RPCBINDSOCK "/run/rpcbind.sock" ++ + /* + * Functions to be performed. + */ === modified file 'debian/patches/series' --- a/debian/patches/series 2011-12-10 11:36:35 +0000 +++ b/debian/patches/series 2013-08-10 21:18:15 +0000 @@ -2,3 +2,4 @@ 02-manpages.patch 03-563971-warmstart-error-msg.patch 04-610718-non-linux.patch +run-migration === modified file 'debian/postinst' --- a/debian/postinst 2011-12-10 11:36:35 +0000 +++ b/debian/postinst 2013-08-12 22:46:00 +0000 @@ -10,6 +10,9 @@ ln -s /run/rpcbind.pid /run/sendsigs.omit.d/rpcbind fi fi + if dpkg --compare-versions "$2" lt "0.2.0-8.1"; then + update-rc.d -f rpcbind remove + fi fi #DEBHELPER# === added file 'debian/rpcbind.portmap-wait.upstart' --- a/debian/rpcbind.portmap-wait.upstart 1970-01-01 00:00:00 +0000 +++ b/debian/rpcbind.portmap-wait.upstart 2013-08-10 22:27:10 +0000 @@ -0,0 +1,28 @@ +# portmap-wait +# Note that this is called portmap-wait rather than rpcbind-wait because +# other packages rely on the portmap-wait name. + +description "Start this job to wait until rpcbind is started or fails to start" +author "Clint Byrum <[email protected]>" + +stop on started rpcbind or stopped rpcbind + +# Needed to make starting the job successful despite being killed +normal exit 2 +task + +# We know that we have more than one job that needs to wait for rpcbind and +# will make use of this service, so we need to instantiate. +instance $WAITER + +script + + status rpcbind | grep -q "start/running" && exit 0 + + start rpcbind ON_BOOT=y || true + + # Waiting forever is ok.. upstart will kill this job when + # the rpcbind we tried to start above either starts or stops + while sleep 3600; do :; done + +end script === added file 'debian/rpcbind.rpcbind-boot.upstart' --- a/debian/rpcbind.rpcbind-boot.upstart 1970-01-01 00:00:00 +0000 +++ b/debian/rpcbind.rpcbind-boot.upstart 2013-08-10 21:18:15 +0000 @@ -0,0 +1,10 @@ +# portmap-boot + +description "Upstart job to start rpcbind on boot only" +author "Clint Byrum" + +start on virtual-filesystems and net-device-up IFACE=lo + +task + +exec initctl emit --no-wait start-rpcbind ON_BOOT=y === added file 'debian/rpcbind.upstart' --- a/debian/rpcbind.upstart 1970-01-01 00:00:00 +0000 +++ b/debian/rpcbind.upstart 2013-08-14 23:14:35 +0000 @@ -0,0 +1,38 @@ +# rpcbind - RPC portmapper replacement + +# rpcbind is a server that converts RPC (Remote Procedure Call) program +# numbers into DARPA protocol port numbers. It must be running in order +# to make RPC calls. + +# Note that this is called portmap rather than rpcbind because other +# packages rely on the portmap name. + +description "RPC portmapper replacement" +author "Colin Watson <[email protected]>" + +start on start-rpcbind +stop on unmounted-remote-filesystems + +# ON_BOOT is set on start-rpcbind in rpcbind-boot.conf +# Used by statd which must not start on started portmap during boot +export ON_BOOT +env ON_BOOT= + +expect fork +respawn + +pre-start exec mkdir -p /run/rpcbind + +script + OPTIONS="-w" + if [ -f /etc/default/rpcbind ]; then + . /etc/default/rpcbind + elif [ -f /etc/rpcbind.conf ]; then + . /etc/rpcbind.conf + fi + exec rpcbind $OPTIONS +end script + +# For compatibility with older upstart jobs in Ubuntu +post-start exec initctl emit --no-wait started JOB=portmap ON_BOOT=$ON_BOOT +pre-stop exec initctl emit --no-wait stopping JOB=portmap === modified file 'debian/rules' --- a/debian/rules 2012-06-16 00:02:37 +0000 +++ b/debian/rules 2013-08-10 23:10:19 +0000 @@ -72,7 +72,9 @@ dh_installdocs dh_installexamples dh_installman man/rpcinfo.7 - dh_installinit -- start 43 S 2 3 4 5 . start 32 0 6 . stop 81 1 . + dh_installinit --no-start --name rpcbind-boot + dh_installinit --no-start --name portmap-wait + dh_installinit dh_link dh_strip dh_compress
signature.asc
Description: Digital signature

