Package: release.debian.org
Severity: normal
User: release.debian....@packages.debian.org
Usertags: unblock
X-Debbugs-Cc: sysvi...@packages.debian.org
Control: affects -1 + src:sysvinit

Please pre-approve unblocking of package sysvinit.

[ Reason ]

src:kmod removed /etc/init.d/kmod in version 34.1-1[1]. It was suggested that it
be included in src:orphan-sysvinit-scripts[2], but orphan-sysvinit-scripts
requires a matching unit file to use as a dpkg trigger. The equivalent systemd
unit is in systemd itself. Therefore we consider /etc/init.d/kmod to be a better
fit in bin:initscripts.

bin:initscripts is built from src:sysvinit which also builds bin:sysvinit-utils
which is part of the toolchain freeze from 15th March -- hence the pre-approval
unblock request.

[ Impact ]

Without this transition, non-systemd systems will no longer load kernel modules
statically configured in /etc/mod*. The upload will fix #1100072.

[ Tests ]

I have manually tested installation with existing kmod/34-3. The Breaks/Replaces
forces apt to upgrade kmod as expected.

[ Risks ]

Moving files between packages is not risk free. However, the uncoordinated
actions of the kmod maintainer has made this necessary despite the current
stage of the release cycle.

[ Checklist ]
  [x] all changes are documented in the d/changelog
  [x] I reviewed all changes and I approve them
  [x] attach debdiff against the package in testing

[ Other info ]
kmod.postinst also runs[3]

 rm -f /etc/rcS.d/[SK]*kmod

This breaks upgrades and has also been highlighted in #1100035

unblock sysvinit/3.14-4

[1]  
https://salsa.debian.org/md/kmod/-/commit/8ca034958ad7d1734087a78078be4897209ab22e

[2]  https://bugs.debian.org/1100035

[3]  
https://salsa.debian.org/md/kmod/-/commit/c2ae42ca3a338fba0f190e3a61a635d386b1e8fa

Thanks for your consideration.

Mark
dpkg-source: warning: extracting unsigned source package 
(/home/mark/src/devuan/build/sysvinit_3.14-4.dsc)
diff -Nru sysvinit-3.14/debian/changelog sysvinit-3.14/debian/changelog
--- sysvinit-3.14/debian/changelog      2025-02-24 09:27:01.000000000 +0000
+++ sysvinit-3.14/debian/changelog      2025-03-10 16:49:51.000000000 +0000
@@ -1,3 +1,10 @@
+sysvinit (3.14-4) unstable; urgency=medium
+
+  * d/control: bump Standards Version (no changes).
+  * Take over /etc/init.d/kmod from src:kmod << 34.1-1 (Closes: #1100072).
+
+ -- Mark Hindley <lee...@debian.org>  Mon, 10 Mar 2025 16:49:51 +0000
+
 sysvinit (3.14-3) unstable; urgency=medium
 
   * rcS: Default to ASYNCMOUNTNFS=no if ip= or nfsroot= specified on kernel
diff -Nru sysvinit-3.14/debian/control sysvinit-3.14/debian/control
--- sysvinit-3.14/debian/control        2025-02-24 09:27:01.000000000 +0000
+++ sysvinit-3.14/debian/control        2025-03-10 16:49:51.000000000 +0000
@@ -14,7 +14,7 @@
  libselinux1-dev [linux-any],
  po4a,
 Rules-Requires-Root: no
-Standards-Version: 4.7.1
+Standards-Version: 4.7.2
 Homepage: https://github.com/slicer69/sysvinit
 Vcs-Git: https://salsa.debian.org/debian/sysvinit.git
 Vcs-Browser: https://salsa.debian.org/debian/sysvinit
@@ -111,9 +111,11 @@
  psmisc,
  util-linux-extra,
 Breaks: udev (<<  254.3-1),
-       util-linux-extra (<< 2.39.2-2.1~)
+       util-linux-extra (<< 2.39.2-2.1~),
+       kmod (<< 34.1-1)
 Replaces: udev (<<  254.3-1),
-         util-linux-extra (<< 2.39.2-2.1~)
+         util-linux-extra (<< 2.39.2-2.1~),
+         kmod (<< 34.1-1)
 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-3.14/debian/initscripts.postinst 
sysvinit-3.14/debian/initscripts.postinst
--- sysvinit-3.14/debian/initscripts.postinst   2025-02-24 09:27:01.000000000 
+0000
+++ sysvinit-3.14/debian/initscripts.postinst   2025-03-10 16:49:51.000000000 
+0000
@@ -42,7 +42,7 @@
        checkroot-bootclean.sh checkfs.sh mountall.sh mountall-bootclean.sh \
        mountnfs.sh mountnfs-bootclean.sh bootmisc.sh urandom halt reboot \
        udev umountroot umountfs umountnfs.sh sendsigs killprocs single motd \
-       bootlogs rc.local rmnologin hwclock.sh"
+       bootlogs rc.local rmnologin hwclock.sh kmod"
 
 for F in $INITSCRIPTS; do
        if [ -x "$DPKG_ROOT/etc/init.d/$F" ]; then
diff -Nru sysvinit-3.14/debian/src/initscripts/etc/init.d/kmod 
sysvinit-3.14/debian/src/initscripts/etc/init.d/kmod
--- sysvinit-3.14/debian/src/initscripts/etc/init.d/kmod        1970-01-01 
01:00:00.000000000 +0100
+++ sysvinit-3.14/debian/src/initscripts/etc/init.d/kmod        2025-03-10 
16:49:51.000000000 +0000
@@ -0,0 +1,92 @@
+#!/bin/sh -e
+### BEGIN INIT INFO
+# Provides:          kmod
+# Required-Start:    
+# Required-Stop:     
+# Should-Start:      checkroot
+# Should-Stop:
+# Default-Start:     S
+# Default-Stop:
+# Short-Description: Load the modules listed in /etc/modules.
+# Description:       Load the modules listed in /etc/modules.
+### END INIT INFO
+
+# Silently exit if the kernel does not support modules.
+[ -f /proc/modules ] || exit 0
+[ -x /sbin/modprobe  ] || exit 0
+
+[ -f /etc/default/rcS ] && . /etc/default/rcS
+. /lib/lsb/init-functions
+
+PATH='/usr/sbin:/usr/bin:/sbin:/bin'
+
+case "$1" in
+  start)
+  ;;
+
+  stop|restart|reload|force-reload)
+  log_warning_msg "Action '$1' is meaningless for this init script"
+  exit 0
+  ;;
+
+  *)
+  log_success_msg "Usage: $0 start"
+  exit 1
+esac
+
+load_module() {
+  local module args
+  module="$1"
+  args="$2"
+
+  if [ "$VERBOSE" != no ]; then
+    log_action_msg "Loading kernel module $module"
+    modprobe $module $args || true
+  else
+    modprobe $module $args > /dev/null 2>&1 || true
+  fi
+}
+
+modules_files() {
+  local modules_load_dirs='/etc/modules-load.d /run/modules-load.d 
/usr/local/lib/modules-load.d /usr/lib/modules-load.d'
+  local processed=' '
+  local add_etc_modules=true
+
+  for dir in $modules_load_dirs; do
+    [ -d $dir ] || continue
+    for file in $(run-parts --list --regex='\.conf$' $dir 2> /dev/null || 
true); do
+      local base=${file##*/}
+      if echo -n "$processed" | grep -qF " $base "; then
+        continue
+      fi
+      if [ "$add_etc_modules" -a -L $file \
+         -a "$(readlink -f $file)" = /etc/modules ]; then
+        add_etc_modules=
+      fi
+      processed="$processed$base "
+      echo $file
+    done
+  done
+
+  if [ "$add_etc_modules" ]; then
+    echo /etc/modules
+  fi
+}
+
+if [ "$VERBOSE" = no ]; then
+  log_action_begin_msg 'Loading kernel modules'
+fi
+
+files=$(modules_files)
+if [ "$files" ] ; then
+  grep -h '^[^#]' $files |
+  while read module args; do
+    [ "$module" ] || continue
+    load_module "$module" "$args"
+  done
+fi
+
+if [ "$VERBOSE" = no ]; then
+  log_action_end_msg 0
+fi
+

Reply via email to