Package: release.debian.org
Severity: normal
User: release.debian....@packages.debian.org
Usertags: unblock

Please unblock package sysvinit

Bugs closed:
#694961: Don't break boot with older upstart versions
#694252: Break older bootchart versions to allow migration to
         dependency-based boot
#694379: Work around a bug in the Oracle database which has a
         buggy check for /dev/shm
#697537: Correct buggy check for /dev/shm
#697994: Remove all use of heredocs (not safe until /tmp is writable)
#663009: Default to PID1 when determining PID of init so that the
         init process is correctly restarted on upgrade
And fix globbing in /etc/fstab.d (no bug number).


Thanks,
Roger


diff -Nru sysvinit-2.88dsf/debian/changelog sysvinit-2.88dsf/debian/changelog
--- sysvinit-2.88dsf/debian/changelog   2012-11-16 20:51:07.000000000 +0000
+++ sysvinit-2.88dsf/debian/changelog   2013-01-24 21:33:09.000000000 +0000
@@ -1,3 +1,50 @@
+sysvinit (2.88dsf-38) unstable; urgency=low
+
+  [ Roger Leigh ]:
+  * If pidof fails in the sysvinit postinst or initscripts, default
+    to PID 1 (for /sbin/init) (Closes: #663009).
+  * Make fstab globbing in initscripts completely robust.
+
+ -- Roger Leigh <rle...@debian.org>  Wed, 23 Jan 2013 22:43:55 +0000
+
+sysvinit (2.88dsf-37) unstable; urgency=low
+
+  [ Roger Leigh ]
+  * initscripts: Remove all use of shell heredocs in shell libraries;
+    these require a writable /tmp which will not be guaranteed to be
+    present in early boot (Closes: #697994).
+
+ -- Roger Leigh <rle...@debian.org>  Mon, 14 Jan 2013 21:53:59 +0000
+
+sysvinit (2.88dsf-36) unstable; urgency=low
+
+  [ Roger Leigh ]
+  * initscripts:
+    - Handle globbing of /etc/fstab.d/* safely.
+    - Correct erroneous error that an entry for /dev/shm existed in
+      /etc/fstab when no entry was present (Closes: #697537).
+
+ -- Roger Leigh <rle...@debian.org>  Fri, 11 Jan 2013 23:36:28 +0000
+
+sysvinit (2.88dsf-35) unstable; urgency=low
+
+  [ David Prévot ]
+  * Fix German translation charset.
+
+  [ Roger Leigh ]
+  * initscripts:
+    - To permit enabling of dependency-based boot, add Breaks on older
+      versions of bootchart.  Thanks to Andreas Beckmann.
+      Closes: #694252.
+    - To work around a bug in the Oracle database, which has a faulty
+      check for /dev/shm, continue to mount a tmpfs on /dev/shm rather
+      than /run/shm if one is defined in /etc/fstab.  Closes: #694379.
+  * sysvinit-utils:
+    - Add Breaks: upstart (<< 1.5-1) to avoid breaking the boot with
+      older versions of upstart.  Closes: #694961.
+
+ -- Roger Leigh <rle...@debian.org>  Mon, 17 Dec 2012 22:50:49 +0000
+
 sysvinit (2.88dsf-34) unstable; urgency=low
 
   [ Roger Leigh ]
diff -Nru sysvinit-2.88dsf/debian/control sysvinit-2.88dsf/debian/control
--- sysvinit-2.88dsf/debian/control     2012-08-31 21:14:04.000000000 +0100
+++ sysvinit-2.88dsf/debian/control     2012-12-17 22:37:45.000000000 +0000
@@ -42,6 +42,7 @@
 Conflicts: last, sysvconfig, chkconfig (<< 11.0-79.1-2)
 Replaces: last, sysvinit (<= 2.86.ds1-65)
 Depends: ${shlibs:Depends}, ${misc:Depends}
+Breaks: upstart (<< 1.5-1)
 Suggests: bootlogd, sash
 Description: System-V-like utilities
  This package contains the important System-V-like utilities.
@@ -74,7 +75,8 @@
  sysvinit-utils (>= 2.86.ds1-64), sysv-rc | file-rc,
  coreutils (>= 5.93)
 Recommends: psmisc, e2fsprogs
-Conflicts: libdevmapper1.02.1 (<< 2:1.02.24-1)
+Conflicts:
+ libdevmapper1.02.1 (<< 2:1.02.24-1),
 Replaces: libc6, libc6.1, libc0.1, libc0.3
 Breaks:
 # Needed for ifquery
@@ -112,7 +114,9 @@
  autofs (<< 5.0.0),
 # Older versions of initramfs-tools can't cope with /etc/mtab
 # being a symlink #668616 and #668650
- initramfs-tools (<< 0.104)
+ initramfs-tools (<< 0.104),
+# Needed for transition to dependency-based boot for wheezy
+ bootchart (<< 0.10~svn407-3.3)
 Description: scripts for initializing and shutting down the system
  The scripts in this package initialize a standard Debian
  system at boot time and shut it down at halt or reboot time.
diff -Nru sysvinit-2.88dsf/debian/po/de.po sysvinit-2.88dsf/debian/po/de.po
--- sysvinit-2.88dsf/debian/po/de.po    2012-08-31 21:14:04.000000000 +0100
+++ sysvinit-2.88dsf/debian/po/de.po    2012-12-10 23:03:45.000000000 +0000
@@ -21,7 +21,7 @@
 #: ../sysv-rc.templates:1001
 msgid "Unable to migrate to dependency-based boot system"
 msgstr ""
-"Es konnte nicht auf abhängigkeitsbasierte Systemstartreihenfolge umgestellt "
+"Es konnte nicht auf abhängigkeitsbasierte Systemstartreihenfolge umgestellt "
 "werden."
 
 #. Type: note
@@ -32,7 +32,7 @@
 "dependency-based boot sequencing:"
 msgstr ""
 "Im Startsystem gibt es Probleme, die eine Umstellung auf "
-"abhängigkeitsbasierte Systemstartreihenfolge verhindern:"
+"abhängigkeitsbasierte Systemstartreihenfolge verhindern:"
 
 #. Type: note
 #. Description
@@ -43,10 +43,10 @@
 "package has been removed, but not purged.  It is suggested that these are "
 "removed by running:"
 msgstr ""
-"Falls das gemeldete Problem von einer lokalen Änderung rührt, muss es 
manuell "
+"Falls das gemeldete Problem von einer lokalen Änderung rührt, muss es manuell 
"
 "behoben werden. Dies sind normalerweise veraltete Conffiles, die "
-"zurückgeblieben sind, als ein Paket gelöscht, aber nicht vollständig 
entfernt "
-"wurde. Es wird empfohlen, diese zu entfernen, indem Folgendes ausgeführt 
wird:"
+"zurückgeblieben sind, als ein Paket gelöscht, aber nicht vollständig entfernt 
"
+"wurde. Es wird empfohlen, diese zu entfernen, indem Folgendes ausgeführt 
wird:"
 
 #. Type: note
 #. Description
@@ -63,5 +63,5 @@
 "fixed, run \"dpkg --configure sysv-rc\"."
 msgstr ""
 "Die Paketinstallation kann nicht fortgesetzt werden, bis obige Probleme "
-"behoben wurde. Um den Umstellungsprozess nach dem Lösen dieser Probleme "
-"erneut zu versuchen, führen Sie »dpkg --configure sysv-rc« aus."
+"behoben wurde. Um den Umstellungsprozess nach dem Lösen dieser Probleme "
+"erneut zu versuchen, führen Sie »dpkg --configure sysv-rc« aus."
diff -Nru sysvinit-2.88dsf/debian/postinst sysvinit-2.88dsf/debian/postinst
--- sysvinit-2.88dsf/debian/postinst    2012-04-29 18:02:44.000000000 +0100
+++ sysvinit-2.88dsf/debian/postinst    2013-01-23 22:39:44.000000000 +0000
@@ -19,7 +19,7 @@
 
        # PID of init; may not always be 1.  Use for sending signals
        # and checking if init is running.
-       PID="$(pidof /sbin/init || true)"
+       PID="$(pidof /sbin/init || echo 1)"
 
        # Create /run/initctl if not present, and also create compatibility
        # symlinks
diff -Nru sysvinit-2.88dsf/debian/src/initscripts/etc/init.d/mountall.sh 
sysvinit-2.88dsf/debian/src/initscripts/etc/init.d/mountall.sh
--- sysvinit-2.88dsf/debian/src/initscripts/etc/init.d/mountall.sh      
2012-11-16 15:18:07.000000000 +0000
+++ sysvinit-2.88dsf/debian/src/initscripts/etc/init.d/mountall.sh      
2013-01-23 22:40:32.000000000 +0000
@@ -55,7 +55,7 @@
                mknod -m 600 "$INITCTL" p
 
                # Reopen control channel.
-               PID="$(pidof /sbin/init || true)"
+               PID="$(pidof /sbin/init || echo 1)"
                [ -n "$PID" ] && kill -s USR1 "$PID"
        fi
 
diff -Nru sysvinit-2.88dsf/debian/src/initscripts/lib/init/mount-functions.sh 
sysvinit-2.88dsf/debian/src/initscripts/lib/init/mount-functions.sh
--- sysvinit-2.88dsf/debian/src/initscripts/lib/init/mount-functions.sh 
2012-08-31 21:14:04.000000000 +0100
+++ sysvinit-2.88dsf/debian/src/initscripts/lib/init/mount-functions.sh 
2013-01-22 23:47:04.000000000 +0000
@@ -3,12 +3,13 @@
 #
 # Sourcer must source /lib/lsb/init-functions.sh
 
+# List available fstab files, including any files in /etc/fstab.d.
+# This looks ugly, but we can't use find and it's safer than globbing.
 fstab_files()
 {
-    if ! eval 'ls /etc/fstab.d/*.fstab' >/dev/null 2>&1; then
-       echo /etc/fstab
-    else
-       echo '/etc/fstab' '/etc/fstab.d/*'
+    echo /etc/fstab
+    if [ -d /etc/fstab.d ]; then
+        ls -1 /etc/fstab.d | grep '\.fstab$' | sed -e 's;^;/etc/fstab.d/;'
     fi
 }
 
@@ -35,17 +36,17 @@
 #      device node,
 # 2) Swap that is on a md device or a file that may be on a md
 #      device,
-read_fstab () {
-       fstabroot=/dev/root
-       rootdev=none
-       roottype=none
-       rootopts=defaults
-       rootmode=rw
-       rootcheck=no
-       swap_on_lv=no
-       swap_on_file=no
+_read_fstab () {
+       echo "fstabroot=/dev/root"
+       echo "rootdev=none"
+       echo "roottype=none"
+       echo "rootopts=defaults"
+       echo "rootmode=rw"
+       echo "rootcheck=no"
+       echo "swap_on_lv=no"
+       echo "swap_on_file=no"
 
-       for file in "$(eval ls $(fstab_files))"; do
+       fstab_files | while read file; do
                if [ -f "$file" ]; then
                        while read DEV MTPT FSTYPE OPTS DUMP PASS JUNK; do
                                case "$DEV" in
@@ -53,7 +54,7 @@
                                        continue;
                                        ;;
                                  /dev/mapper/*)
-                                       [ "$FSTYPE" = "swap" ] && swap_on_lv=yes
+                                       [ "$FSTYPE" = "swap" ] && echo 
swap_on_lv=yes
                                        ;;
                                  /dev/*)
                                        ;;
@@ -64,21 +65,21 @@
                                        fi
                                        ;;
                                  /*)
-                                       [ "$FSTYPE" = "swap" ] && 
swap_on_file=yes
+                                       [ "$FSTYPE" = "swap" ] && echo 
swap_on_file=yes
                                        ;;
                                  *)
                                        ;;
                                esac
                                [ "$MTPT" != "/" ] && continue
-                               rootdev="$DEV"
-                               fstabroot="$DEV"
-                               rootopts="$OPTS"
-                               roottype="$FSTYPE"
-                               ( [ "$PASS" != 0 ] && [ "$PASS" != "" ]   ) && 
rootcheck=yes
-                               ( [ "$FSTYPE" = "nfs" ] || [ "$FSTYPE" = "nfs4" 
] ) && rootcheck=no
+                               echo rootdev=\"$DEV\"
+                               echo fstabroot=\"$DEV\"
+                               echo rootopts=\"$OPTS\"
+                               echo roottype=\"$FSTYPE\"
+                               ( [ "$PASS" != 0 ] && [ "$PASS" != "" ]   ) && 
echo rootcheck=yes
+                               ( [ "$FSTYPE" = "nfs" ] || [ "$FSTYPE" = "nfs4" 
] ) && echo rootcheck=no
                                case "$OPTS" in
                                  ro|ro,*|*,ro|*,ro,*)
-                                       rootmode=ro
+                                       echo rootmode=ro
                                        ;;
                                esac
                        done < "$file"
@@ -86,15 +87,29 @@
        done
 }
 
+# Read /etc/fstab, looking for:
+# 1) The root filesystem, resolving LABEL=*|UUID=* entries to the
+#      device node,
+# 2) Swap that is on a md device or a file that may be on a md
+#      device,
+
+read_fstab () {
+       eval "$(_read_fstab)"
+}
+
 # Find a specific fstab entry
 # $1=mountpoint
 # $2=fstype (optional)
-# returns 0 on success, 1 on failure (not found or no fstab)
-read_fstab_entry () {
+_read_fstab_entry () {
        # Not found by default.
-       found=1
+       echo "MNT_FSNAME="
+       echo "MNT_DIR="
+       echo "MNT_TYPE="
+       echo "MNT_OPTS="
+       echo "MNT_FREQ="
+       echo "MNT_PASS="
 
-       for file in "$(eval ls $(fstab_files))"; do
+       fstab_files | while read file; do
                if [ -f "$file" ]; then
                        while read MNT_FSNAME MNT_DIR MNT_TYPE MNT_OPTS 
MNT_FREQ MNT_PASS MNT_JUNK; do
                                case "$MNT_FSNAME" in
@@ -106,12 +121,32 @@
                                        if [ -n "$2" ]; then
                                                [ "$MNT_TYPE" = "$2" ] || 
continue;
                                        fi
-                                       found=0
+                                       echo "MNT_FSNAME=$MNT_FSNAME"
+                                       echo "MNT_DIR=$MNT_DIR"
+                                       echo "MNT_TYPE=$MNT_TYPE"
+                                       echo "MNT_OPTS=$MNT_OPTS"
+                                       echo "MNT_FREQ=$MNT_FREQ"
+                                       echo "MNT_PASS=$MNT_PASS"
                                        break 2
                                fi
+                               MNT_DIR=""
                        done < "$file"
                fi
        done
+}
+
+# Find a specific fstab entry
+# $1=mountpoint
+# $2=fstype (optional)
+# returns 0 on success, 1 on failure (not found or no fstab)
+read_fstab_entry () {
+       eval "$(_read_fstab_entry "$1" "$2")"
+
+       # Not found by default.
+       found=1
+       if [ "$1" = "$MNT_DIR" ]; then
+               found=0
+       fi
 
        return $found
 }
@@ -252,10 +287,8 @@
                        if ! read_fstab_entry "$MTPT" "$FSTYPE"; then
                                CALLER_OPTS="$(echo "$CALLER_OPTS" | sed -e 
's/^-o//')"
                                echo "Creating /etc/fstab entry for $MTPT to 
replace default in /etc/default/tmpfs (deprecated)" >&2
-                               cat << EOF
-# This mount for $MTPT replaces the default configured in /etc/default/tmpfs
-$DEVNAME       $MTPT   $FSTYPE $CALLER_OPTS    0       0
-EOF
+                               echo "# This mount for $MTPT replaces the 
default configured in /etc/default/tmpfs"
+                               echo "$DEVNAME  $MTPT   $FSTYPE $CALLER_OPTS    
0       0"
                        fi
                        ;;
        esac
@@ -424,6 +457,14 @@
        # directory.  The migration logic will then take care of the
        # rest.  Note that it will take a second boot to fully
        # migrate; it should only ever be needed on broken systems.
+       RAMSHM_ON_DEV_SHM="no"
+       if read_fstab_entry "/dev/shm"; then
+           RAMSHM_ON_DEV_SHM="yes"
+       fi
+       if read_fstab_entry "/run/shm"; then
+           RAMSHM_ON_DEV_SHM="no"
+       fi
+
        if [ -L /run ]; then
                if [ "$(readlink /run)" = "/var/run" ]; then
                        rm -f /run
@@ -431,12 +472,20 @@
                fi
                if bind_mount /var/run /run; then
                    bind_mount /var/lock /run/lock
-                   bind_mount /dev/shm /run/shm
+                   if [ yes = "$RAMSHM_ON_DEV_SHM" ]; then
+                       run_migrate /run/shm /dev/shm
+                   else
+                       run_migrate /dev/shm /run/shm
+                   fi
                fi
        else
            run_migrate /var/run /run
            run_migrate /var/lock /run/lock
-           run_migrate /dev/shm /run/shm
+           if [ yes = "$RAMSHM_ON_DEV_SHM" ]; then
+               run_migrate /run/shm /dev/shm
+           else
+               run_migrate /dev/shm /run/shm
+           fi
        fi
 }
 
@@ -512,20 +561,38 @@
 {
        MNTMODE="$1"
 
-       if [ ! -d /run/shm ]
+       RAMSHM_ON_DEV_SHM="no"
+       SHMDIR="/run/shm"
+       if read_fstab_entry "/dev/shm"; then
+               if [ "$MNTMODE" = "mount_noupdate" ]; then
+                       log_warning_msg "Warning: fstab entry for /dev/shm; 
should probably be for /run/shm unless working around a bug in the Oracle 
database"
+               fi
+               SHMDIR="/dev/shm"
+               RAMSHM_ON_DEV_SHM="yes"
+       fi
+       if read_fstab_entry "/run/shm"; then
+               if [ "$MNTMODE" = "mount_noupdate" ] && [ "$RAMSHM_ON_DEV_SHM" 
= "yes" ]; then
+                       log_warning_msg "Warning: fstab entries for both 
/dev/shm and /run/shm found; only /run/shm will be used"
+               fi
+
+               SHMDIR="/run/shm"
+               RAMSHM_ON_DEV_SHM="no"
+       fi
+
+       if [ ! -d "$SHMDIR" ]
        then
-               mkdir --mode=755 /run/shm
-               [ -x /sbin/restorecon ] && /sbin/restorecon /run/shm
+               mkdir --mode=755 "$SHMDIR"
+               [ -x /sbin/restorecon ] && /sbin/restorecon "$SHMDIR"
        fi
 
        # Now check if there's an entry in /etc/fstab.  If there is,
        # it overrides the existing RAMSHM setting.
-       if read_fstab_entry /run/shm; then
-           if [ "$MNT_TYPE" = "tmpfs" ] ; then
-               RAMSHM="yes"
-           else
-               RAMSHM="no"
-           fi
+       if read_fstab_entry "$SHMDIR"; then
+               if [ "$MNT_TYPE" = "tmpfs" ] ; then
+                       RAMSHM="yes"
+               else
+                       RAMSHM="no"
+               fi
        fi
 
        KERNEL="$(uname -s)"
@@ -535,16 +602,20 @@
        esac
 
        if [ yes = "$RAMSHM" ]; then
-               domount "$MNTMODE" tmpfs shmfs /run/shm tmpfs 
"-onosuid,${NODEV}noexec$SHM_OPT"
+               domount "$MNTMODE" tmpfs shmfs "$SHMDIR" tmpfs 
"-onosuid,${NODEV}noexec$SHM_OPT"
                # Make sure we don't get cleaned
-               touch /run/shm/.tmpfs
+               touch "$SHMDIR"/.tmpfs
        else
-               chmod "$SHM_MODE" /run/shm
+               chmod "$SHM_MODE" "$SHMDIR"
        fi
 
        # Migrate early, so /dev/shm is available from the start
        if [ "$MNTMODE" = mount_noupdate ] || [ "$MNTMODE" = mount ]; then
-               run_migrate /dev/shm /run/shm ../run/shm
+               if [ yes = "$RAMSHM_ON_DEV_SHM" ]; then
+                       run_migrate /run/shm /dev/shm
+               else
+                       run_migrate /dev/shm /run/shm
+               fi
        fi
 }
 
diff -Nru sysvinit-2.88dsf/debian/src/initscripts/man/tmpfs.5 
sysvinit-2.88dsf/debian/src/initscripts/man/tmpfs.5
--- sysvinit-2.88dsf/debian/src/initscripts/man/tmpfs.5 2012-08-31 
21:14:04.000000000 +0100
+++ sysvinit-2.88dsf/debian/src/initscripts/man/tmpfs.5 2012-12-17 
22:35:46.000000000 +0000
@@ -76,7 +76,10 @@
 Packages can not expect directories in /run/shm to exist after boot.
 Note that /run/shm was previously /dev/shm, and a compatibility
 symlink or bind mount will be created to allow the old path to
-continue to function.
+continue to function.  If an fstab entry for /dev/shm exists instead
+of /run/shm, then /dev/shm will continue to be used; note that this is
+only needed for users of newer versions of the Oracle database, which
+contain a buggy check for /dev/shm.
 
 .IP /tmp
 Previously configured using \fBRAMTMP\fP in /etc/default/rcS.  Note

unblock sysvinit/2.88dsf-38

-- System Information:
Debian Release: 7.0
  APT prefers unstable
  APT policy: (550, 'unstable'), (500, 'testing'), (400, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 3.2.0-4-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash


--
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to