diff options
Diffstat (limited to 'sys-apps/openrc/openrc-9999.ebuild')
-rw-r--r-- | sys-apps/openrc/openrc-9999.ebuild | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/sys-apps/openrc/openrc-9999.ebuild b/sys-apps/openrc/openrc-9999.ebuild new file mode 100644 index 0000000..b66378e --- /dev/null +++ b/sys-apps/openrc/openrc-9999.ebuild @@ -0,0 +1,130 @@ +inherit flag-o-matic eutils toolchain-funcs multilib + +DESCRIPTION="OpenRC manages the services, startup and shutdown of a host" +HOMEPAGE="http://roy.marples.name/" + +if [ "${PV}" = "9999" ]; then +inherit git +EGIT_REPO_URI="git://git.overlays.gentoo.org/proj/openrc.git" +else +SRC_URI="http://roy.marples.name/${P}.tar.bz2" +fi + +LICENSE="BSD-2" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~hppa ~ia64 ~ppc ~ppc64 ~sh ~sparc ~sparc-fbsd ~x86 ~x86-fbsd" +IUSE="ncurses pam static unicode kernel_linux kernel_FreeBSD" + +RDEPEND="virtual/init + kernel_linux? ( + >=sys-apps/coreutils-5.2.1 + >=sys-apps/module-init-tools-3.2.2-r2 + sys-apps/makedev + ) + kernel_FreeBSD? ( sys-process/fuser-bsd ) + ncurses? ( sys-libs/ncurses ) + pam? ( virtual/pam ) + !<sys-apps/baselayout-2.0.0" +DEPEND="virtual/os-headers" + +pkg_setup() { + LIBDIR="lib" + [ "${SYMLINK_LIB}" = "yes" ] && LIBDIR=$(get_abi_LIBDIR "${DEFAULT_ABI}") +} + +make_opts() { + local opts="${opts} LIB=${LIBDIR}" + + if use kernel_linux; then + opts="${opts} OS=Linux" + else + opts="${opts} OS=BSD" + fi + + use ncurses && opts="${opts} TERMCAP=ncurses" + use pam && opts="${opts} PAM=pam" + + echo "${opts}" +} + +src_unpack() { + if [ "${PV}" = "9999" ]; then + git_src_unpack + else + unpack ${A} + fi + cd "${S}" + + # GIT has this rpath for testing, but we need to disable it as it's + # a potential security risk + sed -i.bak -e '/LDFLAGS += -Wl,-rpath ./ s/^/#/' src/Makefile +} + +src_compile() { + use static && append-ldflags -static + emake $(make_opts) CC=$(tc-getCC) || die +} + +src_install() { + emake $(make_opts) DESTDIR="${D}" install || die + + # Fix portage bitching about libs and symlinks + rm "${D}"/usr/"${LIBDIR}"/libeinfo.so "${D}"/usr/"${LIBDIR}"/librc.so + ln -s libeinfo.so.1 "${D}"/"${LIBDIR}"/libeinfo.so + gen_usr_ldscript libeinfo.so + ln -s librc.so.1 "${D}"/"${LIBDIR}"/librc.so + gen_usr_ldscript librc.so + + # Backup our default runlevels + dodir /usr/share/"${PN}" + mv "${D}/etc/runlevels" "${D}/usr/share/${PN}" + + # Setup unicode defaults for silly unicode users + if use unicode; then + sed -i -e '/^unicode=/s:NO:YES:' "${D}"/etc/rc.conf + fi +} + +pkg_preinst() { + # baselayout bootmisc init script has been split out in OpenRC + # so handle upgraders + if ! has_version sys-apps/openrc; then + local x= xtra= + use kernel_linux && xtra="${xtra} procfs sysctl" + use kernel_FreeBSD && xtra="${xtra} savecore dumpon" + for x in swap ${xtra}; do + [ -e "${ROOT}"etc/runlevels/boot/"${x}" ] && continue + ln -snf /etc/init.d/"${x}" "${ROOT}"etc/runlevels/boot/"${x}" + done + fi + + # Upgrade out state for baselayout-1 users + if [ ! -e "${ROOT}${LIBDIR}"/rc/init.d/started ]; then + ( + [ -e "${ROOT}"etc/conf.d/rc ] && . "${ROOT}etc/conf.d/rc" + svcdir=${svcdir:-/var/lib/init.d} + if [ ! -d "${ROOT}${svcdir}/started" ]; then + ewarn "No state found, and no state exists" + elog "You should reboot this host" + else + einfo "Moving state from ${ROOT}${svcdir} to ${ROOT}${LIBDIR}/rc/init.d" + mv "${ROOT}${svcdir}"/* "${ROOT}${LIBDIR}"/rc/init.d + rm -rf "${ROOT}${LIBDIR}"/rc/init.d/daemons \ + "${ROOT}${LIBDIR}"/rc/init.d/console + umount "${ROOT}${svcdir}" 2>/dev/null + rm -rf "${ROOT}${svcdir}" + fi + ) + fi +} + +pkg_postinst() { + # Make our runlevels if they don't exist + if [ ! -e "${ROOT}"etc/runlevels ]; then + einfo "Copying across default runlevels" + cp -RPp "${ROOT}"usr/share/"${PN}"/runlevels "${ROOT}"/etc + fi + + einfo "You should now update all files in /etc, using etc-update" + einfo "or equivalent before restarting any services or this host." +} |