# ChangeLog for sys-apps/sysvinit
# Copyright 1999-2005 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/sys-apps/sysvinit/ChangeLog,v 1.23 2005/10/28 02:14:27 vapier Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-apps/sysvinit/ChangeLog,v 1.24 2005/11/20 12:37:37 vapier Exp $
+
+*sysvinit-2.86-r3 (20 Nov 2005)
+
+ 20 Nov 2005; Mike Frysinger <vapier@gentoo.org>
+ +files/sysvinit-2.86-POSIX-1003.1e.patch,
+ +files/sysvinit-2.86-execl.patch, +files/sysvinit-2.86-utmp-64bit.patch,
+ +sysvinit-2.86-r3.ebuild:
+ Fix some warnings and add support for POSIX capabilites #5818 by Sascha Silbe.
*sysvinit-2.86-r2 (28 Oct 2005)
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
-MD5 b4f735ef2277945fcde23360c630cae2 ChangeLog 3427
+MD5 0d031983ceb19d8f45f3be18b316cfa7 ChangeLog 3739
MD5 5f94105e0b503a39fda5fb65d885e16c files/2.86-gentoo.patch 641
MD5 3ba9251f1f4f0ae0dd30d682b28183dd files/2.86-selinux.patch 6525
MD5 38c0059ecfaa1b09e59a75cc2780aa94 files/digest-sysvinit-2.85-r1 64
MD5 89c112138ee2f33829ad80c3dcc18328 files/digest-sysvinit-2.86 132
-MD5 89c112138ee2f33829ad80c3dcc18328 files/digest-sysvinit-2.86-r1 132
-MD5 89c112138ee2f33829ad80c3dcc18328 files/digest-sysvinit-2.86-r2 132
+MD5 89c112138ee2f33829ad80c3dcc18328 files/digest-sysvinit-2.86-r3 132
MD5 0e94e6657416b0d48d13abf86297f2e4 files/inittab 1667
MD5 3c171d9c843284ce606663e4e6da26e9 files/sysvinit-2.85-selinux.patch 6448
+MD5 055f0a982433c7f7a58a6fd4e091cedc files/sysvinit-2.86-POSIX-1003.1e.patch 1358
MD5 b956965acd5408afa0a3937001b2d55e files/sysvinit-2.86-docs.patch 1899
+MD5 907ffbfe16ebfb13e0f34cb377bf1c67 files/sysvinit-2.86-execl.patch 323
MD5 701137886382265cf08d69a20fb89627 files/sysvinit-2.86-off-by-one.patch 310
MD5 180a4654bbd070b1264a440c753e6cc0 files/sysvinit-2.86-shutdown-usage.patch 235
+MD5 eff3665594ef25bf70220d6cf0c84dcb files/sysvinit-2.86-utmp-64bit.patch 1112
MD5 9a09f8d531c582e78977dbfd96edc1f2 metadata.xml 164
MD5 4bb35af95759582d45324cdf3bc237b7 sysvinit-2.85-r1.ebuild 2545
-MD5 322fc86dcd9b6307f84415f6a7db0772 sysvinit-2.86-r1.ebuild 2513
-MD5 118099df7250dd6cff1b76c5e755240e sysvinit-2.86-r2.ebuild 2566
+MD5 c149ca4aec518d6a6f9b97b4bfe0c078 sysvinit-2.86-r3.ebuild 2729
MD5 cb1165247fe26db95505195995ecac1b sysvinit-2.86.ebuild 2501
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (GNU/Linux)
-iD8DBQFDYYmSgIKl8Uu19MoRAnvvAJ973uRdxDi6hO4TsdXLeSal20zfcQCfYxzS
-7+/7dJzk7tr5zj6UZAGp4ss=
-=U99a
+iD8DBQFDgG5ygIKl8Uu19MoRAlkQAJ0VTwt0jkfICuLdqo3EmuUUPgHfkwCeP6PW
+9eNc/02OTbOBtDgwiwnkWO8=
+=mY7Z
-----END PGP SIGNATURE-----
--- /dev/null
+MD5 7d5d61c026122ab791ac04c8a84db967 sysvinit-2.86.tar.gz 99009
+MD5 650af823f937d386e81520b1741d4d45 sysvinit-2.86-kexec.patch 4139
--- /dev/null
+add support for POSIX capabilites
+
+http://original.killa.net/infosec/caps/
+http://bugs.gentoo.org/5818
+
+--- sysvinit/src/init.c
++++ sysvinit/src/init.c
+@@ -21,6 +21,15 @@
+ */
+
+ #include <sys/types.h>
++
++#ifdef __linux__
++#include <linux/capability.h>
++#include <linux/unistd.h>
++
++_syscall2(int, capget, cap_user_header_t, header, cap_user_data_t, data)
++_syscall2(int, capset, cap_user_header_t, header, const cap_user_data_t, data)
++#endif
++
+ #include <sys/stat.h>
+ #include <sys/ioctl.h>
+ #include <sys/wait.h>
+@@ -2348,6 +2357,11 @@ int init_main()
+ pid_t rc;
+ int f, st;
+
++#ifdef __linux__
++ cap_user_header_t head;
++ cap_user_data_t data;
++#endif
++
+ if (!reload) {
+
+ #if INITDEBUG
+@@ -2438,6 +2452,31 @@ int init_main()
+ SETSIG(sa, SIGCHLD, chld_handler, SA_RESTART);
+ }
+
++#ifdef __linux__
++ /*
++ * This seems like the right place to do this, just before
++ * we read /etc/inittab...
++ */
++
++ head = malloc(sizeof(head));
++ if ((data = malloc(sizeof(data))) == NULL)
++ free(head);
++
++ if (head && data) {
++ head->pid = 0;
++ head->version = _LINUX_CAPABILITY_VERSION;
++
++ if (capget(head, data) == 0) {
++ /* Max out the inheritable capability set. */
++ data->inheritable = data->effective;
++ capset(head, data);
++ }
++
++ free(head);
++ free(data);
++ }
++#endif
++
+ /*
+ * Start normal boot procedure.
+ */
--- /dev/null
+--- sysvinit/src/init.c
++++ sysvinit/src/init.c
+@@ -1893,7 +1893,7 @@ void re_exec(void)
+ * The existing init process execs a new init binary.
+ */
+ env = init_buildenv(0);
+- execl(myname, myname, "--init", NULL, env);
++ execle(myname, myname, "--init", NULL, env);
+
+ /*
+ * We shouldn't be here, something failed.
--- /dev/null
+On 64bit arches which have 32bit multilib support, the utmp struct is
+the same ... thus we cannot assume that utmp.ut_tv is of type time_t
+
+--- sysvinit/src/utmp.c
++++ sysvinit/src/utmp.c
+@@ -47,6 +47,7 @@ void write_wtmp
+ int fd;
+ struct utmp utmp;
+ struct utsname uname_buf;
++ struct timeval tv;
+
+ /*
+ * Try to open the wtmp file. Note that we even try
+@@ -76,7 +77,9 @@ void write_wtmp
+ */
+ memset(&utmp, 0, sizeof(utmp));
+ #if defined(__GLIBC__)
+- gettimeofday(&utmp.ut_tv, NULL);
++ gettimeofday(&tv, NULL);
++ utmp.ut_tv.tv_sec = tv.tv_sec;
++ utmp.ut_tv.tv_usec = tv.tv_usec;
+ #else
+ time(&utmp.ut_time);
+ #endif
+@@ -113,6 +116,7 @@ static void write_utmp
+ struct utmp utmp;
+ struct utmp tmp;
+ struct utmp *utmptr;
++ struct timeval tv;
+
+ /*
+ * Can't do much if UTMP_FILE is not present.
+@@ -144,7 +148,9 @@ static void write_utmp
+ utmp.ut_pid = pid;
+ strncpy(utmp.ut_id, id, sizeof(utmp.ut_id));
+ #if defined(__GLIBC__)
+- gettimeofday(&utmp.ut_tv, NULL);
++ gettimeofday(&tv, NULL);
++ utmp.ut_tv.tv_sec = tv.tv_sec;
++ utmp.ut_tv.tv_usec = tv.tv_usec;
+ #else
+ time(&utmp.ut_time);
+ #endif
--- /dev/null
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-apps/sysvinit/sysvinit-2.86-r3.ebuild,v 1.1 2005/11/20 12:37:37 vapier Exp $
+
+inherit eutils toolchain-funcs flag-o-matic
+
+DESCRIPTION="/sbin/init - parent of all processes"
+HOMEPAGE="http://freshmeat.net/projects/sysvinit/"
+SRC_URI="ftp://ftp.cistron.nl/pub/people/miquels/software/${P}.tar.gz
+ ftp://sunsite.unc.edu/pub/Linux/system/daemons/init/${P}.tar.gz
+ http://www.gc-linux.org/down/isobel/kexec/sysvinit/sysvinit-2.86-kexec.patch"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86"
+IUSE="selinux bootstrap build ibm static"
+
+RDEPEND="selinux? ( >=sys-libs/libselinux-1.18 sys-libs/libsepol )"
+DEPEND="${RDEPEND}
+ virtual/os-headers"
+
+src_unpack() {
+ unpack ${P}.tar.gz
+ cd "${S}"
+ epatch "${FILESDIR}"/${P}-docs.patch
+ epatch "${FILESDIR}"/${P}-shutdown-usage.patch
+ epatch "${FILESDIR}"/sysvinit-2.86-off-by-one.patch
+ epatch "${DISTDIR}"/sysvinit-2.86-kexec.patch
+ epatch "${FILESDIR}"/sysvinit-2.86-POSIX-1003.1e.patch #5818
+ epatch "${FILESDIR}"/sysvinit-2.86-execl.patch
+ epatch "${FILESDIR}"/sysvinit-2.86-utmp-64bit.patch
+ cd src
+ epatch "${FILESDIR}"/${PV}-gentoo.patch
+ use selinux && epatch "${FILESDIR}"/${PV}-selinux.patch
+ cp "${FILESDIR}"/inittab "${WORKDIR}"/ || die "cp inittab"
+
+ if use ibm ; then
+ cat <<-EOF >> "${WORKDIR}"/inittab
+ #HVC / HVSI CONSOLE
+ #hvc0:2345:respawn:/sbin/agetty -L 9600 hvc0
+ #hvsi:2345:respawn:/sbin/agetty -L 19200 hvsi0
+ EOF
+ fi
+}
+
+src_compile() {
+ use static && append-ldflags -static
+
+ # Note: The LCRYPT define below overrides the test in
+ # sysvinit's Makefile. This is because sulogin must be linked
+ # to libcrypt in any case, but when building stage2 in
+ # catalyst, /usr/lib/libcrypt.a isn't available. In truth
+ # this doesn't change how sulogin is built since ld would use
+ # the shared obj by default anyway! The other option is to
+ # refrain from building sulogin, but that isn't a good option.
+ # (09 Jul 2004 agriffis)
+ emake -C src \
+ CC="$(tc-getCC)" \
+ DISTRO="Gentoo" \
+ LCRYPT="-lcrypt" \
+ || die
+}
+
+src_install() {
+ dodoc README doc/*
+
+ cd src
+ make install DISTRO="Gentoo" ROOT="${D}" || die "make install"
+
+ insinto /etc
+ doins "${WORKDIR}"/inittab || die "inittab"
+}
+
+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} == / ]] && ! use build && ! use bootstrap; then
+ # Do not return an error if this fails
+ /sbin/init U &>/dev/null
+ fi
+}