[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#686387: unblock: upstart/1.5-1, mountall/2.39, ifupdown/0.7.3, udev/175-8 sysvinit/2.88dsf-33



On Sat, Sep 15, 2012 at 03:34:58PM +0200, Julien Cristau wrote:
> On Fri, Aug 31, 2012 at 20:02:48 +0000, Steve Langasek wrote:

> > Provisional release team approval of the ifupdown/udev changes in particular
> > could be helpful, as the maintainers may be wary of uploading these changes
> > if they may not get into wheezy.

> Care to attach the ifupdown and udev patches to this bug?

Attached the current versions of the patches from the linked ifupdown/udev
bugs.

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/
slangasek@ubuntu.com                                     vorlon@debian.org
diff -r 04447c456b21 debian/changelog
--- a/debian/changelog	Thu Aug 16 23:23:11 2012 +0200
+++ b/debian/changelog	Fri Aug 31 11:07:06 2012 -0700
@@ -1,3 +1,9 @@
+ifupdown (0.7.3) UNRELEASED; urgency=low
+
+  * Add upstart support.
+
+ -- Steve Langasek <vorlon@debian.org>  Thu, 28 Jun 2012 15:23:57 -0700
+
 ifupdown (0.7.2) unstable; urgency=low
 
   * Don't install /etc/default/networking as executable (Closes: #679623).
diff -r 04447c456b21 debian/control
--- a/debian/control	Thu Aug 16 23:23:11 2012 +0200
+++ b/debian/control	Fri Aug 31 11:07:06 2012 -0700
@@ -4,7 +4,7 @@
 Maintainer: Andrew O. Shadura <bugzilla@tut.by>
 Uploaders: Petter Reinholdtsen <pere@debian.org>
 Standards-Version: 3.9.3
-Build-Depends: debhelper (>= 8.1.0~), noweb
+Build-Depends: debhelper (>= 9.20120410~), noweb
 Vcs-Hg: http://anonscm.debian.org/hg/collab-maint/ifupdown/
 Vcs-Browser: http://anonscm.debian.org/hg/collab-maint/ifupdown/
 
diff -r 04447c456b21 debian/ifupdown.network-interface-container.upstart
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/debian/ifupdown.network-interface-container.upstart	Fri Aug 31 11:07:06 2012 -0700
@@ -0,0 +1,19 @@
+# network-interface-container - woarkound for missing events in container
+#
+# This service emits missing net-device-added events for containers.
+# It's needed in cases where devices are created before the container
+# starts and so won't get a udev event.
+
+description "workaround for missing events in container"
+start on container
+
+emits net-device-added
+
+task
+script
+    case "$CONTAINER" in
+        lxc|lxc-libvirt)
+            initctl emit --no-wait net-device-added INTERFACE=lo || true
+        ;;
+    esac
+end script
diff -r 04447c456b21 debian/ifupdown.network-interface-security.upstart
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/debian/ifupdown.network-interface-security.upstart	Fri Aug 31 11:07:06 2012 -0700
@@ -0,0 +1,34 @@
+# network-interface-security - configure network device security
+#
+# This is a one-time start-up script to load AppArmor profiles needed
+# before the network comes up.
+
+description	"configure network device security"
+
+# In order to avoid upstart bug LP: #447654, we cannot have an AND
+# statement here (with the ORs).  An "and virtual-filesystems" is desired
+# here to make sure that the securityfs is mounted, but since each of the
+# ORed services already require virtual-filesystems be mounted, this is safe:
+start on (starting network-interface
+          or starting network-manager
+          or starting networking)
+
+# In order to handle the lack of upstart feature LP: #568860, we need to
+# run multiple times, for each of the above "starting" service instances, or
+# else another one might run while we're running, and not wait for us to
+# finish.
+instance $JOB${INTERFACE:+/}${INTERFACE:-}
+
+# Since we need these profiles to be loaded before any of the above services
+# begin running, this service must be a pre-start so that its pre-start
+# script finishes before the above services' start scripts begin.
+pre-start script
+    [ -f /run/network-interface-security ] && exit 0 # already ran
+    [ -d /rofs/etc/apparmor.d ]  && exit 0 # do not load on liveCD
+    [ -d /sys/module/apparmor ]  || exit 0 # do not load without AppArmor
+    [ -x /sbin/apparmor_parser ] || exit 0 # do not load without parser
+    for link in /etc/apparmor/init/network-interface-security/* ; do
+        [ -L $link ] && /sbin/apparmor_parser -r -W $link || true
+    done
+    > /run/network-interface-security
+end script
diff -r 04447c456b21 debian/ifupdown.network-interface.upstart
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/debian/ifupdown.network-interface.upstart	Fri Aug 31 11:07:06 2012 -0700
@@ -0,0 +1,30 @@
+# network-interface - configure network device
+#
+# This service causes network devices to be brought up or down as a result
+# of hardware being added or removed, including that which isn't ordinarily
+# removable.
+
+description	"configure network device"
+
+emits net-device-up
+emits net-device-down
+emits static-network-up
+
+start on net-device-added
+stop on net-device-removed INTERFACE=$INTERFACE
+
+instance $INTERFACE
+export INTERFACE
+
+pre-start script
+    if [ "$INTERFACE" = lo ]; then
+	# bring this up even if /etc/network/interfaces is broken
+	ifconfig lo 127.0.0.1 up || true
+	initctl emit -n net-device-up \
+	    IFACE=lo LOGICAL=lo ADDRFAM=inet METHOD=loopback || true
+    fi
+    mkdir -p /run/network
+    exec ifup --allow auto $INTERFACE
+end script
+
+post-stop exec ifdown --allow auto $INTERFACE
diff -r 04447c456b21 debian/ifupdown.networking.upstart
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/debian/ifupdown.networking.upstart	Fri Aug 31 11:07:06 2012 -0700
@@ -0,0 +1,66 @@
+# networking - configure virtual network devices
+#
+# This task causes virtual network devices that do not have an associated
+# kernel object to be started on boot.
+
+description	"configure virtual network devices"
+
+emits static-network-up
+emits net-device-up
+
+start on (local-filesystems
+      and (stopped udevtrigger or container))
+stop on unmounted-remote-filesystems
+
+pre-start script
+    mkdir -p /run/network
+    ifup -a
+end script
+
+post-stop script
+    log_warning_msg() {
+        echo $*
+    }
+
+    # These checks were taken from the Debian ifupdown.networking.init script
+    check_network_file_systems() {
+        [ -e /proc/mounts ] || return 0
+
+        if [ -e /etc/iscsi/iscsi.initramfs ]; then
+            log_warning_msg "not deconfiguring network interfaces: iSCSI root is mounted."
+            exit 0
+        fi
+
+        while read DEV MTPT FSTYPE REST; do
+            case $DEV in
+            /dev/nbd*|/dev/nd[a-z]*|/dev/etherd/e*)
+                log_warning_msg "not deconfiguring network interfaces: network devices still mounted."
+                exit 0
+                ;;
+            esac
+            case $FSTYPE in
+            nfs|nfs4|smbfs|ncp|ncpfs|cifs|coda|ocfs2|gfs|pvfs|pvfs2|fuse.httpfs|fuse.curlftpfs)
+                log_warning_msg "not deconfiguring network interfaces: network file systems still mounted."
+                exit 0
+                ;;
+            esac
+        done < /proc/mounts
+    }
+
+    check_network_swap() {
+        [ -e /proc/swaps ] || return 0
+
+        while read DEV MTPT FSTYPE REST; do
+            case $DEV in
+            /dev/nbd*|/dev/nd[a-z]*|/dev/etherd/e*)
+                log_warning_msg "not deconfiguring network interfaces: network swap still mounted."
+                exit 0
+                ;;
+            esac
+        done < /proc/swaps
+    }
+
+    check_network_file_systems
+    check_network_swap
+    ifdown -a
+end script
diff -r 04447c456b21 debian/ifupdown.upstart.if-down
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/debian/ifupdown.upstart.if-down	Fri Aug 31 11:07:06 2012 -0700
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+set -e
+
+initctl emit -n net-device-down \
+	"IFACE=$IFACE" \
+	"LOGICAL=$LOGICAL" \
+	"ADDRFAM=$ADDRFAM" \
+	"METHOD=$METHOD"
diff -r 04447c456b21 debian/ifupdown.upstart.if-up
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/debian/ifupdown.upstart.if-up	Fri Aug 31 11:07:06 2012 -0700
@@ -0,0 +1,48 @@
+#!/bin/sh
+MARK_DEV_PREFIX="/run/network/ifup."
+MARK_STATIC_NETWORK_EMITTED="/run/network/static-network-up-emitted"
+
+set -e
+
+# Let's ignore meta entries (ifup -a)
+if [ "$ADDRFAM" = "meta" ]; then
+    return 0
+fi
+
+# lo emission handled by /etc/init/network-interface.conf
+if [ "$IFACE" != lo ]; then
+    initctl emit -n net-device-up \
+        "IFACE=$IFACE" \
+        "LOGICAL=$LOGICAL" \
+        "ADDRFAM=$ADDRFAM" \
+        "METHOD=$METHOD"
+fi
+
+get_auto_interfaces() {
+	# write to stdout a list of interfaces configured as 'auto' in interfaces(5)
+	local found=""
+	# stderr redirected as it outputs things like:
+	# Ignoring unknown interface eth0=eth0.
+	found=$(ifquery --list --allow auto 2>/dev/null) || return
+	set -- ${found}
+	echo "$@"
+}
+
+all_interfaces_up() {
+	# return true if all interfaces listed in /etc/network/interfaces as 'auto'
+	# are up.  if no interfaces are found there, then "all [given] were up"
+	local prefix="$1" iface=""
+	for iface in $(get_auto_interfaces); do
+		# if cur interface does is not up, then all have not been brought up
+		[ -f "${prefix}${iface}" ] || return 1
+	done
+	return 0
+}
+
+# touch our own "marker" indicating that this interface has been brought up.
+: > "${MARK_DEV_PREFIX}$IFACE"
+
+if all_interfaces_up "${MARK_DEV_PREFIX}" &&
+	mkdir "${MARK_STATIC_NETWORK_EMITTED}" 2>/dev/null; then
+	initctl emit --no-wait static-network-up
+fi
diff -r 04447c456b21 debian/networking.init
--- a/debian/networking.init	Thu Aug 16 23:23:11 2012 +0200
+++ b/debian/networking.init	Fri Aug 31 11:07:06 2012 -0700
@@ -114,6 +114,9 @@
 
 case "$1" in
 start)
+	if init_is_upstart; then
+		exit 1
+	fi
 	process_options
 	check_ifstate
 
@@ -134,6 +137,9 @@
 	;;
 
 stop)
+	if init_is_upstart; then
+		exit 0
+	fi
 	check_network_file_systems
 	check_network_swap
 
@@ -159,6 +165,9 @@
 	;;
 
 force-reload|restart)
+	if init_is_upstart; then
+		exit 1
+	fi
 	process_options
 
 	log_warning_msg "Running $0 $1 is deprecated because it may not re-enable some interfaces"
diff -r 04447c456b21 debian/rules
--- a/debian/rules	Thu Aug 16 23:23:11 2012 +0200
+++ b/debian/rules	Fri Aug 31 11:07:06 2012 -0700
@@ -52,6 +52,13 @@
 override_dh_installinit:
 	dh_installinit --name=networking --no-start -- start 40 S . start 35 0 6 .
 	install -p -m 0644 debian/networking.defaults $(DESTDIR)/etc/default/networking
+	dh_installinit --name=network-interface-container --noscripts
+	dh_installinit --name=network-interface-security --noscripts
+	dh_installinit --name=network-interface --noscripts
+	dh_installinit --name=networking --noscripts
+
+override_dh_installifupdown:
+	dh_installifupdown --name=upstart
 
 override_dh_auto_clean:
 	$(MAKE) clean
diff -Nru udev-175/debian/changelog udev-175/debian/changelog
--- udev-175/debian/changelog	2012-08-17 10:24:27.000000000 +0000
+++ udev-175/debian/changelog	2012-08-28 19:08:49.000000000 +0000
@@ -1,3 +1,10 @@
+udev (175-7.1) UNRELEASED; urgency=low
+
+  * Non-maintainer upload.
+  * Add upstart support.
+
+ -- Steve Langasek <vorlon@debian.org>  Tue, 28 Aug 2012 12:08:43 -0700
+
 udev (175-7) unstable; urgency=low
 
   * Clean up better /etc/udev/rules.d/ on purge. (Closes: #685065)
diff -Nru udev-175/debian/rules udev-175/debian/rules
--- udev-175/debian/rules	2012-08-12 15:49:52.000000000 +0000
+++ udev-175/debian/rules	2012-08-31 05:30:55.000000000 +0000
@@ -179,6 +179,10 @@
 	dh_installinit --no-start --update-rcd-params='start 03 S .'
 	dh_installinit --no-start --update-rcd-params='start 36 S .' \
 		--name=udev-mtab
+	dh_installinit --name=udev-finish --no-start -- start 37 S .
+	dh_installinit --name=udevtrigger --no-start
+	dh_installinit --name=udevmonitor --no-start
+	dh_installinit --name=udev-fallback-graphics --no-start
 
 	dh_strip
 	dh_compress
diff -Nru udev-175/debian/udev.init udev-175/debian/udev.init
--- udev-175/debian/udev.init	2012-07-30 03:04:05.000000000 +0000
+++ udev-175/debian/udev.init	2012-08-31 15:54:48.000000000 +0000
@@ -160,6 +160,9 @@
 
 case "$1" in
     start)
+    if init_is_upstart; then
+	exit 1
+    fi
     if mountpoint -q $udev_root/; then
 	log_failure_msg "$udev_root is already mounted"
 	log_end_msg 1
@@ -189,6 +192,13 @@
 
     ;;
     stop)
+    # make sure a manual invocation of the init script doesn't stop an
+    # upstart-controlled instance of udev
+    if [ -x /sbin/initctl ] && initctl version | grep -q upstart \
+       && status udev | grep start
+    then
+	exit 0
+    fi
     log_daemon_msg "Stopping the hotplug events dispatcher" "udevd"
     if start-stop-daemon --stop --name udevd --user root --quiet --oknodo --retry 5; then
 	log_end_msg $?
@@ -206,6 +216,9 @@
     ;;
 
     restart)
+    if init_is_upstart; then
+	exit 1
+    fi
     log_daemon_msg "Stopping the hotplug events dispatcher" "udevd"
     if start-stop-daemon --stop --name udevd --user root --quiet --oknodo --retry 5; then
 	log_end_msg $?
@@ -246,6 +259,9 @@
 
 case "$1" in
     start)
+    if init_is_upstart; then
+	exit 1
+    fi
     if mountpoint -q $udev_root/; then
 	TMPFS_MOUNTED=1
     elif [ -e "$udev_root/.udev/" ]; then
@@ -314,6 +330,9 @@
     ;;
 
     restart)
+    if init_is_upstart; then
+	exit 1
+    fi
     log_daemon_msg "Stopping the hotplug events dispatcher" "udevd"
     if start-stop-daemon --stop --name udevd --user root --quiet --oknodo --retry 5; then
 	log_end_msg $?
diff -Nru udev-175/debian/udev.preinst udev-175/debian/udev.preinst
--- udev-175/debian/udev.preinst	2011-11-14 02:18:40.000000000 +0000
+++ udev-175/debian/udev.preinst	2012-08-31 05:14:53.000000000 +0000
@@ -198,10 +198,21 @@
   fi
 }
 
+stop_on_upstart_upgrade() {
+  if which initctl >/dev/null && initctl version | grep -q upstart
+  then
+    # We have to stop udev before we can restart it under upstart in the
+    # postinst.
+    invoke-rc.d udev stop
+  fi
+}
+
 check_version() {
   # $2 is non-empty when installing from the "config-files" state
   [ "$2" ] || return 0
 
+  if dpkg --compare-versions $2 lt 175-7.1; then
+
   if dpkg --compare-versions $2 lt 175-1; then
 
   if dpkg --compare-versions $2 lt 168-2; then
@@ -262,6 +273,9 @@
   rm_conffile /etc/modprobe.d/blacklist.conf
 
   fi # 175-1
+
+  stop_on_upstart_upgrade
+  fi # 175-7.1
 }
 
 case "$1" in
diff -Nru udev-175/debian/udev.udev-fallback-graphics.upstart udev-175/debian/udev.udev-fallback-graphics.upstart
--- udev-175/debian/udev.udev-fallback-graphics.upstart	1970-01-01 00:00:00.000000000 +0000
+++ udev-175/debian/udev.udev-fallback-graphics.upstart	2012-08-22 21:36:41.000000000 +0000
@@ -0,0 +1,21 @@
+# fallback-graphics - take actions to initiate fallback graphics
+#
+# if we have cold plugged everything and not yet seen a valid graphics
+# device,
+# shove a fallback framebuffer into the mix and hope for the best.
+
+description	"load fallback graphics devices"
+
+# We only want this job to happen once per boot, hence 'startup and ...'.
+start on (startup and 
+	  (graphics-device-added PRIMARY_DEVICE_FOR_DISPLAY=1
+           or drm-device-added PRIMARY_DEVICE_FOR_DISPLAY=1
+           or stopped udevtrigger or container))
+
+task
+
+script
+    if [ "$PRIMARY_DEVICE_FOR_DISPLAY" = "" ]; then
+        modprobe -q -b vesafb
+    fi
+end script
diff -Nru udev-175/debian/udev.udev-finish.upstart udev-175/debian/udev.udev-finish.upstart
--- udev-175/debian/udev.udev-finish.upstart	1970-01-01 00:00:00.000000000 +0000
+++ udev-175/debian/udev.udev-finish.upstart	2012-08-22 21:36:41.000000000 +0000
@@ -0,0 +1,30 @@
+# udev-finish - save udev log and update rules
+#
+# While udev runs we not only create the log file of initial device
+# creation but udev rules may be generated, we need to copy both of
+# these out of /dev and onto the root filesystem.
+
+description	"save udev log and update rules"
+
+start on (startup
+	  and filesystem
+	  and started udev
+	  and stopped udevtrigger
+	  and stopped udevmonitor)
+
+task
+script
+    # Save udev log in /var/log/udev
+    if [ -e /dev/.udev.log ]
+    then
+	mv -f /dev/.udev.log /var/log/udev || :
+    fi
+
+    # Copy any rules generated while the root filesystem was read-only
+    for file in /dev/.udev/tmp-rules--*
+    do
+	[ -e "$file" ] || continue
+	cat "$file" >> "/etc/udev/rules.d/${file##*tmp-rules--}"
+	rm -f "$file"
+    done
+end script
diff -Nru udev-175/debian/udev.udevmonitor.upstart udev-175/debian/udev.udevmonitor.upstart
--- udev-175/debian/udev.udevmonitor.upstart	1970-01-01 00:00:00.000000000 +0000
+++ udev-175/debian/udev.udevmonitor.upstart	2012-08-22 21:36:41.000000000 +0000
@@ -0,0 +1,13 @@
+# udevmonitor - log initial device creation
+#
+# The set of devices created in the "cold plug" pass is generally
+# useful for debugging, so we monitor this and create a log file
+# from that.
+
+description	"log initial device creation"
+
+start on (startup
+	  and starting udevtrigger)
+stop on stopped udevtrigger
+
+exec /sbin/udevadm monitor -e >/dev/.udev.log
diff -Nru udev-175/debian/udev.udevtrigger.upstart udev-175/debian/udev.udevtrigger.upstart
--- udev-175/debian/udev.udevtrigger.upstart	1970-01-01 00:00:00.000000000 +0000
+++ udev-175/debian/udev.udevtrigger.upstart	2012-08-22 21:36:41.000000000 +0000
@@ -0,0 +1,16 @@
+# udevtrigger - cold plug devices
+#
+# By the time udevd starts, we've already missed all of the events for
+# the devices populated in /sys.  This task causes the kernel to resend
+# them.
+
+description	"cold plug devices"
+
+start on (startup
+	  and started udev
+	  and not-container)
+
+task
+
+exec udevadm trigger --action=add
+post-stop exec udevadm settle
diff -Nru udev-175/debian/udev.upstart udev-175/debian/udev.upstart
--- udev-175/debian/udev.upstart	1970-01-01 00:00:00.000000000 +0000
+++ udev-175/debian/udev.upstart	2012-08-22 21:36:41.000000000 +0000
@@ -0,0 +1,14 @@
+# udev - device node and kernel event manager
+#
+# The udev daemon receives events from the kernel about changes in the
+# /sys filesystem and manages the /dev filesystem.
+
+description	"device node and kernel event manager"
+
+start on virtual-filesystems
+stop on runlevel [06]
+
+expect fork
+respawn
+
+exec /sbin/udevd --daemon

Attachment: signature.asc
Description: Digital signature


Reply to: