# Copyright 1999-2008 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/sys-apps/openrc/openrc-0.2-r2.ebuild,v 1.6 2008/03/31 16:09:00 vapier Exp $ inherit eutils flag-o-matic multilib toolchain-funcs if [[ ${PV} == "9999" ]] ; then EGIT_REPO_URI="git://git.overlays.gentoo.org/proj/openrc.git" EGIT_BRANCH="master" inherit git else SRC_URI="http://roy.marples.name/${PN}/${P}.tar.bz2 mirror://gentoo/${P}.tar.bz2 http://dev.gentoo.org/~cardoe/files/${P}.tar.bz2 http://dev.gentoo.org/~vapier/dist/${P}.tar.bz2" fi DESCRIPTION="OpenRC manages the services, startup and shutdown of a host" HOMEPAGE="http://roy.marples.name/openrc" LICENSE="BSD-2" SLOT="0" KEYWORDS="~amd64 ~arm ~hppa ~ppc ~ppc64 ~sparc-fbsd ~x86" #"~alpha ~amd64 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~sh ~sparc ~sparc-fbsd ~x86 ~x86-fbsd" IUSE="debug ncurses pam unicode kernel_linux kernel_FreeBSD" RDEPEND="virtual/init kernel_linux? ( >=sys-apps/module-init-tools-3.2.2-r2 ) kernel_FreeBSD? ( sys-process/fuser-bsd ) ncurses? ( sys-libs/ncurses ) pam? ( virtual/pam ) >=sys-apps/baselayout-2.0.0 ! "${ROOT}"/etc/timezone ) fi # force net init.d scripts into symlinks for f in "${ROOT}"/etc/init.d/net.* ; do if [[ ! -L ${f} ]] ; then elog "Moved net service '${f##*/}' to '${f##*/}.openrc.bak' to force a symlink." elog "You should delete '${f##*/}.openrc.bak' if you don't need it." mv "${f}" "${f}.openrc.bak" ln -snf net.lo "${f}" fi done # skip remaining migration if we already have openrc installed has_version sys-apps/openrc && return 0 # baselayout boot init scripts have been split out for f in $(cd "${D}"/usr/share/${PN}/runlevels/boot || exit; echo *) ; do add_boot_init ${f} done # Try to auto-add some addons when possible add_boot_init_mit_config /etc/conf.d/cryptfs dmcrypt add_boot_init_mit_config /etc/mdadm.conf mdraid add_boot_init_mit_config /etc/dmtab device-mapper [[ -e ${ROOT}/sbin/vgscan ]] && add_boot_init lvm elog "Add on services (such as RAID/dmcrypt/LVM/etc...) are now stand alone" elog "init.d scripts. If you use such a thing, make sure you have the" elog "required init.d scripts added to your boot runlevel." # Upgrade out state for baselayout-1 users if [[ ! -e ${ROOT}${LIBDIR}/rc/init.d/started ]] ; then ( [[ -e ${ROOT}/etc/conf.d/rc ]] && source "${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 mkdir -p "${ROOT}${LIBDIR}/rc/init.d" 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 # Handle the /etc/modules.autoload.d -> /etc/conf.d/modules transition if [[ -d ${ROOT}/etc/modules.autoload.d ]] ; then elog "Converting your /etc/modules.autoload.d/ files to /etc/conf.d/modules" rm -f "${ROOT}"/etc/modules.autoload.d/.keep* rmdir "${ROOT}"/etc/modules.autoload.d 2>/dev/null if [[ -d ${ROOT}/etc/modules.autoload.d ]] ; then local f v for f in "${ROOT}"/etc/modules.autoload.d/* ; do v=${f##*/} v=${v#kernel-} v=${v//[^[:alnum:]]/_} gawk -v v="${v}" -v f="${f##*/}" ' BEGIN { print "\n### START: Auto-converted from " f "\n" } { if ($0 ~ /^[^#]/) { print "modules_" v "=\"${modules_" v "} " $1 "\"" gsub(/[^[:alnum:]]/, "_", $1) printf "module_" $1 "_args_" v "=\"" for (i = 2; i <= NF; ++i) { if (i > 2) printf " " printf $i } print "\"\n" } else print } END { print "\n### END: Auto-converted from " f "\n" } ' "${f}" >> "${D}"/etc/conf.d/modules done rm -f "${f}" rmdir "${ROOT}"/etc/modules.autoload.d 2>/dev/null fi fi } pkg_postinst() { # Remove old baselayout links rm -f "${ROOT}"/etc/runlevels/boot/{check{fs,root},rmnologin} # 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 if [[ -d ${ROOT}/etc/modules.autoload.d ]] ; then ewarn "/etc/modules.autoload.d is no longer used. Please convert" ewarn "your files to /etc/conf.d/modules and delete the directory." fi elog "You should now update all files in /etc, using etc-update" elog "or equivalent before restarting any services or this host." }