sys-apps/sysvinit: call telinit u when halting or rebooting
authorMike Gilbert <floppym@gentoo.org>
Sun, 28 Oct 2018 19:12:43 +0000 (15:12 -0400)
committerWilliam Hubbs <williamh@gentoo.org>
Wed, 31 Oct 2018 14:10:03 +0000 (09:10 -0500)
Closes: https://bugs.gentoo.org/642858
Package-Manager: Portage-2.3.51_p2, Repoman-2.3.11_p27
Signed-off-by: Mike Gilbert <floppym@gentoo.org>
Signed-off-by: William Hubbs <williamh@gentoo.org>
sys-apps/sysvinit/files/inittab-2.91 [new file with mode: 0644]
sys-apps/sysvinit/sysvinit-2.91-r1.ebuild [new file with mode: 0644]

diff --git a/sys-apps/sysvinit/files/inittab-2.91 b/sys-apps/sysvinit/files/inittab-2.91
new file mode 100644 (file)
index 0000000..f9ed8d1
--- /dev/null
@@ -0,0 +1,61 @@
+#
+# /etc/inittab:  This file describes how the INIT process should set up
+#                the system in a certain run-level.
+#
+# Author:  Miquel van Smoorenburg, <miquels@cistron.nl>
+# Modified by:  Patrick J. Volkerding, <volkerdi@ftp.cdrom.com>
+# Modified by:  Daniel Robbins, <drobbins@gentoo.org>
+# Modified by:  Martin Schlemmer, <azarah@gentoo.org>
+# Modified by:  Mike Frysinger, <vapier@gentoo.org>
+# Modified by:  Robin H. Johnson, <robbat2@gentoo.org>
+# Modified by:  William Hubbs, <williamh@gentoo.org>
+#
+
+# Default runlevel.
+id:3:initdefault:
+
+# System initialization, mount local filesystems, etc.
+si::sysinit:/sbin/openrc sysinit
+
+# Further system initialization, brings up the boot runlevel.
+rc::bootwait:/sbin/openrc boot
+
+l0u:0:wait:/sbin/telinit u
+l0:0:wait:/sbin/openrc shutdown
+l0s:0:wait:/sbin/halt -dhnp
+l1:1:wait:/sbin/openrc single
+l2:2:wait:/sbin/openrc nonetwork
+l3:3:wait:/sbin/openrc default
+l4:4:wait:/sbin/openrc default
+l5:5:wait:/sbin/openrc default
+l6u:6:wait:/sbin/telinit u
+l6:6:wait:/sbin/openrc reboot
+l6r:6:wait:/sbin/reboot -dkn
+#z6:6:respawn:/sbin/sulogin
+
+# new-style single-user
+su0:S:wait:/sbin/openrc single
+su1:S:wait:/sbin/sulogin
+
+# TERMINALS
+#x1:12345:respawn:/sbin/agetty 38400 console linux
+c1:12345:respawn:/sbin/agetty 38400 tty1 linux
+c2:2345:respawn:/sbin/agetty 38400 tty2 linux
+c3:2345:respawn:/sbin/agetty 38400 tty3 linux
+c4:2345:respawn:/sbin/agetty 38400 tty4 linux
+c5:2345:respawn:/sbin/agetty 38400 tty5 linux
+c6:2345:respawn:/sbin/agetty 38400 tty6 linux
+
+# SERIAL CONSOLES
+#s0:12345:respawn:/sbin/agetty -L 9600 ttyS0 vt100
+#s1:12345:respawn:/sbin/agetty -L 9600 ttyS1 vt100
+
+# What to do at the "Three Finger Salute".
+ca:12345:ctrlaltdel:/sbin/shutdown -r now
+
+# Used by /etc/init.d/xdm to control DM startup.
+# Read the comments in /etc/init.d/xdm for more
+# info. Do NOT remove, as this will start nothing
+# extra at boot if /etc/init.d/xdm is not added
+# to the "default" runlevel.
+x:a:once:/etc/X11/startDM.sh
diff --git a/sys-apps/sysvinit/sysvinit-2.91-r1.ebuild b/sys-apps/sysvinit/sysvinit-2.91-r1.ebuild
new file mode 100644 (file)
index 0000000..da9b190
--- /dev/null
@@ -0,0 +1,117 @@
+# Copyright 1999-2018 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit toolchain-funcs flag-o-matic
+
+DESCRIPTION="/sbin/init - parent of all processes"
+HOMEPAGE="https://savannah.nongnu.org/projects/sysvinit"
+SRC_URI="mirror://nongnu/${PN}/${P}.tar.xz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86"
+IUSE="selinux ibm static kernel_FreeBSD"
+
+CDEPEND="
+       selinux? (
+               >=sys-libs/libselinux-1.28
+       )"
+DEPEND="${CDEPEND}
+       virtual/os-headers"
+RDEPEND="${CDEPEND}
+       selinux? ( sec-policy/selinux-shutdown )
+       !<sys-apps/openrc-0.13
+"
+
+PATCHES=(
+       "${FILESDIR}/${PN}-2.86-kexec.patch" #80220
+       "${FILESDIR}/${PN}-2.86-shutdown-single.patch" #158615
+       "${FILESDIR}/${PN}-2.88-shutdown-h.patch" #449354
+)
+
+src_prepare() {
+       default
+       sed -i '/^CPPFLAGS =$/d' src/Makefile || die
+
+       # last/lastb/mesg/mountpoint/sulogin/utmpdump/wall have moved to util-linux
+       sed -i -r \
+               -e '/^(USR)?S?BIN/s:\<(last|lastb|mesg|mountpoint|sulogin|utmpdump|wall)\>::g' \
+               -e '/^MAN[18]/s:\<(last|lastb|mesg|mountpoint|sulogin|utmpdump|wall)[.][18]\>::g' \
+               src/Makefile || die
+
+       # pidof has moved to >=procps-3.3.9
+       sed -i -r \
+               -e '/\/bin\/pidof/d' \
+               -e '/^MAN8/s:\<pidof.8\>::g' \
+               src/Makefile || die
+
+       # Mung inittab for specific architectures
+       cd "${WORKDIR}" || die
+       cp "${FILESDIR}"/inittab-2.91 inittab || die "cp inittab"
+       local insert=()
+       use ppc && insert=( '#psc0:12345:respawn:/sbin/agetty 115200 ttyPSC0 linux' )
+       use arm && insert=( '#f0:12345:respawn:/sbin/agetty 9600 ttyFB0 vt100' )
+       use arm64 && insert=( 'f0:12345:respawn:/sbin/agetty 9600 ttyAMA0 vt100' )
+       use hppa && insert=( 'b0:12345:respawn:/sbin/agetty 9600 ttyB0 vt100' )
+       use s390 && insert=( 's0:12345:respawn:/sbin/agetty 38400 console dumb' )
+       if use ibm ; then
+               insert+=(
+                       '#hvc0:2345:respawn:/sbin/agetty -L 9600 hvc0'
+                       '#hvsi:2345:respawn:/sbin/agetty -L 19200 hvsi0'
+               )
+       fi
+       (use arm || use mips || use sh || use sparc) && sed -i '/ttyS0/s:#::' inittab
+       if use kernel_FreeBSD ; then
+               sed -i \
+                       -e 's/linux/cons25/g' \
+                       -e 's/ttyS0/cuaa0/g' \
+                       -e 's/ttyS1/cuaa1/g' \
+                       inittab #121786
+       fi
+       if use x86 || use amd64 ; then
+               sed -i \
+                       -e '/ttyS[01]/s:9600:115200:' \
+                       inittab
+       fi
+       if [[ ${#insert[@]} -gt 0 ]] ; then
+               printf '%s\n' '' '# Architecture specific features' "${insert[@]}" >> inittab
+       fi
+}
+
+src_compile() {
+       tc-export CC
+       append-lfs-flags
+       export DISTRO= #381311
+       export VERSION="${PV}"
+       use static && append-ldflags -static
+       emake -C src $(usex selinux 'WITH_SELINUX=yes' '')
+}
+
+src_install() {
+       emake -C src install ROOT="${D}"
+       dodoc README doc/*
+
+       insinto /etc
+       doins "${WORKDIR}"/inittab
+
+       # dead symlink
+       rm "${ED%/}"/usr/bin/lastb || die
+}
+
+pkg_postinst() {
+       # Reload init to fix unmounting problems of / on next reboot.
+       # This is really needed, as without the new version of init cause init
+       # not to quit properly on reboot, and causes a fsck of / on next reboot.
+       if [[ ${ROOT} == / ]] ; then
+               if [[ -e /dev/initctl && ! -e /run/initctl ]]; then
+                       ln -s /dev/initctl /run/initctl
+               fi
+               # Do not return an error if this fails
+               /sbin/telinit U &>/dev/null
+       fi
+
+       elog "The last/lastb/mesg/mountpoint/sulogin/utmpdump/wall tools have been moved to"
+       elog "sys-apps/util-linux. The pidof tool has been moved to sys-process/procps."
+}