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

Bug#991491: marked as done (unblock: runit/2.1.2-41 (pre-approval))



Your message dated Thu, 29 Jul 2021 11:58:19 +0000
with message-id <E1m94g7-0004wY-EM@respighi.debian.org>
and subject line unblock runit
has caused the Debian Bug report #991491,
regarding unblock: runit/2.1.2-41 (pre-approval)
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
991491: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=991491
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock
X-Debbugs-Cc: plorenzo@disroot.org

Dear release team,
this is a pre-approval request for a runit upload.

[ Reason ]
The switch for SysVinit users is broken, the current code works
only if a user types 'reboot', then login into the emergency shell
and types 'reboot' again (see #991227).
With the attached patch:
 * the -f and -r flags work as expected
 * the shutdown interface is documented in the manpage. 

[ Impact ]
Without this patch SysVinit users will likely need to press the reset button (see #991227),
which is a regression compared to the runit's version in Buster - the bug was introduced
in runit 2.1.2-27 (#919699).
Poweroff instead of reboot when the -r flag is passed (#990774) can be bad if one
does 'shutdown -r now' on a remote machine expecting to be able to login again..

[ Tests ]
I've manually run the qemu autopkgtest to ensure that there is no regression
for the systemd-->runit-init switch.
I've tested in Virtualbox that the patch fixes the SysVinit-->runit-init switch,
which is currently broken in unstable/testing.
I'm using the runit package from experimental that include the proposed
fix and shutdown or reboot works as expected.

[ Risks ]
This change affects runit-init users (popcon ~ 20) and users of
other init systems but only when they perform the switch to runit.

[ 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


unblock runit/2.1.2-41

Lorenzo

diff -Nru ./runit/debian/changelog ./runit-bullseye/debian/changelog
--- ./runit/debian/changelog	2021-07-25 15:48:55.494007628 +0200
+++ ./runit-bullseye/debian/changelog	2021-07-25 17:03:59.122707529 +0200
@@ -1,3 +1,14 @@
+runit (2.1.2-41) unstable; urgency=medium
+
+  * Cherry-pick shutdown.c fixes from experimental
+    for incoming stable release:
+    - fix broken switch from SysVinit due to wrong
+      command line parsing logic
+    - reboot the system with -r flag instead of poweroff
+    - Update shutdown(8) manpage
+
+ -- Lorenzo Puliti <plorenzo@disroot.org>  Sun, 25 Jul 2021 16:35:08 +0200
+
 runit (2.1.2-40) unstable; urgency=medium
 
   * Ack previous NMU, thanks Boyuan Yang for the upload
diff -Nru ./runit/debian/contrib/shutdown.8 ./runit-bullseye/debian/contrib/shutdown.8
--- ./runit/debian/contrib/shutdown.8	2021-07-25 15:48:55.494007628 +0200
+++ ./runit-bullseye/debian/contrib/shutdown.8	2021-07-25 16:23:23.731732301 +0200
@@ -1,15 +1,66 @@
-.TH SHUTDOWN 8 "Oct 10, 2016" "" "GNU/Linux System Adminstrator's manual"
+.TH SHUTDOWN 8 "July 16, 2021" "" "GNU/Linux System Adminstrator's manual"
 .SH NAME
-shutdown, reboot, poweroff \- stop the system
+shutdown, reboot, poweroff \- poweroff or reboot the system
 .SH SYNOPSIS
-.B /sbin/shutdown
+.B /sbin/shutdown [-w] [-f] [-r]
 .br
-.B /sbin/reboot
+.B /sbin/reboot [-w] [-f] [-r]
 .br
-.B /sbin/halt
+.B /sbin/halt [-w] [-f] [-r]
+.br
+.B /sbin/poweroff [-w] [-f] [-r]
 .SH DESCRIPTION
-SysV-init compatibility scripts, that just invokes
-.BR /sbin/init ,
-which are expected by graphical desktop environments.
+.BR Shutdown
+is a program to poweroff or reboot the system that maintains some compatibility with
+original SysV-init halt, poweroff, reboot and shutdown programs.
+These programs are expected by some initscripts, graphical desktop environments and tools like acpi.
+.RE
+When called as shutdown, halt or poweroff without options,
+.BR runit(8)
+is told to shutdown the system and poweroff.
+.RE
+When called as reboot
+.BR runit(8)
+is told to reboot the system.
+.RE
+When
+.BR runit(8)
+is not the current init system this program sends data in the appropriate format to perform the requested action to the initctl pipe, if it exists.
+.SH OPTIONS
+
+.TP
+.B \-f, \-\-force
+Force unsafe reboot or poweroff immediately without signaling the init system.
+This will likely result in an unclean shutdown an can cause data loss or corruption.
+
+.TP
+.B \-w, \-\-wtmp\-only
+No-Op, maintained for compatibility with initscripts. See #919699
+
+.TP
+.B \-r
+Reboot the system regardless of how the command is called.
+.SH SWITCHING FORM OTHER INIT SYSTEMS
+This program maintains a compatibility layer with SysV-init's initctl pipe according to the spec described in SysV-init's initctl(5). This allow one to reboot the system when switching from another init to runit-init.
+.RE
+Currently only switching from systemd and SysV-init is tested but any other init system that maintains an initctl pipe compatible with SysV's one should work.
+
+.SH BUGS
+Non existent or unsupported options are silently ignored.
+.RE
+Combining flags, like
+.B halt -wf
+is not supported, all merged short options will be ignored.
+.RE
+The
+.B -r
+flag will always reboot the system, even if called as poweroff or halt; this is counterintuitive.
+.RE
+The
+.B -f
+flag is used as in
+.B halt -f
+but it should have a different effect when the program is called as shutdown.
+
 .SH SEE ALSO
 .BR init (8)
diff -Nru ./runit/debian/contrib/shutdown.c ./runit-bullseye/debian/contrib/shutdown.c
--- ./runit/debian/contrib/shutdown.c	2021-07-25 15:48:55.494007628 +0200
+++ ./runit-bullseye/debian/contrib/shutdown.c	2021-07-25 16:19:07.389733631 +0200
@@ -134,14 +134,16 @@
 	}
 
 	for (i = 1; i != argc; ++i) {
-		if (strcmp(argv[i], "-f"))
+		if (strcmp(argv[i], "-f") == 0)
 			cfg->force = true;
-		if (strcmp(argv[i], "--force"))
+		if (strcmp(argv[i], "--force") == 0)
 			cfg->force = true;
-		if (strcmp(argv[i], "-w"))
+		if (strcmp(argv[i], "-w") == 0)
 			cfg->wtmp_only = true;
-		if (strcmp(argv[i], "--wtmp-only"))
+		if (strcmp(argv[i], "--wtmp-only") == 0)
 			cfg->wtmp_only = true;
+		if (strcmp(argv[i], "-r") == 0)
+			cfg->action = ACTION_REBOOT;
 	}
 }
 

--- End Message ---
--- Begin Message ---
Unblocked.

--- End Message ---

Reply to: