blob: a307cfb189f3ac3f6e48ab2baa683c59b29d6ffe [file] [log] [blame]
# Copyright 1999-2007 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
EAPI="5"
inherit autotools eutils flag-o-matic
DESCRIPTION="Upstart is an event-based replacement for the init daemon"
HOMEPAGE="http://upstart.ubuntu.com/"
SRC_URI="http://upstart.ubuntu.com/download/${PV}/${P}.tar.gz"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="*"
IUSE="debug direncryption examples nls selinux udev_bridge"
RDEPEND=">=sys-apps/dbus-1.2.16
>=sys-libs/libnih-1.0.2
selinux? (
sys-libs/libselinux
sys-libs/libsepol
)
udev_bridge? (
>=virtual/libudev-146
)
direncryption? (
sys-apps/keyutils
)"
DEPEND=">=dev-libs/expat-2.0.0
nls? ( sys-devel/gettext )
direncryption? (
sys-fs/e2fsprogs
)
${RDEPEND}"
RDEPEND+="
selinux? ( chromeos-base/selinux-policy )"
src_prepare() {
# 1.3+ has scary user and chroot session support that we just
# don't want to adopt yet, so we're sticking with 1.2 for the
# near future. Backport some bug fixes from lp:upstart
# -r 1326 - fix bug when /dev/console cannot be opened
# chromium-os:18739
epatch "${FILESDIR}"/upstart-1.2-silent-console.patch
# -r 1280,1308,1309,1320,1329 - fix shell fd leak (and fix the fix)
epatch "${FILESDIR}"/upstart-1.2-fix-shell-redirect.patch
# -r 1281,1325,1327,1328 - update to use /proc/oom_score
epatch "${FILESDIR}"/upstart-1.2-oom-score.patch
# -r 1282 - add "kill signal" stanza (may be useful for us)
epatch "${FILESDIR}"/upstart-1.2-kill-signal.patch
epatch "${FILESDIR}"/upstart-1.2-default-oom_score_adj.patch
# chromium-os:33165, make EXIT_STATUS!=* possible
epatch "${FILESDIR}"/upstart-1.2-negate-match.patch
# issue EXIT_* in events when exit status is zero for daemons
epatch "${FILESDIR}"/upstart-1.2-fail-on-zero-exit.patch
epatch "${FILESDIR}"/${P}-override.patch
# Patch to use kmsg at higher verbosity for logging; this is
# our own patch because we can't just add --verbose to the
# kernel command-line when we need to.
use debug && epatch "${FILESDIR}"/upstart-1.2-log-verbosity.patch
# load SELinux policy
epatch "${FILESDIR}"/upstart-1.2-selinux.patch
# -r 1307 - "Merge of lp:~jamesodhunt/upstart/upstream-udev+socket-bridges."
epatch "${FILESDIR}"/upstart-1.2-socket-event.patch
# Inspired by -r 1542; just rewrote it based on 1.2 though
epatch "${FILESDIR}"/upstart-1.2-socket-event-SOCKET_PATH.patch
# Clean up domain sockets on startup and shutdown.
epatch "${FILESDIR}"/upstart-1.2-socket-cleanup.patch
# Add base fscrypto ring: to work with File systems that support
# directory encryption.
use direncryption && epatch "${FILESDIR}"/upstart-1.2-dircrypto.patch
# Require explicit import of environment variables into job classes.
epatch "${FILESDIR}"/upstart-1.2-import-env.patch
epatch "${FILESDIR}"/${P}-dbus-session-support.patch
epatch "${FILESDIR}"/${P}-initctl-show-config.patch
# The selinux patch changes makefile.am and configure.ac
# so we need to run autoreconf, and if we don't the system
# will do it for us, and incorrectly too.
eautoreconf
}
src_configure() {
# Rearrange PATH so that /usr/local does not override /usr.
append-cppflags '-DPATH="\"/usr/bin:/usr/sbin:/sbin:/bin:/usr/local/sbin:/usr/local/bin\""'
append-lfs-flags
econf \
--prefix=/ \
--exec-prefix= \
--includedir='${prefix}/usr/include' \
--disable-rpath \
$(use_enable selinux) \
$(use_enable nls)
}
src_compile() {
emake NIH_DBUS_TOOL=$(which nih-dbus-tool)
}
src_install() {
default
use examples || rm "${D}"/etc/init/*.conf
insinto /etc/init
# Always use our own upstart-socket-bridge.conf.
doins "${FILESDIR}"/init/upstart-socket-bridge.conf
# Restore udev bridge if requested.
use udev_bridge && doins extra/conf/upstart-udev-bridge.conf
# Install D-Bus XML files.
insinto /usr/share/dbus-1/interfaces/
doins "${S}"/dbus/*.xml
}