summary="/sbin/init - parent of all processes"
version="2.88"
release="1.0"
url="http://savannah.nongnu.org/projects/sysvinit"
license="GPL-2"
source="http://distfiles.gentoo.org/distfiles/${name}-${version}dsf.tar.bz2"
depends="linux-headers"

S=${workdir}/${name}-${version}dsf

src_prepare() {
	_patch ${filesdir}/sysvinit-2.88-alt-umask.diff
	_patch ${filesdir}/sysvinit-2.86-owl-mount_proc-single-mount.diff
	_patch ${filesdir}/sysvinit-2.88-rh-alt-owl-pidof.diff
	_patch ${filesdir}/sysvinit-2.86-owl-initcmd_setenv.diff
	_patch ${filesdir}/sysvinit-2.88-alt-signedness.diff
	_patch ${filesdir}/sysvinit-2.88-alt-wur.diff
	_patch ${filesdir}/sysvinit-2.88-deb-init-selinux.diff
	_patch ${filesdir}/sysvinit-2.88-suse-SETSIG.diff
	_patch ${filesdir}/sysvinit-2.86-kexec.diff
	_patch ${filesdir}/sysvinit-2.86-shutdown-single.diff
	_patch ${filesdir}/sysvinit-2.88-makefile.diff
	_patch ${filesdir}/sysvinit-2.88-musl.diff
	_patch ${filesdir}/sysvinit-2.88dsf-errno.diff

	sed -i '/^CPPFLAGS =$/d' src/Makefile || die

	# mountpoints has moved to util-linux
	sed -i \
		-e '/^BIN/s:mountpoint::' \
		-e '/^MAN1/s:mountpoint[.]1::' \
		src/Makefile || die
}

src_compile() {
	gmake -C src CC=gcc CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS} -static" init
	gmake -C src CC=gcc CFLAGS="${CFLAGS}" DISTRO=Owl
	gmake -C src CC=gcc CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" bootlogd
}

src_install() {
	gmake -C src install \
		DISTRO=Owl \
		ROOT=$D \
		MANDIR="/usr/share/man" \
		BIN_OWNER=`id -nu` \
		BIN_GROUP=`id -ng`

	install -m 700 src/bootlogd $D/sbin/

	mkdir $D/dev
	mkfifo -m 600 $D/dev/initctl

	install -pD -m 600 ${filesdir}/inittab $D/etc/inittab

	install -d -m 700 $D/etc/init.d
	install -m 700 ${filesdir}/{reboot,shutdown}.sh $D/etc/init.d/

	chmod 0700 ${D}/sbin/*
	chmod 0755 ${D}/sbin/{killall5,runlevel}
#	chmod 0755 ${D}/usr/bin/{last,mesg}
}

post_install() {
	# 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
		# Do not return an error if this fails
		/sbin/telinit U &>/dev/null
	fi
}
