mirror of
https://github.com/pentoo/pentoo-overlay
synced 2026-05-08 20:43:38 +02:00
openrc: bump and significant cleanup
This commit is contained in:
parent
d1369798c6
commit
b8200c6346
19 changed files with 1 additions and 7629 deletions
|
|
@ -23,38 +23,8 @@ AUX openrc-9999-pause.patch 825 RMD160 737615919d779894e990072a0ff026aeb4fc0a95
|
|||
AUX openrc.logrotate 71 RMD160 4e7370ca873bd917f16e2b8cfc4bc71accbf2353 SHA1 ef1f26020db432f96a1485f72a189b288ef6873b SHA256 0b44210db9770588bd491cd6c0ac9412d99124c6be4c9d3f7d31ec8746072f5c
|
||||
AUX power_saving.start 631 RMD160 8752a596242e506b90e443ae794b612e1cb08db2 SHA1 892bd2ab9a738db2edee4e36c5ba0007e1d183b3 SHA256 2bd4646a94bacdd9aba77e513bad6395722519d30d3137bebc3144ad038c0a0d
|
||||
AUX start-stop-daemon.pam 63 RMD160 114c1bbc14f58e5360a2e3136dba06bb953196e4 SHA1 be64dbdc7a99c8260aafdd346c5cb51ced8c1730 SHA256 2681da17e4a122656b5303b7c7eca82b8fb182641290b153fdbe96b63638086d
|
||||
DIST openrc-0.5.2.tar.bz2 153419 RMD160 a2c5e11e1df7325c4e9678cabee62d1168c8bff7 SHA1 3ef138df0e75e50484f9064b1653cebc3b8ab17e SHA256 0633f5cc8c0f055a292722b36108cebbe1925f164df8c0d2688dd376e6f0e18c
|
||||
DIST openrc-0.5.3.tar.bz2 153281 RMD160 995181494c81c376223d7df90d48e3b7eaad69ad SHA1 fd82495c94c7d68d6493bca7623fc962f9a3cb6b SHA256 1e3120906d93fb1746f00355eb42b2ee510daafdad79d7c0dea2eb48eea3ad43
|
||||
DIST openrc-0.6.0.tar.bz2 154403 RMD160 20710f2c772368d84c46128984bf08e065558268 SHA1 b0475b9ef4ed877a63878325f60c444b0b33454f SHA256 1b302ef12b1c144ae4260d442bd9fa5dd6176c9601d9c1f609ef49f14a1b0728
|
||||
DIST openrc-0.6.3.tar.bz2 155103 RMD160 a3660dc73ed2f64f0e621f739a864d97863d4e8b SHA1 dd57910dc24ce35ea1e38bde7e217360b59c0074 SHA256 26159265b06397a85bc29078e7b8c1323e53481e95e917ed5aeaf7443b9f9655
|
||||
DIST openrc-0.6.4.tar.bz2 154636 RMD160 9330f8ac1cb926a806dd0592a491e80a0d17fe46 SHA1 97dd1669e63c56f234e1cd3ac212bd29c2c9046a SHA256 42254eb96e9880212ca4e28d9724be637e35eacf378fc0cafbd8c440d2d5ce08
|
||||
DIST openrc-0.6.5.tar.bz2 154622 RMD160 a34561ed80c4e51c25173309374031630570ca47 SHA1 b37f33dded920cf76c85f0c7841558b17a8c68cb SHA256 291b125f81df021f6f18a959e434a62c39af3255007572fdf922004aa7d87993
|
||||
DIST openrc-0.6.6.tar.bz2 154748 RMD160 4439cab0e67398f9da27533492152a64381d616c SHA1 6481004c8fa712a8cc38ef49a4e269414e8d6bea SHA256 2987b172fb5d6bcea69e261c5829046733ca6a306a666909c53c2822c0728d9e
|
||||
DIST openrc-0.6.7.tar.bz2 154866 RMD160 b00db9be2de62661390c9f7cd23bb261720e5dc4 SHA1 bc438af0128d6989c8e1bab1405d82d9c1afbae1 SHA256 0624d201af797881a8c0b475fb2dc2e90ab79cc8ced8d6f659ea98227b510e57
|
||||
DIST openrc-0.6.8.tar.bz2 155020 RMD160 c5b11a5bea9ba948f74f4636aaafbcdc46f7210f SHA1 277d52d86b3dc1c57d9eb94405f6ba079bdbf416 SHA256 19352253f23b2bd51dee9cee3b4e602d669156acee171f3cc76a448e682823fd
|
||||
DIST openrc-0.7.0.tar.bz2 157506 RMD160 27945f239ca9915e67e496574b35856188b3e3e4 SHA1 13a960a3744f6ae220daa85849ce0198161a08d5 SHA256 39f3fef2707d0b5497fb796382a9908542ef6ecdc90e748b429282df96029409
|
||||
DIST openrc-0.8.0.tar.bz2 160696 RMD160 d4f36eb32473585c592a8b889037c7fcffd9f677 SHA1 c6c923748feab1bf2ce27418f764825831aea6f7 SHA256 281f6afd2102a5000faa6f883609e30148795e2fd6b9d6cc82252e103d7bc859
|
||||
DIST openrc-0.8.2.tar.bz2 161165 RMD160 e4c78daafac6baffa51750d29ff78c743552429b SHA1 bf8413fee13ce21d0018a606a70caec5a5629025 SHA256 5d603869f78692947b60528f12b3107372a9e4a469621be7bc47d3829c16f8a1
|
||||
DIST openrc-0.8.3.tar.bz2 162474 RMD160 51728d13abaf10df0309f20efb5181cf46c71277 SHA1 41f86cf964cf90c1db26e7d7521ee784b706494b SHA256 38ce2538bffe38c00055aadb85597f6f517b3e9f760dc1ed4a27ddf28cb9f4b4
|
||||
DIST openrc-0.9.4.tar.bz2 163514 RMD160 b0c5b10a562b7a906d762f9b735aa386be6c4afa SHA1 a44f0606db29b6aa2cf98c1907c915e8da5acf4f SHA256 0da3981de88c16b24d14b37d4d2eb0f631cbe5ebe3058dd8c2e32f7092937ae3
|
||||
DIST openrc-0.9.8.4.tar.bz2 166843 RMD160 2d48429eb2acac513dab803b282eaf495db66be3 SHA1 4987928b46ad37406ceca26bc0d09f4281669b71 SHA256 904e139a90d5f610b59f9e0cc52ddac487c58e4fa73468b5e9fdac1a03362533
|
||||
EBUILD openrc-0.5.2-r1.ebuild 12016 RMD160 46594936b6c96f7718084ce71e154347f07688cd SHA1 16c3c67a8e6d68459e0b6bb1c802b6bc2650a5f8 SHA256 abed0697b4f66a6b249fcb6a353ed437a092eb5eefd1aa3bcd725647b98e6884
|
||||
EBUILD openrc-0.5.2-r2.ebuild 13279 RMD160 12302bafae450caa07fecb8574bf66c411eef63e SHA1 b51c93b98622568349abce627c006f77f641d41f SHA256 7f2d16bdecd3953413f5ac83fc47b3685c4f6ff287e07e489204b8ca06cc458d
|
||||
EBUILD openrc-0.5.3.ebuild 12974 RMD160 d5765ce585e7fde43f0cd889e145336ea382ee03 SHA1 8fd3d0904af9a1863c6a180cf583b47882397868 SHA256 6aff0f5ee9371d25b35dba51c01c294f18d24dab58eb888a0e9f2e6b5e0c041b
|
||||
EBUILD openrc-0.6.0-r1.ebuild 13581 RMD160 bec07b6bfd0969c382d64f941182de91a0464893 SHA1 05dc12168ec9ff59a6c4493ea570eb419469a68d SHA256 29b8b3572ca1c467dc9dbfc33890f02b5dfcc4b273cfe03878a2813f79cf9d4a
|
||||
EBUILD openrc-0.6.0.ebuild 13452 RMD160 959a2f1b95328c226b2a0a2c022857f89ddac734 SHA1 59800ff7677c85bed4eca7d2ee71ebac0b58f5ec SHA256 3b3cb174aee1eedfba1ab45c45f9801612b7b489e760ee0b291d1b61519719c6
|
||||
EBUILD openrc-0.6.3.ebuild 13417 RMD160 b5cc8a77b39a57f44f3b4b773bd169bb73423e6d SHA1 75c14d219160c1f9ec39d2ff13dc8a7db83f9d77 SHA256 6ed6b7c84c2f808a23a03f2eb9ed7c658ccc4b726c95c7c9549eaaafbcfb2bc6
|
||||
EBUILD openrc-0.6.4.ebuild 14262 RMD160 75768c65549e7ef391a194ed8bbb102f41d54f22 SHA1 9153d55df442dcf4f4c081a2e397e1784f890e70 SHA256 ed7a6846b8e4279df922be08930d6cd06f2f1d09834227e5ff95685305262d0e
|
||||
EBUILD openrc-0.6.5.ebuild 14262 RMD160 8ef41bdb30ab211f4e1ab7ba69067e0aee9af873 SHA1 0c9eeb0fef4ba6bff6b3e0cb35fe8abb27338fe5 SHA256 212029f95c693d2011e36138d39e8aee35ed1d5faff302ed748c78791ac61532
|
||||
EBUILD openrc-0.6.6.ebuild 14311 RMD160 88d5ef47038b9b6f0f53c5bfac34f79e49fa4625 SHA1 7a034ebf5f4f539e7f083c6970cef87b8f71b860 SHA256 314ab24f006425df559ca302702d471598918e7ce49620938e8443fdca6f143d
|
||||
EBUILD openrc-0.6.7.ebuild 14262 RMD160 fc686a1fe7943fef0763e4a550650cae78d10417 SHA1 4c2ed1e934ff00e011ee7f253a251f322b39b9a0 SHA256 3772403f27f3733867960d559ef8fddb484e0c9e266ec1e46dda0e84de80fb71
|
||||
EBUILD openrc-0.6.8.ebuild 14262 RMD160 3cfe12a4a8ccd097bab8cac6e5c7e58e196308a7 SHA1 786fb21973111e8448e55e65b5391aeeaaa8f08f SHA256 8a9fd7dc1555f20cc95aee82fcc9871e4fb8d8c9126aad8a631253b82bfbd730
|
||||
EBUILD openrc-0.7.0.ebuild 14310 RMD160 4d3881c0c3f574d2bf9681a73f439b03516e63fb SHA1 a78bbc499d0f82e8f97dc0490543a8d85d8efdad SHA256 ee7d262b4de702ed3afda6817f331b641f2f4a8a88eaac2cdded21aeb13dd671
|
||||
EBUILD openrc-0.8.0.ebuild 14061 RMD160 cf57c78830da101f0fff000b2b0d76e0aac730ae SHA1 890ec7ca40395c66d0da5084aa4aad5b2f71252f SHA256 2e3141f81c1671c4e146c1b1616ba25a82143069c7177caf4f5f7943d599a129
|
||||
EBUILD openrc-0.8.2-r1.ebuild 14197 RMD160 7cab6d64d0b25e1495a9303774680a6cb8f45d05 SHA1 fbdc600f79b7e7ffad451d01fc6c476386cf7ef6 SHA256 618d3a4b1aafefa7ab3ec486cf23f8c3bd09b1dd2e1ec3bd00a03151d6ab581c
|
||||
EBUILD openrc-0.8.2-r2.ebuild 14375 RMD160 c739f2985a3173005b4f8bc8096f3d6f0d76b697 SHA1 3735200ff93a1c36862c1bd57e51863220464ff2 SHA256 6a46760988a66356876e987cd325942b07354323645bfe02097adcffd8d57746
|
||||
EBUILD openrc-0.8.2.ebuild 14204 RMD160 e964adf6cd5c5d63b7292417c79488be40b3a33d SHA1 266386dc2b6ceedad5922ea5330ccdfd47e3fa3d SHA256 1113fea38596c9ad221074984c300702effc98c29038406b406a11e918288152
|
||||
EBUILD openrc-0.8.3-r1.ebuild 14393 RMD160 5998465143a3c22fb03fa774c59cd372ec5778ae SHA1 ac680909245a929fa5838af87214dcadf7f6fce9 SHA256 a6e58b224cd3a884401e6e69dcd048d5011b8e8d29d995e2b9b11e359e9efc27
|
||||
EBUILD openrc-0.8.3.ebuild 14300 RMD160 c44095a0b428080e10165917e9c2b2a18a09ed5f SHA1 d2f90ca14d1fb70d39e42538206a3052177965bb SHA256 6aad8719d1ca9355ba0a0ce13591d9199673b4a542851bd2bdec2da0c83491c3
|
||||
EBUILD openrc-0.9.4-r1.ebuild 14436 RMD160 9fc6e6ce6a3d8eb76d737e63468a774de7d96aa8 SHA1 b7b1c6d89c8dd3bb68ba9d98dfaa1d6ae267026a SHA256 8b945821399508a079566b01fb409eefd2336127055286eab10f7de6f9ce5453
|
||||
EBUILD openrc-0.9.8.4-r1.ebuild 14306 RMD160 59a6f5865b3b3e06db21869967643e91497d4511 SHA1 eb1c0c8299f931d7842587eaf06d2201c4502bba SHA256 3fbfc0cd32e9445bf17b9565023487fdccbd5d07073323aee65e9016a8b34774
|
||||
EBUILD openrc-0.9.8.4.ebuild 14220 RMD160 bacd73fd499c969e3a620f42e08c6895aa1ebbef SHA1 cf317d2ba79aa3912fbfd7e081e60ae01e4ff4be SHA256 869ac4655fbfe56d47c0d7708987fbf07c8a682ad166eff0493fa88cf835515e
|
||||
|
|
|
|||
|
|
@ -1,370 +0,0 @@
|
|||
# Copyright 1999-2009 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/sys-apps/openrc/openrc-0.5.2-r1.ebuild,v 1.1 2009/10/20 04:05:32 williamh Exp $
|
||||
|
||||
EAPI="1"
|
||||
|
||||
inherit eutils flag-o-matic multilib toolchain-funcs
|
||||
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
EGIT_REPO_URI="git://roy.marples.name/openrc.git"
|
||||
inherit git
|
||||
KEYWORDS=""
|
||||
else
|
||||
SRC_URI="http://roy.marples.name/downloads/${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"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~sparc-fbsd ~x86 ~x86-fbsd"
|
||||
fi
|
||||
|
||||
DESCRIPTION="OpenRC manages the services, startup and shutdown of a host"
|
||||
HOMEPAGE="http://roy.marples.name/openrc"
|
||||
|
||||
LICENSE="BSD-2"
|
||||
SLOT="0"
|
||||
IUSE="debug elibc_glibc ncurses pam unicode kernel_linux kernel_FreeBSD +pentoo"
|
||||
|
||||
RDEPEND="virtual/init
|
||||
kernel_FreeBSD? ( sys-process/fuser-bsd )
|
||||
elibc_glibc? ( >=sys-libs/glibc-2.5 )
|
||||
ncurses? ( sys-libs/ncurses )
|
||||
pam? ( virtual/pam )
|
||||
>=sys-apps/baselayout-2.0.0
|
||||
kernel_linux? ( !<sys-apps/module-init-tools-3.2.2-r2 )
|
||||
!<sys-fs/udev-133
|
||||
!<sys-apps/sysvinit-2.86-r11"
|
||||
DEPEND="${RDEPEND}
|
||||
virtual/os-headers"
|
||||
|
||||
make_args() {
|
||||
unset LIBDIR #266688
|
||||
|
||||
MAKE_ARGS="${MAKE_ARGS} LIBNAME=$(get_libdir) LIBEXECDIR=/$(get_libdir)/rc"
|
||||
MAKE_ARGS="${MAKE_ARGS} MKOLDNET=yes"
|
||||
|
||||
local brand="Unknown"
|
||||
if use kernel_linux ; then
|
||||
MAKE_ARGS="${MAKE_ARGS} OS=Linux"
|
||||
brand="Linux"
|
||||
elif use kernel_FreeBSD ; then
|
||||
MAKE_ARGS="${MAKE_ARGS} OS=FreeBSD"
|
||||
brand="FreeBSD"
|
||||
fi
|
||||
export BRANDING="Pentoo ${brand}"
|
||||
}
|
||||
|
||||
pkg_setup() {
|
||||
export DEBUG=$(usev debug)
|
||||
export MKPAM=$(usev pam)
|
||||
export MKTERMCAP=$(usev ncurses)
|
||||
}
|
||||
|
||||
src_unpack() {
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
git_src_unpack
|
||||
else
|
||||
unpack ${A}
|
||||
fi
|
||||
cd "${S}"
|
||||
sed -i 's:0444:0644:' mk/sys.mk
|
||||
sed -i "/^DIR/s:/openrc:/${PF}:" doc/Makefile #241342
|
||||
sed -i '/^CFLAGS+=.*_CC_FLAGS_SH/d' mk/cc.mk #289264
|
||||
[[ -d ${FILESDIR}/${PV} ]] \
|
||||
&& epatch "${FILESDIR}"/${PV}/*.patch \
|
||||
|| epatch "${FILESDIR}"/9999/*.patch
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
make_args
|
||||
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
local ver="git-$(echo ${EGIT_VERSION} | cut -c1-8)"
|
||||
sed -i "/^GITVER[[:space:]]*=/s:=.*:=${ver}:" mk/git.mk
|
||||
fi
|
||||
|
||||
tc-export CC AR RANLIB
|
||||
emake ${MAKE_ARGS} || die "emake ${MAKE_ARGS} failed"
|
||||
}
|
||||
|
||||
# set_config <file> <option name> <yes value> <no value> test
|
||||
# a value of "#" will just comment out the option
|
||||
set_config() {
|
||||
local file="${D}/$1" var=$2 val com
|
||||
eval "${@:5}" && val=$3 || val=$4
|
||||
[[ ${val} == "#" ]] && com="#" && val='\2'
|
||||
sed -i -r -e "/^#?${var}=/{s:=([\"'])?([^ ]*)\1?:=\1${val}\1:;s:^#?:${com}:}" "${file}"
|
||||
}
|
||||
set_config_yes_no() {
|
||||
set_config "$1" "$2" YES NO "${@:3}"
|
||||
}
|
||||
|
||||
src_install() {
|
||||
make_args
|
||||
emake ${MAKE_ARGS} DESTDIR="${D}" install || die
|
||||
|
||||
# install the readme for the new network scripts
|
||||
dodoc README.net
|
||||
|
||||
# move the shared libs back to /usr so ldscript can install
|
||||
# more of a minimal set of files
|
||||
# disabled for now due to #270646
|
||||
#mv "${D}"/$(get_libdir)/lib{einfo,rc}* "${D}"/usr/$(get_libdir)/ || die
|
||||
#gen_usr_ldscript -a einfo rc
|
||||
gen_usr_ldscript libeinfo.so
|
||||
gen_usr_ldscript librc.so
|
||||
|
||||
keepdir /$(get_libdir)/rc/{init.d,tmp}
|
||||
|
||||
# Backup our default runlevels
|
||||
dodir /usr/share/"${PN}"
|
||||
cp -PR "${D}"/etc/runlevels "${D}"/usr/share/${PN} || die
|
||||
rm -rf "${D}"/etc/runlevels
|
||||
|
||||
# Stick with "old" net as the default for now
|
||||
doconfd conf.d/net || die
|
||||
rm -f "${D}"/usr/share/${PN}/network
|
||||
ln -s /etc/init.d/net.lo "${D}"/usr/share/${PN}/net.lo
|
||||
|
||||
# Setup unicode defaults for silly unicode users
|
||||
set_config_yes_no /etc/rc.conf unicode use unicode
|
||||
|
||||
# Cater to the norm
|
||||
set_config_yes_no /etc/conf.d/keymaps windowkeys '(' use x86 '||' use amd64 ')'
|
||||
|
||||
# Support for logfile rotation
|
||||
insinto /etc/logrotate.d
|
||||
newins "${FILESDIR}"/openrc.logrotate openrc
|
||||
}
|
||||
|
||||
add_boot_init() {
|
||||
local initd=$1
|
||||
# if the initscript is not going to be installed and is not
|
||||
# currently installed, return
|
||||
[[ -e ${D}/etc/init.d/${initd} || -e ${ROOT}/etc/init.d/${initd} ]] \
|
||||
|| return
|
||||
[[ -e ${ROOT}/etc/runlevels/boot/${initd} ]] && return
|
||||
|
||||
# if runlevels dont exist just yet, then create it but still flag
|
||||
# to pkg_postinst that it needs real setup #277323
|
||||
if [[ ! -d ${ROOT}/etc/runlevels/boot ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/boot
|
||||
touch "${ROOT}"/etc/runlevels/.add_boot_init.created
|
||||
fi
|
||||
|
||||
elog "Auto-adding '${initd}' service to your boot runlevel"
|
||||
ln -snf /etc/init.d/${initd} "${ROOT}"/etc/runlevels/boot/${initd}
|
||||
}
|
||||
add_boot_init_mit_config() {
|
||||
local config=$1 initd=$2
|
||||
if [[ -e ${ROOT}${config} ]] ; then
|
||||
if [[ -n $(sed -e 's:#.*::' -e '/^[[:space:]]*$/d' "${ROOT}"/${config}) ]] ; then
|
||||
add_boot_init ${initd}
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_preinst() {
|
||||
local f LIBDIR=$(get_libdir)
|
||||
|
||||
# default net script is just comments, so no point in biting people
|
||||
# in the ass by accident. we save in preinst so that the package
|
||||
# manager doesnt go throwing etc-update crap at us -- postinst is
|
||||
# too late to prevent that. this behavior also lets us keep the
|
||||
# file in the CONTENTS for binary packages.
|
||||
[[ -e ${ROOT}/etc/conf.d/net ]] && cp "${ROOT}"/etc/conf.d/net "${D}"/etc/conf.d/
|
||||
|
||||
# upgrade timezone file ... do it before moving clock
|
||||
if [[ -e ${ROOT}/etc/conf.d/clock && ! -e ${ROOT}/etc/timezone ]] ; then
|
||||
(
|
||||
source "${ROOT}"/etc/conf.d/clock
|
||||
[[ -n ${TIMEZONE} ]] && echo "${TIMEZONE}" > "${ROOT}"/etc/timezone
|
||||
)
|
||||
fi
|
||||
|
||||
# /etc/conf.d/clock moved to /etc/conf.d/hwclock
|
||||
local clock
|
||||
use kernel_FreeBSD && clock="adjkerntz" || clock="hwclock"
|
||||
if [[ -e ${ROOT}/etc/conf.d/clock ]] ; then
|
||||
mv "${ROOT}"/etc/conf.d/clock "${ROOT}"/etc/conf.d/${clock}
|
||||
fi
|
||||
if [[ -e ${ROOT}/etc/init.d/clock ]] ; then
|
||||
rm -f "${ROOT}"/etc/init.d/clock
|
||||
fi
|
||||
if [[ -L ${ROOT}/etc/runlevels/boot/clock ]] ; then
|
||||
rm -f "${ROOT}"/etc/runlevels/boot/clock
|
||||
ln -snf /etc/init.d/${clock} "${ROOT}"/etc/runlevels/boot/${clock}
|
||||
fi
|
||||
if [[ -L ${ROOT}${LIBDIR}/rc/init.d/started/clock ]] ; then
|
||||
rm -f "${ROOT}${LIBDIR}"/rc/init.d/started/clock
|
||||
ln -snf /etc/init.d/${clock} "${ROOT}${LIBDIR}"/rc/init.d/started/${clock}
|
||||
fi
|
||||
|
||||
# /etc/conf.d/rc is no longer used for configuration
|
||||
if [[ -e ${ROOT}/etc/conf.d/rc ]] ; then
|
||||
elog "/etc/conf.d/rc is no longer used for configuration."
|
||||
elog "Please migrate your settings to /etc/rc.conf as applicable"
|
||||
elog "and delete /etc/conf.d/rc"
|
||||
fi
|
||||
|
||||
# force net init.d scripts into symlinks
|
||||
for f in "${ROOT}"/etc/init.d/net.* ; do
|
||||
[[ -e ${f} ]] || continue # catch net.* not matching anything
|
||||
[[ ${f} == */net.lo ]] && continue # real file now
|
||||
[[ ${f} == *.openrc.bak ]] && continue
|
||||
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
|
||||
|
||||
# termencoding was added in 0.2.1 and needed in boot
|
||||
has_version ">=sys-apps/openrc-0.2.1" || add_boot_init termencoding
|
||||
|
||||
# openrc-0.4.0 no longer loads the udev addon
|
||||
enable_udev=0
|
||||
if [[ ! -e "${ROOT}"/etc/runlevels/sysinit/udev ]] && \
|
||||
[[ -e "${ROOT}"/etc/init.d/udev ]] && \
|
||||
! has_version ">=sys-apps/openrc-0.4.0"
|
||||
then
|
||||
# make sure udev is in sysinit if it was enabled before
|
||||
local rc_devices=$(
|
||||
[[ -f /etc/rc.conf ]] && source /etc/rc.conf
|
||||
[[ -f /etc/conf.d/rc ]] && source /etc/conf.d/rc
|
||||
echo "${rc_devices:-${RC_DEVICES:-auto}}"
|
||||
)
|
||||
case ${rc_devices} in
|
||||
udev|auto)
|
||||
enable_udev=1
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# set default interactive shell to sulogin if it exists
|
||||
set_config /etc/rc.conf rc_shell /sbin/sulogin "#" test -e /sbin/sulogin
|
||||
|
||||
# skip remaining migration if we already have openrc installed
|
||||
has_version sys-apps/openrc || migrate_from_baselayout_1
|
||||
}
|
||||
|
||||
migrate_from_baselayout_1() {
|
||||
# baselayout boot init scripts have been split out
|
||||
for f in $(cd "${D}"/usr/share/${PN}/runlevels/boot || exit; echo *) ; do
|
||||
# baselayout-1 is always "old" net, so ignore "new" net
|
||||
[[ ${f} == "network" ]] && continue
|
||||
|
||||
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/conf.d/dmcrypt dmcrypt
|
||||
add_boot_init_mit_config /etc/mdadm.conf mdraid
|
||||
add_boot_init_mit_config /etc/evms.conf evms
|
||||
[[ -e ${ROOT}/sbin/dmsetup ]] && add_boot_init 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() {
|
||||
local LIBDIR=$(get_libdir)
|
||||
|
||||
# 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 ]] || [[ -e ${ROOT}/etc/runlevels/.add_boot_init.created ]] ; then
|
||||
einfo "Copying across default runlevels"
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels "${ROOT}"/etc
|
||||
rm -f "${ROOT}"/etc/runlevels/.add_boot_init.created
|
||||
else
|
||||
if [[ ! -e ${ROOT}/etc/runlevels/sysinit/devfs ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/sysinit
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels/sysinit/* \
|
||||
"${ROOT}"/etc/runlevels/sysinit
|
||||
fi
|
||||
if [[ ! -e ${ROOT}/etc/runlevels/shutdown/mount-ro ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/shutdown
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels/shutdown/* \
|
||||
"${ROOT}"/etc/runlevels/shutdown
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "$enable_udev" = 1 ]]; then
|
||||
elog "Auto adding udev init script to the sysinit runlevel"
|
||||
ln -sf /etc/init.d/udev "${ROOT}"/etc/runlevels/sysinit/udev
|
||||
fi
|
||||
|
||||
# update the dependency tree bug #224171
|
||||
[[ "${ROOT}" = "/" ]] && "${ROOT}/${LIBDIR}"/rc/bin/rc-depend -u
|
||||
|
||||
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."
|
||||
elog
|
||||
elog "Please read the migration guide available at:"
|
||||
elog "http://www.gentoo.org/doc/en/openrc-migration.xml"
|
||||
}
|
||||
|
|
@ -1,400 +0,0 @@
|
|||
# Copyright 1999-2009 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/sys-apps/openrc/openrc-0.5.2-r2.ebuild,v 1.1 2009/11/10 01:54:12 williamh Exp $
|
||||
|
||||
EAPI="1"
|
||||
|
||||
inherit eutils flag-o-matic multilib toolchain-funcs
|
||||
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
EGIT_REPO_URI="git://roy.marples.name/openrc.git"
|
||||
inherit git
|
||||
KEYWORDS=""
|
||||
else
|
||||
SRC_URI="http://roy.marples.name/downloads/${PN}/${P}.tar.bz2"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~sparc-fbsd ~x86 ~x86-fbsd"
|
||||
fi
|
||||
|
||||
DESCRIPTION="OpenRC manages the services, startup and shutdown of a host"
|
||||
HOMEPAGE="http://roy.marples.name/openrc"
|
||||
|
||||
LICENSE="BSD-2"
|
||||
SLOT="0"
|
||||
IUSE="debug elibc_glibc ncurses pam unicode kernel_linux kernel_FreeBSD +pentoo"
|
||||
|
||||
RDEPEND="virtual/init
|
||||
kernel_FreeBSD? ( sys-process/fuser-bsd )
|
||||
elibc_glibc? ( >=sys-libs/glibc-2.5 )
|
||||
ncurses? ( sys-libs/ncurses )
|
||||
pam? ( virtual/pam )
|
||||
>=sys-apps/baselayout-2.0.0
|
||||
kernel_linux? ( !<sys-apps/module-init-tools-3.2.2-r2 )
|
||||
!<sys-fs/udev-133
|
||||
!<sys-apps/sysvinit-2.86-r11"
|
||||
DEPEND="${RDEPEND}
|
||||
virtual/os-headers"
|
||||
|
||||
make_args() {
|
||||
unset LIBDIR #266688
|
||||
|
||||
MAKE_ARGS="${MAKE_ARGS} LIBNAME=$(get_libdir) LIBEXECDIR=/$(get_libdir)/rc"
|
||||
MAKE_ARGS="${MAKE_ARGS} MKOLDNET=yes"
|
||||
|
||||
local brand="Unknown"
|
||||
if use kernel_linux ; then
|
||||
MAKE_ARGS="${MAKE_ARGS} OS=Linux"
|
||||
brand="Linux"
|
||||
elif use kernel_FreeBSD ; then
|
||||
MAKE_ARGS="${MAKE_ARGS} OS=FreeBSD"
|
||||
brand="FreeBSD"
|
||||
fi
|
||||
export BRANDING="Pentoo ${brand}"
|
||||
}
|
||||
|
||||
pkg_setup() {
|
||||
export DEBUG=$(usev debug)
|
||||
export MKPAM=$(usev pam)
|
||||
export MKTERMCAP=$(usev ncurses)
|
||||
}
|
||||
|
||||
src_unpack() {
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
git_src_unpack
|
||||
else
|
||||
unpack ${A}
|
||||
fi
|
||||
cd "${S}"
|
||||
sed -i 's:0444:0644:' mk/sys.mk
|
||||
sed -i "/^DIR/s:/openrc:/${PF}:" doc/Makefile #241342
|
||||
sed -i '/^CFLAGS+=.*_CC_FLAGS_SH/d' mk/cc.mk #289264
|
||||
epatch "${FILESDIR}"/${P}-fix-default-domain.patch
|
||||
epatch "${FILESDIR}"/${P}-linux-containers.patch
|
||||
epatch "${FILESDIR}"/${P}-ppp-options.patch
|
||||
epatch "${FILESDIR}"/${P}-fix-iproute2-support.patch
|
||||
epatch "${FILESDIR}"/${P}-dont-wipe-wtmp.patch
|
||||
epatch "${FILESDIR}"/openrc-9999-msg-style.patch
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
make_args
|
||||
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
local ver="git-$(echo ${EGIT_VERSION} | cut -c1-8)"
|
||||
sed -i "/^GITVER[[:space:]]*=/s:=.*:=${ver}:" mk/git.mk
|
||||
fi
|
||||
|
||||
tc-export CC AR RANLIB
|
||||
emake ${MAKE_ARGS} || die "emake ${MAKE_ARGS} failed"
|
||||
}
|
||||
|
||||
# set_config <file> <option name> <yes value> <no value> test
|
||||
# a value of "#" will just comment out the option
|
||||
set_config() {
|
||||
local file="${D}/$1" var=$2 val com
|
||||
eval "${@:5}" && val=$3 || val=$4
|
||||
[[ ${val} == "#" ]] && com="#" && val='\2'
|
||||
sed -i -r -e "/^#?${var}=/{s:=([\"'])?([^ ]*)\1?:=\1${val}\1:;s:^#?:${com}:}" "${file}"
|
||||
}
|
||||
set_config_yes_no() {
|
||||
set_config "$1" "$2" YES NO "${@:3}"
|
||||
}
|
||||
|
||||
src_install() {
|
||||
make_args
|
||||
emake ${MAKE_ARGS} DESTDIR="${D}" install || die
|
||||
|
||||
# install the readme for the new network scripts
|
||||
dodoc README.net
|
||||
|
||||
# move the shared libs back to /usr so ldscript can install
|
||||
# more of a minimal set of files
|
||||
# disabled for now due to #270646
|
||||
#mv "${D}"/$(get_libdir)/lib{einfo,rc}* "${D}"/usr/$(get_libdir)/ || die
|
||||
#gen_usr_ldscript -a einfo rc
|
||||
gen_usr_ldscript libeinfo.so
|
||||
gen_usr_ldscript librc.so
|
||||
|
||||
keepdir /$(get_libdir)/rc/{init.d,tmp}
|
||||
|
||||
# Backup our default runlevels
|
||||
dodir /usr/share/"${PN}"
|
||||
cp -PR "${D}"/etc/runlevels "${D}"/usr/share/${PN} || die
|
||||
rm -rf "${D}"/etc/runlevels
|
||||
|
||||
# Stick with "old" net as the default for now
|
||||
doconfd conf.d/net || die
|
||||
rm -f "${D}"/usr/share/${PN}/network
|
||||
ln -s /etc/init.d/net.lo "${D}"/usr/share/${PN}/net.lo
|
||||
|
||||
# Setup unicode defaults for silly unicode users
|
||||
set_config_yes_no /etc/rc.conf unicode use unicode
|
||||
|
||||
# Cater to the norm
|
||||
set_config_yes_no /etc/conf.d/keymaps windowkeys '(' use x86 '||' use amd64 ')'
|
||||
|
||||
# Support for logfile rotation
|
||||
insinto /etc/logrotate.d
|
||||
newins "${FILESDIR}"/openrc.logrotate openrc
|
||||
}
|
||||
|
||||
add_boot_init() {
|
||||
local initd=$1
|
||||
# if the initscript is not going to be installed and is not
|
||||
# currently installed, return
|
||||
[[ -e ${D}/etc/init.d/${initd} || -e ${ROOT}/etc/init.d/${initd} ]] \
|
||||
|| return
|
||||
[[ -e ${ROOT}/etc/runlevels/boot/${initd} ]] && return
|
||||
|
||||
# if runlevels dont exist just yet, then create it but still flag
|
||||
# to pkg_postinst that it needs real setup #277323
|
||||
if [[ ! -d ${ROOT}/etc/runlevels/boot ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/boot
|
||||
touch "${ROOT}"/etc/runlevels/.add_boot_init.created
|
||||
fi
|
||||
|
||||
elog "Auto-adding '${initd}' service to your boot runlevel"
|
||||
ln -snf /etc/init.d/${initd} "${ROOT}"/etc/runlevels/boot/${initd}
|
||||
}
|
||||
add_boot_init_mit_config() {
|
||||
local config=$1 initd=$2
|
||||
if [[ -e ${ROOT}${config} ]] ; then
|
||||
if [[ -n $(sed -e 's:#.*::' -e '/^[[:space:]]*$/d' "${ROOT}"/${config}) ]] ; then
|
||||
add_boot_init ${initd}
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_preinst() {
|
||||
local f LIBDIR=$(get_libdir)
|
||||
|
||||
# default net script is just comments, so no point in biting people
|
||||
# in the ass by accident. we save in preinst so that the package
|
||||
# manager doesnt go throwing etc-update crap at us -- postinst is
|
||||
# too late to prevent that. this behavior also lets us keep the
|
||||
# file in the CONTENTS for binary packages.
|
||||
[[ -e ${ROOT}/etc/conf.d/net ]] && cp "${ROOT}"/etc/conf.d/net "${D}"/etc/conf.d/
|
||||
|
||||
# upgrade timezone file ... do it before moving clock
|
||||
if [[ -e ${ROOT}/etc/conf.d/clock && ! -e ${ROOT}/etc/timezone ]] ; then
|
||||
(
|
||||
source "${ROOT}"/etc/conf.d/clock
|
||||
[[ -n ${TIMEZONE} ]] && echo "${TIMEZONE}" > "${ROOT}"/etc/timezone
|
||||
)
|
||||
fi
|
||||
|
||||
# /etc/conf.d/clock moved to /etc/conf.d/hwclock
|
||||
local clock
|
||||
use kernel_FreeBSD && clock="adjkerntz" || clock="hwclock"
|
||||
if [[ -e ${ROOT}/etc/conf.d/clock ]] ; then
|
||||
mv "${ROOT}"/etc/conf.d/clock "${ROOT}"/etc/conf.d/${clock}
|
||||
fi
|
||||
if [[ -e ${ROOT}/etc/init.d/clock ]] ; then
|
||||
rm -f "${ROOT}"/etc/init.d/clock
|
||||
fi
|
||||
if [[ -L ${ROOT}/etc/runlevels/boot/clock ]] ; then
|
||||
rm -f "${ROOT}"/etc/runlevels/boot/clock
|
||||
ln -snf /etc/init.d/${clock} "${ROOT}"/etc/runlevels/boot/${clock}
|
||||
fi
|
||||
if [[ -L ${ROOT}${LIBDIR}/rc/init.d/started/clock ]] ; then
|
||||
rm -f "${ROOT}${LIBDIR}"/rc/init.d/started/clock
|
||||
ln -snf /etc/init.d/${clock} "${ROOT}${LIBDIR}"/rc/init.d/started/${clock}
|
||||
fi
|
||||
|
||||
# /etc/conf.d/rc is no longer used for configuration
|
||||
if [[ -e ${ROOT}/etc/conf.d/rc ]] ; then
|
||||
elog "/etc/conf.d/rc is no longer used for configuration."
|
||||
elog "Please migrate your settings to /etc/rc.conf as applicable"
|
||||
elog "and delete /etc/conf.d/rc"
|
||||
fi
|
||||
|
||||
# force net init.d scripts into symlinks
|
||||
for f in "${ROOT}"/etc/init.d/net.* ; do
|
||||
[[ -e ${f} ]] || continue # catch net.* not matching anything
|
||||
[[ ${f} == */net.lo ]] && continue # real file now
|
||||
[[ ${f} == *.openrc.bak ]] && continue
|
||||
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
|
||||
|
||||
# termencoding was added in 0.2.1 and needed in boot
|
||||
has_version ">=sys-apps/openrc-0.2.1" || add_boot_init termencoding
|
||||
|
||||
# openrc-0.4.0 no longer loads the udev addon
|
||||
enable_udev=0
|
||||
if [[ ! -e "${ROOT}"/etc/runlevels/sysinit/udev ]] && \
|
||||
[[ -e "${ROOT}"/etc/init.d/udev ]] && \
|
||||
! has_version ">=sys-apps/openrc-0.4.0"
|
||||
then
|
||||
# make sure udev is in sysinit if it was enabled before
|
||||
local rc_devices=$(
|
||||
[[ -f /etc/rc.conf ]] && source /etc/rc.conf
|
||||
[[ -f /etc/conf.d/rc ]] && source /etc/conf.d/rc
|
||||
echo "${rc_devices:-${RC_DEVICES:-auto}}"
|
||||
)
|
||||
case ${rc_devices} in
|
||||
udev|auto)
|
||||
enable_udev=1
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# set default interactive shell to sulogin if it exists
|
||||
set_config /etc/rc.conf rc_shell /sbin/sulogin "#" test -e /sbin/sulogin
|
||||
|
||||
# skip remaining migration if we already have openrc installed
|
||||
has_version sys-apps/openrc || migrate_from_baselayout_1
|
||||
}
|
||||
|
||||
migrate_from_baselayout_1() {
|
||||
# baselayout boot init scripts have been split out
|
||||
for f in $(cd "${D}"/usr/share/${PN}/runlevels/boot || exit; echo *) ; do
|
||||
# baselayout-1 is always "old" net, so ignore "new" net
|
||||
[[ ${f} == "network" ]] && continue
|
||||
|
||||
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/conf.d/dmcrypt dmcrypt
|
||||
add_boot_init_mit_config /etc/mdadm.conf mdraid
|
||||
add_boot_init_mit_config /etc/evms.conf evms
|
||||
[[ -e ${ROOT}/sbin/dmsetup ]] && add_boot_init 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() {
|
||||
local LIBDIR=$(get_libdir)
|
||||
|
||||
# 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 ]] || [[ -e ${ROOT}/etc/runlevels/.add_boot_init.created ]] ; then
|
||||
einfo "Copying across default runlevels"
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels "${ROOT}"/etc
|
||||
rm -f "${ROOT}"/etc/runlevels/.add_boot_init.created
|
||||
else
|
||||
if [[ ! -e ${ROOT}/etc/runlevels/sysinit/devfs ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/sysinit
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels/sysinit/* \
|
||||
"${ROOT}"/etc/runlevels/sysinit
|
||||
fi
|
||||
if [[ ! -e ${ROOT}/etc/runlevels/shutdown/mount-ro ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/shutdown
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels/shutdown/* \
|
||||
"${ROOT}"/etc/runlevels/shutdown
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "$enable_udev" = 1 ]]; then
|
||||
elog "Auto adding udev init script to the sysinit runlevel"
|
||||
ln -sf /etc/init.d/udev "${ROOT}"/etc/runlevels/sysinit/udev
|
||||
fi
|
||||
|
||||
# update the dependency tree bug #224171
|
||||
[[ "${ROOT}" = "/" ]] && "${ROOT}/${LIBDIR}"/rc/bin/rc-depend -u
|
||||
|
||||
# /etc/conf.d/net.example is no longer valid
|
||||
local NET_EXAMPLE="${ROOT}/etc/conf.d/net.example"
|
||||
local NET_MD5='8ebebfa07441d39eb54feae0ee4c8210'
|
||||
if [[ -e "${NET_EXAMPLE}" ]] ; then
|
||||
if [[ $(md5sum "${NET_EXAMPLE}") == ${NET_MD5}* ]]; then
|
||||
rm -f "${NET_EXAMPLE}"
|
||||
elog "${NET_EXAMPLE} has been removed."
|
||||
else
|
||||
sed -i '1i# This file is obsolete.\n' "${NET_EXAMPLE}"
|
||||
elog "${NET_EXAMPLE} should be removed."
|
||||
fi
|
||||
elog "The new version is in ${ROOT}/usr/share/${PF}/net.example"
|
||||
fi
|
||||
|
||||
# /etc/conf.d/wireless.example is no longer valid
|
||||
local WIRELESS_EXAMPLE="${ROOT}/etc/conf.d/wireless.example"
|
||||
local WIRELESS_MD5='d1fad7da940bf263c76af4d2082124a3'
|
||||
if [[ -e "${WIRELESS_EXAMPLE}" ]] ; then
|
||||
if [[ $(md5sum "${WIRELESS_EXAMPLE}") == ${WIRELESS_MD5}* ]]; then
|
||||
rm -f "${WIRELESS_EXAMPLE}"
|
||||
elog "${WIRELESS_EXAMPLE} is deprecated and has been removed."
|
||||
else
|
||||
sed -i '1i# This file is obsolete.\n' "${WIRELESS_EXAMPLE}"
|
||||
elog "${WIRELESS_EXAMPLE} is deprecated and should be removed."
|
||||
fi
|
||||
elog "If you are using the old style network scripts,"
|
||||
elog "Configure wireless settings in ${ROOT}/etc/conf.d/net"
|
||||
elog "after reviewing ${ROOT}/usr/share/doc/${PF}/net.example"
|
||||
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."
|
||||
elog
|
||||
elog "Please read the migration guide available at:"
|
||||
elog "http://www.gentoo.org/doc/en/openrc-migration.xml"
|
||||
}
|
||||
|
|
@ -1,398 +0,0 @@
|
|||
# Copyright 1999-2009 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/sys-apps/openrc/openrc-0.5.3.ebuild,v 1.1 2009/12/02 23:42:29 williamh Exp $
|
||||
|
||||
EAPI="1"
|
||||
|
||||
inherit eutils flag-o-matic multilib toolchain-funcs
|
||||
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
EGIT_REPO_URI="git://roy.marples.name/openrc.git"
|
||||
inherit git
|
||||
KEYWORDS=""
|
||||
else
|
||||
SRC_URI="http://roy.marples.name/downloads/${PN}/${P}.tar.bz2"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~sparc-fbsd ~x86 ~x86-fbsd"
|
||||
fi
|
||||
|
||||
DESCRIPTION="OpenRC manages the services, startup and shutdown of a host"
|
||||
HOMEPAGE="http://roy.marples.name/openrc"
|
||||
|
||||
LICENSE="BSD-2"
|
||||
SLOT="0"
|
||||
IUSE="debug elibc_glibc ncurses pam unicode kernel_linux kernel_FreeBSD +pentoo"
|
||||
|
||||
RDEPEND="virtual/init
|
||||
kernel_FreeBSD? ( sys-process/fuser-bsd )
|
||||
elibc_glibc? ( >=sys-libs/glibc-2.5 )
|
||||
ncurses? ( sys-libs/ncurses )
|
||||
pam? ( virtual/pam )
|
||||
>=sys-apps/baselayout-2.0.0
|
||||
kernel_linux? ( !<sys-apps/module-init-tools-3.2.2-r2 )
|
||||
!<sys-fs/udev-133
|
||||
!<sys-apps/sysvinit-2.86-r11"
|
||||
DEPEND="${RDEPEND}
|
||||
virtual/os-headers"
|
||||
|
||||
make_args() {
|
||||
unset LIBDIR #266688
|
||||
|
||||
MAKE_ARGS="${MAKE_ARGS} LIBNAME=$(get_libdir) LIBEXECDIR=/$(get_libdir)/rc"
|
||||
MAKE_ARGS="${MAKE_ARGS} MKOLDNET=yes"
|
||||
|
||||
local brand="Unknown"
|
||||
if use kernel_linux ; then
|
||||
MAKE_ARGS="${MAKE_ARGS} OS=Linux"
|
||||
brand="Linux"
|
||||
elif use kernel_FreeBSD ; then
|
||||
MAKE_ARGS="${MAKE_ARGS} OS=FreeBSD"
|
||||
brand="FreeBSD"
|
||||
fi
|
||||
|
||||
if use pentoo ; then
|
||||
export BRANDING="Pentoo ${brand}"
|
||||
else
|
||||
export BRANDING="Gentoo ${brand}"
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_setup() {
|
||||
export DEBUG=$(usev debug)
|
||||
export MKPAM=$(usev pam)
|
||||
export MKTERMCAP=$(usev ncurses)
|
||||
}
|
||||
|
||||
src_unpack() {
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
git_src_unpack
|
||||
else
|
||||
unpack ${A}
|
||||
fi
|
||||
cd "${S}"
|
||||
sed -i 's:0444:0644:' mk/sys.mk
|
||||
sed -i "/^DIR/s:/openrc:/${PF}:" doc/Makefile #241342
|
||||
sed -i '/^CFLAGS+=.*_CC_FLAGS_SH/d' mk/cc.mk #289264
|
||||
epatch "${FILESDIR}"/openrc-9999-msg-style.patch
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
make_args
|
||||
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
local ver="git-$(echo ${EGIT_VERSION} | cut -c1-8)"
|
||||
sed -i "/^GITVER[[:space:]]*=/s:=.*:=${ver}:" mk/git.mk
|
||||
fi
|
||||
|
||||
tc-export CC AR RANLIB
|
||||
emake ${MAKE_ARGS} || die "emake ${MAKE_ARGS} failed"
|
||||
}
|
||||
|
||||
# set_config <file> <option name> <yes value> <no value> test
|
||||
# a value of "#" will just comment out the option
|
||||
set_config() {
|
||||
local file="${D}/$1" var=$2 val com
|
||||
eval "${@:5}" && val=$3 || val=$4
|
||||
[[ ${val} == "#" ]] && com="#" && val='\2'
|
||||
sed -i -r -e "/^#?${var}=/{s:=([\"'])?([^ ]*)\1?:=\1${val}\1:;s:^#?:${com}:}" "${file}"
|
||||
}
|
||||
set_config_yes_no() {
|
||||
set_config "$1" "$2" YES NO "${@:3}"
|
||||
}
|
||||
|
||||
src_install() {
|
||||
make_args
|
||||
emake ${MAKE_ARGS} DESTDIR="${D}" install || die
|
||||
|
||||
# install the readme for the new network scripts
|
||||
dodoc README.net
|
||||
|
||||
# move the shared libs back to /usr so ldscript can install
|
||||
# more of a minimal set of files
|
||||
# disabled for now due to #270646
|
||||
#mv "${D}"/$(get_libdir)/lib{einfo,rc}* "${D}"/usr/$(get_libdir)/ || die
|
||||
#gen_usr_ldscript -a einfo rc
|
||||
gen_usr_ldscript libeinfo.so
|
||||
gen_usr_ldscript librc.so
|
||||
|
||||
keepdir /$(get_libdir)/rc/{init.d,tmp}
|
||||
|
||||
# Backup our default runlevels
|
||||
dodir /usr/share/"${PN}"
|
||||
cp -PR "${D}"/etc/runlevels "${D}"/usr/share/${PN} || die
|
||||
rm -rf "${D}"/etc/runlevels
|
||||
|
||||
# Stick with "old" net as the default for now
|
||||
doconfd conf.d/net || die
|
||||
rm -f "${D}"/usr/share/${PN}/network
|
||||
ln -s /etc/init.d/net.lo "${D}"/usr/share/${PN}/net.lo
|
||||
|
||||
# Setup unicode defaults for silly unicode users
|
||||
set_config_yes_no /etc/rc.conf unicode use unicode
|
||||
|
||||
# Cater to the norm
|
||||
set_config_yes_no /etc/conf.d/keymaps windowkeys '(' use x86 '||' use amd64 ')'
|
||||
|
||||
# Support for logfile rotation
|
||||
insinto /etc/logrotate.d
|
||||
newins "${FILESDIR}"/openrc.logrotate openrc
|
||||
}
|
||||
|
||||
add_boot_init() {
|
||||
local initd=$1
|
||||
local runlevel=${2:-boot}
|
||||
# if the initscript is not going to be installed and is not
|
||||
# currently installed, return
|
||||
[[ -e ${D}/etc/init.d/${initd} || -e ${ROOT}/etc/init.d/${initd} ]] \
|
||||
|| return
|
||||
[[ -e ${ROOT}/etc/runlevels/${runlevel}/${initd} ]] && return
|
||||
|
||||
# if runlevels dont exist just yet, then create it but still flag
|
||||
# to pkg_postinst that it needs real setup #277323
|
||||
if [[ ! -d ${ROOT}/etc/runlevels/${runlevel} ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/${runlevel}
|
||||
touch "${ROOT}"/etc/runlevels/.add_boot_init.created
|
||||
fi
|
||||
|
||||
elog "Auto-adding '${initd}' service to your ${runlevel} runlevel"
|
||||
ln -snf /etc/init.d/${initd} "${ROOT}"/etc/runlevels/${runlevel}/${initd}
|
||||
}
|
||||
add_boot_init_mit_config() {
|
||||
local config=$1 initd=$2
|
||||
if [[ -e ${ROOT}${config} ]] ; then
|
||||
if [[ -n $(sed -e 's:#.*::' -e '/^[[:space:]]*$/d' "${ROOT}"/${config}) ]] ; then
|
||||
add_boot_init ${initd}
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_preinst() {
|
||||
local f LIBDIR=$(get_libdir)
|
||||
|
||||
# default net script is just comments, so no point in biting people
|
||||
# in the ass by accident. we save in preinst so that the package
|
||||
# manager doesnt go throwing etc-update crap at us -- postinst is
|
||||
# too late to prevent that. this behavior also lets us keep the
|
||||
# file in the CONTENTS for binary packages.
|
||||
[[ -e ${ROOT}/etc/conf.d/net ]] && cp "${ROOT}"/etc/conf.d/net "${D}"/etc/conf.d/
|
||||
|
||||
# upgrade timezone file ... do it before moving clock
|
||||
if [[ -e ${ROOT}/etc/conf.d/clock && ! -e ${ROOT}/etc/timezone ]] ; then
|
||||
(
|
||||
source "${ROOT}"/etc/conf.d/clock
|
||||
[[ -n ${TIMEZONE} ]] && echo "${TIMEZONE}" > "${ROOT}"/etc/timezone
|
||||
)
|
||||
fi
|
||||
|
||||
# /etc/conf.d/clock moved to /etc/conf.d/hwclock
|
||||
local clock
|
||||
use kernel_FreeBSD && clock="adjkerntz" || clock="hwclock"
|
||||
if [[ -e ${ROOT}/etc/conf.d/clock ]] ; then
|
||||
mv "${ROOT}"/etc/conf.d/clock "${ROOT}"/etc/conf.d/${clock}
|
||||
fi
|
||||
if [[ -e ${ROOT}/etc/init.d/clock ]] ; then
|
||||
rm -f "${ROOT}"/etc/init.d/clock
|
||||
fi
|
||||
if [[ -L ${ROOT}/etc/runlevels/boot/clock ]] ; then
|
||||
rm -f "${ROOT}"/etc/runlevels/boot/clock
|
||||
ln -snf /etc/init.d/${clock} "${ROOT}"/etc/runlevels/boot/${clock}
|
||||
fi
|
||||
if [[ -L ${ROOT}${LIBDIR}/rc/init.d/started/clock ]] ; then
|
||||
rm -f "${ROOT}${LIBDIR}"/rc/init.d/started/clock
|
||||
ln -snf /etc/init.d/${clock} "${ROOT}${LIBDIR}"/rc/init.d/started/${clock}
|
||||
fi
|
||||
|
||||
# /etc/conf.d/rc is no longer used for configuration
|
||||
if [[ -e ${ROOT}/etc/conf.d/rc ]] ; then
|
||||
elog "/etc/conf.d/rc is no longer used for configuration."
|
||||
elog "Please migrate your settings to /etc/rc.conf as applicable"
|
||||
elog "and delete /etc/conf.d/rc"
|
||||
fi
|
||||
|
||||
# force net init.d scripts into symlinks
|
||||
for f in "${ROOT}"/etc/init.d/net.* ; do
|
||||
[[ -e ${f} ]] || continue # catch net.* not matching anything
|
||||
[[ ${f} == */net.lo ]] && continue # real file now
|
||||
[[ ${f} == *.openrc.bak ]] && continue
|
||||
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
|
||||
|
||||
# termencoding was added in 0.2.1 and needed in boot
|
||||
has_version ">=sys-apps/openrc-0.2.1" || add_boot_init termencoding
|
||||
|
||||
# set default interactive shell to sulogin if it exists
|
||||
set_config /etc/rc.conf rc_shell /sbin/sulogin "#" test -e /sbin/sulogin
|
||||
|
||||
has_version sys-apps/openrc || migrate_from_baselayout_1
|
||||
has_version ">=sys-apps/openrc-0.4.0" || migrate_udev_init_script
|
||||
}
|
||||
|
||||
# >=openrc-0.4.0 no longer loads the udev addon
|
||||
migrate_udev_init_script() {
|
||||
# make sure udev is in sysinit if it was enabled before
|
||||
local enable_udev=false
|
||||
local rc_devices=$(
|
||||
[[ -f /etc/rc.conf ]] && source /etc/rc.conf
|
||||
[[ -f /etc/conf.d/rc ]] && source /etc/conf.d/rc
|
||||
echo "${rc_devices:-${RC_DEVICES:-auto}}"
|
||||
)
|
||||
case ${rc_devices} in
|
||||
udev|auto)
|
||||
enable_udev=true
|
||||
;;
|
||||
esac
|
||||
|
||||
if $enable_udev; then
|
||||
add_boot_init udev sysinit
|
||||
add_boot_init udev-postmount default
|
||||
fi
|
||||
}
|
||||
|
||||
migrate_from_baselayout_1() {
|
||||
# baselayout boot init scripts have been split out
|
||||
for f in $(cd "${D}"/usr/share/${PN}/runlevels/boot || exit; echo *) ; do
|
||||
# baselayout-1 is always "old" net, so ignore "new" net
|
||||
[[ ${f} == "network" ]] && continue
|
||||
|
||||
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/conf.d/dmcrypt dmcrypt
|
||||
add_boot_init_mit_config /etc/mdadm.conf mdraid
|
||||
add_boot_init_mit_config /etc/evms.conf evms
|
||||
[[ -e ${ROOT}/sbin/dmsetup ]] && add_boot_init 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() {
|
||||
local LIBDIR=$(get_libdir)
|
||||
|
||||
# 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 ]] || [[ -e ${ROOT}/etc/runlevels/.add_boot_init.created ]] ; then
|
||||
einfo "Copying across default runlevels"
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels "${ROOT}"/etc
|
||||
rm -f "${ROOT}"/etc/runlevels/.add_boot_init.created
|
||||
else
|
||||
if [[ ! -e ${ROOT}/etc/runlevels/sysinit/devfs ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/sysinit
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels/sysinit/* \
|
||||
"${ROOT}"/etc/runlevels/sysinit
|
||||
fi
|
||||
if [[ ! -e ${ROOT}/etc/runlevels/shutdown/mount-ro ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/shutdown
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels/shutdown/* \
|
||||
"${ROOT}"/etc/runlevels/shutdown
|
||||
fi
|
||||
fi
|
||||
|
||||
# update the dependency tree bug #224171
|
||||
[[ "${ROOT}" = "/" ]] && "${ROOT}/${LIBDIR}"/rc/bin/rc-depend -u
|
||||
|
||||
# /etc/conf.d/net.example is no longer valid
|
||||
local NET_EXAMPLE="${ROOT}/etc/conf.d/net.example"
|
||||
local NET_MD5='8ebebfa07441d39eb54feae0ee4c8210'
|
||||
if [[ -e "${NET_EXAMPLE}" ]] ; then
|
||||
if [[ $(md5sum "${NET_EXAMPLE}") == ${NET_MD5}* ]]; then
|
||||
rm -f "${NET_EXAMPLE}"
|
||||
elog "${NET_EXAMPLE} has been removed."
|
||||
else
|
||||
sed -i '1i# This file is obsolete.\n' "${NET_EXAMPLE}"
|
||||
elog "${NET_EXAMPLE} should be removed."
|
||||
fi
|
||||
elog "The new file is ${ROOT}/usr/share/doc/${PF}/net.example"
|
||||
fi
|
||||
|
||||
# /etc/conf.d/wireless.example is no longer valid
|
||||
local WIRELESS_EXAMPLE="${ROOT}/etc/conf.d/wireless.example"
|
||||
local WIRELESS_MD5='d1fad7da940bf263c76af4d2082124a3'
|
||||
if [[ -e "${WIRELESS_EXAMPLE}" ]] ; then
|
||||
if [[ $(md5sum "${WIRELESS_EXAMPLE}") == ${WIRELESS_MD5}* ]]; then
|
||||
rm -f "${WIRELESS_EXAMPLE}"
|
||||
elog "${WIRELESS_EXAMPLE} is deprecated and has been removed."
|
||||
else
|
||||
sed -i '1i# This file is obsolete.\n' "${WIRELESS_EXAMPLE}"
|
||||
elog "${WIRELESS_EXAMPLE} is deprecated and should be removed."
|
||||
fi
|
||||
elog "If you are using the old style network scripts,"
|
||||
elog "Configure wireless settings in ${ROOT}/etc/conf.d/net"
|
||||
elog "after reviewing ${ROOT}/usr/share/doc/${PF}/net.example"
|
||||
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."
|
||||
elog
|
||||
elog "Please read the migration guide available at:"
|
||||
elog "http://www.gentoo.org/doc/en/openrc-migration.xml"
|
||||
}
|
||||
|
|
@ -1,414 +0,0 @@
|
|||
# Copyright 1999-2010 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/sys-apps/openrc/openrc-0.6.0-r1.ebuild,v 1.1 2010/01/20 16:37:07 williamh Exp $
|
||||
|
||||
EAPI="1"
|
||||
|
||||
inherit eutils flag-o-matic multilib toolchain-funcs
|
||||
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
EGIT_REPO_URI="git://roy.marples.name/openrc.git"
|
||||
inherit git
|
||||
KEYWORDS=""
|
||||
else
|
||||
SRC_URI="http://roy.marples.name/downloads/${PN}/${P}.tar.bz2"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~sparc-fbsd ~x86 ~x86-fbsd"
|
||||
fi
|
||||
|
||||
DESCRIPTION="OpenRC manages the services, startup and shutdown of a host"
|
||||
HOMEPAGE="http://roy.marples.name/openrc"
|
||||
|
||||
LICENSE="BSD-2"
|
||||
SLOT="0"
|
||||
IUSE="debug elibc_glibc ncurses pam unicode kernel_linux kernel_FreeBSD +pentoo"
|
||||
|
||||
RDEPEND="virtual/init
|
||||
kernel_FreeBSD? ( sys-process/fuser-bsd )
|
||||
elibc_glibc? ( >=sys-libs/glibc-2.5 )
|
||||
ncurses? ( sys-libs/ncurses )
|
||||
pam? ( virtual/pam )
|
||||
>=sys-apps/baselayout-2.0.0
|
||||
kernel_linux? ( !<sys-apps/module-init-tools-3.2.2-r2 )
|
||||
!<sys-fs/udev-133
|
||||
!<sys-apps/sysvinit-2.86-r11"
|
||||
DEPEND="${RDEPEND}
|
||||
virtual/os-headers"
|
||||
|
||||
make_args() {
|
||||
unset LIBDIR #266688
|
||||
|
||||
MAKE_ARGS="${MAKE_ARGS} LIBNAME=$(get_libdir) LIBEXECDIR=/$(get_libdir)/rc"
|
||||
MAKE_ARGS="${MAKE_ARGS} MKOLDNET=yes"
|
||||
|
||||
local brand="Unknown"
|
||||
if use kernel_linux ; then
|
||||
MAKE_ARGS="${MAKE_ARGS} OS=Linux"
|
||||
brand="Linux"
|
||||
elif use kernel_FreeBSD ; then
|
||||
MAKE_ARGS="${MAKE_ARGS} OS=FreeBSD"
|
||||
brand="FreeBSD"
|
||||
fi
|
||||
if use pentoo ; then
|
||||
export BRANDING="Pentoo ${brand}"
|
||||
else
|
||||
export BRANDING="Gentoo ${brand}"
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_setup() {
|
||||
export DEBUG=$(usev debug)
|
||||
export MKPAM=$(usev pam)
|
||||
export MKTERMCAP=$(usev ncurses)
|
||||
}
|
||||
|
||||
src_unpack() {
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
git_src_unpack
|
||||
else
|
||||
unpack ${A}
|
||||
fi
|
||||
cd "${S}"
|
||||
sed -i 's:0444:0644:' mk/sys.mk
|
||||
sed -i "/^DIR/s:/openrc:/${PF}:" doc/Makefile #241342
|
||||
sed -i '/^CFLAGS+=.*_CC_FLAGS_SH/d' mk/cc.mk #289264
|
||||
epatch "${FILESDIR}"/${P}-fix-vlan.patch
|
||||
epatch "${FILESDIR}"/${P}-fix-bsd-compile.patch
|
||||
epatch "${FILESDIR}"/${P}-typos.patch
|
||||
epatch "${FILESDIR}"/openrc-9999-msg-style.patch
|
||||
epatch "${FILESDIR}"/openrc-9999-pause.patch
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
make_args
|
||||
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
local ver="git-$(echo ${EGIT_VERSION} | cut -c1-8)"
|
||||
sed -i "/^GITVER[[:space:]]*=/s:=.*:=${ver}:" mk/git.mk
|
||||
fi
|
||||
|
||||
tc-export CC AR RANLIB
|
||||
emake ${MAKE_ARGS} || die "emake ${MAKE_ARGS} failed"
|
||||
}
|
||||
|
||||
# set_config <file> <option name> <yes value> <no value> test
|
||||
# a value of "#" will just comment out the option
|
||||
set_config() {
|
||||
local file="${D}/$1" var=$2 val com
|
||||
eval "${@:5}" && val=$3 || val=$4
|
||||
[[ ${val} == "#" ]] && com="#" && val='\2'
|
||||
sed -i -r -e "/^#?${var}=/{s:=([\"'])?([^ ]*)\1?:=\1${val}\1:;s:^#?:${com}:}" "${file}"
|
||||
}
|
||||
set_config_yes_no() {
|
||||
set_config "$1" "$2" YES NO "${@:3}"
|
||||
}
|
||||
|
||||
src_install() {
|
||||
make_args
|
||||
emake ${MAKE_ARGS} DESTDIR="${D}" install || die
|
||||
|
||||
# install the readme for the new network scripts
|
||||
dodoc README.net
|
||||
|
||||
# move the shared libs back to /usr so ldscript can install
|
||||
# more of a minimal set of files
|
||||
# disabled for now due to #270646
|
||||
#mv "${D}"/$(get_libdir)/lib{einfo,rc}* "${D}"/usr/$(get_libdir)/ || die
|
||||
#gen_usr_ldscript -a einfo rc
|
||||
gen_usr_ldscript libeinfo.so
|
||||
gen_usr_ldscript librc.so
|
||||
|
||||
keepdir /$(get_libdir)/rc/{init.d,tmp}
|
||||
|
||||
# Backup our default runlevels
|
||||
dodir /usr/share/"${PN}"
|
||||
cp -PR "${D}"/etc/runlevels "${D}"/usr/share/${PN} || die
|
||||
rm -rf "${D}"/etc/runlevels
|
||||
|
||||
# Stick with "old" net as the default for now
|
||||
doconfd conf.d/net || die
|
||||
pushd "${D}"/usr/share/${PN}/runlevels/boot > /dev/null
|
||||
rm -f network staticroute
|
||||
ln -s /etc/init.d/net.lo net.lo
|
||||
popd > /dev/null
|
||||
|
||||
# Setup unicode defaults for silly unicode users
|
||||
set_config_yes_no /etc/rc.conf unicode use unicode
|
||||
|
||||
# Cater to the norm
|
||||
set_config_yes_no /etc/conf.d/keymaps windowkeys '(' use x86 '||' use amd64 ')'
|
||||
|
||||
# Support for logfile rotation
|
||||
insinto /etc/logrotate.d
|
||||
newins "${FILESDIR}"/openrc.logrotate openrc
|
||||
}
|
||||
|
||||
add_boot_init() {
|
||||
local initd=$1
|
||||
local runlevel=${2:-boot}
|
||||
# if the initscript is not going to be installed and is not
|
||||
# currently installed, return
|
||||
[[ -e ${D}/etc/init.d/${initd} || -e ${ROOT}/etc/init.d/${initd} ]] \
|
||||
|| return
|
||||
[[ -e ${ROOT}/etc/runlevels/${runlevel}/${initd} ]] && return
|
||||
|
||||
# if runlevels dont exist just yet, then create it but still flag
|
||||
# to pkg_postinst that it needs real setup #277323
|
||||
if [[ ! -d ${ROOT}/etc/runlevels/${runlevel} ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/${runlevel}
|
||||
touch "${ROOT}"/etc/runlevels/.add_boot_init.created
|
||||
fi
|
||||
|
||||
elog "Auto-adding '${initd}' service to your ${runlevel} runlevel"
|
||||
ln -snf /etc/init.d/${initd} "${ROOT}"/etc/runlevels/${runlevel}/${initd}
|
||||
}
|
||||
add_boot_init_mit_config() {
|
||||
local config=$1 initd=$2
|
||||
if [[ -e ${ROOT}${config} ]] ; then
|
||||
if [[ -n $(sed -e 's:#.*::' -e '/^[[:space:]]*$/d' "${ROOT}"/${config}) ]] ; then
|
||||
add_boot_init ${initd}
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_preinst() {
|
||||
local f LIBDIR=$(get_libdir)
|
||||
|
||||
# default net script is just comments, so no point in biting people
|
||||
# in the ass by accident. we save in preinst so that the package
|
||||
# manager doesnt go throwing etc-update crap at us -- postinst is
|
||||
# too late to prevent that. this behavior also lets us keep the
|
||||
# file in the CONTENTS for binary packages.
|
||||
[[ -e ${ROOT}/etc/conf.d/net ]] && cp "${ROOT}"/etc/conf.d/net "${D}"/etc/conf.d/
|
||||
|
||||
# avoid default thrashing in conf.d files when possible #295406
|
||||
if [[ -e ${ROOT}/etc/conf.d/hostname ]] ; then
|
||||
(
|
||||
unset hostname HOSTNAME
|
||||
source "${ROOT}"/etc/conf.d/hostname
|
||||
: ${hostname:=${HOSTNAME}}
|
||||
[[ -n ${hostname} ]] && set_config /etc/conf.d/hostname hostname "${hostname}"
|
||||
)
|
||||
fi
|
||||
|
||||
# upgrade timezone file ... do it before moving clock
|
||||
if [[ -e ${ROOT}/etc/conf.d/clock && ! -e ${ROOT}/etc/timezone ]] ; then
|
||||
(
|
||||
unset TIMEZONE
|
||||
source "${ROOT}"/etc/conf.d/clock
|
||||
[[ -n ${TIMEZONE} ]] && echo "${TIMEZONE}" > "${ROOT}"/etc/timezone
|
||||
)
|
||||
fi
|
||||
|
||||
# /etc/conf.d/clock moved to /etc/conf.d/hwclock
|
||||
local clock
|
||||
use kernel_FreeBSD && clock="adjkerntz" || clock="hwclock"
|
||||
if [[ -e ${ROOT}/etc/conf.d/clock ]] ; then
|
||||
mv "${ROOT}"/etc/conf.d/clock "${ROOT}"/etc/conf.d/${clock}
|
||||
fi
|
||||
if [[ -e ${ROOT}/etc/init.d/clock ]] ; then
|
||||
rm -f "${ROOT}"/etc/init.d/clock
|
||||
fi
|
||||
if [[ -L ${ROOT}/etc/runlevels/boot/clock ]] ; then
|
||||
rm -f "${ROOT}"/etc/runlevels/boot/clock
|
||||
ln -snf /etc/init.d/${clock} "${ROOT}"/etc/runlevels/boot/${clock}
|
||||
fi
|
||||
if [[ -L ${ROOT}${LIBDIR}/rc/init.d/started/clock ]] ; then
|
||||
rm -f "${ROOT}${LIBDIR}"/rc/init.d/started/clock
|
||||
ln -snf /etc/init.d/${clock} "${ROOT}${LIBDIR}"/rc/init.d/started/${clock}
|
||||
fi
|
||||
|
||||
# /etc/conf.d/rc is no longer used for configuration
|
||||
if [[ -e ${ROOT}/etc/conf.d/rc ]] ; then
|
||||
elog "/etc/conf.d/rc is no longer used for configuration."
|
||||
elog "Please migrate your settings to /etc/rc.conf as applicable"
|
||||
elog "and delete /etc/conf.d/rc"
|
||||
fi
|
||||
|
||||
# force net init.d scripts into symlinks
|
||||
for f in "${ROOT}"/etc/init.d/net.* ; do
|
||||
[[ -e ${f} ]] || continue # catch net.* not matching anything
|
||||
[[ ${f} == */net.lo ]] && continue # real file now
|
||||
[[ ${f} == *.openrc.bak ]] && continue
|
||||
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
|
||||
|
||||
# termencoding was added in 0.2.1 and needed in boot
|
||||
has_version ">=sys-apps/openrc-0.2.1" || add_boot_init termencoding
|
||||
|
||||
# set default interactive shell to sulogin if it exists
|
||||
set_config /etc/rc.conf rc_shell /sbin/sulogin "#" test -e /sbin/sulogin
|
||||
|
||||
has_version sys-apps/openrc || migrate_from_baselayout_1
|
||||
has_version ">=sys-apps/openrc-0.4.0" || migrate_udev_init_script
|
||||
}
|
||||
|
||||
# >=openrc-0.4.0 no longer loads the udev addon
|
||||
migrate_udev_init_script() {
|
||||
# make sure udev is in sysinit if it was enabled before
|
||||
local enable_udev=false
|
||||
local rc_devices=$(
|
||||
[[ -f /etc/rc.conf ]] && source /etc/rc.conf
|
||||
[[ -f /etc/conf.d/rc ]] && source /etc/conf.d/rc
|
||||
echo "${rc_devices:-${RC_DEVICES:-auto}}"
|
||||
)
|
||||
case ${rc_devices} in
|
||||
udev|auto)
|
||||
enable_udev=true
|
||||
;;
|
||||
esac
|
||||
|
||||
if $enable_udev; then
|
||||
add_boot_init udev sysinit
|
||||
add_boot_init udev-postmount default
|
||||
fi
|
||||
}
|
||||
|
||||
migrate_from_baselayout_1() {
|
||||
# baselayout boot init scripts have been split out
|
||||
for f in $(cd "${D}"/usr/share/${PN}/runlevels/boot || exit; echo *) ; do
|
||||
# baselayout-1 is always "old" net, so ignore "new" net
|
||||
[[ ${f} == "network" ]] && continue
|
||||
|
||||
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/conf.d/dmcrypt dmcrypt
|
||||
add_boot_init_mit_config /etc/mdadm.conf mdraid
|
||||
add_boot_init_mit_config /etc/evms.conf evms
|
||||
[[ -e ${ROOT}/sbin/dmsetup ]] && add_boot_init 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() {
|
||||
local LIBDIR=$(get_libdir)
|
||||
|
||||
# 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 ]] || [[ -e ${ROOT}/etc/runlevels/.add_boot_init.created ]] ; then
|
||||
einfo "Copying across default runlevels"
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels "${ROOT}"/etc
|
||||
rm -f "${ROOT}"/etc/runlevels/.add_boot_init.created
|
||||
else
|
||||
if [[ ! -e ${ROOT}/etc/runlevels/sysinit/devfs ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/sysinit
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels/sysinit/* \
|
||||
"${ROOT}"/etc/runlevels/sysinit
|
||||
fi
|
||||
if [[ ! -e ${ROOT}/etc/runlevels/shutdown/mount-ro ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/shutdown
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels/shutdown/* \
|
||||
"${ROOT}"/etc/runlevels/shutdown
|
||||
fi
|
||||
fi
|
||||
|
||||
# /etc/conf.d/net.example is no longer valid
|
||||
local NET_EXAMPLE="${ROOT}/etc/conf.d/net.example"
|
||||
local NET_MD5='8ebebfa07441d39eb54feae0ee4c8210'
|
||||
if [[ -e "${NET_EXAMPLE}" ]] ; then
|
||||
if [[ $(md5sum "${NET_EXAMPLE}") == ${NET_MD5}* ]]; then
|
||||
rm -f "${NET_EXAMPLE}"
|
||||
elog "${NET_EXAMPLE} has been removed."
|
||||
else
|
||||
sed -i '1i# This file is obsolete.\n' "${NET_EXAMPLE}"
|
||||
elog "${NET_EXAMPLE} should be removed."
|
||||
fi
|
||||
elog "The new file is ${ROOT}/usr/share/doc/${PF}/net.example"
|
||||
fi
|
||||
|
||||
# /etc/conf.d/wireless.example is no longer valid
|
||||
local WIRELESS_EXAMPLE="${ROOT}/etc/conf.d/wireless.example"
|
||||
local WIRELESS_MD5='d1fad7da940bf263c76af4d2082124a3'
|
||||
if [[ -e "${WIRELESS_EXAMPLE}" ]] ; then
|
||||
if [[ $(md5sum "${WIRELESS_EXAMPLE}") == ${WIRELESS_MD5}* ]]; then
|
||||
rm -f "${WIRELESS_EXAMPLE}"
|
||||
elog "${WIRELESS_EXAMPLE} is deprecated and has been removed."
|
||||
else
|
||||
sed -i '1i# This file is obsolete.\n' "${WIRELESS_EXAMPLE}"
|
||||
elog "${WIRELESS_EXAMPLE} is deprecated and should be removed."
|
||||
fi
|
||||
elog "If you are using the old style network scripts,"
|
||||
elog "Configure wireless settings in ${ROOT}/etc/conf.d/net"
|
||||
elog "after reviewing ${ROOT}/usr/share/doc/${PF}/net.example"
|
||||
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
|
||||
|
||||
# update the dependency tree after touching all files #224171
|
||||
[[ "${ROOT}" = "/" ]] && "${ROOT}/${LIBDIR}"/rc/bin/rc-depend -u
|
||||
|
||||
elog "You should now update all files in /etc, using etc-update"
|
||||
elog "or equivalent before restarting any services or this host."
|
||||
elog
|
||||
elog "Please read the migration guide available at:"
|
||||
elog "http://www.gentoo.org/doc/en/openrc-migration.xml"
|
||||
}
|
||||
|
|
@ -1,412 +0,0 @@
|
|||
# Copyright 1999-2009 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/sys-apps/openrc/openrc-0.6.0.ebuild,v 1.1 2009/12/21 15:44:12 williamh Exp $
|
||||
|
||||
EAPI="1"
|
||||
|
||||
inherit eutils flag-o-matic multilib toolchain-funcs
|
||||
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
EGIT_REPO_URI="git://roy.marples.name/openrc.git"
|
||||
inherit git
|
||||
KEYWORDS=""
|
||||
else
|
||||
SRC_URI="http://roy.marples.name/downloads/${PN}/${P}.tar.bz2"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~sparc-fbsd ~x86 ~x86-fbsd"
|
||||
fi
|
||||
|
||||
DESCRIPTION="OpenRC manages the services, startup and shutdown of a host"
|
||||
HOMEPAGE="http://roy.marples.name/openrc"
|
||||
|
||||
LICENSE="BSD-2"
|
||||
SLOT="0"
|
||||
IUSE="debug elibc_glibc ncurses pam unicode kernel_linux kernel_FreeBSD +pentoo"
|
||||
|
||||
RDEPEND="virtual/init
|
||||
kernel_FreeBSD? ( sys-process/fuser-bsd )
|
||||
elibc_glibc? ( >=sys-libs/glibc-2.5 )
|
||||
ncurses? ( sys-libs/ncurses )
|
||||
pam? ( virtual/pam )
|
||||
>=sys-apps/baselayout-2.0.0
|
||||
kernel_linux? ( !<sys-apps/module-init-tools-3.2.2-r2 )
|
||||
!<sys-fs/udev-133
|
||||
!<sys-apps/sysvinit-2.86-r11"
|
||||
DEPEND="${RDEPEND}
|
||||
virtual/os-headers"
|
||||
|
||||
make_args() {
|
||||
unset LIBDIR #266688
|
||||
|
||||
MAKE_ARGS="${MAKE_ARGS} LIBNAME=$(get_libdir) LIBEXECDIR=/$(get_libdir)/rc"
|
||||
MAKE_ARGS="${MAKE_ARGS} MKOLDNET=yes"
|
||||
|
||||
local brand="Unknown"
|
||||
if use kernel_linux ; then
|
||||
MAKE_ARGS="${MAKE_ARGS} OS=Linux"
|
||||
brand="Linux"
|
||||
elif use kernel_FreeBSD ; then
|
||||
MAKE_ARGS="${MAKE_ARGS} OS=FreeBSD"
|
||||
brand="FreeBSD"
|
||||
fi
|
||||
|
||||
if use pentoo ; then
|
||||
export BRANDING="Pentoo ${brand}"
|
||||
else
|
||||
export BRANDING="Gentoo ${brand}"
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_setup() {
|
||||
export DEBUG=$(usev debug)
|
||||
export MKPAM=$(usev pam)
|
||||
export MKTERMCAP=$(usev ncurses)
|
||||
}
|
||||
|
||||
src_unpack() {
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
git_src_unpack
|
||||
else
|
||||
unpack ${A}
|
||||
fi
|
||||
cd "${S}"
|
||||
sed -i 's:0444:0644:' mk/sys.mk
|
||||
sed -i "/^DIR/s:/openrc:/${PF}:" doc/Makefile #241342
|
||||
sed -i '/^CFLAGS+=.*_CC_FLAGS_SH/d' mk/cc.mk #289264
|
||||
epatch "${FILESDIR}"/openrc-9999-msg-style.patch
|
||||
epatch "${FILESDIR}"/openrc-9999-pause.patch
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
make_args
|
||||
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
local ver="git-$(echo ${EGIT_VERSION} | cut -c1-8)"
|
||||
sed -i "/^GITVER[[:space:]]*=/s:=.*:=${ver}:" mk/git.mk
|
||||
fi
|
||||
|
||||
tc-export CC AR RANLIB
|
||||
emake ${MAKE_ARGS} || die "emake ${MAKE_ARGS} failed"
|
||||
}
|
||||
|
||||
# set_config <file> <option name> <yes value> <no value> test
|
||||
# a value of "#" will just comment out the option
|
||||
set_config() {
|
||||
local file="${D}/$1" var=$2 val com
|
||||
eval "${@:5}" && val=$3 || val=$4
|
||||
[[ ${val} == "#" ]] && com="#" && val='\2'
|
||||
sed -i -r -e "/^#?${var}=/{s:=([\"'])?([^ ]*)\1?:=\1${val}\1:;s:^#?:${com}:}" "${file}"
|
||||
}
|
||||
set_config_yes_no() {
|
||||
set_config "$1" "$2" YES NO "${@:3}"
|
||||
}
|
||||
|
||||
src_install() {
|
||||
make_args
|
||||
emake ${MAKE_ARGS} DESTDIR="${D}" install || die
|
||||
|
||||
# install the readme for the new network scripts
|
||||
dodoc README.net
|
||||
|
||||
# move the shared libs back to /usr so ldscript can install
|
||||
# more of a minimal set of files
|
||||
# disabled for now due to #270646
|
||||
#mv "${D}"/$(get_libdir)/lib{einfo,rc}* "${D}"/usr/$(get_libdir)/ || die
|
||||
#gen_usr_ldscript -a einfo rc
|
||||
gen_usr_ldscript libeinfo.so
|
||||
gen_usr_ldscript librc.so
|
||||
|
||||
keepdir /$(get_libdir)/rc/{init.d,tmp}
|
||||
|
||||
# Backup our default runlevels
|
||||
dodir /usr/share/"${PN}"
|
||||
cp -PR "${D}"/etc/runlevels "${D}"/usr/share/${PN} || die
|
||||
rm -rf "${D}"/etc/runlevels
|
||||
|
||||
# Stick with "old" net as the default for now
|
||||
doconfd conf.d/net || die
|
||||
pushd "${D}"/usr/share/${PN}/runlevels/boot > /dev/null
|
||||
rm -f network staticroute
|
||||
ln -s /etc/init.d/net.lo net.lo
|
||||
popd > /dev/null
|
||||
|
||||
# Setup unicode defaults for silly unicode users
|
||||
set_config_yes_no /etc/rc.conf unicode use unicode
|
||||
|
||||
# Cater to the norm
|
||||
set_config_yes_no /etc/conf.d/keymaps windowkeys '(' use x86 '||' use amd64 ')'
|
||||
|
||||
# Support for logfile rotation
|
||||
insinto /etc/logrotate.d
|
||||
newins "${FILESDIR}"/openrc.logrotate openrc
|
||||
}
|
||||
|
||||
add_boot_init() {
|
||||
local initd=$1
|
||||
local runlevel=${2:-boot}
|
||||
# if the initscript is not going to be installed and is not
|
||||
# currently installed, return
|
||||
[[ -e ${D}/etc/init.d/${initd} || -e ${ROOT}/etc/init.d/${initd} ]] \
|
||||
|| return
|
||||
[[ -e ${ROOT}/etc/runlevels/${runlevel}/${initd} ]] && return
|
||||
|
||||
# if runlevels dont exist just yet, then create it but still flag
|
||||
# to pkg_postinst that it needs real setup #277323
|
||||
if [[ ! -d ${ROOT}/etc/runlevels/${runlevel} ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/${runlevel}
|
||||
touch "${ROOT}"/etc/runlevels/.add_boot_init.created
|
||||
fi
|
||||
|
||||
elog "Auto-adding '${initd}' service to your ${runlevel} runlevel"
|
||||
ln -snf /etc/init.d/${initd} "${ROOT}"/etc/runlevels/${runlevel}/${initd}
|
||||
}
|
||||
add_boot_init_mit_config() {
|
||||
local config=$1 initd=$2
|
||||
if [[ -e ${ROOT}${config} ]] ; then
|
||||
if [[ -n $(sed -e 's:#.*::' -e '/^[[:space:]]*$/d' "${ROOT}"/${config}) ]] ; then
|
||||
add_boot_init ${initd}
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_preinst() {
|
||||
local f LIBDIR=$(get_libdir)
|
||||
|
||||
# default net script is just comments, so no point in biting people
|
||||
# in the ass by accident. we save in preinst so that the package
|
||||
# manager doesnt go throwing etc-update crap at us -- postinst is
|
||||
# too late to prevent that. this behavior also lets us keep the
|
||||
# file in the CONTENTS for binary packages.
|
||||
[[ -e ${ROOT}/etc/conf.d/net ]] && cp "${ROOT}"/etc/conf.d/net "${D}"/etc/conf.d/
|
||||
|
||||
# avoid default thrashing in conf.d files when possible #295406
|
||||
if [[ -e ${ROOT}/etc/conf.d/hostname ]] ; then
|
||||
(
|
||||
unset hostname HOSTNAME
|
||||
source "${ROOT}"/etc/conf.d/hostname
|
||||
: ${hostname:=${HOSTNAME}}
|
||||
[[ -n ${hostname} ]] && set_config /etc/conf.d/hostname hostname "${hostname}"
|
||||
)
|
||||
fi
|
||||
|
||||
# upgrade timezone file ... do it before moving clock
|
||||
if [[ -e ${ROOT}/etc/conf.d/clock && ! -e ${ROOT}/etc/timezone ]] ; then
|
||||
(
|
||||
unset TIMEZONE
|
||||
source "${ROOT}"/etc/conf.d/clock
|
||||
[[ -n ${TIMEZONE} ]] && echo "${TIMEZONE}" > "${ROOT}"/etc/timezone
|
||||
)
|
||||
fi
|
||||
|
||||
# /etc/conf.d/clock moved to /etc/conf.d/hwclock
|
||||
local clock
|
||||
use kernel_FreeBSD && clock="adjkerntz" || clock="hwclock"
|
||||
if [[ -e ${ROOT}/etc/conf.d/clock ]] ; then
|
||||
mv "${ROOT}"/etc/conf.d/clock "${ROOT}"/etc/conf.d/${clock}
|
||||
fi
|
||||
if [[ -e ${ROOT}/etc/init.d/clock ]] ; then
|
||||
rm -f "${ROOT}"/etc/init.d/clock
|
||||
fi
|
||||
if [[ -L ${ROOT}/etc/runlevels/boot/clock ]] ; then
|
||||
rm -f "${ROOT}"/etc/runlevels/boot/clock
|
||||
ln -snf /etc/init.d/${clock} "${ROOT}"/etc/runlevels/boot/${clock}
|
||||
fi
|
||||
if [[ -L ${ROOT}${LIBDIR}/rc/init.d/started/clock ]] ; then
|
||||
rm -f "${ROOT}${LIBDIR}"/rc/init.d/started/clock
|
||||
ln -snf /etc/init.d/${clock} "${ROOT}${LIBDIR}"/rc/init.d/started/${clock}
|
||||
fi
|
||||
|
||||
# /etc/conf.d/rc is no longer used for configuration
|
||||
if [[ -e ${ROOT}/etc/conf.d/rc ]] ; then
|
||||
elog "/etc/conf.d/rc is no longer used for configuration."
|
||||
elog "Please migrate your settings to /etc/rc.conf as applicable"
|
||||
elog "and delete /etc/conf.d/rc"
|
||||
fi
|
||||
|
||||
# force net init.d scripts into symlinks
|
||||
for f in "${ROOT}"/etc/init.d/net.* ; do
|
||||
[[ -e ${f} ]] || continue # catch net.* not matching anything
|
||||
[[ ${f} == */net.lo ]] && continue # real file now
|
||||
[[ ${f} == *.openrc.bak ]] && continue
|
||||
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
|
||||
|
||||
# termencoding was added in 0.2.1 and needed in boot
|
||||
has_version ">=sys-apps/openrc-0.2.1" || add_boot_init termencoding
|
||||
|
||||
# set default interactive shell to sulogin if it exists
|
||||
set_config /etc/rc.conf rc_shell /sbin/sulogin "#" test -e /sbin/sulogin
|
||||
|
||||
has_version sys-apps/openrc || migrate_from_baselayout_1
|
||||
has_version ">=sys-apps/openrc-0.4.0" || migrate_udev_init_script
|
||||
}
|
||||
|
||||
# >=openrc-0.4.0 no longer loads the udev addon
|
||||
migrate_udev_init_script() {
|
||||
# make sure udev is in sysinit if it was enabled before
|
||||
local enable_udev=false
|
||||
local rc_devices=$(
|
||||
[[ -f /etc/rc.conf ]] && source /etc/rc.conf
|
||||
[[ -f /etc/conf.d/rc ]] && source /etc/conf.d/rc
|
||||
echo "${rc_devices:-${RC_DEVICES:-auto}}"
|
||||
)
|
||||
case ${rc_devices} in
|
||||
udev|auto)
|
||||
enable_udev=true
|
||||
;;
|
||||
esac
|
||||
|
||||
if $enable_udev; then
|
||||
add_boot_init udev sysinit
|
||||
add_boot_init udev-postmount default
|
||||
fi
|
||||
}
|
||||
|
||||
migrate_from_baselayout_1() {
|
||||
# baselayout boot init scripts have been split out
|
||||
for f in $(cd "${D}"/usr/share/${PN}/runlevels/boot || exit; echo *) ; do
|
||||
# baselayout-1 is always "old" net, so ignore "new" net
|
||||
[[ ${f} == "network" ]] && continue
|
||||
|
||||
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/conf.d/dmcrypt dmcrypt
|
||||
add_boot_init_mit_config /etc/mdadm.conf mdraid
|
||||
add_boot_init_mit_config /etc/evms.conf evms
|
||||
[[ -e ${ROOT}/sbin/dmsetup ]] && add_boot_init 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() {
|
||||
local LIBDIR=$(get_libdir)
|
||||
|
||||
# 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 ]] || [[ -e ${ROOT}/etc/runlevels/.add_boot_init.created ]] ; then
|
||||
einfo "Copying across default runlevels"
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels "${ROOT}"/etc
|
||||
rm -f "${ROOT}"/etc/runlevels/.add_boot_init.created
|
||||
else
|
||||
if [[ ! -e ${ROOT}/etc/runlevels/sysinit/devfs ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/sysinit
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels/sysinit/* \
|
||||
"${ROOT}"/etc/runlevels/sysinit
|
||||
fi
|
||||
if [[ ! -e ${ROOT}/etc/runlevels/shutdown/mount-ro ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/shutdown
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels/shutdown/* \
|
||||
"${ROOT}"/etc/runlevels/shutdown
|
||||
fi
|
||||
fi
|
||||
|
||||
# /etc/conf.d/net.example is no longer valid
|
||||
local NET_EXAMPLE="${ROOT}/etc/conf.d/net.example"
|
||||
local NET_MD5='8ebebfa07441d39eb54feae0ee4c8210'
|
||||
if [[ -e "${NET_EXAMPLE}" ]] ; then
|
||||
if [[ $(md5sum "${NET_EXAMPLE}") == ${NET_MD5}* ]]; then
|
||||
rm -f "${NET_EXAMPLE}"
|
||||
elog "${NET_EXAMPLE} has been removed."
|
||||
else
|
||||
sed -i '1i# This file is obsolete.\n' "${NET_EXAMPLE}"
|
||||
elog "${NET_EXAMPLE} should be removed."
|
||||
fi
|
||||
elog "The new file is ${ROOT}/usr/share/doc/${PF}/net.example"
|
||||
fi
|
||||
|
||||
# /etc/conf.d/wireless.example is no longer valid
|
||||
local WIRELESS_EXAMPLE="${ROOT}/etc/conf.d/wireless.example"
|
||||
local WIRELESS_MD5='d1fad7da940bf263c76af4d2082124a3'
|
||||
if [[ -e "${WIRELESS_EXAMPLE}" ]] ; then
|
||||
if [[ $(md5sum "${WIRELESS_EXAMPLE}") == ${WIRELESS_MD5}* ]]; then
|
||||
rm -f "${WIRELESS_EXAMPLE}"
|
||||
elog "${WIRELESS_EXAMPLE} is deprecated and has been removed."
|
||||
else
|
||||
sed -i '1i# This file is obsolete.\n' "${WIRELESS_EXAMPLE}"
|
||||
elog "${WIRELESS_EXAMPLE} is deprecated and should be removed."
|
||||
fi
|
||||
elog "If you are using the old style network scripts,"
|
||||
elog "Configure wireless settings in ${ROOT}/etc/conf.d/net"
|
||||
elog "after reviewing ${ROOT}/usr/share/doc/${PF}/net.example"
|
||||
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
|
||||
|
||||
# update the dependency tree after touching all files #224171
|
||||
[[ "${ROOT}" = "/" ]] && "${ROOT}/${LIBDIR}"/rc/bin/rc-depend -u
|
||||
|
||||
elog "You should now update all files in /etc, using etc-update"
|
||||
elog "or equivalent before restarting any services or this host."
|
||||
elog
|
||||
elog "Please read the migration guide available at:"
|
||||
elog "http://www.gentoo.org/doc/en/openrc-migration.xml"
|
||||
}
|
||||
|
|
@ -1,412 +0,0 @@
|
|||
# Copyright 1999-2010 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/sys-apps/openrc/openrc-0.6.3.ebuild,v 1.1 2010/09/02 15:47:12 williamh Exp $
|
||||
|
||||
EAPI="1"
|
||||
|
||||
inherit eutils flag-o-matic multilib toolchain-funcs
|
||||
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
EGIT_REPO_URI="git://git.overlays.gentoo.org/proj/openrc.git"
|
||||
inherit git
|
||||
KEYWORDS=""
|
||||
else
|
||||
SRC_URI="mirror://gentoo/${P}.tar.bz2"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~sparc-fbsd ~x86 ~x86-fbsd"
|
||||
fi
|
||||
|
||||
DESCRIPTION="OpenRC manages the services, startup and shutdown of a host"
|
||||
HOMEPAGE="http://roy.marples.name/openrc"
|
||||
|
||||
LICENSE="BSD-2"
|
||||
SLOT="0"
|
||||
IUSE="debug elibc_glibc ncurses pam unicode kernel_linux kernel_FreeBSD pentoo"
|
||||
|
||||
RDEPEND="virtual/init
|
||||
kernel_FreeBSD? ( sys-process/fuser-bsd )
|
||||
elibc_glibc? ( >=sys-libs/glibc-2.5 )
|
||||
ncurses? ( sys-libs/ncurses )
|
||||
pam? ( virtual/pam )
|
||||
>=sys-apps/baselayout-2.0.0
|
||||
kernel_linux? ( !<sys-apps/module-init-tools-3.2.2-r2 )
|
||||
!<sys-fs/udev-133
|
||||
!<sys-apps/sysvinit-2.86-r11"
|
||||
DEPEND="${RDEPEND}
|
||||
virtual/os-headers"
|
||||
|
||||
make_args() {
|
||||
unset LIBDIR #266688
|
||||
|
||||
MAKE_ARGS="${MAKE_ARGS} LIBNAME=$(get_libdir) LIBEXECDIR=/$(get_libdir)/rc"
|
||||
MAKE_ARGS="${MAKE_ARGS} MKOLDNET=yes"
|
||||
|
||||
local brand="Unknown"
|
||||
if use kernel_linux ; then
|
||||
MAKE_ARGS="${MAKE_ARGS} OS=Linux"
|
||||
brand="Linux"
|
||||
elif use kernel_FreeBSD ; then
|
||||
MAKE_ARGS="${MAKE_ARGS} OS=FreeBSD"
|
||||
brand="FreeBSD"
|
||||
fi
|
||||
if use pentoo ; then
|
||||
export BRANDING="Pentoo ${brand}"
|
||||
else
|
||||
export BRANDING="Gentoo ${brand}"
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_setup() {
|
||||
export DEBUG=$(usev debug)
|
||||
export MKPAM=$(usev pam)
|
||||
export MKTERMCAP=$(usev ncurses)
|
||||
}
|
||||
|
||||
src_unpack() {
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
git_src_unpack
|
||||
else
|
||||
unpack ${A}
|
||||
fi
|
||||
cd "${S}"
|
||||
sed -i 's:0444:0644:' mk/sys.mk
|
||||
sed -i "/^DIR/s:/openrc:/${PF}:" doc/Makefile #241342
|
||||
sed -i '/^CFLAGS+=.*_CC_FLAGS_SH/d' mk/cc.mk #289264
|
||||
|
||||
# Allow user patches to be applied without modifying the ebuild
|
||||
epatch_user
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
make_args
|
||||
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
local ver="git-$(echo ${EGIT_VERSION} | cut -c1-8)"
|
||||
sed -i "/^GITVER[[:space:]]*=/s:=.*:=${ver}:" mk/git.mk
|
||||
fi
|
||||
|
||||
tc-export CC AR RANLIB
|
||||
emake ${MAKE_ARGS} || die "emake ${MAKE_ARGS} failed"
|
||||
}
|
||||
|
||||
# set_config <file> <option name> <yes value> <no value> test
|
||||
# a value of "#" will just comment out the option
|
||||
set_config() {
|
||||
local file="${D}/$1" var=$2 val com
|
||||
eval "${@:5}" && val=$3 || val=$4
|
||||
[[ ${val} == "#" ]] && com="#" && val='\2'
|
||||
sed -i -r -e "/^#?${var}=/{s:=([\"'])?([^ ]*)\1?:=\1${val}\1:;s:^#?:${com}:}" "${file}"
|
||||
}
|
||||
set_config_yes_no() {
|
||||
set_config "$1" "$2" YES NO "${@:3}"
|
||||
}
|
||||
|
||||
src_install() {
|
||||
make_args
|
||||
emake ${MAKE_ARGS} DESTDIR="${D}" install || die
|
||||
|
||||
# install the readme for the new network scripts
|
||||
dodoc README.net
|
||||
|
||||
# move the shared libs back to /usr so ldscript can install
|
||||
# more of a minimal set of files
|
||||
# disabled for now due to #270646
|
||||
#mv "${D}"/$(get_libdir)/lib{einfo,rc}* "${D}"/usr/$(get_libdir)/ || die
|
||||
#gen_usr_ldscript -a einfo rc
|
||||
gen_usr_ldscript libeinfo.so
|
||||
gen_usr_ldscript librc.so
|
||||
|
||||
keepdir /$(get_libdir)/rc/{init.d,tmp}
|
||||
|
||||
# Backup our default runlevels
|
||||
dodir /usr/share/"${PN}"
|
||||
cp -PR "${D}"/etc/runlevels "${D}"/usr/share/${PN} || die
|
||||
rm -rf "${D}"/etc/runlevels
|
||||
|
||||
# Stick with "old" net as the default for now
|
||||
doconfd conf.d/net || die
|
||||
pushd "${D}"/usr/share/${PN}/runlevels/boot > /dev/null
|
||||
rm -f network staticroute
|
||||
ln -s /etc/init.d/net.lo net.lo
|
||||
popd > /dev/null
|
||||
|
||||
# Setup unicode defaults for silly unicode users
|
||||
set_config_yes_no /etc/rc.conf unicode use unicode
|
||||
|
||||
# Cater to the norm
|
||||
set_config_yes_no /etc/conf.d/keymaps windowkeys '(' use x86 '||' use amd64 ')'
|
||||
|
||||
# Support for logfile rotation
|
||||
insinto /etc/logrotate.d
|
||||
newins "${FILESDIR}"/openrc.logrotate openrc
|
||||
}
|
||||
|
||||
add_boot_init() {
|
||||
local initd=$1
|
||||
local runlevel=${2:-boot}
|
||||
# if the initscript is not going to be installed and is not
|
||||
# currently installed, return
|
||||
[[ -e ${D}/etc/init.d/${initd} || -e ${ROOT}/etc/init.d/${initd} ]] \
|
||||
|| return
|
||||
[[ -e ${ROOT}/etc/runlevels/${runlevel}/${initd} ]] && return
|
||||
|
||||
# if runlevels dont exist just yet, then create it but still flag
|
||||
# to pkg_postinst that it needs real setup #277323
|
||||
if [[ ! -d ${ROOT}/etc/runlevels/${runlevel} ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/${runlevel}
|
||||
touch "${ROOT}"/etc/runlevels/.add_boot_init.created
|
||||
fi
|
||||
|
||||
elog "Auto-adding '${initd}' service to your ${runlevel} runlevel"
|
||||
ln -snf /etc/init.d/${initd} "${ROOT}"/etc/runlevels/${runlevel}/${initd}
|
||||
}
|
||||
add_boot_init_mit_config() {
|
||||
local config=$1 initd=$2
|
||||
if [[ -e ${ROOT}${config} ]] ; then
|
||||
if [[ -n $(sed -e 's:#.*::' -e '/^[[:space:]]*$/d' "${ROOT}"/${config}) ]] ; then
|
||||
add_boot_init ${initd}
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_preinst() {
|
||||
local f LIBDIR=$(get_libdir)
|
||||
|
||||
# default net script is just comments, so no point in biting people
|
||||
# in the ass by accident. we save in preinst so that the package
|
||||
# manager doesnt go throwing etc-update crap at us -- postinst is
|
||||
# too late to prevent that. this behavior also lets us keep the
|
||||
# file in the CONTENTS for binary packages.
|
||||
[[ -e ${ROOT}/etc/conf.d/net ]] && cp "${ROOT}"/etc/conf.d/net "${D}"/etc/conf.d/
|
||||
|
||||
# avoid default thrashing in conf.d files when possible #295406
|
||||
if [[ -e ${ROOT}/etc/conf.d/hostname ]] ; then
|
||||
(
|
||||
unset hostname HOSTNAME
|
||||
source "${ROOT}"/etc/conf.d/hostname
|
||||
: ${hostname:=${HOSTNAME}}
|
||||
[[ -n ${hostname} ]] && set_config /etc/conf.d/hostname hostname "${hostname}"
|
||||
)
|
||||
fi
|
||||
|
||||
# upgrade timezone file ... do it before moving clock
|
||||
if [[ -e ${ROOT}/etc/conf.d/clock && ! -e ${ROOT}/etc/timezone ]] ; then
|
||||
(
|
||||
unset TIMEZONE
|
||||
source "${ROOT}"/etc/conf.d/clock
|
||||
[[ -n ${TIMEZONE} ]] && echo "${TIMEZONE}" > "${ROOT}"/etc/timezone
|
||||
)
|
||||
fi
|
||||
|
||||
# /etc/conf.d/clock moved to /etc/conf.d/hwclock
|
||||
local clock
|
||||
use kernel_FreeBSD && clock="adjkerntz" || clock="hwclock"
|
||||
if [[ -e ${ROOT}/etc/conf.d/clock ]] ; then
|
||||
mv "${ROOT}"/etc/conf.d/clock "${ROOT}"/etc/conf.d/${clock}
|
||||
fi
|
||||
if [[ -e ${ROOT}/etc/init.d/clock ]] ; then
|
||||
rm -f "${ROOT}"/etc/init.d/clock
|
||||
fi
|
||||
if [[ -L ${ROOT}/etc/runlevels/boot/clock ]] ; then
|
||||
rm -f "${ROOT}"/etc/runlevels/boot/clock
|
||||
ln -snf /etc/init.d/${clock} "${ROOT}"/etc/runlevels/boot/${clock}
|
||||
fi
|
||||
if [[ -L ${ROOT}${LIBDIR}/rc/init.d/started/clock ]] ; then
|
||||
rm -f "${ROOT}${LIBDIR}"/rc/init.d/started/clock
|
||||
ln -snf /etc/init.d/${clock} "${ROOT}${LIBDIR}"/rc/init.d/started/${clock}
|
||||
fi
|
||||
|
||||
# /etc/conf.d/rc is no longer used for configuration
|
||||
if [[ -e ${ROOT}/etc/conf.d/rc ]] ; then
|
||||
elog "/etc/conf.d/rc is no longer used for configuration."
|
||||
elog "Please migrate your settings to /etc/rc.conf as applicable"
|
||||
elog "and delete /etc/conf.d/rc"
|
||||
fi
|
||||
|
||||
# force net init.d scripts into symlinks
|
||||
for f in "${ROOT}"/etc/init.d/net.* ; do
|
||||
[[ -e ${f} ]] || continue # catch net.* not matching anything
|
||||
[[ ${f} == */net.lo ]] && continue # real file now
|
||||
[[ ${f} == *.openrc.bak ]] && continue
|
||||
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
|
||||
|
||||
# termencoding was added in 0.2.1 and needed in boot
|
||||
has_version ">=sys-apps/openrc-0.2.1" || add_boot_init termencoding
|
||||
|
||||
# set default interactive shell to sulogin if it exists
|
||||
set_config /etc/rc.conf rc_shell /sbin/sulogin "#" test -e /sbin/sulogin
|
||||
|
||||
has_version sys-apps/openrc || migrate_from_baselayout_1
|
||||
has_version ">=sys-apps/openrc-0.4.0" || migrate_udev_init_script
|
||||
}
|
||||
|
||||
# >=openrc-0.4.0 no longer loads the udev addon
|
||||
migrate_udev_init_script() {
|
||||
# make sure udev is in sysinit if it was enabled before
|
||||
local enable_udev=false
|
||||
local rc_devices=$(
|
||||
[[ -f /etc/rc.conf ]] && source /etc/rc.conf
|
||||
[[ -f /etc/conf.d/rc ]] && source /etc/conf.d/rc
|
||||
echo "${rc_devices:-${RC_DEVICES:-auto}}"
|
||||
)
|
||||
case ${rc_devices} in
|
||||
udev|auto)
|
||||
enable_udev=true
|
||||
;;
|
||||
esac
|
||||
|
||||
if $enable_udev; then
|
||||
add_boot_init udev sysinit
|
||||
add_boot_init udev-postmount default
|
||||
fi
|
||||
}
|
||||
|
||||
migrate_from_baselayout_1() {
|
||||
# baselayout boot init scripts have been split out
|
||||
for f in $(cd "${D}"/usr/share/${PN}/runlevels/boot || exit; echo *) ; do
|
||||
# baselayout-1 is always "old" net, so ignore "new" net
|
||||
[[ ${f} == "network" ]] && continue
|
||||
|
||||
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/conf.d/dmcrypt dmcrypt
|
||||
add_boot_init_mit_config /etc/mdadm.conf mdraid
|
||||
add_boot_init_mit_config /etc/evms.conf evms
|
||||
[[ -e ${ROOT}/sbin/dmsetup ]] && add_boot_init 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() {
|
||||
local LIBDIR=$(get_libdir)
|
||||
|
||||
# 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 ]] || [[ -e ${ROOT}/etc/runlevels/.add_boot_init.created ]] ; then
|
||||
einfo "Copying across default runlevels"
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels "${ROOT}"/etc
|
||||
rm -f "${ROOT}"/etc/runlevels/.add_boot_init.created
|
||||
else
|
||||
if [[ ! -e ${ROOT}/etc/runlevels/sysinit/devfs ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/sysinit
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels/sysinit/* \
|
||||
"${ROOT}"/etc/runlevels/sysinit
|
||||
fi
|
||||
if [[ ! -e ${ROOT}/etc/runlevels/shutdown/mount-ro ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/shutdown
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels/shutdown/* \
|
||||
"${ROOT}"/etc/runlevels/shutdown
|
||||
fi
|
||||
fi
|
||||
|
||||
# /etc/conf.d/net.example is no longer valid
|
||||
local NET_EXAMPLE="${ROOT}/etc/conf.d/net.example"
|
||||
local NET_MD5='8ebebfa07441d39eb54feae0ee4c8210'
|
||||
if [[ -e "${NET_EXAMPLE}" ]] ; then
|
||||
if [[ $(md5sum "${NET_EXAMPLE}") == ${NET_MD5}* ]]; then
|
||||
rm -f "${NET_EXAMPLE}"
|
||||
elog "${NET_EXAMPLE} has been removed."
|
||||
else
|
||||
sed -i '1i# This file is obsolete.\n' "${NET_EXAMPLE}"
|
||||
elog "${NET_EXAMPLE} should be removed."
|
||||
fi
|
||||
elog "The new file is ${ROOT}/usr/share/doc/${PF}/net.example"
|
||||
fi
|
||||
|
||||
# /etc/conf.d/wireless.example is no longer valid
|
||||
local WIRELESS_EXAMPLE="${ROOT}/etc/conf.d/wireless.example"
|
||||
local WIRELESS_MD5='d1fad7da940bf263c76af4d2082124a3'
|
||||
if [[ -e "${WIRELESS_EXAMPLE}" ]] ; then
|
||||
if [[ $(md5sum "${WIRELESS_EXAMPLE}") == ${WIRELESS_MD5}* ]]; then
|
||||
rm -f "${WIRELESS_EXAMPLE}"
|
||||
elog "${WIRELESS_EXAMPLE} is deprecated and has been removed."
|
||||
else
|
||||
sed -i '1i# This file is obsolete.\n' "${WIRELESS_EXAMPLE}"
|
||||
elog "${WIRELESS_EXAMPLE} is deprecated and should be removed."
|
||||
fi
|
||||
elog "If you are using the old style network scripts,"
|
||||
elog "Configure wireless settings in ${ROOT}/etc/conf.d/net"
|
||||
elog "after reviewing ${ROOT}/usr/share/doc/${PF}/net.example"
|
||||
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
|
||||
|
||||
# update the dependency tree after touching all files #224171
|
||||
[[ "${ROOT}" = "/" ]] && "${ROOT}/${LIBDIR}"/rc/bin/rc-depend -u
|
||||
|
||||
elog "You should now update all files in /etc, using etc-update"
|
||||
elog "or equivalent before restarting any services or this host."
|
||||
elog
|
||||
elog "Please read the migration guide available at:"
|
||||
elog "http://www.gentoo.org/doc/en/openrc-migration.xml"
|
||||
}
|
||||
|
|
@ -1,431 +0,0 @@
|
|||
# Copyright 1999-2010 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/sys-apps/openrc/openrc-0.6.4.ebuild,v 1.1 2010/11/15 16:37:57 williamh Exp $
|
||||
|
||||
EAPI="1"
|
||||
|
||||
inherit eutils flag-o-matic multilib toolchain-funcs
|
||||
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
EGIT_REPO_URI="git://git.overlays.gentoo.org/proj/openrc.git"
|
||||
inherit git
|
||||
KEYWORDS=""
|
||||
else
|
||||
SRC_URI="mirror://gentoo/${P}.tar.bz2"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~sparc-fbsd ~x86 ~x86-fbsd"
|
||||
fi
|
||||
|
||||
DESCRIPTION="OpenRC manages the services, startup and shutdown of a host"
|
||||
HOMEPAGE="http://www.gentoo.org/proj/en/base/openrc/"
|
||||
|
||||
LICENSE="BSD-2"
|
||||
SLOT="0"
|
||||
IUSE="debug elibc_glibc ncurses pam pentoo unicode kernel_linux kernel_FreeBSD"
|
||||
|
||||
RDEPEND="virtual/init
|
||||
kernel_FreeBSD? ( sys-process/fuser-bsd )
|
||||
elibc_glibc? ( >=sys-libs/glibc-2.5 )
|
||||
ncurses? ( sys-libs/ncurses )
|
||||
pam? ( virtual/pam )
|
||||
>=sys-apps/baselayout-2.0.0
|
||||
kernel_linux? ( !<sys-apps/module-init-tools-3.2.2-r2 )
|
||||
!<sys-fs/udev-133
|
||||
!<sys-apps/sysvinit-2.86-r11"
|
||||
DEPEND="${RDEPEND}
|
||||
virtual/os-headers"
|
||||
|
||||
make_args() {
|
||||
unset LIBDIR #266688
|
||||
|
||||
MAKE_ARGS="${MAKE_ARGS} LIBNAME=$(get_libdir) LIBEXECDIR=/$(get_libdir)/rc"
|
||||
MAKE_ARGS="${MAKE_ARGS} MKOLDNET=yes"
|
||||
|
||||
local brand="Unknown"
|
||||
if use kernel_linux ; then
|
||||
MAKE_ARGS="${MAKE_ARGS} OS=Linux"
|
||||
brand="Linux"
|
||||
elif use kernel_FreeBSD ; then
|
||||
MAKE_ARGS="${MAKE_ARGS} OS=FreeBSD"
|
||||
brand="FreeBSD"
|
||||
fi
|
||||
if use pentoo ; then
|
||||
export BRANDING="Pentoo ${brand}"
|
||||
else
|
||||
export BRANDING="Gentoo ${brand}"
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_setup() {
|
||||
export DEBUG=$(usev debug)
|
||||
export MKPAM=$(usev pam)
|
||||
export MKTERMCAP=$(usev ncurses)
|
||||
}
|
||||
|
||||
src_unpack() {
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
git_src_unpack
|
||||
else
|
||||
unpack ${A}
|
||||
fi
|
||||
cd "${S}"
|
||||
sed -i 's:0444:0644:' mk/sys.mk
|
||||
sed -i "/^DIR/s:/openrc:/${PF}:" doc/Makefile #241342
|
||||
sed -i '/^CFLAGS+=.*_CC_FLAGS_SH/d' mk/cc.mk #289264
|
||||
|
||||
# Allow user patches to be applied without modifying the ebuild
|
||||
epatch_user
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
make_args
|
||||
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
local ver="git-$(echo ${EGIT_VERSION} | cut -c1-8)"
|
||||
sed -i "/^GITVER[[:space:]]*=/s:=.*:=${ver}:" mk/git.mk
|
||||
fi
|
||||
|
||||
tc-export CC AR RANLIB
|
||||
emake ${MAKE_ARGS} || die "emake ${MAKE_ARGS} failed"
|
||||
}
|
||||
|
||||
# set_config <file> <option name> <yes value> <no value> test
|
||||
# a value of "#" will just comment out the option
|
||||
set_config() {
|
||||
local file="${D}/$1" var=$2 val com
|
||||
eval "${@:5}" && val=$3 || val=$4
|
||||
[[ ${val} == "#" ]] && com="#" && val='\2'
|
||||
sed -i -r -e "/^#?${var}=/{s:=([\"'])?([^ ]*)\1?:=\1${val}\1:;s:^#?:${com}:}" "${file}"
|
||||
}
|
||||
set_config_yes_no() {
|
||||
set_config "$1" "$2" YES NO "${@:3}"
|
||||
}
|
||||
|
||||
src_install() {
|
||||
make_args
|
||||
emake ${MAKE_ARGS} DESTDIR="${D}" install || die
|
||||
|
||||
# install the readme for the new network scripts
|
||||
dodoc README.net
|
||||
|
||||
# move the shared libs back to /usr so ldscript can install
|
||||
# more of a minimal set of files
|
||||
# disabled for now due to #270646
|
||||
#mv "${D}"/$(get_libdir)/lib{einfo,rc}* "${D}"/usr/$(get_libdir)/ || die
|
||||
#gen_usr_ldscript -a einfo rc
|
||||
gen_usr_ldscript libeinfo.so
|
||||
gen_usr_ldscript librc.so
|
||||
|
||||
keepdir /$(get_libdir)/rc/{init.d,tmp}
|
||||
|
||||
# Backup our default runlevels
|
||||
dodir /usr/share/"${PN}"
|
||||
cp -PR "${D}"/etc/runlevels "${D}"/usr/share/${PN} || die
|
||||
rm -rf "${D}"/etc/runlevels
|
||||
|
||||
# Stick with "old" net as the default for now
|
||||
doconfd conf.d/net || die
|
||||
pushd "${D}"/usr/share/${PN}/runlevels/boot > /dev/null
|
||||
rm -f network staticroute
|
||||
ln -s /etc/init.d/net.lo net.lo
|
||||
popd > /dev/null
|
||||
|
||||
# Setup unicode defaults for silly unicode users
|
||||
set_config_yes_no /etc/rc.conf unicode use unicode
|
||||
|
||||
# Cater to the norm
|
||||
set_config_yes_no /etc/conf.d/keymaps windowkeys '(' use x86 '||' use amd64 ')'
|
||||
|
||||
# Support for logfile rotation
|
||||
insinto /etc/logrotate.d
|
||||
newins "${FILESDIR}"/openrc.logrotate openrc
|
||||
}
|
||||
|
||||
add_boot_init() {
|
||||
local initd=$1
|
||||
local runlevel=${2:-boot}
|
||||
# if the initscript is not going to be installed and is not
|
||||
# currently installed, return
|
||||
[[ -e ${D}/etc/init.d/${initd} || -e ${ROOT}/etc/init.d/${initd} ]] \
|
||||
|| return
|
||||
[[ -e ${ROOT}/etc/runlevels/${runlevel}/${initd} ]] && return
|
||||
|
||||
# if runlevels dont exist just yet, then create it but still flag
|
||||
# to pkg_postinst that it needs real setup #277323
|
||||
if [[ ! -d ${ROOT}/etc/runlevels/${runlevel} ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/${runlevel}
|
||||
touch "${ROOT}"/etc/runlevels/.add_boot_init.created
|
||||
fi
|
||||
|
||||
elog "Auto-adding '${initd}' service to your ${runlevel} runlevel"
|
||||
ln -snf /etc/init.d/${initd} "${ROOT}"/etc/runlevels/${runlevel}/${initd}
|
||||
}
|
||||
add_boot_init_mit_config() {
|
||||
local config=$1 initd=$2
|
||||
if [[ -e ${ROOT}${config} ]] ; then
|
||||
if [[ -n $(sed -e 's:#.*::' -e '/^[[:space:]]*$/d' "${ROOT}"/${config}) ]] ; then
|
||||
add_boot_init ${initd}
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_preinst() {
|
||||
local f LIBDIR=$(get_libdir)
|
||||
|
||||
# default net script is just comments, so no point in biting people
|
||||
# in the ass by accident. we save in preinst so that the package
|
||||
# manager doesnt go throwing etc-update crap at us -- postinst is
|
||||
# too late to prevent that. this behavior also lets us keep the
|
||||
# file in the CONTENTS for binary packages.
|
||||
[[ -e ${ROOT}/etc/conf.d/net ]] && cp "${ROOT}"/etc/conf.d/net "${D}"/etc/conf.d/
|
||||
|
||||
# avoid default thrashing in conf.d files when possible #295406
|
||||
if [[ -e ${ROOT}/etc/conf.d/hostname ]] ; then
|
||||
(
|
||||
unset hostname HOSTNAME
|
||||
source "${ROOT}"/etc/conf.d/hostname
|
||||
: ${hostname:=${HOSTNAME}}
|
||||
[[ -n ${hostname} ]] && set_config /etc/conf.d/hostname hostname "${hostname}"
|
||||
)
|
||||
fi
|
||||
|
||||
# upgrade timezone file ... do it before moving clock
|
||||
if [[ -e ${ROOT}/etc/conf.d/clock && ! -e ${ROOT}/etc/timezone ]] ; then
|
||||
(
|
||||
unset TIMEZONE
|
||||
source "${ROOT}"/etc/conf.d/clock
|
||||
[[ -n ${TIMEZONE} ]] && echo "${TIMEZONE}" > "${ROOT}"/etc/timezone
|
||||
)
|
||||
fi
|
||||
|
||||
# /etc/conf.d/clock moved to /etc/conf.d/hwclock
|
||||
local clock
|
||||
use kernel_FreeBSD && clock="adjkerntz" || clock="hwclock"
|
||||
if [[ -e ${ROOT}/etc/conf.d/clock ]] ; then
|
||||
mv "${ROOT}"/etc/conf.d/clock "${ROOT}"/etc/conf.d/${clock}
|
||||
fi
|
||||
if [[ -e ${ROOT}/etc/init.d/clock ]] ; then
|
||||
rm -f "${ROOT}"/etc/init.d/clock
|
||||
fi
|
||||
if [[ -L ${ROOT}/etc/runlevels/boot/clock ]] ; then
|
||||
rm -f "${ROOT}"/etc/runlevels/boot/clock
|
||||
ln -snf /etc/init.d/${clock} "${ROOT}"/etc/runlevels/boot/${clock}
|
||||
fi
|
||||
if [[ -L ${ROOT}${LIBDIR}/rc/init.d/started/clock ]] ; then
|
||||
rm -f "${ROOT}${LIBDIR}"/rc/init.d/started/clock
|
||||
ln -snf /etc/init.d/${clock} "${ROOT}${LIBDIR}"/rc/init.d/started/${clock}
|
||||
fi
|
||||
|
||||
# /etc/conf.d/rc is no longer used for configuration
|
||||
if [[ -e ${ROOT}/etc/conf.d/rc ]] ; then
|
||||
elog "/etc/conf.d/rc is no longer used for configuration."
|
||||
elog "Please migrate your settings to /etc/rc.conf as applicable"
|
||||
elog "and delete /etc/conf.d/rc"
|
||||
fi
|
||||
|
||||
# force net init.d scripts into symlinks
|
||||
for f in "${ROOT}"/etc/init.d/net.* ; do
|
||||
[[ -e ${f} ]] || continue # catch net.* not matching anything
|
||||
[[ ${f} == */net.lo ]] && continue # real file now
|
||||
[[ ${f} == *.openrc.bak ]] && continue
|
||||
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
|
||||
|
||||
# termencoding was added in 0.2.1 and needed in boot
|
||||
has_version ">=sys-apps/openrc-0.2.1" || add_boot_init termencoding
|
||||
|
||||
# set default interactive shell to sulogin if it exists
|
||||
set_config /etc/rc.conf rc_shell /sbin/sulogin "#" test -e /sbin/sulogin
|
||||
|
||||
has_version sys-apps/openrc || migrate_from_baselayout_1
|
||||
has_version ">=sys-apps/openrc-0.4.0" || migrate_udev_init_script
|
||||
}
|
||||
|
||||
# >=openrc-0.4.0 no longer loads the udev addon
|
||||
migrate_udev_init_script() {
|
||||
# make sure udev is in sysinit if it was enabled before
|
||||
local enable_udev=false
|
||||
local rc_devices=$(
|
||||
[[ -f /etc/rc.conf ]] && source /etc/rc.conf
|
||||
[[ -f /etc/conf.d/rc ]] && source /etc/conf.d/rc
|
||||
echo "${rc_devices:-${RC_DEVICES:-auto}}"
|
||||
)
|
||||
case ${rc_devices} in
|
||||
udev|auto)
|
||||
enable_udev=true
|
||||
;;
|
||||
esac
|
||||
|
||||
if $enable_udev; then
|
||||
add_boot_init udev sysinit
|
||||
add_boot_init udev-postmount default
|
||||
fi
|
||||
}
|
||||
|
||||
migrate_from_baselayout_1() {
|
||||
# baselayout boot init scripts have been split out
|
||||
for f in $(cd "${D}"/usr/share/${PN}/runlevels/boot || exit; echo *) ; do
|
||||
# baselayout-1 is always "old" net, so ignore "new" net
|
||||
[[ ${f} == "network" ]] && continue
|
||||
|
||||
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/conf.d/dmcrypt dmcrypt
|
||||
add_boot_init_mit_config /etc/mdadm.conf mdraid
|
||||
add_boot_init_mit_config /etc/evms.conf evms
|
||||
[[ -e ${ROOT}/sbin/dmsetup ]] && add_boot_init 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
|
||||
|
||||
# Handle the conf.d/local.{start,stop} -> conf.d/local transition
|
||||
if path_exists -o "${ROOT}"/etc/conf.d/local.{start,stop} ; then
|
||||
elog "Converting your /etc/conf.d/local.{start,stop} files to /etc/conf.d/local"
|
||||
(
|
||||
sed -n '0,/local_start/p' "${D}"/etc/conf.d/local
|
||||
sed 's:^:\t:' "${ROOT}"/etc/conf.d/local.start 2>/dev/null
|
||||
sed -n '/local_start/,/local_stop/{s:^local_start.*::;p}' "${D}"/etc/conf.d/local
|
||||
sed 's:^:\t:' "${ROOT}"/etc/conf.d/local.stop 2>/dev/null
|
||||
sed -n '/local_stop/,${s:^local_stop.*::;p}' "${D}"/etc/conf.d/local
|
||||
) > "${T}"/conf.d.local
|
||||
mv "${T}"/conf.d.local "${D}"/etc/conf.d/local
|
||||
touch "${D}"/etc/conf.d/local.{start,stop}
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
local LIBDIR=$(get_libdir)
|
||||
|
||||
# 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 ]] || [[ -e ${ROOT}/etc/runlevels/.add_boot_init.created ]] ; then
|
||||
einfo "Copying across default runlevels"
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels "${ROOT}"/etc
|
||||
rm -f "${ROOT}"/etc/runlevels/.add_boot_init.created
|
||||
else
|
||||
if [[ ! -e ${ROOT}/etc/runlevels/sysinit/devfs ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/sysinit
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels/sysinit/* \
|
||||
"${ROOT}"/etc/runlevels/sysinit
|
||||
fi
|
||||
if [[ ! -e ${ROOT}/etc/runlevels/shutdown/mount-ro ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/shutdown
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels/shutdown/* \
|
||||
"${ROOT}"/etc/runlevels/shutdown
|
||||
fi
|
||||
fi
|
||||
|
||||
# /etc/conf.d/net.example is no longer valid
|
||||
local NET_EXAMPLE="${ROOT}/etc/conf.d/net.example"
|
||||
local NET_MD5='8ebebfa07441d39eb54feae0ee4c8210'
|
||||
if [[ -e "${NET_EXAMPLE}" ]] ; then
|
||||
if [[ $(md5sum "${NET_EXAMPLE}") == ${NET_MD5}* ]]; then
|
||||
rm -f "${NET_EXAMPLE}"
|
||||
elog "${NET_EXAMPLE} has been removed."
|
||||
else
|
||||
sed -i '1i# This file is obsolete.\n' "${NET_EXAMPLE}"
|
||||
elog "${NET_EXAMPLE} should be removed."
|
||||
fi
|
||||
elog "The new file is ${ROOT}/usr/share/doc/${PF}/net.example"
|
||||
fi
|
||||
|
||||
# /etc/conf.d/wireless.example is no longer valid
|
||||
local WIRELESS_EXAMPLE="${ROOT}/etc/conf.d/wireless.example"
|
||||
local WIRELESS_MD5='d1fad7da940bf263c76af4d2082124a3'
|
||||
if [[ -e "${WIRELESS_EXAMPLE}" ]] ; then
|
||||
if [[ $(md5sum "${WIRELESS_EXAMPLE}") == ${WIRELESS_MD5}* ]]; then
|
||||
rm -f "${WIRELESS_EXAMPLE}"
|
||||
elog "${WIRELESS_EXAMPLE} is deprecated and has been removed."
|
||||
else
|
||||
sed -i '1i# This file is obsolete.\n' "${WIRELESS_EXAMPLE}"
|
||||
elog "${WIRELESS_EXAMPLE} is deprecated and should be removed."
|
||||
fi
|
||||
elog "If you are using the old style network scripts,"
|
||||
elog "Configure wireless settings in ${ROOT}/etc/conf.d/net"
|
||||
elog "after reviewing ${ROOT}/usr/share/doc/${PF}/net.example"
|
||||
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
|
||||
|
||||
if path_exists -o "${ROOT}"/etc/conf.d/local.{start,stop} ; then
|
||||
ewarn "/etc/conf.d/local.{start,stop} are deprecated. Please convert"
|
||||
ewarn "your files to /etc/conf.d/local and delete the files."
|
||||
fi
|
||||
|
||||
# update the dependency tree after touching all files #224171
|
||||
[[ "${ROOT}" = "/" ]] && "${ROOT}/${LIBDIR}"/rc/bin/rc-depend -u
|
||||
|
||||
elog "You should now update all files in /etc, using etc-update"
|
||||
elog "or equivalent before restarting any services or this host."
|
||||
elog
|
||||
elog "Please read the migration guide available at:"
|
||||
elog "http://www.gentoo.org/doc/en/openrc-migration.xml"
|
||||
}
|
||||
|
|
@ -1,431 +0,0 @@
|
|||
# Copyright 1999-2010 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/sys-apps/openrc/openrc-0.6.5.ebuild,v 1.1 2010/11/21 17:58:49 williamh Exp $
|
||||
|
||||
EAPI="1"
|
||||
|
||||
inherit eutils flag-o-matic multilib toolchain-funcs
|
||||
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
EGIT_REPO_URI="git://git.overlays.gentoo.org/proj/openrc.git"
|
||||
inherit git
|
||||
KEYWORDS=""
|
||||
else
|
||||
SRC_URI="mirror://gentoo/${P}.tar.bz2"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~sparc-fbsd ~x86 ~x86-fbsd"
|
||||
fi
|
||||
|
||||
DESCRIPTION="OpenRC manages the services, startup and shutdown of a host"
|
||||
HOMEPAGE="http://www.gentoo.org/proj/en/base/openrc/"
|
||||
|
||||
LICENSE="BSD-2"
|
||||
SLOT="0"
|
||||
IUSE="debug elibc_glibc ncurses pam pentoo unicode kernel_linux kernel_FreeBSD"
|
||||
|
||||
RDEPEND="virtual/init
|
||||
kernel_FreeBSD? ( sys-process/fuser-bsd )
|
||||
elibc_glibc? ( >=sys-libs/glibc-2.5 )
|
||||
ncurses? ( sys-libs/ncurses )
|
||||
pam? ( virtual/pam )
|
||||
>=sys-apps/baselayout-2.0.0
|
||||
kernel_linux? ( !<sys-apps/module-init-tools-3.2.2-r2 )
|
||||
!<sys-fs/udev-133
|
||||
!<sys-apps/sysvinit-2.86-r11"
|
||||
DEPEND="${RDEPEND}
|
||||
virtual/os-headers"
|
||||
|
||||
make_args() {
|
||||
unset LIBDIR #266688
|
||||
|
||||
MAKE_ARGS="${MAKE_ARGS} LIBNAME=$(get_libdir) LIBEXECDIR=/$(get_libdir)/rc"
|
||||
MAKE_ARGS="${MAKE_ARGS} MKOLDNET=yes"
|
||||
|
||||
local brand="Unknown"
|
||||
if use kernel_linux ; then
|
||||
MAKE_ARGS="${MAKE_ARGS} OS=Linux"
|
||||
brand="Linux"
|
||||
elif use kernel_FreeBSD ; then
|
||||
MAKE_ARGS="${MAKE_ARGS} OS=FreeBSD"
|
||||
brand="FreeBSD"
|
||||
fi
|
||||
if use pentoo ; then
|
||||
export BRANDING="Pentoo ${brand}"
|
||||
else
|
||||
export BRANDING="Gentoo ${brand}"
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_setup() {
|
||||
export DEBUG=$(usev debug)
|
||||
export MKPAM=$(usev pam)
|
||||
export MKTERMCAP=$(usev ncurses)
|
||||
}
|
||||
|
||||
src_unpack() {
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
git_src_unpack
|
||||
else
|
||||
unpack ${A}
|
||||
fi
|
||||
cd "${S}"
|
||||
sed -i 's:0444:0644:' mk/sys.mk
|
||||
sed -i "/^DIR/s:/openrc:/${PF}:" doc/Makefile #241342
|
||||
sed -i '/^CFLAGS+=.*_CC_FLAGS_SH/d' mk/cc.mk #289264
|
||||
|
||||
# Allow user patches to be applied without modifying the ebuild
|
||||
epatch_user
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
make_args
|
||||
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
local ver="git-$(echo ${EGIT_VERSION} | cut -c1-8)"
|
||||
sed -i "/^GITVER[[:space:]]*=/s:=.*:=${ver}:" mk/git.mk
|
||||
fi
|
||||
|
||||
tc-export CC AR RANLIB
|
||||
emake ${MAKE_ARGS} || die "emake ${MAKE_ARGS} failed"
|
||||
}
|
||||
|
||||
# set_config <file> <option name> <yes value> <no value> test
|
||||
# a value of "#" will just comment out the option
|
||||
set_config() {
|
||||
local file="${D}/$1" var=$2 val com
|
||||
eval "${@:5}" && val=$3 || val=$4
|
||||
[[ ${val} == "#" ]] && com="#" && val='\2'
|
||||
sed -i -r -e "/^#?${var}=/{s:=([\"'])?([^ ]*)\1?:=\1${val}\1:;s:^#?:${com}:}" "${file}"
|
||||
}
|
||||
set_config_yes_no() {
|
||||
set_config "$1" "$2" YES NO "${@:3}"
|
||||
}
|
||||
|
||||
src_install() {
|
||||
make_args
|
||||
emake ${MAKE_ARGS} DESTDIR="${D}" install || die
|
||||
|
||||
# install the readme for the new network scripts
|
||||
dodoc README.net
|
||||
|
||||
# move the shared libs back to /usr so ldscript can install
|
||||
# more of a minimal set of files
|
||||
# disabled for now due to #270646
|
||||
#mv "${D}"/$(get_libdir)/lib{einfo,rc}* "${D}"/usr/$(get_libdir)/ || die
|
||||
#gen_usr_ldscript -a einfo rc
|
||||
gen_usr_ldscript libeinfo.so
|
||||
gen_usr_ldscript librc.so
|
||||
|
||||
keepdir /$(get_libdir)/rc/{init.d,tmp}
|
||||
|
||||
# Backup our default runlevels
|
||||
dodir /usr/share/"${PN}"
|
||||
cp -PR "${D}"/etc/runlevels "${D}"/usr/share/${PN} || die
|
||||
rm -rf "${D}"/etc/runlevels
|
||||
|
||||
# Stick with "old" net as the default for now
|
||||
doconfd conf.d/net || die
|
||||
pushd "${D}"/usr/share/${PN}/runlevels/boot > /dev/null
|
||||
rm -f network staticroute
|
||||
ln -s /etc/init.d/net.lo net.lo
|
||||
popd > /dev/null
|
||||
|
||||
# Setup unicode defaults for silly unicode users
|
||||
set_config_yes_no /etc/rc.conf unicode use unicode
|
||||
|
||||
# Cater to the norm
|
||||
set_config_yes_no /etc/conf.d/keymaps windowkeys '(' use x86 '||' use amd64 ')'
|
||||
|
||||
# Support for logfile rotation
|
||||
insinto /etc/logrotate.d
|
||||
newins "${FILESDIR}"/openrc.logrotate openrc
|
||||
}
|
||||
|
||||
add_boot_init() {
|
||||
local initd=$1
|
||||
local runlevel=${2:-boot}
|
||||
# if the initscript is not going to be installed and is not
|
||||
# currently installed, return
|
||||
[[ -e ${D}/etc/init.d/${initd} || -e ${ROOT}/etc/init.d/${initd} ]] \
|
||||
|| return
|
||||
[[ -e ${ROOT}/etc/runlevels/${runlevel}/${initd} ]] && return
|
||||
|
||||
# if runlevels dont exist just yet, then create it but still flag
|
||||
# to pkg_postinst that it needs real setup #277323
|
||||
if [[ ! -d ${ROOT}/etc/runlevels/${runlevel} ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/${runlevel}
|
||||
touch "${ROOT}"/etc/runlevels/.add_boot_init.created
|
||||
fi
|
||||
|
||||
elog "Auto-adding '${initd}' service to your ${runlevel} runlevel"
|
||||
ln -snf /etc/init.d/${initd} "${ROOT}"/etc/runlevels/${runlevel}/${initd}
|
||||
}
|
||||
add_boot_init_mit_config() {
|
||||
local config=$1 initd=$2
|
||||
if [[ -e ${ROOT}${config} ]] ; then
|
||||
if [[ -n $(sed -e 's:#.*::' -e '/^[[:space:]]*$/d' "${ROOT}"/${config}) ]] ; then
|
||||
add_boot_init ${initd}
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_preinst() {
|
||||
local f LIBDIR=$(get_libdir)
|
||||
|
||||
# default net script is just comments, so no point in biting people
|
||||
# in the ass by accident. we save in preinst so that the package
|
||||
# manager doesnt go throwing etc-update crap at us -- postinst is
|
||||
# too late to prevent that. this behavior also lets us keep the
|
||||
# file in the CONTENTS for binary packages.
|
||||
[[ -e ${ROOT}/etc/conf.d/net ]] && cp "${ROOT}"/etc/conf.d/net "${D}"/etc/conf.d/
|
||||
|
||||
# avoid default thrashing in conf.d files when possible #295406
|
||||
if [[ -e ${ROOT}/etc/conf.d/hostname ]] ; then
|
||||
(
|
||||
unset hostname HOSTNAME
|
||||
source "${ROOT}"/etc/conf.d/hostname
|
||||
: ${hostname:=${HOSTNAME}}
|
||||
[[ -n ${hostname} ]] && set_config /etc/conf.d/hostname hostname "${hostname}"
|
||||
)
|
||||
fi
|
||||
|
||||
# upgrade timezone file ... do it before moving clock
|
||||
if [[ -e ${ROOT}/etc/conf.d/clock && ! -e ${ROOT}/etc/timezone ]] ; then
|
||||
(
|
||||
unset TIMEZONE
|
||||
source "${ROOT}"/etc/conf.d/clock
|
||||
[[ -n ${TIMEZONE} ]] && echo "${TIMEZONE}" > "${ROOT}"/etc/timezone
|
||||
)
|
||||
fi
|
||||
|
||||
# /etc/conf.d/clock moved to /etc/conf.d/hwclock
|
||||
local clock
|
||||
use kernel_FreeBSD && clock="adjkerntz" || clock="hwclock"
|
||||
if [[ -e ${ROOT}/etc/conf.d/clock ]] ; then
|
||||
mv "${ROOT}"/etc/conf.d/clock "${ROOT}"/etc/conf.d/${clock}
|
||||
fi
|
||||
if [[ -e ${ROOT}/etc/init.d/clock ]] ; then
|
||||
rm -f "${ROOT}"/etc/init.d/clock
|
||||
fi
|
||||
if [[ -L ${ROOT}/etc/runlevels/boot/clock ]] ; then
|
||||
rm -f "${ROOT}"/etc/runlevels/boot/clock
|
||||
ln -snf /etc/init.d/${clock} "${ROOT}"/etc/runlevels/boot/${clock}
|
||||
fi
|
||||
if [[ -L ${ROOT}${LIBDIR}/rc/init.d/started/clock ]] ; then
|
||||
rm -f "${ROOT}${LIBDIR}"/rc/init.d/started/clock
|
||||
ln -snf /etc/init.d/${clock} "${ROOT}${LIBDIR}"/rc/init.d/started/${clock}
|
||||
fi
|
||||
|
||||
# /etc/conf.d/rc is no longer used for configuration
|
||||
if [[ -e ${ROOT}/etc/conf.d/rc ]] ; then
|
||||
elog "/etc/conf.d/rc is no longer used for configuration."
|
||||
elog "Please migrate your settings to /etc/rc.conf as applicable"
|
||||
elog "and delete /etc/conf.d/rc"
|
||||
fi
|
||||
|
||||
# force net init.d scripts into symlinks
|
||||
for f in "${ROOT}"/etc/init.d/net.* ; do
|
||||
[[ -e ${f} ]] || continue # catch net.* not matching anything
|
||||
[[ ${f} == */net.lo ]] && continue # real file now
|
||||
[[ ${f} == *.openrc.bak ]] && continue
|
||||
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
|
||||
|
||||
# termencoding was added in 0.2.1 and needed in boot
|
||||
has_version ">=sys-apps/openrc-0.2.1" || add_boot_init termencoding
|
||||
|
||||
# set default interactive shell to sulogin if it exists
|
||||
set_config /etc/rc.conf rc_shell /sbin/sulogin "#" test -e /sbin/sulogin
|
||||
|
||||
has_version sys-apps/openrc || migrate_from_baselayout_1
|
||||
has_version ">=sys-apps/openrc-0.4.0" || migrate_udev_init_script
|
||||
}
|
||||
|
||||
# >=openrc-0.4.0 no longer loads the udev addon
|
||||
migrate_udev_init_script() {
|
||||
# make sure udev is in sysinit if it was enabled before
|
||||
local enable_udev=false
|
||||
local rc_devices=$(
|
||||
[[ -f /etc/rc.conf ]] && source /etc/rc.conf
|
||||
[[ -f /etc/conf.d/rc ]] && source /etc/conf.d/rc
|
||||
echo "${rc_devices:-${RC_DEVICES:-auto}}"
|
||||
)
|
||||
case ${rc_devices} in
|
||||
udev|auto)
|
||||
enable_udev=true
|
||||
;;
|
||||
esac
|
||||
|
||||
if $enable_udev; then
|
||||
add_boot_init udev sysinit
|
||||
add_boot_init udev-postmount default
|
||||
fi
|
||||
}
|
||||
|
||||
migrate_from_baselayout_1() {
|
||||
# baselayout boot init scripts have been split out
|
||||
for f in $(cd "${D}"/usr/share/${PN}/runlevels/boot || exit; echo *) ; do
|
||||
# baselayout-1 is always "old" net, so ignore "new" net
|
||||
[[ ${f} == "network" ]] && continue
|
||||
|
||||
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/conf.d/dmcrypt dmcrypt
|
||||
add_boot_init_mit_config /etc/mdadm.conf mdraid
|
||||
add_boot_init_mit_config /etc/evms.conf evms
|
||||
[[ -e ${ROOT}/sbin/dmsetup ]] && add_boot_init 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
|
||||
|
||||
# Handle the conf.d/local.{start,stop} -> conf.d/local transition
|
||||
if path_exists -o "${ROOT}"/etc/conf.d/local.{start,stop} ; then
|
||||
elog "Converting your /etc/conf.d/local.{start,stop} files to /etc/conf.d/local"
|
||||
(
|
||||
sed -n '0,/local_start/p' "${D}"/etc/conf.d/local
|
||||
sed 's:^:\t:' "${ROOT}"/etc/conf.d/local.start 2>/dev/null
|
||||
sed -n '/local_start/,/local_stop/{s:^local_start.*::;p}' "${D}"/etc/conf.d/local
|
||||
sed 's:^:\t:' "${ROOT}"/etc/conf.d/local.stop 2>/dev/null
|
||||
sed -n '/local_stop/,${s:^local_stop.*::;p}' "${D}"/etc/conf.d/local
|
||||
) > "${T}"/conf.d.local
|
||||
mv "${T}"/conf.d.local "${D}"/etc/conf.d/local
|
||||
touch "${D}"/etc/conf.d/local.{start,stop}
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
local LIBDIR=$(get_libdir)
|
||||
|
||||
# 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 ]] || [[ -e ${ROOT}/etc/runlevels/.add_boot_init.created ]] ; then
|
||||
einfo "Copying across default runlevels"
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels "${ROOT}"/etc
|
||||
rm -f "${ROOT}"/etc/runlevels/.add_boot_init.created
|
||||
else
|
||||
if [[ ! -e ${ROOT}/etc/runlevels/sysinit/devfs ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/sysinit
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels/sysinit/* \
|
||||
"${ROOT}"/etc/runlevels/sysinit
|
||||
fi
|
||||
if [[ ! -e ${ROOT}/etc/runlevels/shutdown/mount-ro ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/shutdown
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels/shutdown/* \
|
||||
"${ROOT}"/etc/runlevels/shutdown
|
||||
fi
|
||||
fi
|
||||
|
||||
# /etc/conf.d/net.example is no longer valid
|
||||
local NET_EXAMPLE="${ROOT}/etc/conf.d/net.example"
|
||||
local NET_MD5='8ebebfa07441d39eb54feae0ee4c8210'
|
||||
if [[ -e "${NET_EXAMPLE}" ]] ; then
|
||||
if [[ $(md5sum "${NET_EXAMPLE}") == ${NET_MD5}* ]]; then
|
||||
rm -f "${NET_EXAMPLE}"
|
||||
elog "${NET_EXAMPLE} has been removed."
|
||||
else
|
||||
sed -i '1i# This file is obsolete.\n' "${NET_EXAMPLE}"
|
||||
elog "${NET_EXAMPLE} should be removed."
|
||||
fi
|
||||
elog "The new file is ${ROOT}/usr/share/doc/${PF}/net.example"
|
||||
fi
|
||||
|
||||
# /etc/conf.d/wireless.example is no longer valid
|
||||
local WIRELESS_EXAMPLE="${ROOT}/etc/conf.d/wireless.example"
|
||||
local WIRELESS_MD5='d1fad7da940bf263c76af4d2082124a3'
|
||||
if [[ -e "${WIRELESS_EXAMPLE}" ]] ; then
|
||||
if [[ $(md5sum "${WIRELESS_EXAMPLE}") == ${WIRELESS_MD5}* ]]; then
|
||||
rm -f "${WIRELESS_EXAMPLE}"
|
||||
elog "${WIRELESS_EXAMPLE} is deprecated and has been removed."
|
||||
else
|
||||
sed -i '1i# This file is obsolete.\n' "${WIRELESS_EXAMPLE}"
|
||||
elog "${WIRELESS_EXAMPLE} is deprecated and should be removed."
|
||||
fi
|
||||
elog "If you are using the old style network scripts,"
|
||||
elog "Configure wireless settings in ${ROOT}/etc/conf.d/net"
|
||||
elog "after reviewing ${ROOT}/usr/share/doc/${PF}/net.example"
|
||||
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
|
||||
|
||||
if path_exists -o "${ROOT}"/etc/conf.d/local.{start,stop} ; then
|
||||
ewarn "/etc/conf.d/local.{start,stop} are deprecated. Please convert"
|
||||
ewarn "your files to /etc/conf.d/local and delete the files."
|
||||
fi
|
||||
|
||||
# update the dependency tree after touching all files #224171
|
||||
[[ "${ROOT}" = "/" ]] && "${ROOT}/${LIBDIR}"/rc/bin/rc-depend -u
|
||||
|
||||
elog "You should now update all files in /etc, using etc-update"
|
||||
elog "or equivalent before restarting any services or this host."
|
||||
elog
|
||||
elog "Please read the migration guide available at:"
|
||||
elog "http://www.gentoo.org/doc/en/openrc-migration.xml"
|
||||
}
|
||||
|
|
@ -1,431 +0,0 @@
|
|||
# Copyright 1999-2010 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/sys-apps/openrc/openrc-0.6.6.ebuild,v 1.1 2010/11/30 22:53:40 williamh Exp $
|
||||
|
||||
EAPI="1"
|
||||
|
||||
inherit eutils flag-o-matic multilib toolchain-funcs
|
||||
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
EGIT_REPO_URI="git://git.overlays.gentoo.org/proj/openrc.git"
|
||||
inherit git
|
||||
KEYWORDS=""
|
||||
else
|
||||
SRC_URI="mirror://gentoo/${P}.tar.bz2"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~sparc-fbsd ~x86 ~x86-fbsd"
|
||||
fi
|
||||
|
||||
DESCRIPTION="OpenRC manages the services, startup and shutdown of a host"
|
||||
HOMEPAGE="http://www.gentoo.org/proj/en/base/openrc/"
|
||||
|
||||
LICENSE="BSD-2"
|
||||
SLOT="0"
|
||||
IUSE="debug elibc_glibc ncurses pam pentoo unicode kernel_linux kernel_FreeBSD"
|
||||
|
||||
RDEPEND="virtual/init
|
||||
kernel_FreeBSD? ( sys-process/fuser-bsd )
|
||||
elibc_glibc? ( >=sys-libs/glibc-2.5 )
|
||||
ncurses? ( sys-libs/ncurses )
|
||||
pam? ( virtual/pam )
|
||||
>=sys-apps/baselayout-2.0.0
|
||||
kernel_linux? ( !<sys-apps/module-init-tools-3.2.2-r2 )
|
||||
!<sys-fs/udev-133
|
||||
!<sys-apps/sysvinit-2.86-r11"
|
||||
DEPEND="${RDEPEND}
|
||||
virtual/os-headers"
|
||||
|
||||
make_args() {
|
||||
unset LIBDIR #266688
|
||||
|
||||
MAKE_ARGS="${MAKE_ARGS} LIBNAME=$(get_libdir) LIBEXECDIR=/$(get_libdir)/rc"
|
||||
MAKE_ARGS="${MAKE_ARGS} MKOLDNET=yes"
|
||||
|
||||
local brand="Unknown"
|
||||
if use kernel_linux ; then
|
||||
MAKE_ARGS="${MAKE_ARGS} OS=Linux"
|
||||
brand="Linux"
|
||||
elif use kernel_FreeBSD ; then
|
||||
MAKE_ARGS="${MAKE_ARGS} OS=FreeBSD"
|
||||
brand="FreeBSD"
|
||||
fi
|
||||
if use pentoo ; then
|
||||
export BRANDING="Pentoo ${brand}"
|
||||
else
|
||||
export BRANDING="Gentoo ${brand}"
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_setup() {
|
||||
export DEBUG=$(usev debug)
|
||||
export MKPAM=$(usev pam)
|
||||
export MKTERMCAP=$(usev ncurses)
|
||||
}
|
||||
|
||||
src_unpack() {
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
git_src_unpack
|
||||
else
|
||||
unpack ${A}
|
||||
fi
|
||||
cd "${S}"
|
||||
sed -i 's:0444:0644:' mk/sys.mk
|
||||
sed -i "/^DIR/s:/openrc:/${PF}:" doc/Makefile #241342
|
||||
sed -i '/^CFLAGS+=.*_CC_FLAGS_SH/d' mk/cc.mk #289264
|
||||
|
||||
# Allow user patches to be applied without modifying the ebuild
|
||||
epatch_user
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
make_args
|
||||
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
local ver="git-$(echo ${EGIT_VERSION} | cut -c1-8)"
|
||||
sed -i "/^GITVER[[:space:]]*=/s:=.*:=${ver}:" mk/git.mk
|
||||
fi
|
||||
|
||||
tc-export CC AR RANLIB
|
||||
emake ${MAKE_ARGS} || die "emake ${MAKE_ARGS} failed"
|
||||
}
|
||||
|
||||
# set_config <file> <option name> <yes value> <no value> test
|
||||
# a value of "#" will just comment out the option
|
||||
set_config() {
|
||||
local file="${D}/$1" var=$2 val com
|
||||
eval "${@:5}" && val=$3 || val=$4
|
||||
[[ ${val} == "#" ]] && com="#" && val='\2'
|
||||
sed -i -r -e "/^#?${var}=/{s:=([\"'])?([^ ]*)\1?:=\1${val}\1:;s:^#?:${com}:}" "${file}"
|
||||
}
|
||||
set_config_yes_no() {
|
||||
set_config "$1" "$2" YES NO "${@:3}"
|
||||
}
|
||||
|
||||
src_install() {
|
||||
make_args
|
||||
emake ${MAKE_ARGS} DESTDIR="${D}" install || die
|
||||
|
||||
# install the readme for the new network scripts
|
||||
dodoc README.net
|
||||
|
||||
# move the shared libs back to /usr so ldscript can install
|
||||
# more of a minimal set of files
|
||||
# disabled for now due to #270646
|
||||
#mv "${D}"/$(get_libdir)/lib{einfo,rc}* "${D}"/usr/$(get_libdir)/ || die
|
||||
#gen_usr_ldscript -a einfo rc
|
||||
gen_usr_ldscript libeinfo.so
|
||||
gen_usr_ldscript librc.so
|
||||
|
||||
keepdir /$(get_libdir)/rc/{init.d,tmp}
|
||||
|
||||
# Backup our default runlevels
|
||||
dodir /usr/share/"${PN}"
|
||||
cp -PR "${D}"/etc/runlevels "${D}"/usr/share/${PN} || die
|
||||
rm -rf "${D}"/etc/runlevels
|
||||
|
||||
# Stick with "old" net as the default for now
|
||||
doconfd conf.d/net || die
|
||||
pushd "${D}"/usr/share/${PN}/runlevels/boot > /dev/null
|
||||
rm -f network staticroute
|
||||
ln -s /etc/init.d/net.lo net.lo
|
||||
popd > /dev/null
|
||||
|
||||
# Setup unicode defaults for silly unicode users
|
||||
set_config_yes_no /etc/rc.conf unicode use unicode
|
||||
|
||||
# Cater to the norm
|
||||
set_config_yes_no /etc/conf.d/keymaps windowkeys '(' use x86 '||' use amd64 ')'
|
||||
|
||||
# Support for logfile rotation
|
||||
insinto /etc/logrotate.d
|
||||
newins "${FILESDIR}"/openrc.logrotate openrc
|
||||
}
|
||||
|
||||
add_boot_init() {
|
||||
local initd=$1
|
||||
local runlevel=${2:-boot}
|
||||
# if the initscript is not going to be installed and is not
|
||||
# currently installed, return
|
||||
[[ -e ${D}/etc/init.d/${initd} || -e ${ROOT}/etc/init.d/${initd} ]] \
|
||||
|| return
|
||||
[[ -e ${ROOT}/etc/runlevels/${runlevel}/${initd} ]] && return
|
||||
|
||||
# if runlevels dont exist just yet, then create it but still flag
|
||||
# to pkg_postinst that it needs real setup #277323
|
||||
if [[ ! -d ${ROOT}/etc/runlevels/${runlevel} ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/${runlevel}
|
||||
touch "${ROOT}"/etc/runlevels/.add_boot_init.created
|
||||
fi
|
||||
|
||||
elog "Auto-adding '${initd}' service to your ${runlevel} runlevel"
|
||||
ln -snf /etc/init.d/${initd} "${ROOT}"/etc/runlevels/${runlevel}/${initd}
|
||||
}
|
||||
add_boot_init_mit_config() {
|
||||
local config=$1 initd=$2
|
||||
if [[ -e ${ROOT}${config} ]] ; then
|
||||
if [[ -n $(sed -e 's:#.*::' -e '/^[[:space:]]*$/d' "${ROOT}"/${config}) ]] ; then
|
||||
add_boot_init ${initd}
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_preinst() {
|
||||
local f LIBDIR=$(get_libdir)
|
||||
|
||||
# default net script is just comments, so no point in biting people
|
||||
# in the ass by accident. we save in preinst so that the package
|
||||
# manager doesnt go throwing etc-update crap at us -- postinst is
|
||||
# too late to prevent that. this behavior also lets us keep the
|
||||
# file in the CONTENTS for binary packages.
|
||||
[[ -e ${ROOT}/etc/conf.d/net ]] && cp "${ROOT}"/etc/conf.d/net "${D}"/etc/conf.d/
|
||||
|
||||
# avoid default thrashing in conf.d files when possible #295406
|
||||
if [[ -e ${ROOT}/etc/conf.d/hostname ]] ; then
|
||||
(
|
||||
unset hostname HOSTNAME
|
||||
source "${ROOT}"/etc/conf.d/hostname
|
||||
: ${hostname:=${HOSTNAME}}
|
||||
[[ -n ${hostname} ]] && set_config /etc/conf.d/hostname hostname "${hostname}"
|
||||
)
|
||||
fi
|
||||
|
||||
# upgrade timezone file ... do it before moving clock
|
||||
if [[ -e ${ROOT}/etc/conf.d/clock && ! -e ${ROOT}/etc/timezone ]] ; then
|
||||
(
|
||||
unset TIMEZONE
|
||||
source "${ROOT}"/etc/conf.d/clock
|
||||
[[ -n ${TIMEZONE} ]] && echo "${TIMEZONE}" > "${ROOT}"/etc/timezone
|
||||
)
|
||||
fi
|
||||
|
||||
# /etc/conf.d/clock moved to /etc/conf.d/hwclock
|
||||
local clock
|
||||
use kernel_FreeBSD && clock="adjkerntz" || clock="hwclock"
|
||||
if [[ -e ${ROOT}/etc/conf.d/clock ]] ; then
|
||||
mv "${ROOT}"/etc/conf.d/clock "${ROOT}"/etc/conf.d/${clock}
|
||||
fi
|
||||
if [[ -e ${ROOT}/etc/init.d/clock ]] ; then
|
||||
rm -f "${ROOT}"/etc/init.d/clock
|
||||
fi
|
||||
if [[ -L ${ROOT}/etc/runlevels/boot/clock ]] ; then
|
||||
rm -f "${ROOT}"/etc/runlevels/boot/clock
|
||||
ln -snf /etc/init.d/${clock} "${ROOT}"/etc/runlevels/boot/${clock}
|
||||
fi
|
||||
if [[ -L ${ROOT}${LIBDIR}/rc/init.d/started/clock ]] ; then
|
||||
rm -f "${ROOT}${LIBDIR}"/rc/init.d/started/clock
|
||||
ln -snf /etc/init.d/${clock} "${ROOT}${LIBDIR}"/rc/init.d/started/${clock}
|
||||
fi
|
||||
|
||||
# /etc/conf.d/rc is no longer used for configuration
|
||||
if [[ -e ${ROOT}/etc/conf.d/rc ]] ; then
|
||||
elog "/etc/conf.d/rc is no longer used for configuration."
|
||||
elog "Please migrate your settings to /etc/rc.conf as applicable"
|
||||
elog "and delete /etc/conf.d/rc"
|
||||
fi
|
||||
|
||||
# force net init.d scripts into symlinks
|
||||
for f in "${ROOT}"/etc/init.d/net.* ; do
|
||||
[[ -e ${f} ]] || continue # catch net.* not matching anything
|
||||
[[ ${f} == */net.lo ]] && continue # real file now
|
||||
[[ ${f} == *.openrc.bak ]] && continue
|
||||
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
|
||||
|
||||
# termencoding was added in 0.2.1 and needed in boot
|
||||
has_version ">=sys-apps/openrc-0.2.1" || add_boot_init termencoding
|
||||
|
||||
# set default interactive shell to sulogin if it exists
|
||||
set_config /etc/rc.conf rc_shell /sbin/sulogin "#" test -e /sbin/sulogin
|
||||
|
||||
has_version sys-apps/openrc || migrate_from_baselayout_1
|
||||
has_version ">=sys-apps/openrc-0.4.0" || migrate_udev_init_script
|
||||
}
|
||||
|
||||
# >=openrc-0.4.0 no longer loads the udev addon
|
||||
migrate_udev_init_script() {
|
||||
# make sure udev is in sysinit if it was enabled before
|
||||
local enable_udev=false
|
||||
local rc_devices=$(
|
||||
[[ -f /etc/rc.conf ]] && source /etc/rc.conf
|
||||
[[ -f /etc/conf.d/rc ]] && source /etc/conf.d/rc
|
||||
echo "${rc_devices:-${RC_DEVICES:-auto}}"
|
||||
)
|
||||
case ${rc_devices} in
|
||||
udev|auto)
|
||||
enable_udev=true
|
||||
;;
|
||||
esac
|
||||
|
||||
if $enable_udev; then
|
||||
add_boot_init udev sysinit
|
||||
add_boot_init udev-postmount default
|
||||
fi
|
||||
}
|
||||
|
||||
migrate_from_baselayout_1() {
|
||||
# baselayout boot init scripts have been split out
|
||||
for f in $(cd "${D}"/usr/share/${PN}/runlevels/boot || exit; echo *) ; do
|
||||
# baselayout-1 is always "old" net, so ignore "new" net
|
||||
[[ ${f} == "network" ]] && continue
|
||||
|
||||
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/conf.d/dmcrypt dmcrypt
|
||||
add_boot_init_mit_config /etc/mdadm.conf mdraid
|
||||
add_boot_init_mit_config /etc/evms.conf evms
|
||||
[[ -e ${ROOT}/sbin/dmsetup ]] && add_boot_init 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
|
||||
|
||||
# Handle the conf.d/local.{start,stop} -> conf.d/local transition
|
||||
if path_exists -o "${ROOT}"/etc/conf.d/local.{start,stop} ; then
|
||||
elog "Converting your /etc/conf.d/local.{start,stop} files to /etc/conf.d/local"
|
||||
(
|
||||
sed -n '0,/local_start/p' "${D}"/etc/conf.d/local
|
||||
sed 's:^:\t:' "${ROOT}"/etc/conf.d/local.start 2>/dev/null
|
||||
sed -n '/local_start/,/local_stop/{s:^local_start.*::;p}' "${D}"/etc/conf.d/local
|
||||
sed 's:^:\t:' "${ROOT}"/etc/conf.d/local.stop 2>/dev/null
|
||||
sed -n '/local_stop/,${s:^local_stop.*::;p}' "${D}"/etc/conf.d/local
|
||||
) > "${T}"/conf.d.local
|
||||
mv "${T}"/conf.d.local "${D}"/etc/conf.d/local
|
||||
touch "${D}"/etc/conf.d/local.{start,stop}
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
local LIBDIR=$(get_libdir)
|
||||
|
||||
# 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 ]] || [[ -e ${ROOT}/etc/runlevels/.add_boot_init.created ]] ; then
|
||||
einfo "Copying across default runlevels"
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels "${ROOT}"/etc
|
||||
rm -f "${ROOT}"/etc/runlevels/.add_boot_init.created
|
||||
else
|
||||
if [[ ! -e ${ROOT}/etc/runlevels/sysinit/devfs ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/sysinit
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels/sysinit/* \
|
||||
"${ROOT}"/etc/runlevels/sysinit
|
||||
fi
|
||||
if [[ ! -e ${ROOT}/etc/runlevels/shutdown/mount-ro ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/shutdown
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels/shutdown/* \
|
||||
"${ROOT}"/etc/runlevels/shutdown
|
||||
fi
|
||||
fi
|
||||
|
||||
# /etc/conf.d/net.example is no longer valid
|
||||
local NET_EXAMPLE="${ROOT}/etc/conf.d/net.example"
|
||||
local NET_MD5='8ebebfa07441d39eb54feae0ee4c8210'
|
||||
if [[ -e "${NET_EXAMPLE}" ]] ; then
|
||||
if [[ $(md5sum "${NET_EXAMPLE}") == ${NET_MD5}* ]]; then
|
||||
rm -f "${NET_EXAMPLE}"
|
||||
elog "${NET_EXAMPLE} has been removed."
|
||||
else
|
||||
sed -i '1i# This file is obsolete.\n' "${NET_EXAMPLE}"
|
||||
elog "${NET_EXAMPLE} should be removed."
|
||||
fi
|
||||
elog "The new file is ${ROOT}/usr/share/doc/${PF}/net.example"
|
||||
fi
|
||||
|
||||
# /etc/conf.d/wireless.example is no longer valid
|
||||
local WIRELESS_EXAMPLE="${ROOT}/etc/conf.d/wireless.example"
|
||||
local WIRELESS_MD5='d1fad7da940bf263c76af4d2082124a3'
|
||||
if [[ -e "${WIRELESS_EXAMPLE}" ]] ; then
|
||||
if [[ $(md5sum "${WIRELESS_EXAMPLE}") == ${WIRELESS_MD5}* ]]; then
|
||||
rm -f "${WIRELESS_EXAMPLE}"
|
||||
elog "${WIRELESS_EXAMPLE} is deprecated and has been removed."
|
||||
else
|
||||
sed -i '1i# This file is obsolete.\n' "${WIRELESS_EXAMPLE}"
|
||||
elog "${WIRELESS_EXAMPLE} is deprecated and should be removed."
|
||||
fi
|
||||
elog "If you are using the old style network scripts,"
|
||||
elog "Configure wireless settings in ${ROOT}/etc/conf.d/net"
|
||||
elog "after reviewing ${ROOT}/usr/share/doc/${PF}/net.example"
|
||||
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
|
||||
|
||||
if path_exists -o "${ROOT}"/etc/conf.d/local.{start,stop} ; then
|
||||
ewarn "/etc/conf.d/local.{start,stop} are deprecated. Please convert"
|
||||
ewarn "your files to /etc/conf.d/local and delete the files."
|
||||
fi
|
||||
|
||||
# update the dependency tree after touching all files #224171
|
||||
[[ "${ROOT}" = "/" ]] && "${ROOT}/${LIBDIR}"/rc/bin/rc-depend -u
|
||||
|
||||
elog "You should now update all files in /etc, using etc-update"
|
||||
elog "or equivalent before restarting any services or this host."
|
||||
elog
|
||||
elog "Please read the migration guide available at:"
|
||||
elog "http://www.gentoo.org/doc/en/openrc-migration.xml"
|
||||
}
|
||||
|
|
@ -1,431 +0,0 @@
|
|||
# Copyright 1999-2010 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/sys-apps/openrc/openrc-0.6.7.ebuild,v 1.1 2010/12/03 21:03:50 williamh Exp $
|
||||
|
||||
EAPI="1"
|
||||
|
||||
inherit eutils flag-o-matic multilib toolchain-funcs
|
||||
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
EGIT_REPO_URI="git://git.overlays.gentoo.org/proj/openrc.git"
|
||||
inherit git
|
||||
KEYWORDS=""
|
||||
else
|
||||
SRC_URI="mirror://gentoo/${P}.tar.bz2"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~sparc-fbsd ~x86 ~x86-fbsd"
|
||||
fi
|
||||
|
||||
DESCRIPTION="OpenRC manages the services, startup and shutdown of a host"
|
||||
HOMEPAGE="http://www.gentoo.org/proj/en/base/openrc/"
|
||||
|
||||
LICENSE="BSD-2"
|
||||
SLOT="0"
|
||||
IUSE="debug elibc_glibc ncurses pam pentoo unicode kernel_linux kernel_FreeBSD"
|
||||
|
||||
RDEPEND="virtual/init
|
||||
kernel_FreeBSD? ( sys-process/fuser-bsd )
|
||||
elibc_glibc? ( >=sys-libs/glibc-2.5 )
|
||||
ncurses? ( sys-libs/ncurses )
|
||||
pam? ( virtual/pam )
|
||||
>=sys-apps/baselayout-2.0.0
|
||||
kernel_linux? ( !<sys-apps/module-init-tools-3.2.2-r2 )
|
||||
!<sys-fs/udev-133
|
||||
!<sys-apps/sysvinit-2.86-r11"
|
||||
DEPEND="${RDEPEND}
|
||||
virtual/os-headers"
|
||||
|
||||
make_args() {
|
||||
unset LIBDIR #266688
|
||||
|
||||
MAKE_ARGS="${MAKE_ARGS} LIBNAME=$(get_libdir) LIBEXECDIR=/$(get_libdir)/rc"
|
||||
MAKE_ARGS="${MAKE_ARGS} MKOLDNET=yes"
|
||||
|
||||
local brand="Unknown"
|
||||
if use kernel_linux ; then
|
||||
MAKE_ARGS="${MAKE_ARGS} OS=Linux"
|
||||
brand="Linux"
|
||||
elif use kernel_FreeBSD ; then
|
||||
MAKE_ARGS="${MAKE_ARGS} OS=FreeBSD"
|
||||
brand="FreeBSD"
|
||||
fi
|
||||
if use pentoo ; then
|
||||
export BRANDING="Pentoo ${brand}"
|
||||
else
|
||||
export BRANDING="Gentoo ${brand}"
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_setup() {
|
||||
export DEBUG=$(usev debug)
|
||||
export MKPAM=$(usev pam)
|
||||
export MKTERMCAP=$(usev ncurses)
|
||||
}
|
||||
|
||||
src_unpack() {
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
git_src_unpack
|
||||
else
|
||||
unpack ${A}
|
||||
fi
|
||||
cd "${S}"
|
||||
sed -i 's:0444:0644:' mk/sys.mk
|
||||
sed -i "/^DIR/s:/openrc:/${PF}:" doc/Makefile #241342
|
||||
sed -i '/^CFLAGS+=.*_CC_FLAGS_SH/d' mk/cc.mk #289264
|
||||
|
||||
# Allow user patches to be applied without modifying the ebuild
|
||||
epatch_user
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
make_args
|
||||
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
local ver="git-$(echo ${EGIT_VERSION} | cut -c1-8)"
|
||||
sed -i "/^GITVER[[:space:]]*=/s:=.*:=${ver}:" mk/git.mk
|
||||
fi
|
||||
|
||||
tc-export CC AR RANLIB
|
||||
emake ${MAKE_ARGS} || die "emake ${MAKE_ARGS} failed"
|
||||
}
|
||||
|
||||
# set_config <file> <option name> <yes value> <no value> test
|
||||
# a value of "#" will just comment out the option
|
||||
set_config() {
|
||||
local file="${D}/$1" var=$2 val com
|
||||
eval "${@:5}" && val=$3 || val=$4
|
||||
[[ ${val} == "#" ]] && com="#" && val='\2'
|
||||
sed -i -r -e "/^#?${var}=/{s:=([\"'])?([^ ]*)\1?:=\1${val}\1:;s:^#?:${com}:}" "${file}"
|
||||
}
|
||||
set_config_yes_no() {
|
||||
set_config "$1" "$2" YES NO "${@:3}"
|
||||
}
|
||||
|
||||
src_install() {
|
||||
make_args
|
||||
emake ${MAKE_ARGS} DESTDIR="${D}" install || die
|
||||
|
||||
# install the readme for the new network scripts
|
||||
dodoc README.net
|
||||
|
||||
# move the shared libs back to /usr so ldscript can install
|
||||
# more of a minimal set of files
|
||||
# disabled for now due to #270646
|
||||
#mv "${D}"/$(get_libdir)/lib{einfo,rc}* "${D}"/usr/$(get_libdir)/ || die
|
||||
#gen_usr_ldscript -a einfo rc
|
||||
gen_usr_ldscript libeinfo.so
|
||||
gen_usr_ldscript librc.so
|
||||
|
||||
keepdir /$(get_libdir)/rc/{init.d,tmp}
|
||||
|
||||
# Backup our default runlevels
|
||||
dodir /usr/share/"${PN}"
|
||||
cp -PR "${D}"/etc/runlevels "${D}"/usr/share/${PN} || die
|
||||
rm -rf "${D}"/etc/runlevels
|
||||
|
||||
# Stick with "old" net as the default for now
|
||||
doconfd conf.d/net || die
|
||||
pushd "${D}"/usr/share/${PN}/runlevels/boot > /dev/null
|
||||
rm -f network staticroute
|
||||
ln -s /etc/init.d/net.lo net.lo
|
||||
popd > /dev/null
|
||||
|
||||
# Setup unicode defaults for silly unicode users
|
||||
set_config_yes_no /etc/rc.conf unicode use unicode
|
||||
|
||||
# Cater to the norm
|
||||
set_config_yes_no /etc/conf.d/keymaps windowkeys '(' use x86 '||' use amd64 ')'
|
||||
|
||||
# Support for logfile rotation
|
||||
insinto /etc/logrotate.d
|
||||
newins "${FILESDIR}"/openrc.logrotate openrc
|
||||
}
|
||||
|
||||
add_boot_init() {
|
||||
local initd=$1
|
||||
local runlevel=${2:-boot}
|
||||
# if the initscript is not going to be installed and is not
|
||||
# currently installed, return
|
||||
[[ -e ${D}/etc/init.d/${initd} || -e ${ROOT}/etc/init.d/${initd} ]] \
|
||||
|| return
|
||||
[[ -e ${ROOT}/etc/runlevels/${runlevel}/${initd} ]] && return
|
||||
|
||||
# if runlevels dont exist just yet, then create it but still flag
|
||||
# to pkg_postinst that it needs real setup #277323
|
||||
if [[ ! -d ${ROOT}/etc/runlevels/${runlevel} ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/${runlevel}
|
||||
touch "${ROOT}"/etc/runlevels/.add_boot_init.created
|
||||
fi
|
||||
|
||||
elog "Auto-adding '${initd}' service to your ${runlevel} runlevel"
|
||||
ln -snf /etc/init.d/${initd} "${ROOT}"/etc/runlevels/${runlevel}/${initd}
|
||||
}
|
||||
add_boot_init_mit_config() {
|
||||
local config=$1 initd=$2
|
||||
if [[ -e ${ROOT}${config} ]] ; then
|
||||
if [[ -n $(sed -e 's:#.*::' -e '/^[[:space:]]*$/d' "${ROOT}"/${config}) ]] ; then
|
||||
add_boot_init ${initd}
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_preinst() {
|
||||
local f LIBDIR=$(get_libdir)
|
||||
|
||||
# default net script is just comments, so no point in biting people
|
||||
# in the ass by accident. we save in preinst so that the package
|
||||
# manager doesnt go throwing etc-update crap at us -- postinst is
|
||||
# too late to prevent that. this behavior also lets us keep the
|
||||
# file in the CONTENTS for binary packages.
|
||||
[[ -e ${ROOT}/etc/conf.d/net ]] && cp "${ROOT}"/etc/conf.d/net "${D}"/etc/conf.d/
|
||||
|
||||
# avoid default thrashing in conf.d files when possible #295406
|
||||
if [[ -e ${ROOT}/etc/conf.d/hostname ]] ; then
|
||||
(
|
||||
unset hostname HOSTNAME
|
||||
source "${ROOT}"/etc/conf.d/hostname
|
||||
: ${hostname:=${HOSTNAME}}
|
||||
[[ -n ${hostname} ]] && set_config /etc/conf.d/hostname hostname "${hostname}"
|
||||
)
|
||||
fi
|
||||
|
||||
# upgrade timezone file ... do it before moving clock
|
||||
if [[ -e ${ROOT}/etc/conf.d/clock && ! -e ${ROOT}/etc/timezone ]] ; then
|
||||
(
|
||||
unset TIMEZONE
|
||||
source "${ROOT}"/etc/conf.d/clock
|
||||
[[ -n ${TIMEZONE} ]] && echo "${TIMEZONE}" > "${ROOT}"/etc/timezone
|
||||
)
|
||||
fi
|
||||
|
||||
# /etc/conf.d/clock moved to /etc/conf.d/hwclock
|
||||
local clock
|
||||
use kernel_FreeBSD && clock="adjkerntz" || clock="hwclock"
|
||||
if [[ -e ${ROOT}/etc/conf.d/clock ]] ; then
|
||||
mv "${ROOT}"/etc/conf.d/clock "${ROOT}"/etc/conf.d/${clock}
|
||||
fi
|
||||
if [[ -e ${ROOT}/etc/init.d/clock ]] ; then
|
||||
rm -f "${ROOT}"/etc/init.d/clock
|
||||
fi
|
||||
if [[ -L ${ROOT}/etc/runlevels/boot/clock ]] ; then
|
||||
rm -f "${ROOT}"/etc/runlevels/boot/clock
|
||||
ln -snf /etc/init.d/${clock} "${ROOT}"/etc/runlevels/boot/${clock}
|
||||
fi
|
||||
if [[ -L ${ROOT}${LIBDIR}/rc/init.d/started/clock ]] ; then
|
||||
rm -f "${ROOT}${LIBDIR}"/rc/init.d/started/clock
|
||||
ln -snf /etc/init.d/${clock} "${ROOT}${LIBDIR}"/rc/init.d/started/${clock}
|
||||
fi
|
||||
|
||||
# /etc/conf.d/rc is no longer used for configuration
|
||||
if [[ -e ${ROOT}/etc/conf.d/rc ]] ; then
|
||||
elog "/etc/conf.d/rc is no longer used for configuration."
|
||||
elog "Please migrate your settings to /etc/rc.conf as applicable"
|
||||
elog "and delete /etc/conf.d/rc"
|
||||
fi
|
||||
|
||||
# force net init.d scripts into symlinks
|
||||
for f in "${ROOT}"/etc/init.d/net.* ; do
|
||||
[[ -e ${f} ]] || continue # catch net.* not matching anything
|
||||
[[ ${f} == */net.lo ]] && continue # real file now
|
||||
[[ ${f} == *.openrc.bak ]] && continue
|
||||
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
|
||||
|
||||
# termencoding was added in 0.2.1 and needed in boot
|
||||
has_version ">=sys-apps/openrc-0.2.1" || add_boot_init termencoding
|
||||
|
||||
# set default interactive shell to sulogin if it exists
|
||||
set_config /etc/rc.conf rc_shell /sbin/sulogin "#" test -e /sbin/sulogin
|
||||
|
||||
has_version sys-apps/openrc || migrate_from_baselayout_1
|
||||
has_version ">=sys-apps/openrc-0.4.0" || migrate_udev_init_script
|
||||
}
|
||||
|
||||
# >=openrc-0.4.0 no longer loads the udev addon
|
||||
migrate_udev_init_script() {
|
||||
# make sure udev is in sysinit if it was enabled before
|
||||
local enable_udev=false
|
||||
local rc_devices=$(
|
||||
[[ -f /etc/rc.conf ]] && source /etc/rc.conf
|
||||
[[ -f /etc/conf.d/rc ]] && source /etc/conf.d/rc
|
||||
echo "${rc_devices:-${RC_DEVICES:-auto}}"
|
||||
)
|
||||
case ${rc_devices} in
|
||||
udev|auto)
|
||||
enable_udev=true
|
||||
;;
|
||||
esac
|
||||
|
||||
if $enable_udev; then
|
||||
add_boot_init udev sysinit
|
||||
add_boot_init udev-postmount default
|
||||
fi
|
||||
}
|
||||
|
||||
migrate_from_baselayout_1() {
|
||||
# baselayout boot init scripts have been split out
|
||||
for f in $(cd "${D}"/usr/share/${PN}/runlevels/boot || exit; echo *) ; do
|
||||
# baselayout-1 is always "old" net, so ignore "new" net
|
||||
[[ ${f} == "network" ]] && continue
|
||||
|
||||
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/conf.d/dmcrypt dmcrypt
|
||||
add_boot_init_mit_config /etc/mdadm.conf mdraid
|
||||
add_boot_init_mit_config /etc/evms.conf evms
|
||||
[[ -e ${ROOT}/sbin/dmsetup ]] && add_boot_init 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
|
||||
|
||||
# Handle the conf.d/local.{start,stop} -> conf.d/local transition
|
||||
if path_exists -o "${ROOT}"/etc/conf.d/local.{start,stop} ; then
|
||||
elog "Converting your /etc/conf.d/local.{start,stop} files to /etc/conf.d/local"
|
||||
(
|
||||
sed -n '0,/local_start/p' "${D}"/etc/conf.d/local
|
||||
sed 's:^:\t:' "${ROOT}"/etc/conf.d/local.start 2>/dev/null
|
||||
sed -n '/local_start/,/local_stop/{s:^local_start.*::;p}' "${D}"/etc/conf.d/local
|
||||
sed 's:^:\t:' "${ROOT}"/etc/conf.d/local.stop 2>/dev/null
|
||||
sed -n '/local_stop/,${s:^local_stop.*::;p}' "${D}"/etc/conf.d/local
|
||||
) > "${T}"/conf.d.local
|
||||
mv "${T}"/conf.d.local "${D}"/etc/conf.d/local
|
||||
touch "${D}"/etc/conf.d/local.{start,stop}
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
local LIBDIR=$(get_libdir)
|
||||
|
||||
# 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 ]] || [[ -e ${ROOT}/etc/runlevels/.add_boot_init.created ]] ; then
|
||||
einfo "Copying across default runlevels"
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels "${ROOT}"/etc
|
||||
rm -f "${ROOT}"/etc/runlevels/.add_boot_init.created
|
||||
else
|
||||
if [[ ! -e ${ROOT}/etc/runlevels/sysinit/devfs ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/sysinit
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels/sysinit/* \
|
||||
"${ROOT}"/etc/runlevels/sysinit
|
||||
fi
|
||||
if [[ ! -e ${ROOT}/etc/runlevels/shutdown/mount-ro ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/shutdown
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels/shutdown/* \
|
||||
"${ROOT}"/etc/runlevels/shutdown
|
||||
fi
|
||||
fi
|
||||
|
||||
# /etc/conf.d/net.example is no longer valid
|
||||
local NET_EXAMPLE="${ROOT}/etc/conf.d/net.example"
|
||||
local NET_MD5='8ebebfa07441d39eb54feae0ee4c8210'
|
||||
if [[ -e "${NET_EXAMPLE}" ]] ; then
|
||||
if [[ $(md5sum "${NET_EXAMPLE}") == ${NET_MD5}* ]]; then
|
||||
rm -f "${NET_EXAMPLE}"
|
||||
elog "${NET_EXAMPLE} has been removed."
|
||||
else
|
||||
sed -i '1i# This file is obsolete.\n' "${NET_EXAMPLE}"
|
||||
elog "${NET_EXAMPLE} should be removed."
|
||||
fi
|
||||
elog "The new file is ${ROOT}/usr/share/doc/${PF}/net.example"
|
||||
fi
|
||||
|
||||
# /etc/conf.d/wireless.example is no longer valid
|
||||
local WIRELESS_EXAMPLE="${ROOT}/etc/conf.d/wireless.example"
|
||||
local WIRELESS_MD5='d1fad7da940bf263c76af4d2082124a3'
|
||||
if [[ -e "${WIRELESS_EXAMPLE}" ]] ; then
|
||||
if [[ $(md5sum "${WIRELESS_EXAMPLE}") == ${WIRELESS_MD5}* ]]; then
|
||||
rm -f "${WIRELESS_EXAMPLE}"
|
||||
elog "${WIRELESS_EXAMPLE} is deprecated and has been removed."
|
||||
else
|
||||
sed -i '1i# This file is obsolete.\n' "${WIRELESS_EXAMPLE}"
|
||||
elog "${WIRELESS_EXAMPLE} is deprecated and should be removed."
|
||||
fi
|
||||
elog "If you are using the old style network scripts,"
|
||||
elog "Configure wireless settings in ${ROOT}/etc/conf.d/net"
|
||||
elog "after reviewing ${ROOT}/usr/share/doc/${PF}/net.example"
|
||||
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
|
||||
|
||||
if path_exists -o "${ROOT}"/etc/conf.d/local.{start,stop} ; then
|
||||
ewarn "/etc/conf.d/local.{start,stop} are deprecated. Please convert"
|
||||
ewarn "your files to /etc/conf.d/local and delete the files."
|
||||
fi
|
||||
|
||||
# update the dependency tree after touching all files #224171
|
||||
[[ "${ROOT}" = "/" ]] && "${ROOT}/${LIBDIR}"/rc/bin/rc-depend -u
|
||||
|
||||
elog "You should now update all files in /etc, using etc-update"
|
||||
elog "or equivalent before restarting any services or this host."
|
||||
elog
|
||||
elog "Please read the migration guide available at:"
|
||||
elog "http://www.gentoo.org/doc/en/openrc-migration.xml"
|
||||
}
|
||||
|
|
@ -1,431 +0,0 @@
|
|||
# Copyright 1999-2010 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/sys-apps/openrc/openrc-0.6.8.ebuild,v 1.1 2010/12/08 04:48:45 williamh Exp $
|
||||
|
||||
EAPI="1"
|
||||
|
||||
inherit eutils flag-o-matic multilib toolchain-funcs
|
||||
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
EGIT_REPO_URI="git://git.overlays.gentoo.org/proj/openrc.git"
|
||||
inherit git
|
||||
KEYWORDS=""
|
||||
else
|
||||
SRC_URI="mirror://gentoo/${P}.tar.bz2"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~sparc-fbsd ~x86 ~x86-fbsd"
|
||||
fi
|
||||
|
||||
DESCRIPTION="OpenRC manages the services, startup and shutdown of a host"
|
||||
HOMEPAGE="http://www.gentoo.org/proj/en/base/openrc/"
|
||||
|
||||
LICENSE="BSD-2"
|
||||
SLOT="0"
|
||||
IUSE="debug elibc_glibc ncurses pam pentoo unicode kernel_linux kernel_FreeBSD"
|
||||
|
||||
RDEPEND="virtual/init
|
||||
kernel_FreeBSD? ( sys-process/fuser-bsd )
|
||||
elibc_glibc? ( >=sys-libs/glibc-2.5 )
|
||||
ncurses? ( sys-libs/ncurses )
|
||||
pam? ( virtual/pam )
|
||||
>=sys-apps/baselayout-2.0.0
|
||||
kernel_linux? ( !<sys-apps/module-init-tools-3.2.2-r2 )
|
||||
!<sys-fs/udev-133
|
||||
!<sys-apps/sysvinit-2.86-r11"
|
||||
DEPEND="${RDEPEND}
|
||||
virtual/os-headers"
|
||||
|
||||
make_args() {
|
||||
unset LIBDIR #266688
|
||||
|
||||
MAKE_ARGS="${MAKE_ARGS} LIBNAME=$(get_libdir) LIBEXECDIR=/$(get_libdir)/rc"
|
||||
MAKE_ARGS="${MAKE_ARGS} MKOLDNET=yes"
|
||||
|
||||
local brand="Unknown"
|
||||
if use kernel_linux ; then
|
||||
MAKE_ARGS="${MAKE_ARGS} OS=Linux"
|
||||
brand="Linux"
|
||||
elif use kernel_FreeBSD ; then
|
||||
MAKE_ARGS="${MAKE_ARGS} OS=FreeBSD"
|
||||
brand="FreeBSD"
|
||||
fi
|
||||
if use pentoo ; then
|
||||
export BRANDING="Pentoo ${brand}"
|
||||
else
|
||||
export BRANDING="Gentoo ${brand}"
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_setup() {
|
||||
export DEBUG=$(usev debug)
|
||||
export MKPAM=$(usev pam)
|
||||
export MKTERMCAP=$(usev ncurses)
|
||||
}
|
||||
|
||||
src_unpack() {
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
git_src_unpack
|
||||
else
|
||||
unpack ${A}
|
||||
fi
|
||||
cd "${S}"
|
||||
sed -i 's:0444:0644:' mk/sys.mk
|
||||
sed -i "/^DIR/s:/openrc:/${PF}:" doc/Makefile #241342
|
||||
sed -i '/^CFLAGS+=.*_CC_FLAGS_SH/d' mk/cc.mk #289264
|
||||
|
||||
# Allow user patches to be applied without modifying the ebuild
|
||||
epatch_user
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
make_args
|
||||
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
local ver="git-$(echo ${EGIT_VERSION} | cut -c1-8)"
|
||||
sed -i "/^GITVER[[:space:]]*=/s:=.*:=${ver}:" mk/git.mk
|
||||
fi
|
||||
|
||||
tc-export CC AR RANLIB
|
||||
emake ${MAKE_ARGS} || die "emake ${MAKE_ARGS} failed"
|
||||
}
|
||||
|
||||
# set_config <file> <option name> <yes value> <no value> test
|
||||
# a value of "#" will just comment out the option
|
||||
set_config() {
|
||||
local file="${D}/$1" var=$2 val com
|
||||
eval "${@:5}" && val=$3 || val=$4
|
||||
[[ ${val} == "#" ]] && com="#" && val='\2'
|
||||
sed -i -r -e "/^#?${var}=/{s:=([\"'])?([^ ]*)\1?:=\1${val}\1:;s:^#?:${com}:}" "${file}"
|
||||
}
|
||||
set_config_yes_no() {
|
||||
set_config "$1" "$2" YES NO "${@:3}"
|
||||
}
|
||||
|
||||
src_install() {
|
||||
make_args
|
||||
emake ${MAKE_ARGS} DESTDIR="${D}" install || die
|
||||
|
||||
# install the readme for the new network scripts
|
||||
dodoc README.net
|
||||
|
||||
# move the shared libs back to /usr so ldscript can install
|
||||
# more of a minimal set of files
|
||||
# disabled for now due to #270646
|
||||
#mv "${D}"/$(get_libdir)/lib{einfo,rc}* "${D}"/usr/$(get_libdir)/ || die
|
||||
#gen_usr_ldscript -a einfo rc
|
||||
gen_usr_ldscript libeinfo.so
|
||||
gen_usr_ldscript librc.so
|
||||
|
||||
keepdir /$(get_libdir)/rc/{init.d,tmp}
|
||||
|
||||
# Backup our default runlevels
|
||||
dodir /usr/share/"${PN}"
|
||||
cp -PR "${D}"/etc/runlevels "${D}"/usr/share/${PN} || die
|
||||
rm -rf "${D}"/etc/runlevels
|
||||
|
||||
# Stick with "old" net as the default for now
|
||||
doconfd conf.d/net || die
|
||||
pushd "${D}"/usr/share/${PN}/runlevels/boot > /dev/null
|
||||
rm -f network staticroute
|
||||
ln -s /etc/init.d/net.lo net.lo
|
||||
popd > /dev/null
|
||||
|
||||
# Setup unicode defaults for silly unicode users
|
||||
set_config_yes_no /etc/rc.conf unicode use unicode
|
||||
|
||||
# Cater to the norm
|
||||
set_config_yes_no /etc/conf.d/keymaps windowkeys '(' use x86 '||' use amd64 ')'
|
||||
|
||||
# Support for logfile rotation
|
||||
insinto /etc/logrotate.d
|
||||
newins "${FILESDIR}"/openrc.logrotate openrc
|
||||
}
|
||||
|
||||
add_boot_init() {
|
||||
local initd=$1
|
||||
local runlevel=${2:-boot}
|
||||
# if the initscript is not going to be installed and is not
|
||||
# currently installed, return
|
||||
[[ -e ${D}/etc/init.d/${initd} || -e ${ROOT}/etc/init.d/${initd} ]] \
|
||||
|| return
|
||||
[[ -e ${ROOT}/etc/runlevels/${runlevel}/${initd} ]] && return
|
||||
|
||||
# if runlevels dont exist just yet, then create it but still flag
|
||||
# to pkg_postinst that it needs real setup #277323
|
||||
if [[ ! -d ${ROOT}/etc/runlevels/${runlevel} ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/${runlevel}
|
||||
touch "${ROOT}"/etc/runlevels/.add_boot_init.created
|
||||
fi
|
||||
|
||||
elog "Auto-adding '${initd}' service to your ${runlevel} runlevel"
|
||||
ln -snf /etc/init.d/${initd} "${ROOT}"/etc/runlevels/${runlevel}/${initd}
|
||||
}
|
||||
add_boot_init_mit_config() {
|
||||
local config=$1 initd=$2
|
||||
if [[ -e ${ROOT}${config} ]] ; then
|
||||
if [[ -n $(sed -e 's:#.*::' -e '/^[[:space:]]*$/d' "${ROOT}"/${config}) ]] ; then
|
||||
add_boot_init ${initd}
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_preinst() {
|
||||
local f LIBDIR=$(get_libdir)
|
||||
|
||||
# default net script is just comments, so no point in biting people
|
||||
# in the ass by accident. we save in preinst so that the package
|
||||
# manager doesnt go throwing etc-update crap at us -- postinst is
|
||||
# too late to prevent that. this behavior also lets us keep the
|
||||
# file in the CONTENTS for binary packages.
|
||||
[[ -e ${ROOT}/etc/conf.d/net ]] && cp "${ROOT}"/etc/conf.d/net "${D}"/etc/conf.d/
|
||||
|
||||
# avoid default thrashing in conf.d files when possible #295406
|
||||
if [[ -e ${ROOT}/etc/conf.d/hostname ]] ; then
|
||||
(
|
||||
unset hostname HOSTNAME
|
||||
source "${ROOT}"/etc/conf.d/hostname
|
||||
: ${hostname:=${HOSTNAME}}
|
||||
[[ -n ${hostname} ]] && set_config /etc/conf.d/hostname hostname "${hostname}"
|
||||
)
|
||||
fi
|
||||
|
||||
# upgrade timezone file ... do it before moving clock
|
||||
if [[ -e ${ROOT}/etc/conf.d/clock && ! -e ${ROOT}/etc/timezone ]] ; then
|
||||
(
|
||||
unset TIMEZONE
|
||||
source "${ROOT}"/etc/conf.d/clock
|
||||
[[ -n ${TIMEZONE} ]] && echo "${TIMEZONE}" > "${ROOT}"/etc/timezone
|
||||
)
|
||||
fi
|
||||
|
||||
# /etc/conf.d/clock moved to /etc/conf.d/hwclock
|
||||
local clock
|
||||
use kernel_FreeBSD && clock="adjkerntz" || clock="hwclock"
|
||||
if [[ -e ${ROOT}/etc/conf.d/clock ]] ; then
|
||||
mv "${ROOT}"/etc/conf.d/clock "${ROOT}"/etc/conf.d/${clock}
|
||||
fi
|
||||
if [[ -e ${ROOT}/etc/init.d/clock ]] ; then
|
||||
rm -f "${ROOT}"/etc/init.d/clock
|
||||
fi
|
||||
if [[ -L ${ROOT}/etc/runlevels/boot/clock ]] ; then
|
||||
rm -f "${ROOT}"/etc/runlevels/boot/clock
|
||||
ln -snf /etc/init.d/${clock} "${ROOT}"/etc/runlevels/boot/${clock}
|
||||
fi
|
||||
if [[ -L ${ROOT}${LIBDIR}/rc/init.d/started/clock ]] ; then
|
||||
rm -f "${ROOT}${LIBDIR}"/rc/init.d/started/clock
|
||||
ln -snf /etc/init.d/${clock} "${ROOT}${LIBDIR}"/rc/init.d/started/${clock}
|
||||
fi
|
||||
|
||||
# /etc/conf.d/rc is no longer used for configuration
|
||||
if [[ -e ${ROOT}/etc/conf.d/rc ]] ; then
|
||||
elog "/etc/conf.d/rc is no longer used for configuration."
|
||||
elog "Please migrate your settings to /etc/rc.conf as applicable"
|
||||
elog "and delete /etc/conf.d/rc"
|
||||
fi
|
||||
|
||||
# force net init.d scripts into symlinks
|
||||
for f in "${ROOT}"/etc/init.d/net.* ; do
|
||||
[[ -e ${f} ]] || continue # catch net.* not matching anything
|
||||
[[ ${f} == */net.lo ]] && continue # real file now
|
||||
[[ ${f} == *.openrc.bak ]] && continue
|
||||
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
|
||||
|
||||
# termencoding was added in 0.2.1 and needed in boot
|
||||
has_version ">=sys-apps/openrc-0.2.1" || add_boot_init termencoding
|
||||
|
||||
# set default interactive shell to sulogin if it exists
|
||||
set_config /etc/rc.conf rc_shell /sbin/sulogin "#" test -e /sbin/sulogin
|
||||
|
||||
has_version sys-apps/openrc || migrate_from_baselayout_1
|
||||
has_version ">=sys-apps/openrc-0.4.0" || migrate_udev_init_script
|
||||
}
|
||||
|
||||
# >=openrc-0.4.0 no longer loads the udev addon
|
||||
migrate_udev_init_script() {
|
||||
# make sure udev is in sysinit if it was enabled before
|
||||
local enable_udev=false
|
||||
local rc_devices=$(
|
||||
[[ -f /etc/rc.conf ]] && source /etc/rc.conf
|
||||
[[ -f /etc/conf.d/rc ]] && source /etc/conf.d/rc
|
||||
echo "${rc_devices:-${RC_DEVICES:-auto}}"
|
||||
)
|
||||
case ${rc_devices} in
|
||||
udev|auto)
|
||||
enable_udev=true
|
||||
;;
|
||||
esac
|
||||
|
||||
if $enable_udev; then
|
||||
add_boot_init udev sysinit
|
||||
add_boot_init udev-postmount default
|
||||
fi
|
||||
}
|
||||
|
||||
migrate_from_baselayout_1() {
|
||||
# baselayout boot init scripts have been split out
|
||||
for f in $(cd "${D}"/usr/share/${PN}/runlevels/boot || exit; echo *) ; do
|
||||
# baselayout-1 is always "old" net, so ignore "new" net
|
||||
[[ ${f} == "network" ]] && continue
|
||||
|
||||
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/conf.d/dmcrypt dmcrypt
|
||||
add_boot_init_mit_config /etc/mdadm.conf mdraid
|
||||
add_boot_init_mit_config /etc/evms.conf evms
|
||||
[[ -e ${ROOT}/sbin/dmsetup ]] && add_boot_init 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
|
||||
|
||||
# Handle the conf.d/local.{start,stop} -> conf.d/local transition
|
||||
if path_exists -o "${ROOT}"/etc/conf.d/local.{start,stop} ; then
|
||||
elog "Converting your /etc/conf.d/local.{start,stop} files to /etc/conf.d/local"
|
||||
(
|
||||
sed -n '0,/local_start/p' "${D}"/etc/conf.d/local
|
||||
sed 's:^:\t:' "${ROOT}"/etc/conf.d/local.start 2>/dev/null
|
||||
sed -n '/local_start/,/local_stop/{s:^local_start.*::;p}' "${D}"/etc/conf.d/local
|
||||
sed 's:^:\t:' "${ROOT}"/etc/conf.d/local.stop 2>/dev/null
|
||||
sed -n '/local_stop/,${s:^local_stop.*::;p}' "${D}"/etc/conf.d/local
|
||||
) > "${T}"/conf.d.local
|
||||
mv "${T}"/conf.d.local "${D}"/etc/conf.d/local
|
||||
touch "${D}"/etc/conf.d/local.{start,stop}
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
local LIBDIR=$(get_libdir)
|
||||
|
||||
# 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 ]] || [[ -e ${ROOT}/etc/runlevels/.add_boot_init.created ]] ; then
|
||||
einfo "Copying across default runlevels"
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels "${ROOT}"/etc
|
||||
rm -f "${ROOT}"/etc/runlevels/.add_boot_init.created
|
||||
else
|
||||
if [[ ! -e ${ROOT}/etc/runlevels/sysinit/devfs ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/sysinit
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels/sysinit/* \
|
||||
"${ROOT}"/etc/runlevels/sysinit
|
||||
fi
|
||||
if [[ ! -e ${ROOT}/etc/runlevels/shutdown/mount-ro ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/shutdown
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels/shutdown/* \
|
||||
"${ROOT}"/etc/runlevels/shutdown
|
||||
fi
|
||||
fi
|
||||
|
||||
# /etc/conf.d/net.example is no longer valid
|
||||
local NET_EXAMPLE="${ROOT}/etc/conf.d/net.example"
|
||||
local NET_MD5='8ebebfa07441d39eb54feae0ee4c8210'
|
||||
if [[ -e "${NET_EXAMPLE}" ]] ; then
|
||||
if [[ $(md5sum "${NET_EXAMPLE}") == ${NET_MD5}* ]]; then
|
||||
rm -f "${NET_EXAMPLE}"
|
||||
elog "${NET_EXAMPLE} has been removed."
|
||||
else
|
||||
sed -i '1i# This file is obsolete.\n' "${NET_EXAMPLE}"
|
||||
elog "${NET_EXAMPLE} should be removed."
|
||||
fi
|
||||
elog "The new file is ${ROOT}/usr/share/doc/${PF}/net.example"
|
||||
fi
|
||||
|
||||
# /etc/conf.d/wireless.example is no longer valid
|
||||
local WIRELESS_EXAMPLE="${ROOT}/etc/conf.d/wireless.example"
|
||||
local WIRELESS_MD5='d1fad7da940bf263c76af4d2082124a3'
|
||||
if [[ -e "${WIRELESS_EXAMPLE}" ]] ; then
|
||||
if [[ $(md5sum "${WIRELESS_EXAMPLE}") == ${WIRELESS_MD5}* ]]; then
|
||||
rm -f "${WIRELESS_EXAMPLE}"
|
||||
elog "${WIRELESS_EXAMPLE} is deprecated and has been removed."
|
||||
else
|
||||
sed -i '1i# This file is obsolete.\n' "${WIRELESS_EXAMPLE}"
|
||||
elog "${WIRELESS_EXAMPLE} is deprecated and should be removed."
|
||||
fi
|
||||
elog "If you are using the old style network scripts,"
|
||||
elog "Configure wireless settings in ${ROOT}/etc/conf.d/net"
|
||||
elog "after reviewing ${ROOT}/usr/share/doc/${PF}/net.example"
|
||||
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
|
||||
|
||||
if path_exists -o "${ROOT}"/etc/conf.d/local.{start,stop} ; then
|
||||
ewarn "/etc/conf.d/local.{start,stop} are deprecated. Please convert"
|
||||
ewarn "your files to /etc/conf.d/local and delete the files."
|
||||
fi
|
||||
|
||||
# update the dependency tree after touching all files #224171
|
||||
[[ "${ROOT}" = "/" ]] && "${ROOT}/${LIBDIR}"/rc/bin/rc-depend -u
|
||||
|
||||
elog "You should now update all files in /etc, using etc-update"
|
||||
elog "or equivalent before restarting any services or this host."
|
||||
elog
|
||||
elog "Please read the migration guide available at:"
|
||||
elog "http://www.gentoo.org/doc/en/openrc-migration.xml"
|
||||
}
|
||||
|
|
@ -1,432 +0,0 @@
|
|||
# Copyright 1999-2011 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/sys-apps/openrc/openrc-0.7.0.ebuild,v 1.1 2011/01/13 02:42:09 williamh Exp $
|
||||
|
||||
EAPI="1"
|
||||
|
||||
inherit eutils flag-o-matic multilib toolchain-funcs
|
||||
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
EGIT_REPO_URI="git://git.overlays.gentoo.org/proj/openrc.git"
|
||||
inherit git
|
||||
KEYWORDS=""
|
||||
else
|
||||
SRC_URI="mirror://gentoo/${P}.tar.bz2"
|
||||
KEYWORDS="~alpha amd64 arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~sparc-fbsd x86 ~x86-fbsd"
|
||||
fi
|
||||
|
||||
DESCRIPTION="OpenRC manages the services, startup and shutdown of a host"
|
||||
HOMEPAGE="http://www.gentoo.org/proj/en/base/openrc/"
|
||||
|
||||
LICENSE="BSD-2"
|
||||
SLOT="0"
|
||||
IUSE="debug elibc_glibc ncurses pam pentoo unicode kernel_linux kernel_FreeBSD"
|
||||
|
||||
RDEPEND="virtual/init
|
||||
kernel_FreeBSD? ( sys-process/fuser-bsd )
|
||||
elibc_glibc? ( >=sys-libs/glibc-2.5 )
|
||||
ncurses? ( sys-libs/ncurses )
|
||||
pam? ( virtual/pam )
|
||||
>=sys-apps/baselayout-2.0.0
|
||||
kernel_linux? ( !<sys-apps/module-init-tools-3.2.2-r2 )
|
||||
!<sys-fs/udev-133
|
||||
!<sys-apps/sysvinit-2.86-r11"
|
||||
DEPEND="${RDEPEND}
|
||||
virtual/os-headers"
|
||||
|
||||
make_args() {
|
||||
unset LIBDIR #266688
|
||||
|
||||
MAKE_ARGS="${MAKE_ARGS} LIBNAME=$(get_libdir) LIBEXECDIR=/$(get_libdir)/rc"
|
||||
MAKE_ARGS="${MAKE_ARGS} MKOLDNET=yes"
|
||||
|
||||
local brand="Unknown"
|
||||
if use kernel_linux ; then
|
||||
MAKE_ARGS="${MAKE_ARGS} OS=Linux"
|
||||
brand="Linux"
|
||||
elif use kernel_FreeBSD ; then
|
||||
MAKE_ARGS="${MAKE_ARGS} OS=FreeBSD"
|
||||
brand="FreeBSD"
|
||||
fi
|
||||
if use pentoo ; then
|
||||
export BRANDING="Pentoo ${brand}"
|
||||
else
|
||||
export BRANDING="Gentoo ${brand}"
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_setup() {
|
||||
export DEBUG=$(usev debug)
|
||||
export MKPAM=$(usev pam)
|
||||
export MKTERMCAP=$(usev ncurses)
|
||||
}
|
||||
|
||||
src_unpack() {
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
git_src_unpack
|
||||
else
|
||||
unpack ${A}
|
||||
fi
|
||||
cd "${S}"
|
||||
sed -i 's:0444:0644:' mk/sys.mk
|
||||
sed -i "/^DIR/s:/openrc:/${PF}:" doc/Makefile #241342
|
||||
sed -i '/^CFLAGS+=.*_CC_FLAGS_SH/d' mk/cc.mk #289264
|
||||
|
||||
# Allow user patches to be applied without modifying the ebuild
|
||||
epatch_user
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
make_args
|
||||
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
local ver="git-$(echo ${EGIT_VERSION} | cut -c1-8)"
|
||||
sed -i "/^GITVER[[:space:]]*=/s:=.*:=${ver}:" mk/git.mk
|
||||
fi
|
||||
|
||||
tc-export CC AR RANLIB
|
||||
emake ${MAKE_ARGS} || die "emake ${MAKE_ARGS} failed"
|
||||
}
|
||||
|
||||
# set_config <file> <option name> <yes value> <no value> test
|
||||
# a value of "#" will just comment out the option
|
||||
set_config() {
|
||||
local file="${D}/$1" var=$2 val com
|
||||
eval "${@:5}" && val=$3 || val=$4
|
||||
[[ ${val} == "#" ]] && com="#" && val='\2'
|
||||
sed -i -r -e "/^#?${var}=/{s:=([\"'])?([^ ]*)\1?:=\1${val}\1:;s:^#?:${com}:}" "${file}"
|
||||
}
|
||||
set_config_yes_no() {
|
||||
set_config "$1" "$2" YES NO "${@:3}"
|
||||
}
|
||||
|
||||
src_install() {
|
||||
make_args
|
||||
emake ${MAKE_ARGS} DESTDIR="${D}" install || die
|
||||
|
||||
# install the readme for the new network scripts
|
||||
dodoc README.net
|
||||
|
||||
# move the shared libs back to /usr so ldscript can install
|
||||
# more of a minimal set of files
|
||||
# disabled for now due to #270646
|
||||
#mv "${D}"/$(get_libdir)/lib{einfo,rc}* "${D}"/usr/$(get_libdir)/ || die
|
||||
#gen_usr_ldscript -a einfo rc
|
||||
gen_usr_ldscript libeinfo.so
|
||||
gen_usr_ldscript librc.so
|
||||
|
||||
keepdir /$(get_libdir)/rc/{init.d,tmp}
|
||||
|
||||
# Backup our default runlevels
|
||||
dodir /usr/share/"${PN}"
|
||||
cp -PR "${D}"/etc/runlevels "${D}"/usr/share/${PN} || die
|
||||
rm -rf "${D}"/etc/runlevels
|
||||
|
||||
# Stick with "old" net as the default for now
|
||||
doconfd conf.d/net || die
|
||||
pushd "${D}"/usr/share/${PN}/runlevels/boot > /dev/null
|
||||
rm -f network staticroute
|
||||
ln -s /etc/init.d/net.lo net.lo
|
||||
popd > /dev/null
|
||||
|
||||
# Setup unicode defaults for silly unicode users
|
||||
set_config_yes_no /etc/rc.conf unicode use unicode
|
||||
|
||||
# Cater to the norm
|
||||
set_config_yes_no /etc/conf.d/keymaps windowkeys '(' use x86 '||' use amd64 ')'
|
||||
|
||||
# Support for logfile rotation
|
||||
insinto /etc/logrotate.d
|
||||
newins "${FILESDIR}"/openrc.logrotate openrc
|
||||
}
|
||||
|
||||
add_boot_init() {
|
||||
local initd=$1
|
||||
local runlevel=${2:-boot}
|
||||
# if the initscript is not going to be installed and is not
|
||||
# currently installed, return
|
||||
[[ -e ${D}/etc/init.d/${initd} || -e ${ROOT}/etc/init.d/${initd} ]] \
|
||||
|| return
|
||||
[[ -e ${ROOT}/etc/runlevels/${runlevel}/${initd} ]] && return
|
||||
|
||||
# if runlevels dont exist just yet, then create it but still flag
|
||||
# to pkg_postinst that it needs real setup #277323
|
||||
if [[ ! -d ${ROOT}/etc/runlevels/${runlevel} ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/${runlevel}
|
||||
touch "${ROOT}"/etc/runlevels/.add_boot_init.created
|
||||
fi
|
||||
|
||||
elog "Auto-adding '${initd}' service to your ${runlevel} runlevel"
|
||||
ln -snf /etc/init.d/${initd} "${ROOT}"/etc/runlevels/${runlevel}/${initd}
|
||||
}
|
||||
add_boot_init_mit_config() {
|
||||
local config=$1 initd=$2
|
||||
if [[ -e ${ROOT}${config} ]] ; then
|
||||
if [[ -n $(sed -e 's:#.*::' -e '/^[[:space:]]*$/d' "${ROOT}"/${config}) ]] ; then
|
||||
add_boot_init ${initd}
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_preinst() {
|
||||
local f LIBDIR=$(get_libdir)
|
||||
|
||||
# default net script is just comments, so no point in biting people
|
||||
# in the ass by accident. we save in preinst so that the package
|
||||
# manager doesnt go throwing etc-update crap at us -- postinst is
|
||||
# too late to prevent that. this behavior also lets us keep the
|
||||
# file in the CONTENTS for binary packages.
|
||||
[[ -e ${ROOT}/etc/conf.d/net ]] && cp "${ROOT}"/etc/conf.d/net "${D}"/etc/conf.d/
|
||||
|
||||
# avoid default thrashing in conf.d files when possible #295406
|
||||
if [[ -e ${ROOT}/etc/conf.d/hostname ]] ; then
|
||||
(
|
||||
unset hostname HOSTNAME
|
||||
source "${ROOT}"/etc/conf.d/hostname
|
||||
: ${hostname:=${HOSTNAME}}
|
||||
[[ -n ${hostname} ]] && set_config /etc/conf.d/hostname hostname "${hostname}"
|
||||
)
|
||||
fi
|
||||
|
||||
# upgrade timezone file ... do it before moving clock
|
||||
if [[ -e ${ROOT}/etc/conf.d/clock && ! -e ${ROOT}/etc/timezone ]] ; then
|
||||
(
|
||||
unset TIMEZONE
|
||||
source "${ROOT}"/etc/conf.d/clock
|
||||
[[ -n ${TIMEZONE} ]] && echo "${TIMEZONE}" > "${ROOT}"/etc/timezone
|
||||
)
|
||||
fi
|
||||
|
||||
# /etc/conf.d/clock moved to /etc/conf.d/hwclock
|
||||
local clock
|
||||
use kernel_FreeBSD && clock="adjkerntz" || clock="hwclock"
|
||||
if [[ -e ${ROOT}/etc/conf.d/clock ]] ; then
|
||||
mv "${ROOT}"/etc/conf.d/clock "${ROOT}"/etc/conf.d/${clock}
|
||||
fi
|
||||
if [[ -e ${ROOT}/etc/init.d/clock ]] ; then
|
||||
rm -f "${ROOT}"/etc/init.d/clock
|
||||
fi
|
||||
if [[ -L ${ROOT}/etc/runlevels/boot/clock ]] ; then
|
||||
rm -f "${ROOT}"/etc/runlevels/boot/clock
|
||||
ln -snf /etc/init.d/${clock} "${ROOT}"/etc/runlevels/boot/${clock}
|
||||
fi
|
||||
if [[ -L ${ROOT}${LIBDIR}/rc/init.d/started/clock ]] ; then
|
||||
rm -f "${ROOT}${LIBDIR}"/rc/init.d/started/clock
|
||||
ln -snf /etc/init.d/${clock} "${ROOT}${LIBDIR}"/rc/init.d/started/${clock}
|
||||
fi
|
||||
|
||||
# /etc/conf.d/rc is no longer used for configuration
|
||||
if [[ -e ${ROOT}/etc/conf.d/rc ]] ; then
|
||||
elog "/etc/conf.d/rc is no longer used for configuration."
|
||||
elog "Please migrate your settings to /etc/rc.conf as applicable"
|
||||
elog "and delete /etc/conf.d/rc"
|
||||
fi
|
||||
|
||||
# force net init.d scripts into symlinks
|
||||
for f in "${ROOT}"/etc/init.d/net.* ; do
|
||||
[[ -e ${f} ]] || continue # catch net.* not matching anything
|
||||
[[ ${f} == */net.lo ]] && continue # real file now
|
||||
[[ ${f} == *.openrc.bak ]] && continue
|
||||
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
|
||||
|
||||
# termencoding was added in 0.2.1 and needed in boot
|
||||
has_version ">=sys-apps/openrc-0.2.1" || add_boot_init termencoding
|
||||
|
||||
# set default interactive shell to sulogin if it exists
|
||||
set_config /etc/rc.conf rc_shell /sbin/sulogin "#" test -e /sbin/sulogin
|
||||
|
||||
has_version sys-apps/openrc || migrate_from_baselayout_1
|
||||
has_version ">=sys-apps/openrc-0.4.0" || migrate_udev_init_script
|
||||
}
|
||||
|
||||
# >=openrc-0.4.0 no longer loads the udev addon
|
||||
migrate_udev_init_script() {
|
||||
# make sure udev is in sysinit if it was enabled before
|
||||
local enable_udev=false
|
||||
local rc_devices=$(
|
||||
[[ -f /etc/rc.conf ]] && source /etc/rc.conf
|
||||
[[ -f /etc/conf.d/rc ]] && source /etc/conf.d/rc
|
||||
echo "${rc_devices:-${RC_DEVICES:-auto}}"
|
||||
)
|
||||
case ${rc_devices} in
|
||||
udev|auto)
|
||||
enable_udev=true
|
||||
;;
|
||||
esac
|
||||
|
||||
if $enable_udev; then
|
||||
add_boot_init udev sysinit
|
||||
add_boot_init udev-postmount default
|
||||
fi
|
||||
}
|
||||
|
||||
migrate_from_baselayout_1() {
|
||||
# baselayout boot init scripts have been split out
|
||||
for f in $(cd "${D}"/usr/share/${PN}/runlevels/boot || exit; echo *) ; do
|
||||
# baselayout-1 is always "old" net, so ignore "new" net
|
||||
[[ ${f} == "network" ]] && continue
|
||||
|
||||
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/conf.d/dmcrypt dmcrypt
|
||||
add_boot_init_mit_config /etc/mdadm.conf mdraid
|
||||
add_boot_init_mit_config /etc/evms.conf evms
|
||||
[[ -e ${ROOT}/sbin/dmsetup ]] && add_boot_init 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
|
||||
|
||||
# Handle the conf.d/local.{start,stop} -> conf.d/local transition
|
||||
if path_exists -o "${ROOT}"/etc/conf.d/local.{start,stop} ; then
|
||||
elog "Converting your /etc/conf.d/local.{start,stop} files to /etc/conf.d/local"
|
||||
(
|
||||
sed -n '0,/local_start/p' "${D}"/etc/conf.d/local
|
||||
sed 's:^:\t:' "${ROOT}"/etc/conf.d/local.start 2>/dev/null
|
||||
sed -n '/local_start/,/local_stop/{s:^local_start.*::;p}' "${D}"/etc/conf.d/local
|
||||
sed 's:^:\t:' "${ROOT}"/etc/conf.d/local.stop 2>/dev/null
|
||||
sed -n '/local_stop/,${s:^local_stop.*::;p}' "${D}"/etc/conf.d/local
|
||||
) > "${T}"/conf.d.local
|
||||
mv "${T}"/conf.d.local "${D}"/etc/conf.d/local
|
||||
touch "${D}"/etc/conf.d/local.{start,stop}
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
local LIBDIR=$(get_libdir)
|
||||
|
||||
# Remove old baselayout links
|
||||
rm -f "${ROOT}"/etc/runlevels/boot/{check{fs,root},rmnologin}
|
||||
rm -f "${ROOT}"/etc/init.d/{depscan,runscript}.sh
|
||||
|
||||
# Make our runlevels if they don't exist
|
||||
if [[ ! -e ${ROOT}/etc/runlevels ]] || [[ -e ${ROOT}/etc/runlevels/.add_boot_init.created ]] ; then
|
||||
einfo "Copying across default runlevels"
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels "${ROOT}"/etc
|
||||
rm -f "${ROOT}"/etc/runlevels/.add_boot_init.created
|
||||
else
|
||||
if [[ ! -e ${ROOT}/etc/runlevels/sysinit/devfs ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/sysinit
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels/sysinit/* \
|
||||
"${ROOT}"/etc/runlevels/sysinit
|
||||
fi
|
||||
if [[ ! -e ${ROOT}/etc/runlevels/shutdown/mount-ro ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/shutdown
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels/shutdown/* \
|
||||
"${ROOT}"/etc/runlevels/shutdown
|
||||
fi
|
||||
fi
|
||||
|
||||
# /etc/conf.d/net.example is no longer valid
|
||||
local NET_EXAMPLE="${ROOT}/etc/conf.d/net.example"
|
||||
local NET_MD5='8ebebfa07441d39eb54feae0ee4c8210'
|
||||
if [[ -e "${NET_EXAMPLE}" ]] ; then
|
||||
if [[ $(md5sum "${NET_EXAMPLE}") == ${NET_MD5}* ]]; then
|
||||
rm -f "${NET_EXAMPLE}"
|
||||
elog "${NET_EXAMPLE} has been removed."
|
||||
else
|
||||
sed -i '1i# This file is obsolete.\n' "${NET_EXAMPLE}"
|
||||
elog "${NET_EXAMPLE} should be removed."
|
||||
fi
|
||||
elog "The new file is ${ROOT}/usr/share/doc/${PF}/net.example"
|
||||
fi
|
||||
|
||||
# /etc/conf.d/wireless.example is no longer valid
|
||||
local WIRELESS_EXAMPLE="${ROOT}/etc/conf.d/wireless.example"
|
||||
local WIRELESS_MD5='d1fad7da940bf263c76af4d2082124a3'
|
||||
if [[ -e "${WIRELESS_EXAMPLE}" ]] ; then
|
||||
if [[ $(md5sum "${WIRELESS_EXAMPLE}") == ${WIRELESS_MD5}* ]]; then
|
||||
rm -f "${WIRELESS_EXAMPLE}"
|
||||
elog "${WIRELESS_EXAMPLE} is deprecated and has been removed."
|
||||
else
|
||||
sed -i '1i# This file is obsolete.\n' "${WIRELESS_EXAMPLE}"
|
||||
elog "${WIRELESS_EXAMPLE} is deprecated and should be removed."
|
||||
fi
|
||||
elog "If you are using the old style network scripts,"
|
||||
elog "Configure wireless settings in ${ROOT}/etc/conf.d/net"
|
||||
elog "after reviewing ${ROOT}/usr/share/doc/${PF}/net.example"
|
||||
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
|
||||
|
||||
if path_exists -o "${ROOT}"/etc/conf.d/local.{start,stop} ; then
|
||||
ewarn "/etc/conf.d/local.{start,stop} are deprecated. Please convert"
|
||||
ewarn "your files to /etc/conf.d/local and delete the files."
|
||||
fi
|
||||
|
||||
# update the dependency tree after touching all files #224171
|
||||
[[ "${ROOT}" = "/" ]] && "${ROOT}/${LIBDIR}"/rc/bin/rc-depend -u
|
||||
|
||||
elog "You should now update all files in /etc, using etc-update"
|
||||
elog "or equivalent before restarting any services or this host."
|
||||
elog
|
||||
elog "Please read the migration guide available at:"
|
||||
elog "http://www.gentoo.org/doc/en/openrc-migration.xml"
|
||||
}
|
||||
|
|
@ -1,428 +0,0 @@
|
|||
# Copyright 1999-2011 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/sys-apps/openrc/openrc-0.8.0.ebuild,v 1.1 2011/03/22 06:13:06 williamh Exp $
|
||||
|
||||
EAPI="1"
|
||||
|
||||
inherit eutils flag-o-matic multilib toolchain-funcs
|
||||
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
EGIT_REPO_URI="git://git.overlays.gentoo.org/proj/openrc.git"
|
||||
inherit git
|
||||
KEYWORDS=""
|
||||
else
|
||||
SRC_URI="mirror://gentoo/${P}.tar.bz2"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~sparc-fbsd ~x86 ~x86-fbsd"
|
||||
fi
|
||||
|
||||
DESCRIPTION="OpenRC manages the services, startup and shutdown of a host"
|
||||
HOMEPAGE="http://www.gentoo.org/proj/en/base/openrc/"
|
||||
|
||||
LICENSE="BSD-2"
|
||||
SLOT="0"
|
||||
IUSE="debug elibc_glibc ncurses pam pentoo selinux unicode kernel_linux kernel_FreeBSD"
|
||||
|
||||
RDEPEND="virtual/init
|
||||
kernel_FreeBSD? ( sys-process/fuser-bsd )
|
||||
elibc_glibc? ( >=sys-libs/glibc-2.5 )
|
||||
ncurses? ( sys-libs/ncurses )
|
||||
pam? ( virtual/pam )
|
||||
>=sys-apps/baselayout-2.0.0
|
||||
kernel_linux? ( !<sys-apps/module-init-tools-3.2.2-r2 )
|
||||
!<sys-fs/udev-133
|
||||
!<sys-apps/sysvinit-2.86-r11"
|
||||
DEPEND="${RDEPEND}
|
||||
virtual/os-headers"
|
||||
|
||||
make_args() {
|
||||
unset LIBDIR #266688
|
||||
|
||||
MAKE_ARGS="${MAKE_ARGS} LIBNAME=$(get_libdir) LIBEXECDIR=/$(get_libdir)/rc"
|
||||
MAKE_ARGS="${MAKE_ARGS} MKOLDNET=yes"
|
||||
|
||||
local brand="Unknown"
|
||||
if use kernel_linux ; then
|
||||
MAKE_ARGS="${MAKE_ARGS} OS=Linux"
|
||||
brand="Linux"
|
||||
elif use kernel_FreeBSD ; then
|
||||
MAKE_ARGS="${MAKE_ARGS} OS=FreeBSD"
|
||||
brand="FreeBSD"
|
||||
fi
|
||||
if use selinux; then
|
||||
MAKE_ARGS="${MAKE_ARGS} MKSELINUX=yes"
|
||||
fi
|
||||
if use pentoo ; then
|
||||
export BRANDING="Pentoo ${brand}"
|
||||
else
|
||||
export BRANDING="Gentoo ${brand}"
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_setup() {
|
||||
export DEBUG=$(usev debug)
|
||||
export MKPAM=$(usev pam)
|
||||
export MKTERMCAP=$(usev ncurses)
|
||||
}
|
||||
|
||||
src_unpack() {
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
git_src_unpack
|
||||
else
|
||||
unpack ${A}
|
||||
fi
|
||||
cd "${S}"
|
||||
sed -i 's:0444:0644:' mk/sys.mk
|
||||
sed -i "/^DIR/s:/openrc:/${PF}:" doc/Makefile #241342
|
||||
|
||||
# Allow user patches to be applied without modifying the ebuild
|
||||
epatch_user
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
make_args
|
||||
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
local ver="git-$(echo ${EGIT_VERSION} | cut -c1-8)"
|
||||
sed -i "/^GITVER[[:space:]]*=/s:=.*:=${ver}:" mk/git.mk
|
||||
fi
|
||||
|
||||
tc-export CC AR RANLIB
|
||||
emake ${MAKE_ARGS} || die "emake ${MAKE_ARGS} failed"
|
||||
}
|
||||
|
||||
# set_config <file> <option name> <yes value> <no value> test
|
||||
# a value of "#" will just comment out the option
|
||||
set_config() {
|
||||
local file="${D}/$1" var=$2 val com
|
||||
eval "${@:5}" && val=$3 || val=$4
|
||||
[[ ${val} == "#" ]] && com="#" && val='\2'
|
||||
sed -i -r -e "/^#?${var}=/{s:=([\"'])?([^ ]*)\1?:=\1${val}\1:;s:^#?:${com}:}" "${file}"
|
||||
}
|
||||
set_config_yes_no() {
|
||||
set_config "$1" "$2" YES NO "${@:3}"
|
||||
}
|
||||
|
||||
src_install() {
|
||||
make_args
|
||||
emake ${MAKE_ARGS} DESTDIR="${D}" install || die
|
||||
|
||||
# install the readme for the new network scripts
|
||||
dodoc README.newnet
|
||||
|
||||
# move the shared libs back to /usr so ldscript can install
|
||||
# more of a minimal set of files
|
||||
# disabled for now due to #270646
|
||||
#mv "${D}"/$(get_libdir)/lib{einfo,rc}* "${D}"/usr/$(get_libdir)/ || die
|
||||
#gen_usr_ldscript -a einfo rc
|
||||
gen_usr_ldscript libeinfo.so
|
||||
gen_usr_ldscript librc.so
|
||||
|
||||
keepdir /$(get_libdir)/rc/{init.d,tmp}
|
||||
|
||||
# Backup our default runlevels
|
||||
dodir /usr/share/"${PN}"
|
||||
cp -PR "${D}"/etc/runlevels "${D}"/usr/share/${PN} || die
|
||||
rm -rf "${D}"/etc/runlevels
|
||||
|
||||
# Stick with "old" net as the default for now
|
||||
doconfd conf.d/net || die
|
||||
pushd "${D}"/usr/share/${PN}/runlevels/boot > /dev/null
|
||||
rm -f network staticroute
|
||||
ln -s /etc/init.d/net.lo net.lo
|
||||
popd > /dev/null
|
||||
|
||||
# Setup unicode defaults for silly unicode users
|
||||
set_config_yes_no /etc/rc.conf unicode use unicode
|
||||
|
||||
# Cater to the norm
|
||||
set_config_yes_no /etc/conf.d/keymaps windowkeys '(' use x86 '||' use amd64 ')'
|
||||
|
||||
# Support for logfile rotation
|
||||
insinto /etc/logrotate.d
|
||||
newins "${FILESDIR}"/openrc.logrotate openrc
|
||||
}
|
||||
|
||||
add_boot_init() {
|
||||
local initd=$1
|
||||
local runlevel=${2:-boot}
|
||||
# if the initscript is not going to be installed and is not
|
||||
# currently installed, return
|
||||
[[ -e ${D}/etc/init.d/${initd} || -e ${ROOT}/etc/init.d/${initd} ]] \
|
||||
|| return
|
||||
[[ -e ${ROOT}/etc/runlevels/${runlevel}/${initd} ]] && return
|
||||
|
||||
# if runlevels dont exist just yet, then create it but still flag
|
||||
# to pkg_postinst that it needs real setup #277323
|
||||
if [[ ! -d ${ROOT}/etc/runlevels/${runlevel} ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/${runlevel}
|
||||
touch "${ROOT}"/etc/runlevels/.add_boot_init.created
|
||||
fi
|
||||
|
||||
elog "Auto-adding '${initd}' service to your ${runlevel} runlevel"
|
||||
ln -snf /etc/init.d/${initd} "${ROOT}"/etc/runlevels/${runlevel}/${initd}
|
||||
}
|
||||
add_boot_init_mit_config() {
|
||||
local config=$1 initd=$2
|
||||
if [[ -e ${ROOT}${config} ]] ; then
|
||||
if [[ -n $(sed -e 's:#.*::' -e '/^[[:space:]]*$/d' "${ROOT}"/${config}) ]] ; then
|
||||
add_boot_init ${initd}
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_preinst() {
|
||||
local f LIBDIR=$(get_libdir)
|
||||
|
||||
# default net script is just comments, so no point in biting people
|
||||
# in the ass by accident. we save in preinst so that the package
|
||||
# manager doesnt go throwing etc-update crap at us -- postinst is
|
||||
# too late to prevent that. this behavior also lets us keep the
|
||||
# file in the CONTENTS for binary packages.
|
||||
[[ -e ${ROOT}/etc/conf.d/net ]] && cp "${ROOT}"/etc/conf.d/net "${D}"/etc/conf.d/
|
||||
|
||||
# avoid default thrashing in conf.d files when possible #295406
|
||||
if [[ -e ${ROOT}/etc/conf.d/hostname ]] ; then
|
||||
(
|
||||
unset hostname HOSTNAME
|
||||
source "${ROOT}"/etc/conf.d/hostname
|
||||
: ${hostname:=${HOSTNAME}}
|
||||
[[ -n ${hostname} ]] && set_config /etc/conf.d/hostname hostname "${hostname}"
|
||||
)
|
||||
fi
|
||||
|
||||
# upgrade timezone file ... do it before moving clock
|
||||
if [[ -e ${ROOT}/etc/conf.d/clock && ! -e ${ROOT}/etc/timezone ]] ; then
|
||||
(
|
||||
unset TIMEZONE
|
||||
source "${ROOT}"/etc/conf.d/clock
|
||||
[[ -n ${TIMEZONE} ]] && echo "${TIMEZONE}" > "${ROOT}"/etc/timezone
|
||||
)
|
||||
fi
|
||||
|
||||
# /etc/conf.d/clock moved to /etc/conf.d/hwclock
|
||||
local clock
|
||||
use kernel_FreeBSD && clock="adjkerntz" || clock="hwclock"
|
||||
if [[ -e ${ROOT}/etc/conf.d/clock ]] ; then
|
||||
mv "${ROOT}"/etc/conf.d/clock "${ROOT}"/etc/conf.d/${clock}
|
||||
fi
|
||||
if [[ -e ${ROOT}/etc/init.d/clock ]] ; then
|
||||
rm -f "${ROOT}"/etc/init.d/clock
|
||||
fi
|
||||
if [[ -L ${ROOT}/etc/runlevels/boot/clock ]] ; then
|
||||
rm -f "${ROOT}"/etc/runlevels/boot/clock
|
||||
ln -snf /etc/init.d/${clock} "${ROOT}"/etc/runlevels/boot/${clock}
|
||||
fi
|
||||
if [[ -L ${ROOT}${LIBDIR}/rc/init.d/started/clock ]] ; then
|
||||
rm -f "${ROOT}${LIBDIR}"/rc/init.d/started/clock
|
||||
ln -snf /etc/init.d/${clock} "${ROOT}${LIBDIR}"/rc/init.d/started/${clock}
|
||||
fi
|
||||
|
||||
# /etc/conf.d/rc is no longer used for configuration
|
||||
if [[ -e ${ROOT}/etc/conf.d/rc ]] ; then
|
||||
elog "/etc/conf.d/rc is no longer used for configuration."
|
||||
elog "Please migrate your settings to /etc/rc.conf as applicable"
|
||||
elog "and delete /etc/conf.d/rc"
|
||||
fi
|
||||
|
||||
# force net init.d scripts into symlinks
|
||||
for f in "${ROOT}"/etc/init.d/net.* ; do
|
||||
[[ -e ${f} ]] || continue # catch net.* not matching anything
|
||||
[[ ${f} == */net.lo ]] && continue # real file now
|
||||
[[ ${f} == *.openrc.bak ]] && continue
|
||||
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
|
||||
|
||||
# termencoding was added in 0.2.1 and needed in boot
|
||||
has_version ">=sys-apps/openrc-0.2.1" || add_boot_init termencoding
|
||||
|
||||
# set default interactive shell to sulogin if it exists
|
||||
set_config /etc/rc.conf rc_shell /sbin/sulogin "#" test -e /sbin/sulogin
|
||||
|
||||
has_version sys-apps/openrc || migrate_from_baselayout_1
|
||||
has_version ">=sys-apps/openrc-0.4.0" || migrate_udev_init_script
|
||||
}
|
||||
|
||||
# >=openrc-0.4.0 no longer loads the udev addon
|
||||
migrate_udev_init_script() {
|
||||
# make sure udev is in sysinit if it was enabled before
|
||||
local enable_udev=false
|
||||
local rc_devices=$(
|
||||
[[ -f /etc/rc.conf ]] && source /etc/rc.conf
|
||||
[[ -f /etc/conf.d/rc ]] && source /etc/conf.d/rc
|
||||
echo "${rc_devices:-${RC_DEVICES:-auto}}"
|
||||
)
|
||||
case ${rc_devices} in
|
||||
udev|auto)
|
||||
enable_udev=true
|
||||
;;
|
||||
esac
|
||||
|
||||
if $enable_udev; then
|
||||
add_boot_init udev sysinit
|
||||
add_boot_init udev-postmount default
|
||||
fi
|
||||
}
|
||||
|
||||
migrate_from_baselayout_1() {
|
||||
# baselayout boot init scripts have been split out
|
||||
for f in $(cd "${D}"/usr/share/${PN}/runlevels/boot || exit; echo *) ; do
|
||||
# baselayout-1 is always "old" net, so ignore "new" net
|
||||
[[ ${f} == "network" ]] && continue
|
||||
|
||||
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/conf.d/dmcrypt dmcrypt
|
||||
add_boot_init_mit_config /etc/mdadm.conf mdraid
|
||||
add_boot_init_mit_config /etc/evms.conf evms
|
||||
[[ -e ${ROOT}/sbin/dmsetup ]] && add_boot_init 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
|
||||
|
||||
# Handle the conf.d/local.{start,stop} -> local.d transition
|
||||
if path_exists -o "${ROOT}"/etc/conf.d/local.{start,stop} ; then
|
||||
elog "Moving your /etc/conf.d/local.{start,stop} files to /etc/local.d"
|
||||
mv "${ROOT}"/etc/conf.d/local.start "${ROOT}"/local.d/baselayout1.start
|
||||
mv "${ROOT}"/etc/conf.d/local.stop "${ROOT}"/local.d/baselayout1.stop
|
||||
chmod +x "${ROOT}"/local.d/*{start,stop}
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
local LIBDIR=$(get_libdir)
|
||||
|
||||
# Remove old baselayout links
|
||||
rm -f "${ROOT}"/etc/runlevels/boot/{check{fs,root},rmnologin}
|
||||
rm -f "${ROOT}"/etc/init.d/{depscan,runscript}.sh
|
||||
|
||||
# Make our runlevels if they don't exist
|
||||
if [[ ! -e ${ROOT}/etc/runlevels ]] || [[ -e ${ROOT}/etc/runlevels/.add_boot_init.created ]] ; then
|
||||
einfo "Copying across default runlevels"
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels "${ROOT}"/etc
|
||||
rm -f "${ROOT}"/etc/runlevels/.add_boot_init.created
|
||||
else
|
||||
if [[ ! -e ${ROOT}/etc/runlevels/sysinit/devfs ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/sysinit
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels/sysinit/* \
|
||||
"${ROOT}"/etc/runlevels/sysinit
|
||||
fi
|
||||
if [[ ! -e ${ROOT}/etc/runlevels/shutdown/mount-ro ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/shutdown
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels/shutdown/* \
|
||||
"${ROOT}"/etc/runlevels/shutdown
|
||||
fi
|
||||
fi
|
||||
|
||||
# /etc/conf.d/net.example is no longer valid
|
||||
local NET_EXAMPLE="${ROOT}/etc/conf.d/net.example"
|
||||
local NET_MD5='8ebebfa07441d39eb54feae0ee4c8210'
|
||||
if [[ -e "${NET_EXAMPLE}" ]] ; then
|
||||
if [[ $(md5sum "${NET_EXAMPLE}") == ${NET_MD5}* ]]; then
|
||||
rm -f "${NET_EXAMPLE}"
|
||||
elog "${NET_EXAMPLE} has been removed."
|
||||
else
|
||||
sed -i '1i# This file is obsolete.\n' "${NET_EXAMPLE}"
|
||||
elog "${NET_EXAMPLE} should be removed."
|
||||
fi
|
||||
elog "The new file is ${ROOT}/usr/share/doc/${PF}/net.example"
|
||||
fi
|
||||
|
||||
# /etc/conf.d/wireless.example is no longer valid
|
||||
local WIRELESS_EXAMPLE="${ROOT}/etc/conf.d/wireless.example"
|
||||
local WIRELESS_MD5='d1fad7da940bf263c76af4d2082124a3'
|
||||
if [[ -e "${WIRELESS_EXAMPLE}" ]] ; then
|
||||
if [[ $(md5sum "${WIRELESS_EXAMPLE}") == ${WIRELESS_MD5}* ]]; then
|
||||
rm -f "${WIRELESS_EXAMPLE}"
|
||||
elog "${WIRELESS_EXAMPLE} is deprecated and has been removed."
|
||||
else
|
||||
sed -i '1i# This file is obsolete.\n' "${WIRELESS_EXAMPLE}"
|
||||
elog "${WIRELESS_EXAMPLE} is deprecated and should be removed."
|
||||
fi
|
||||
elog "If you are using the old style network scripts,"
|
||||
elog "Configure wireless settings in ${ROOT}/etc/conf.d/net"
|
||||
elog "after reviewing ${ROOT}/usr/share/doc/${PF}/net.example"
|
||||
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
|
||||
|
||||
if path_exists -o "${ROOT}"/etc/conf.d/local.{start,stop} ; then
|
||||
ewarn "/etc/conf.d/local.{start,stop} are deprecated. Please convert"
|
||||
ewarn "your files to /etc/conf.d/local and delete the files."
|
||||
fi
|
||||
|
||||
# update the dependency tree after touching all files #224171
|
||||
[[ "${ROOT}" = "/" ]] && "${ROOT}/${LIBDIR}"/rc/bin/rc-depend -u
|
||||
|
||||
elog "You should now update all files in /etc, using etc-update"
|
||||
elog "or equivalent before restarting any services or this host."
|
||||
elog
|
||||
elog "Please read the migration guide available at:"
|
||||
elog "http://www.gentoo.org/doc/en/openrc-migration.xml"
|
||||
}
|
||||
|
|
@ -1,435 +0,0 @@
|
|||
# Copyright 1999-2011 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/sys-apps/openrc/openrc-0.8.2-r1.ebuild,v 1.1 2011/04/28 19:50:51 williamh Exp $
|
||||
|
||||
EAPI="1"
|
||||
|
||||
inherit eutils flag-o-matic multilib toolchain-funcs
|
||||
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
EGIT_REPO_URI="git://git.overlays.gentoo.org/proj/openrc.git"
|
||||
inherit git
|
||||
KEYWORDS=""
|
||||
else
|
||||
SRC_URI="mirror://gentoo/${P}.tar.bz2"
|
||||
KEYWORDS="alpha amd64 arm hppa ia64 ~m68k ~mips ppc ppc64 ~s390 sh sparc x86 ~sparc-fbsd ~x86-fbsd"
|
||||
fi
|
||||
|
||||
DESCRIPTION="OpenRC manages the services, startup and shutdown of a host"
|
||||
HOMEPAGE="http://www.gentoo.org/proj/en/base/openrc/"
|
||||
|
||||
LICENSE="BSD-2"
|
||||
SLOT="0"
|
||||
IUSE="debug elibc_glibc ncurses pam pentoo selinux unicode kernel_linux kernel_FreeBSD"
|
||||
|
||||
RDEPEND="virtual/init
|
||||
kernel_FreeBSD? ( sys-process/fuser-bsd )
|
||||
elibc_glibc? ( >=sys-libs/glibc-2.5 )
|
||||
ncurses? ( sys-libs/ncurses )
|
||||
pam? ( virtual/pam )
|
||||
>=sys-apps/baselayout-2.0.0
|
||||
kernel_linux? ( !<sys-apps/module-init-tools-3.2.2-r2 )
|
||||
!<sys-fs/udev-133
|
||||
!<sys-apps/sysvinit-2.86-r11"
|
||||
DEPEND="${RDEPEND}
|
||||
virtual/os-headers"
|
||||
|
||||
make_args() {
|
||||
unset LIBDIR #266688
|
||||
|
||||
MAKE_ARGS="${MAKE_ARGS} LIBNAME=$(get_libdir) LIBEXECDIR=/$(get_libdir)/rc"
|
||||
MAKE_ARGS="${MAKE_ARGS} MKOLDNET=yes"
|
||||
|
||||
local brand="Unknown"
|
||||
if use kernel_linux ; then
|
||||
MAKE_ARGS="${MAKE_ARGS} OS=Linux"
|
||||
brand="Linux"
|
||||
elif use kernel_FreeBSD ; then
|
||||
MAKE_ARGS="${MAKE_ARGS} OS=FreeBSD"
|
||||
brand="FreeBSD"
|
||||
fi
|
||||
if use selinux; then
|
||||
MAKE_ARGS="${MAKE_ARGS} MKSELINUX=yes"
|
||||
fi
|
||||
if use pentoo ; then
|
||||
export BRANDING="Pentoo ${brand}"
|
||||
else
|
||||
export BRANDING="Gentoo ${brand}"
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_setup() {
|
||||
export DEBUG=$(usev debug)
|
||||
export MKPAM=$(usev pam)
|
||||
export MKTERMCAP=$(usev ncurses)
|
||||
}
|
||||
|
||||
src_unpack() {
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
git_src_unpack
|
||||
else
|
||||
unpack ${A}
|
||||
fi
|
||||
cd "${S}"
|
||||
sed -i 's:0444:0644:' mk/sys.mk
|
||||
sed -i "/^DIR/s:/openrc:/${PF}:" doc/Makefile #241342
|
||||
|
||||
# Allow user patches to be applied without modifying the ebuild
|
||||
epatch_user
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
make_args
|
||||
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
local ver="git-$(echo ${EGIT_VERSION} | cut -c1-8)"
|
||||
sed -i "/^GITVER[[:space:]]*=/s:=.*:=${ver}:" mk/git.mk
|
||||
fi
|
||||
|
||||
tc-export CC AR RANLIB
|
||||
emake ${MAKE_ARGS} || die "emake ${MAKE_ARGS} failed"
|
||||
}
|
||||
|
||||
# set_config <file> <option name> <yes value> <no value> test
|
||||
# a value of "#" will just comment out the option
|
||||
set_config() {
|
||||
local file="${D}/$1" var=$2 val com
|
||||
eval "${@:5}" && val=$3 || val=$4
|
||||
[[ ${val} == "#" ]] && com="#" && val='\2'
|
||||
sed -i -r -e "/^#?${var}=/{s:=([\"'])?([^ ]*)\1?:=\1${val}\1:;s:^#?:${com}:}" "${file}"
|
||||
}
|
||||
set_config_yes_no() {
|
||||
set_config "$1" "$2" YES NO "${@:3}"
|
||||
}
|
||||
|
||||
src_install() {
|
||||
make_args
|
||||
emake ${MAKE_ARGS} DESTDIR="${D}" install || die
|
||||
|
||||
# install the readme for the new network scripts
|
||||
dodoc README.newnet
|
||||
|
||||
# move the shared libs back to /usr so ldscript can install
|
||||
# more of a minimal set of files
|
||||
# disabled for now due to #270646
|
||||
#mv "${D}"/$(get_libdir)/lib{einfo,rc}* "${D}"/usr/$(get_libdir)/ || die
|
||||
#gen_usr_ldscript -a einfo rc
|
||||
gen_usr_ldscript libeinfo.so
|
||||
gen_usr_ldscript librc.so
|
||||
|
||||
keepdir /$(get_libdir)/rc/{init.d,tmp}
|
||||
|
||||
# Backup our default runlevels
|
||||
dodir /usr/share/"${PN}"
|
||||
cp -PR "${D}"/etc/runlevels "${D}"/usr/share/${PN} || die
|
||||
rm -rf "${D}"/etc/runlevels
|
||||
|
||||
# Stick with "old" net as the default for now
|
||||
doconfd conf.d/net || die
|
||||
pushd "${D}"/usr/share/${PN}/runlevels/boot > /dev/null
|
||||
rm -f network staticroute
|
||||
ln -s /etc/init.d/net.lo net.lo
|
||||
popd > /dev/null
|
||||
|
||||
# Setup unicode defaults for silly unicode users
|
||||
set_config_yes_no /etc/rc.conf unicode use unicode
|
||||
|
||||
# Cater to the norm
|
||||
set_config_yes_no /etc/conf.d/keymaps windowkeys '(' use x86 '||' use amd64 ')'
|
||||
|
||||
# On HPPA, do not run consolefont by default (bug #222889)
|
||||
if use hppa; then
|
||||
rm -f "${D}"/usr/share/openrc/runlevels/boot/consolefont
|
||||
fi
|
||||
|
||||
# Support for logfile rotation
|
||||
insinto /etc/logrotate.d
|
||||
newins "${FILESDIR}"/openrc.logrotate openrc
|
||||
}
|
||||
|
||||
add_boot_init() {
|
||||
local initd=$1
|
||||
local runlevel=${2:-boot}
|
||||
# if the initscript is not going to be installed and is not
|
||||
# currently installed, return
|
||||
[[ -e ${D}/etc/init.d/${initd} || -e ${ROOT}/etc/init.d/${initd} ]] \
|
||||
|| return
|
||||
[[ -e ${ROOT}/etc/runlevels/${runlevel}/${initd} ]] && return
|
||||
|
||||
# if runlevels dont exist just yet, then create it but still flag
|
||||
# to pkg_postinst that it needs real setup #277323
|
||||
if [[ ! -d ${ROOT}/etc/runlevels/${runlevel} ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/${runlevel}
|
||||
touch "${ROOT}"/etc/runlevels/.add_boot_init.created
|
||||
fi
|
||||
|
||||
elog "Auto-adding '${initd}' service to your ${runlevel} runlevel"
|
||||
ln -snf /etc/init.d/${initd} "${ROOT}"/etc/runlevels/${runlevel}/${initd}
|
||||
}
|
||||
add_boot_init_mit_config() {
|
||||
local config=$1 initd=$2
|
||||
if [[ -e ${ROOT}${config} ]] ; then
|
||||
if [[ -n $(sed -e 's:#.*::' -e '/^[[:space:]]*$/d' "${ROOT}"/${config}) ]] ; then
|
||||
add_boot_init ${initd}
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_preinst() {
|
||||
local f LIBDIR=$(get_libdir)
|
||||
|
||||
# default net script is just comments, so no point in biting people
|
||||
# in the ass by accident. we save in preinst so that the package
|
||||
# manager doesnt go throwing etc-update crap at us -- postinst is
|
||||
# too late to prevent that. this behavior also lets us keep the
|
||||
# file in the CONTENTS for binary packages.
|
||||
[[ -e ${ROOT}/etc/conf.d/net ]] && cp "${ROOT}"/etc/conf.d/net "${D}"/etc/conf.d/
|
||||
|
||||
# avoid default thrashing in conf.d files when possible #295406
|
||||
if [[ -e ${ROOT}/etc/conf.d/hostname ]] ; then
|
||||
(
|
||||
unset hostname HOSTNAME
|
||||
source "${ROOT}"/etc/conf.d/hostname
|
||||
: ${hostname:=${HOSTNAME}}
|
||||
[[ -n ${hostname} ]] && set_config /etc/conf.d/hostname hostname "${hostname}"
|
||||
)
|
||||
fi
|
||||
|
||||
# upgrade timezone file ... do it before moving clock
|
||||
if [[ -e ${ROOT}/etc/conf.d/clock && ! -e ${ROOT}/etc/timezone ]] ; then
|
||||
(
|
||||
unset TIMEZONE
|
||||
source "${ROOT}"/etc/conf.d/clock
|
||||
[[ -n ${TIMEZONE} ]] && echo "${TIMEZONE}" > "${ROOT}"/etc/timezone
|
||||
)
|
||||
fi
|
||||
|
||||
# /etc/conf.d/clock moved to /etc/conf.d/hwclock
|
||||
local clock
|
||||
use kernel_FreeBSD && clock="adjkerntz" || clock="hwclock"
|
||||
if [[ -e ${ROOT}/etc/conf.d/clock ]] ; then
|
||||
mv "${ROOT}"/etc/conf.d/clock "${ROOT}"/etc/conf.d/${clock}
|
||||
fi
|
||||
if [[ -e ${ROOT}/etc/init.d/clock ]] ; then
|
||||
rm -f "${ROOT}"/etc/init.d/clock
|
||||
fi
|
||||
if [[ -L ${ROOT}/etc/runlevels/boot/clock ]] ; then
|
||||
rm -f "${ROOT}"/etc/runlevels/boot/clock
|
||||
ln -snf /etc/init.d/${clock} "${ROOT}"/etc/runlevels/boot/${clock}
|
||||
fi
|
||||
if [[ -L ${ROOT}${LIBDIR}/rc/init.d/started/clock ]] ; then
|
||||
rm -f "${ROOT}${LIBDIR}"/rc/init.d/started/clock
|
||||
ln -snf /etc/init.d/${clock} "${ROOT}${LIBDIR}"/rc/init.d/started/${clock}
|
||||
fi
|
||||
|
||||
# /etc/conf.d/rc is no longer used for configuration
|
||||
if [[ -e ${ROOT}/etc/conf.d/rc ]] ; then
|
||||
elog "/etc/conf.d/rc is no longer used for configuration."
|
||||
elog "Please migrate your settings to /etc/rc.conf as applicable"
|
||||
elog "and delete /etc/conf.d/rc"
|
||||
fi
|
||||
|
||||
# force net init.d scripts into symlinks
|
||||
for f in "${ROOT}"/etc/init.d/net.* ; do
|
||||
[[ -e ${f} ]] || continue # catch net.* not matching anything
|
||||
[[ ${f} == */net.lo ]] && continue # real file now
|
||||
[[ ${f} == *.openrc.bak ]] && continue
|
||||
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
|
||||
|
||||
# termencoding was added in 0.2.1 and needed in boot
|
||||
has_version ">=sys-apps/openrc-0.2.1" || add_boot_init termencoding
|
||||
|
||||
# set default interactive shell to sulogin if it exists
|
||||
set_config /etc/rc.conf rc_shell /sbin/sulogin "#" test -e /sbin/sulogin
|
||||
|
||||
has_version sys-apps/openrc || migrate_from_baselayout_1
|
||||
has_version ">=sys-apps/openrc-0.4.0" || migrate_udev_init_script
|
||||
}
|
||||
|
||||
# >=openrc-0.4.0 no longer loads the udev addon
|
||||
migrate_udev_init_script() {
|
||||
# make sure udev is in sysinit if it was enabled before
|
||||
local enable_udev=false
|
||||
local rc_devices=$(
|
||||
[[ -f /etc/rc.conf ]] && source /etc/rc.conf
|
||||
[[ -f /etc/conf.d/rc ]] && source /etc/conf.d/rc
|
||||
echo "${rc_devices:-${RC_DEVICES:-auto}}"
|
||||
)
|
||||
case ${rc_devices} in
|
||||
udev|auto)
|
||||
enable_udev=true
|
||||
;;
|
||||
esac
|
||||
|
||||
if $enable_udev; then
|
||||
add_boot_init udev sysinit
|
||||
add_boot_init udev-postmount default
|
||||
fi
|
||||
}
|
||||
|
||||
migrate_from_baselayout_1() {
|
||||
# baselayout boot init scripts have been split out
|
||||
for f in $(cd "${D}"/usr/share/${PN}/runlevels/boot || exit; echo *) ; do
|
||||
# baselayout-1 is always "old" net, so ignore "new" net
|
||||
[[ ${f} == "network" ]] && continue
|
||||
|
||||
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/conf.d/dmcrypt dmcrypt
|
||||
add_boot_init_mit_config /etc/mdadm.conf mdraid
|
||||
add_boot_init_mit_config /etc/evms.conf evms
|
||||
[[ -e ${ROOT}/sbin/dmsetup ]] && add_boot_init 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() {
|
||||
local LIBDIR=$(get_libdir)
|
||||
|
||||
# Remove old baselayout links
|
||||
rm -f "${ROOT}"/etc/runlevels/boot/{check{fs,root},rmnologin}
|
||||
rm -f "${ROOT}"/etc/init.d/{depscan,runscript}.sh
|
||||
|
||||
# Make our runlevels if they don't exist
|
||||
if [[ ! -e ${ROOT}/etc/runlevels ]] || [[ -e ${ROOT}/etc/runlevels/.add_boot_init.created ]] ; then
|
||||
einfo "Copying across default runlevels"
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels "${ROOT}"/etc
|
||||
rm -f "${ROOT}"/etc/runlevels/.add_boot_init.created
|
||||
else
|
||||
if [[ ! -e ${ROOT}/etc/runlevels/sysinit/devfs ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/sysinit
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels/sysinit/* \
|
||||
"${ROOT}"/etc/runlevels/sysinit
|
||||
fi
|
||||
if [[ ! -e ${ROOT}/etc/runlevels/shutdown/mount-ro ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/shutdown
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels/shutdown/* \
|
||||
"${ROOT}"/etc/runlevels/shutdown
|
||||
fi
|
||||
fi
|
||||
|
||||
# /etc/conf.d/net.example is no longer valid
|
||||
local NET_EXAMPLE="${ROOT}/etc/conf.d/net.example"
|
||||
local NET_MD5='8ebebfa07441d39eb54feae0ee4c8210'
|
||||
if [[ -e "${NET_EXAMPLE}" ]] ; then
|
||||
if [[ $(md5sum "${NET_EXAMPLE}") == ${NET_MD5}* ]]; then
|
||||
rm -f "${NET_EXAMPLE}"
|
||||
elog "${NET_EXAMPLE} has been removed."
|
||||
else
|
||||
sed -i '1i# This file is obsolete.\n' "${NET_EXAMPLE}"
|
||||
elog "${NET_EXAMPLE} should be removed."
|
||||
fi
|
||||
elog "The new file is ${ROOT}/usr/share/doc/${PF}/net.example"
|
||||
fi
|
||||
|
||||
# /etc/conf.d/wireless.example is no longer valid
|
||||
local WIRELESS_EXAMPLE="${ROOT}/etc/conf.d/wireless.example"
|
||||
local WIRELESS_MD5='d1fad7da940bf263c76af4d2082124a3'
|
||||
if [[ -e "${WIRELESS_EXAMPLE}" ]] ; then
|
||||
if [[ $(md5sum "${WIRELESS_EXAMPLE}") == ${WIRELESS_MD5}* ]]; then
|
||||
rm -f "${WIRELESS_EXAMPLE}"
|
||||
elog "${WIRELESS_EXAMPLE} is deprecated and has been removed."
|
||||
else
|
||||
sed -i '1i# This file is obsolete.\n' "${WIRELESS_EXAMPLE}"
|
||||
elog "${WIRELESS_EXAMPLE} is deprecated and should be removed."
|
||||
fi
|
||||
elog "If you are using the old style network scripts,"
|
||||
elog "Configure wireless settings in ${ROOT}/etc/conf.d/net"
|
||||
elog "after reviewing ${ROOT}/usr/share/doc/${PF}/net.example"
|
||||
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
|
||||
|
||||
if use hppa; then
|
||||
elog "Setting the console font does not work on all HPPA consoles."
|
||||
elog "You can still enable it by running:"
|
||||
elog "# rc-update add consolefont boot"
|
||||
fi
|
||||
|
||||
# Handle the conf.d/local.{start,stop} -> local.d transition
|
||||
if path_exists -o "${ROOT}"etc/conf.d/local.{start,stop} ; then
|
||||
elog "Moving your ${ROOT}etc/conf.d/local.{start,stop}"
|
||||
elog "files to ${ROOT}etc/local.d"
|
||||
mv "${ROOT}"etc/conf.d/local.start "${ROOT}"etc/local.d/baselayout1.start
|
||||
mv "${ROOT}"etc/conf.d/local.stop "${ROOT}"etc/local.d/baselayout1.stop
|
||||
chmod +x "${ROOT}"etc/local.d/*{start,stop}
|
||||
fi
|
||||
|
||||
# update the dependency tree after touching all files #224171
|
||||
[[ "${ROOT}" = "/" ]] && "${ROOT}/${LIBDIR}"/rc/bin/rc-depend -u
|
||||
|
||||
elog "You should now update all files in /etc, using etc-update"
|
||||
elog "or equivalent before restarting any services or this host."
|
||||
elog
|
||||
elog "Please read the migration guide available at:"
|
||||
elog "http://www.gentoo.org/doc/en/openrc-migration.xml"
|
||||
}
|
||||
|
|
@ -1,440 +0,0 @@
|
|||
# Copyright 1999-2011 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/sys-apps/openrc/openrc-0.8.2-r1.ebuild,v 1.1 2011/04/28 19:50:51 williamh Exp $
|
||||
|
||||
EAPI="1"
|
||||
|
||||
inherit eutils flag-o-matic multilib toolchain-funcs
|
||||
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
EGIT_REPO_URI="git://git.overlays.gentoo.org/proj/openrc.git"
|
||||
inherit git
|
||||
KEYWORDS=""
|
||||
else
|
||||
SRC_URI="mirror://gentoo/${P}.tar.bz2"
|
||||
KEYWORDS="alpha amd64 arm hppa ia64 ~m68k ~mips ppc ppc64 ~s390 sh sparc x86 ~sparc-fbsd ~x86-fbsd"
|
||||
fi
|
||||
|
||||
DESCRIPTION="OpenRC manages the services, startup and shutdown of a host"
|
||||
HOMEPAGE="http://www.gentoo.org/proj/en/base/openrc/"
|
||||
|
||||
LICENSE="BSD-2"
|
||||
SLOT="0"
|
||||
IUSE="debug elibc_glibc ncurses pam pentoo selinux unicode kernel_linux kernel_FreeBSD"
|
||||
|
||||
RDEPEND="virtual/init
|
||||
kernel_FreeBSD? ( sys-process/fuser-bsd )
|
||||
elibc_glibc? ( >=sys-libs/glibc-2.5 )
|
||||
ncurses? ( sys-libs/ncurses )
|
||||
pam? ( virtual/pam )
|
||||
>=sys-apps/baselayout-2.0.0
|
||||
kernel_linux? ( !<sys-apps/module-init-tools-3.2.2-r2 )
|
||||
!<sys-fs/udev-133
|
||||
!<sys-apps/sysvinit-2.86-r11"
|
||||
DEPEND="${RDEPEND}
|
||||
virtual/os-headers"
|
||||
|
||||
make_args() {
|
||||
unset LIBDIR #266688
|
||||
|
||||
MAKE_ARGS="${MAKE_ARGS} LIBNAME=$(get_libdir) LIBEXECDIR=/$(get_libdir)/rc"
|
||||
MAKE_ARGS="${MAKE_ARGS} MKOLDNET=yes"
|
||||
|
||||
local brand="Unknown"
|
||||
if use kernel_linux ; then
|
||||
MAKE_ARGS="${MAKE_ARGS} OS=Linux"
|
||||
brand="Linux"
|
||||
elif use kernel_FreeBSD ; then
|
||||
MAKE_ARGS="${MAKE_ARGS} OS=FreeBSD"
|
||||
brand="FreeBSD"
|
||||
fi
|
||||
if use selinux; then
|
||||
MAKE_ARGS="${MAKE_ARGS} MKSELINUX=yes"
|
||||
fi
|
||||
if use pentoo ; then
|
||||
export BRANDING="Pentoo ${brand}"
|
||||
else
|
||||
export BRANDING="Gentoo ${brand}"
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_setup() {
|
||||
export DEBUG=$(usev debug)
|
||||
export MKPAM=$(usev pam)
|
||||
export MKTERMCAP=$(usev ncurses)
|
||||
}
|
||||
|
||||
src_unpack() {
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
git_src_unpack
|
||||
else
|
||||
unpack ${A}
|
||||
fi
|
||||
cd "${S}"
|
||||
sed -i 's:0444:0644:' mk/sys.mk
|
||||
sed -i "/^DIR/s:/openrc:/${PF}:" doc/Makefile #241342
|
||||
|
||||
# Allow user patches to be applied without modifying the ebuild
|
||||
epatch_user
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
make_args
|
||||
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
local ver="git-$(echo ${EGIT_VERSION} | cut -c1-8)"
|
||||
sed -i "/^GITVER[[:space:]]*=/s:=.*:=${ver}:" mk/git.mk
|
||||
fi
|
||||
|
||||
tc-export CC AR RANLIB
|
||||
emake ${MAKE_ARGS} || die "emake ${MAKE_ARGS} failed"
|
||||
}
|
||||
|
||||
# set_config <file> <option name> <yes value> <no value> test
|
||||
# a value of "#" will just comment out the option
|
||||
set_config() {
|
||||
local file="${D}/$1" var=$2 val com
|
||||
eval "${@:5}" && val=$3 || val=$4
|
||||
[[ ${val} == "#" ]] && com="#" && val='\2'
|
||||
sed -i -r -e "/^#?${var}=/{s:=([\"'])?([^ ]*)\1?:=\1${val}\1:;s:^#?:${com}:}" "${file}"
|
||||
}
|
||||
set_config_yes_no() {
|
||||
set_config "$1" "$2" YES NO "${@:3}"
|
||||
}
|
||||
|
||||
src_install() {
|
||||
make_args
|
||||
emake ${MAKE_ARGS} DESTDIR="${D}" install || die
|
||||
|
||||
# install the readme for the new network scripts
|
||||
dodoc README.newnet
|
||||
|
||||
# move the shared libs back to /usr so ldscript can install
|
||||
# more of a minimal set of files
|
||||
# disabled for now due to #270646
|
||||
#mv "${D}"/$(get_libdir)/lib{einfo,rc}* "${D}"/usr/$(get_libdir)/ || die
|
||||
#gen_usr_ldscript -a einfo rc
|
||||
gen_usr_ldscript libeinfo.so
|
||||
gen_usr_ldscript librc.so
|
||||
|
||||
keepdir /$(get_libdir)/rc/{init.d,tmp}
|
||||
|
||||
# Backup our default runlevels
|
||||
dodir /usr/share/"${PN}"
|
||||
cp -PR "${D}"/etc/runlevels "${D}"/usr/share/${PN} || die
|
||||
rm -rf "${D}"/etc/runlevels
|
||||
|
||||
# Stick with "old" net as the default for now
|
||||
doconfd conf.d/net || die
|
||||
pushd "${D}"/usr/share/${PN}/runlevels/boot > /dev/null
|
||||
rm -f network staticroute
|
||||
ln -s /etc/init.d/net.lo net.lo
|
||||
popd > /dev/null
|
||||
|
||||
# Setup unicode defaults for silly unicode users
|
||||
set_config_yes_no /etc/rc.conf unicode use unicode
|
||||
|
||||
# Cater to the norm
|
||||
set_config_yes_no /etc/conf.d/keymaps windowkeys '(' use x86 '||' use amd64 ')'
|
||||
|
||||
# On HPPA, do not run consolefont by default (bug #222889)
|
||||
if use hppa; then
|
||||
rm -f "${D}"/usr/share/openrc/runlevels/boot/consolefont
|
||||
fi
|
||||
|
||||
# Support for logfile rotation
|
||||
insinto /etc/logrotate.d
|
||||
newins "${FILESDIR}"/openrc.logrotate openrc
|
||||
}
|
||||
|
||||
add_boot_init() {
|
||||
local initd=$1
|
||||
local runlevel=${2:-boot}
|
||||
# if the initscript is not going to be installed and is not
|
||||
# currently installed, return
|
||||
[[ -e ${D}/etc/init.d/${initd} || -e ${ROOT}/etc/init.d/${initd} ]] \
|
||||
|| return
|
||||
[[ -e ${ROOT}/etc/runlevels/${runlevel}/${initd} ]] && return
|
||||
|
||||
# if runlevels dont exist just yet, then create it but still flag
|
||||
# to pkg_postinst that it needs real setup #277323
|
||||
if [[ ! -d ${ROOT}/etc/runlevels/${runlevel} ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/${runlevel}
|
||||
touch "${ROOT}"/etc/runlevels/.add_boot_init.created
|
||||
fi
|
||||
|
||||
elog "Auto-adding '${initd}' service to your ${runlevel} runlevel"
|
||||
ln -snf /etc/init.d/${initd} "${ROOT}"/etc/runlevels/${runlevel}/${initd}
|
||||
}
|
||||
add_boot_init_mit_config() {
|
||||
local config=$1 initd=$2
|
||||
if [[ -e ${ROOT}${config} ]] ; then
|
||||
if [[ -n $(sed -e 's:#.*::' -e '/^[[:space:]]*$/d' "${ROOT}"/${config}) ]] ; then
|
||||
add_boot_init ${initd}
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_preinst() {
|
||||
local f LIBDIR=$(get_libdir)
|
||||
|
||||
# default net script is just comments, so no point in biting people
|
||||
# in the ass by accident. we save in preinst so that the package
|
||||
# manager doesnt go throwing etc-update crap at us -- postinst is
|
||||
# too late to prevent that. this behavior also lets us keep the
|
||||
# file in the CONTENTS for binary packages.
|
||||
[[ -e ${ROOT}/etc/conf.d/net ]] && cp "${ROOT}"/etc/conf.d/net "${D}"/etc/conf.d/
|
||||
|
||||
# avoid default thrashing in conf.d files when possible #295406
|
||||
if [[ -e ${ROOT}/etc/conf.d/hostname ]] ; then
|
||||
(
|
||||
unset hostname HOSTNAME
|
||||
source "${ROOT}"/etc/conf.d/hostname
|
||||
: ${hostname:=${HOSTNAME}}
|
||||
[[ -n ${hostname} ]] && set_config /etc/conf.d/hostname hostname "${hostname}"
|
||||
)
|
||||
fi
|
||||
|
||||
# upgrade timezone file ... do it before moving clock
|
||||
if [[ -e ${ROOT}/etc/conf.d/clock && ! -e ${ROOT}/etc/timezone ]] ; then
|
||||
(
|
||||
unset TIMEZONE
|
||||
source "${ROOT}"/etc/conf.d/clock
|
||||
[[ -n ${TIMEZONE} ]] && echo "${TIMEZONE}" > "${ROOT}"/etc/timezone
|
||||
)
|
||||
fi
|
||||
|
||||
# /etc/conf.d/clock moved to /etc/conf.d/hwclock
|
||||
local clock
|
||||
use kernel_FreeBSD && clock="adjkerntz" || clock="hwclock"
|
||||
if [[ -e ${ROOT}/etc/conf.d/clock ]] ; then
|
||||
mv "${ROOT}"/etc/conf.d/clock "${ROOT}"/etc/conf.d/${clock}
|
||||
fi
|
||||
if [[ -e ${ROOT}/etc/init.d/clock ]] ; then
|
||||
rm -f "${ROOT}"/etc/init.d/clock
|
||||
fi
|
||||
if [[ -L ${ROOT}/etc/runlevels/boot/clock ]] ; then
|
||||
rm -f "${ROOT}"/etc/runlevels/boot/clock
|
||||
ln -snf /etc/init.d/${clock} "${ROOT}"/etc/runlevels/boot/${clock}
|
||||
fi
|
||||
if [[ -L ${ROOT}${LIBDIR}/rc/init.d/started/clock ]] ; then
|
||||
rm -f "${ROOT}${LIBDIR}"/rc/init.d/started/clock
|
||||
ln -snf /etc/init.d/${clock} "${ROOT}${LIBDIR}"/rc/init.d/started/${clock}
|
||||
fi
|
||||
|
||||
# /etc/conf.d/rc is no longer used for configuration
|
||||
if [[ -e ${ROOT}/etc/conf.d/rc ]] ; then
|
||||
elog "/etc/conf.d/rc is no longer used for configuration."
|
||||
elog "Please migrate your settings to /etc/rc.conf as applicable"
|
||||
elog "and delete /etc/conf.d/rc"
|
||||
fi
|
||||
|
||||
# force net init.d scripts into symlinks
|
||||
for f in "${ROOT}"/etc/init.d/net.* ; do
|
||||
[[ -e ${f} ]] || continue # catch net.* not matching anything
|
||||
[[ ${f} == */net.lo ]] && continue # real file now
|
||||
[[ ${f} == *.openrc.bak ]] && continue
|
||||
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
|
||||
|
||||
# termencoding was added in 0.2.1 and needed in boot
|
||||
has_version ">=sys-apps/openrc-0.2.1" || add_boot_init termencoding
|
||||
|
||||
# set default interactive shell to sulogin if it exists
|
||||
set_config /etc/rc.conf rc_shell /sbin/sulogin "#" test -e /sbin/sulogin
|
||||
|
||||
has_version sys-apps/openrc || migrate_from_baselayout_1
|
||||
has_version ">=sys-apps/openrc-0.4.0" || migrate_udev_init_script
|
||||
}
|
||||
|
||||
# >=openrc-0.4.0 no longer loads the udev addon
|
||||
migrate_udev_init_script() {
|
||||
# make sure udev is in sysinit if it was enabled before
|
||||
local enable_udev=false
|
||||
local rc_devices=$(
|
||||
[[ -f /etc/rc.conf ]] && source /etc/rc.conf
|
||||
[[ -f /etc/conf.d/rc ]] && source /etc/conf.d/rc
|
||||
echo "${rc_devices:-${RC_DEVICES:-auto}}"
|
||||
)
|
||||
case ${rc_devices} in
|
||||
udev|auto)
|
||||
enable_udev=true
|
||||
;;
|
||||
esac
|
||||
|
||||
if $enable_udev; then
|
||||
add_boot_init udev sysinit
|
||||
add_boot_init udev-postmount default
|
||||
fi
|
||||
}
|
||||
|
||||
migrate_from_baselayout_1() {
|
||||
# baselayout boot init scripts have been split out
|
||||
for f in $(cd "${D}"/usr/share/${PN}/runlevels/boot || exit; echo *) ; do
|
||||
# baselayout-1 is always "old" net, so ignore "new" net
|
||||
[[ ${f} == "network" ]] && continue
|
||||
|
||||
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/conf.d/dmcrypt dmcrypt
|
||||
add_boot_init_mit_config /etc/mdadm.conf mdraid
|
||||
add_boot_init_mit_config /etc/evms.conf evms
|
||||
[[ -e ${ROOT}/sbin/dmsetup ]] && add_boot_init 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() {
|
||||
local LIBDIR=$(get_libdir)
|
||||
|
||||
# Remove old baselayout links
|
||||
rm -f "${ROOT}"/etc/runlevels/boot/{check{fs,root},rmnologin}
|
||||
rm -f "${ROOT}"/etc/init.d/{depscan,runscript}.sh
|
||||
|
||||
# Make our runlevels if they don't exist
|
||||
if [[ ! -e ${ROOT}/etc/runlevels ]] || [[ -e ${ROOT}/etc/runlevels/.add_boot_init.created ]] ; then
|
||||
einfo "Copying across default runlevels"
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels "${ROOT}"/etc
|
||||
rm -f "${ROOT}"/etc/runlevels/.add_boot_init.created
|
||||
else
|
||||
if [[ ! -e ${ROOT}/etc/runlevels/sysinit/devfs ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/sysinit
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels/sysinit/* \
|
||||
"${ROOT}"/etc/runlevels/sysinit
|
||||
fi
|
||||
if [[ ! -e ${ROOT}/etc/runlevels/shutdown/mount-ro ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/shutdown
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels/shutdown/* \
|
||||
"${ROOT}"/etc/runlevels/shutdown
|
||||
fi
|
||||
fi
|
||||
|
||||
# /etc/conf.d/net.example is no longer valid
|
||||
local NET_EXAMPLE="${ROOT}/etc/conf.d/net.example"
|
||||
local NET_MD5='8ebebfa07441d39eb54feae0ee4c8210'
|
||||
if [[ -e "${NET_EXAMPLE}" ]] ; then
|
||||
if [[ $(md5sum "${NET_EXAMPLE}") == ${NET_MD5}* ]]; then
|
||||
rm -f "${NET_EXAMPLE}"
|
||||
elog "${NET_EXAMPLE} has been removed."
|
||||
else
|
||||
sed -i '1i# This file is obsolete.\n' "${NET_EXAMPLE}"
|
||||
elog "${NET_EXAMPLE} should be removed."
|
||||
fi
|
||||
elog "The new file is ${ROOT}/usr/share/doc/${PF}/net.example"
|
||||
fi
|
||||
|
||||
# /etc/conf.d/wireless.example is no longer valid
|
||||
local WIRELESS_EXAMPLE="${ROOT}/etc/conf.d/wireless.example"
|
||||
local WIRELESS_MD5='d1fad7da940bf263c76af4d2082124a3'
|
||||
if [[ -e "${WIRELESS_EXAMPLE}" ]] ; then
|
||||
if [[ $(md5sum "${WIRELESS_EXAMPLE}") == ${WIRELESS_MD5}* ]]; then
|
||||
rm -f "${WIRELESS_EXAMPLE}"
|
||||
elog "${WIRELESS_EXAMPLE} is deprecated and has been removed."
|
||||
else
|
||||
sed -i '1i# This file is obsolete.\n' "${WIRELESS_EXAMPLE}"
|
||||
elog "${WIRELESS_EXAMPLE} is deprecated and should be removed."
|
||||
fi
|
||||
elog "If you are using the old style network scripts,"
|
||||
elog "Configure wireless settings in ${ROOT}/etc/conf.d/net"
|
||||
elog "after reviewing ${ROOT}/usr/share/doc/${PF}/net.example"
|
||||
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
|
||||
|
||||
if use hppa; then
|
||||
elog "Setting the console font does not work on all HPPA consoles."
|
||||
elog "You can still enable it by running:"
|
||||
elog "# rc-update add consolefont boot"
|
||||
fi
|
||||
|
||||
# Handle the conf.d/local.{start,stop} -> local.d transition
|
||||
if path_exists -o "${ROOT}"etc/conf.d/local.{start,stop} ; then
|
||||
elog "Moving your ${ROOT}etc/conf.d/local.{start,stop}"
|
||||
elog "files to ${ROOT}etc/local.d"
|
||||
mv "${ROOT}"etc/conf.d/local.start "${ROOT}"etc/local.d/baselayout1.start
|
||||
mv "${ROOT}"etc/conf.d/local.stop "${ROOT}"etc/local.d/baselayout1.stop
|
||||
chmod +x "${ROOT}"etc/local.d/*{start,stop}
|
||||
fi
|
||||
|
||||
if path_exists -o "${ROOT}"/etc/local.d/ ; then
|
||||
use pentoo && cp "${FILESDIR}"/*.start "${ROOT}"etc/local.d/
|
||||
use pentoo && chmod +x "${ROOT}"etc/local.d/*.{start,stop}
|
||||
fi
|
||||
|
||||
# update the dependency tree after touching all files #224171
|
||||
[[ "${ROOT}" = "/" ]] && "${ROOT}/${LIBDIR}"/rc/bin/rc-depend -u
|
||||
|
||||
elog "You should now update all files in /etc, using etc-update"
|
||||
elog "or equivalent before restarting any services or this host."
|
||||
elog
|
||||
elog "Please read the migration guide available at:"
|
||||
elog "http://www.gentoo.org/doc/en/openrc-migration.xml"
|
||||
}
|
||||
|
|
@ -1,435 +0,0 @@
|
|||
# Copyright 1999-2011 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/sys-apps/openrc/openrc-0.8.2.ebuild,v 1.1 2011/04/16 01:20:08 williamh Exp $
|
||||
|
||||
EAPI="1"
|
||||
|
||||
inherit eutils flag-o-matic multilib toolchain-funcs
|
||||
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
EGIT_REPO_URI="git://git.overlays.gentoo.org/proj/openrc.git"
|
||||
inherit git
|
||||
KEYWORDS=""
|
||||
else
|
||||
SRC_URI="mirror://gentoo/${P}.tar.bz2"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~sparc-fbsd ~x86 ~x86-fbsd"
|
||||
fi
|
||||
|
||||
DESCRIPTION="OpenRC manages the services, startup and shutdown of a host"
|
||||
HOMEPAGE="http://www.gentoo.org/proj/en/base/openrc/"
|
||||
|
||||
LICENSE="BSD-2"
|
||||
SLOT="0"
|
||||
IUSE="debug elibc_glibc ncurses pam pentoo selinux unicode kernel_linux kernel_FreeBSD"
|
||||
|
||||
RDEPEND="virtual/init
|
||||
kernel_FreeBSD? ( sys-process/fuser-bsd )
|
||||
elibc_glibc? ( >=sys-libs/glibc-2.5 )
|
||||
ncurses? ( sys-libs/ncurses )
|
||||
pam? ( virtual/pam )
|
||||
>=sys-apps/baselayout-2.0.0
|
||||
kernel_linux? ( !<sys-apps/module-init-tools-3.2.2-r2 )
|
||||
!<sys-fs/udev-133
|
||||
!<sys-apps/sysvinit-2.86-r11"
|
||||
DEPEND="${RDEPEND}
|
||||
virtual/os-headers"
|
||||
|
||||
make_args() {
|
||||
unset LIBDIR #266688
|
||||
|
||||
MAKE_ARGS="${MAKE_ARGS} LIBNAME=$(get_libdir) LIBEXECDIR=/$(get_libdir)/rc"
|
||||
MAKE_ARGS="${MAKE_ARGS} MKOLDNET=yes"
|
||||
|
||||
local brand="Unknown"
|
||||
if use kernel_linux ; then
|
||||
MAKE_ARGS="${MAKE_ARGS} OS=Linux"
|
||||
brand="Linux"
|
||||
elif use kernel_FreeBSD ; then
|
||||
MAKE_ARGS="${MAKE_ARGS} OS=FreeBSD"
|
||||
brand="FreeBSD"
|
||||
fi
|
||||
if use selinux; then
|
||||
MAKE_ARGS="${MAKE_ARGS} MKSELINUX=yes"
|
||||
fi
|
||||
if use pentoo ; then
|
||||
export BRANDING="Pentoo ${brand}"
|
||||
else
|
||||
export BRANDING="Gentoo ${brand}"
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_setup() {
|
||||
export DEBUG=$(usev debug)
|
||||
export MKPAM=$(usev pam)
|
||||
export MKTERMCAP=$(usev ncurses)
|
||||
}
|
||||
|
||||
src_unpack() {
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
git_src_unpack
|
||||
else
|
||||
unpack ${A}
|
||||
fi
|
||||
cd "${S}"
|
||||
sed -i 's:0444:0644:' mk/sys.mk
|
||||
sed -i "/^DIR/s:/openrc:/${PF}:" doc/Makefile #241342
|
||||
|
||||
# Allow user patches to be applied without modifying the ebuild
|
||||
epatch_user
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
make_args
|
||||
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
local ver="git-$(echo ${EGIT_VERSION} | cut -c1-8)"
|
||||
sed -i "/^GITVER[[:space:]]*=/s:=.*:=${ver}:" mk/git.mk
|
||||
fi
|
||||
|
||||
tc-export CC AR RANLIB
|
||||
emake ${MAKE_ARGS} || die "emake ${MAKE_ARGS} failed"
|
||||
}
|
||||
|
||||
# set_config <file> <option name> <yes value> <no value> test
|
||||
# a value of "#" will just comment out the option
|
||||
set_config() {
|
||||
local file="${D}/$1" var=$2 val com
|
||||
eval "${@:5}" && val=$3 || val=$4
|
||||
[[ ${val} == "#" ]] && com="#" && val='\2'
|
||||
sed -i -r -e "/^#?${var}=/{s:=([\"'])?([^ ]*)\1?:=\1${val}\1:;s:^#?:${com}:}" "${file}"
|
||||
}
|
||||
set_config_yes_no() {
|
||||
set_config "$1" "$2" YES NO "${@:3}"
|
||||
}
|
||||
|
||||
src_install() {
|
||||
make_args
|
||||
emake ${MAKE_ARGS} DESTDIR="${D}" install || die
|
||||
|
||||
# install the readme for the new network scripts
|
||||
dodoc README.newnet
|
||||
|
||||
# move the shared libs back to /usr so ldscript can install
|
||||
# more of a minimal set of files
|
||||
# disabled for now due to #270646
|
||||
#mv "${D}"/$(get_libdir)/lib{einfo,rc}* "${D}"/usr/$(get_libdir)/ || die
|
||||
#gen_usr_ldscript -a einfo rc
|
||||
gen_usr_ldscript libeinfo.so
|
||||
gen_usr_ldscript librc.so
|
||||
|
||||
keepdir /$(get_libdir)/rc/{init.d,tmp}
|
||||
|
||||
# Backup our default runlevels
|
||||
dodir /usr/share/"${PN}"
|
||||
cp -PR "${D}"/etc/runlevels "${D}"/usr/share/${PN} || die
|
||||
rm -rf "${D}"/etc/runlevels
|
||||
|
||||
# Stick with "old" net as the default for now
|
||||
doconfd conf.d/net || die
|
||||
pushd "${D}"/usr/share/${PN}/runlevels/boot > /dev/null
|
||||
rm -f network staticroute
|
||||
ln -s /etc/init.d/net.lo net.lo
|
||||
popd > /dev/null
|
||||
|
||||
# Setup unicode defaults for silly unicode users
|
||||
set_config_yes_no /etc/rc.conf unicode use unicode
|
||||
|
||||
# Cater to the norm
|
||||
set_config_yes_no /etc/conf.d/keymaps windowkeys '(' use x86 '||' use amd64 ')'
|
||||
|
||||
# On HPPA, do not run consolefont by default (bug #222889)
|
||||
if use hppa; then
|
||||
rm -f "${D}"/usr/share/openrc/runlevels/boot/consolefont
|
||||
fi
|
||||
|
||||
# Support for logfile rotation
|
||||
insinto /etc/logrotate.d
|
||||
newins "${FILESDIR}"/openrc.logrotate openrc
|
||||
}
|
||||
|
||||
add_boot_init() {
|
||||
local initd=$1
|
||||
local runlevel=${2:-boot}
|
||||
# if the initscript is not going to be installed and is not
|
||||
# currently installed, return
|
||||
[[ -e ${D}/etc/init.d/${initd} || -e ${ROOT}/etc/init.d/${initd} ]] \
|
||||
|| return
|
||||
[[ -e ${ROOT}/etc/runlevels/${runlevel}/${initd} ]] && return
|
||||
|
||||
# if runlevels dont exist just yet, then create it but still flag
|
||||
# to pkg_postinst that it needs real setup #277323
|
||||
if [[ ! -d ${ROOT}/etc/runlevels/${runlevel} ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/${runlevel}
|
||||
touch "${ROOT}"/etc/runlevels/.add_boot_init.created
|
||||
fi
|
||||
|
||||
elog "Auto-adding '${initd}' service to your ${runlevel} runlevel"
|
||||
ln -snf /etc/init.d/${initd} "${ROOT}"/etc/runlevels/${runlevel}/${initd}
|
||||
}
|
||||
add_boot_init_mit_config() {
|
||||
local config=$1 initd=$2
|
||||
if [[ -e ${ROOT}${config} ]] ; then
|
||||
if [[ -n $(sed -e 's:#.*::' -e '/^[[:space:]]*$/d' "${ROOT}"/${config}) ]] ; then
|
||||
add_boot_init ${initd}
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_preinst() {
|
||||
local f LIBDIR=$(get_libdir)
|
||||
|
||||
# default net script is just comments, so no point in biting people
|
||||
# in the ass by accident. we save in preinst so that the package
|
||||
# manager doesnt go throwing etc-update crap at us -- postinst is
|
||||
# too late to prevent that. this behavior also lets us keep the
|
||||
# file in the CONTENTS for binary packages.
|
||||
[[ -e ${ROOT}/etc/conf.d/net ]] && cp "${ROOT}"/etc/conf.d/net "${D}"/etc/conf.d/
|
||||
|
||||
# avoid default thrashing in conf.d files when possible #295406
|
||||
if [[ -e ${ROOT}/etc/conf.d/hostname ]] ; then
|
||||
(
|
||||
unset hostname HOSTNAME
|
||||
source "${ROOT}"/etc/conf.d/hostname
|
||||
: ${hostname:=${HOSTNAME}}
|
||||
[[ -n ${hostname} ]] && set_config /etc/conf.d/hostname hostname "${hostname}"
|
||||
)
|
||||
fi
|
||||
|
||||
# upgrade timezone file ... do it before moving clock
|
||||
if [[ -e ${ROOT}/etc/conf.d/clock && ! -e ${ROOT}/etc/timezone ]] ; then
|
||||
(
|
||||
unset TIMEZONE
|
||||
source "${ROOT}"/etc/conf.d/clock
|
||||
[[ -n ${TIMEZONE} ]] && echo "${TIMEZONE}" > "${ROOT}"/etc/timezone
|
||||
)
|
||||
fi
|
||||
|
||||
# /etc/conf.d/clock moved to /etc/conf.d/hwclock
|
||||
local clock
|
||||
use kernel_FreeBSD && clock="adjkerntz" || clock="hwclock"
|
||||
if [[ -e ${ROOT}/etc/conf.d/clock ]] ; then
|
||||
mv "${ROOT}"/etc/conf.d/clock "${ROOT}"/etc/conf.d/${clock}
|
||||
fi
|
||||
if [[ -e ${ROOT}/etc/init.d/clock ]] ; then
|
||||
rm -f "${ROOT}"/etc/init.d/clock
|
||||
fi
|
||||
if [[ -L ${ROOT}/etc/runlevels/boot/clock ]] ; then
|
||||
rm -f "${ROOT}"/etc/runlevels/boot/clock
|
||||
ln -snf /etc/init.d/${clock} "${ROOT}"/etc/runlevels/boot/${clock}
|
||||
fi
|
||||
if [[ -L ${ROOT}${LIBDIR}/rc/init.d/started/clock ]] ; then
|
||||
rm -f "${ROOT}${LIBDIR}"/rc/init.d/started/clock
|
||||
ln -snf /etc/init.d/${clock} "${ROOT}${LIBDIR}"/rc/init.d/started/${clock}
|
||||
fi
|
||||
|
||||
# /etc/conf.d/rc is no longer used for configuration
|
||||
if [[ -e ${ROOT}/etc/conf.d/rc ]] ; then
|
||||
elog "/etc/conf.d/rc is no longer used for configuration."
|
||||
elog "Please migrate your settings to /etc/rc.conf as applicable"
|
||||
elog "and delete /etc/conf.d/rc"
|
||||
fi
|
||||
|
||||
# force net init.d scripts into symlinks
|
||||
for f in "${ROOT}"/etc/init.d/net.* ; do
|
||||
[[ -e ${f} ]] || continue # catch net.* not matching anything
|
||||
[[ ${f} == */net.lo ]] && continue # real file now
|
||||
[[ ${f} == *.openrc.bak ]] && continue
|
||||
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
|
||||
|
||||
# termencoding was added in 0.2.1 and needed in boot
|
||||
has_version ">=sys-apps/openrc-0.2.1" || add_boot_init termencoding
|
||||
|
||||
# set default interactive shell to sulogin if it exists
|
||||
set_config /etc/rc.conf rc_shell /sbin/sulogin "#" test -e /sbin/sulogin
|
||||
|
||||
has_version sys-apps/openrc || migrate_from_baselayout_1
|
||||
has_version ">=sys-apps/openrc-0.4.0" || migrate_udev_init_script
|
||||
}
|
||||
|
||||
# >=openrc-0.4.0 no longer loads the udev addon
|
||||
migrate_udev_init_script() {
|
||||
# make sure udev is in sysinit if it was enabled before
|
||||
local enable_udev=false
|
||||
local rc_devices=$(
|
||||
[[ -f /etc/rc.conf ]] && source /etc/rc.conf
|
||||
[[ -f /etc/conf.d/rc ]] && source /etc/conf.d/rc
|
||||
echo "${rc_devices:-${RC_DEVICES:-auto}}"
|
||||
)
|
||||
case ${rc_devices} in
|
||||
udev|auto)
|
||||
enable_udev=true
|
||||
;;
|
||||
esac
|
||||
|
||||
if $enable_udev; then
|
||||
add_boot_init udev sysinit
|
||||
add_boot_init udev-postmount default
|
||||
fi
|
||||
}
|
||||
|
||||
migrate_from_baselayout_1() {
|
||||
# baselayout boot init scripts have been split out
|
||||
for f in $(cd "${D}"/usr/share/${PN}/runlevels/boot || exit; echo *) ; do
|
||||
# baselayout-1 is always "old" net, so ignore "new" net
|
||||
[[ ${f} == "network" ]] && continue
|
||||
|
||||
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/conf.d/dmcrypt dmcrypt
|
||||
add_boot_init_mit_config /etc/mdadm.conf mdraid
|
||||
add_boot_init_mit_config /etc/evms.conf evms
|
||||
[[ -e ${ROOT}/sbin/dmsetup ]] && add_boot_init 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
|
||||
|
||||
# Handle the conf.d/local.{start,stop} -> local.d transition
|
||||
if path_exists -o "${ROOT}"etc/conf.d/local.{start,stop} ; then
|
||||
elog "Moving your ${ROOT}etc/conf.d/local.{start,stop}"
|
||||
elog "files to ${ROOT}etc/local.d"
|
||||
mv "${ROOT}"etc/conf.d/local.start "${ROOT}"etc/local.d/baselayout1.start
|
||||
mv "${ROOT}"etc/conf.d/local.stop "${ROOT}"etc/local.d/baselayout1.stop
|
||||
chmod +x "${ROOT}"etc/local.d/*{start,stop}
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
local LIBDIR=$(get_libdir)
|
||||
|
||||
# Remove old baselayout links
|
||||
rm -f "${ROOT}"/etc/runlevels/boot/{check{fs,root},rmnologin}
|
||||
rm -f "${ROOT}"/etc/init.d/{depscan,runscript}.sh
|
||||
|
||||
# Make our runlevels if they don't exist
|
||||
if [[ ! -e ${ROOT}/etc/runlevels ]] || [[ -e ${ROOT}/etc/runlevels/.add_boot_init.created ]] ; then
|
||||
einfo "Copying across default runlevels"
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels "${ROOT}"/etc
|
||||
rm -f "${ROOT}"/etc/runlevels/.add_boot_init.created
|
||||
else
|
||||
if [[ ! -e ${ROOT}/etc/runlevels/sysinit/devfs ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/sysinit
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels/sysinit/* \
|
||||
"${ROOT}"/etc/runlevels/sysinit
|
||||
fi
|
||||
if [[ ! -e ${ROOT}/etc/runlevels/shutdown/mount-ro ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/shutdown
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels/shutdown/* \
|
||||
"${ROOT}"/etc/runlevels/shutdown
|
||||
fi
|
||||
fi
|
||||
|
||||
# /etc/conf.d/net.example is no longer valid
|
||||
local NET_EXAMPLE="${ROOT}/etc/conf.d/net.example"
|
||||
local NET_MD5='8ebebfa07441d39eb54feae0ee4c8210'
|
||||
if [[ -e "${NET_EXAMPLE}" ]] ; then
|
||||
if [[ $(md5sum "${NET_EXAMPLE}") == ${NET_MD5}* ]]; then
|
||||
rm -f "${NET_EXAMPLE}"
|
||||
elog "${NET_EXAMPLE} has been removed."
|
||||
else
|
||||
sed -i '1i# This file is obsolete.\n' "${NET_EXAMPLE}"
|
||||
elog "${NET_EXAMPLE} should be removed."
|
||||
fi
|
||||
elog "The new file is ${ROOT}/usr/share/doc/${PF}/net.example"
|
||||
fi
|
||||
|
||||
# /etc/conf.d/wireless.example is no longer valid
|
||||
local WIRELESS_EXAMPLE="${ROOT}/etc/conf.d/wireless.example"
|
||||
local WIRELESS_MD5='d1fad7da940bf263c76af4d2082124a3'
|
||||
if [[ -e "${WIRELESS_EXAMPLE}" ]] ; then
|
||||
if [[ $(md5sum "${WIRELESS_EXAMPLE}") == ${WIRELESS_MD5}* ]]; then
|
||||
rm -f "${WIRELESS_EXAMPLE}"
|
||||
elog "${WIRELESS_EXAMPLE} is deprecated and has been removed."
|
||||
else
|
||||
sed -i '1i# This file is obsolete.\n' "${WIRELESS_EXAMPLE}"
|
||||
elog "${WIRELESS_EXAMPLE} is deprecated and should be removed."
|
||||
fi
|
||||
elog "If you are using the old style network scripts,"
|
||||
elog "Configure wireless settings in ${ROOT}/etc/conf.d/net"
|
||||
elog "after reviewing ${ROOT}/usr/share/doc/${PF}/net.example"
|
||||
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
|
||||
|
||||
if use hppa; then
|
||||
elog "Setting the console font does not work on all HPPA consoles."
|
||||
elog "You can still enable it by running:"
|
||||
elog "# rc-update add consolefont boot"
|
||||
fi
|
||||
|
||||
# update the dependency tree after touching all files #224171
|
||||
[[ "${ROOT}" = "/" ]] && "${ROOT}/${LIBDIR}"/rc/bin/rc-depend -u
|
||||
|
||||
elog "You should now update all files in /etc, using etc-update"
|
||||
elog "or equivalent before restarting any services or this host."
|
||||
elog
|
||||
elog "Please read the migration guide available at:"
|
||||
elog "http://www.gentoo.org/doc/en/openrc-migration.xml"
|
||||
}
|
||||
|
|
@ -1,435 +0,0 @@
|
|||
# Copyright 1999-2011 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/sys-apps/openrc/openrc-0.8.3-r1.ebuild,v 1.3 2011/06/28 04:34:29 vapier Exp $
|
||||
|
||||
EAPI=4
|
||||
|
||||
EGIT_REPO_URI="git://git.overlays.gentoo.org/proj/${PN}.git"
|
||||
[[ ${PV} == "9999" ]] && SCM_ECLASS="git-2"
|
||||
inherit eutils flag-o-matic multilib toolchain-funcs ${SCM_ECLASS}
|
||||
unset SCM_ECLASS
|
||||
|
||||
DESCRIPTION="OpenRC manages the services, startup and shutdown of a host"
|
||||
HOMEPAGE="http://www.gentoo.org/proj/en/base/openrc/"
|
||||
if [[ ${PV} != "9999" ]] ; then
|
||||
SRC_URI="mirror://gentoo/${P}.tar.bz2"
|
||||
KEYWORDS="alpha amd64 arm hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc x86 ~sparc-fbsd ~x86-fbsd"
|
||||
fi
|
||||
|
||||
LICENSE="BSD-2"
|
||||
SLOT="0"
|
||||
IUSE="debug elibc_glibc ncurses pam pentoo selinux unicode kernel_linux kernel_FreeBSD"
|
||||
|
||||
RDEPEND="virtual/init
|
||||
kernel_FreeBSD? ( sys-process/fuser-bsd )
|
||||
elibc_glibc? ( >=sys-libs/glibc-2.5 )
|
||||
ncurses? ( sys-libs/ncurses )
|
||||
pam? ( virtual/pam )
|
||||
>=sys-apps/baselayout-2.0.0
|
||||
kernel_linux? ( !<sys-apps/module-init-tools-3.2.2-r2 )
|
||||
!<sys-fs/udev-133
|
||||
!<sys-apps/sysvinit-2.86-r11"
|
||||
DEPEND="${RDEPEND}
|
||||
virtual/os-headers"
|
||||
|
||||
make_args() {
|
||||
unset LIBDIR #266688
|
||||
|
||||
MAKE_ARGS="${MAKE_ARGS} LIBNAME=$(get_libdir) LIBEXECDIR=/$(get_libdir)/rc"
|
||||
MAKE_ARGS="${MAKE_ARGS} MKOLDNET=yes"
|
||||
|
||||
local brand="Unknown"
|
||||
if use kernel_linux ; then
|
||||
MAKE_ARGS="${MAKE_ARGS} OS=Linux"
|
||||
brand="Linux"
|
||||
elif use kernel_FreeBSD ; then
|
||||
MAKE_ARGS="${MAKE_ARGS} OS=FreeBSD"
|
||||
brand="FreeBSD"
|
||||
fi
|
||||
if use selinux; then
|
||||
MAKE_ARGS="${MAKE_ARGS} MKSELINUX=yes"
|
||||
fi
|
||||
if use pentoo ; then
|
||||
export BRANDING="Pentoo ${brand}"
|
||||
else
|
||||
export BRANDING="Gentoo ${brand}"
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_setup() {
|
||||
export DEBUG=$(usev debug)
|
||||
export MKPAM=$(usev pam)
|
||||
export MKTERMCAP=$(usev ncurses)
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
sed -i 's:0444:0644:' mk/sys.mk || die
|
||||
sed -i "/^DIR/s:/openrc:/${PF}:" doc/Makefile || die #241342
|
||||
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
local ver="git-${EGIT_VERSION:0:6}"
|
||||
sed -i "/^GITVER[[:space:]]*=/s:=.*:=${ver}:" mk/git.mk || die
|
||||
fi
|
||||
|
||||
epatch "${FILESDIR}"/${P}-deprecation_warning.patch
|
||||
epatch "${FILESDIR}"/${P}-ccwgroup.patch #367467
|
||||
|
||||
# Allow user patches to be applied without modifying the ebuild
|
||||
epatch_user
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
make_args
|
||||
|
||||
tc-export CC AR RANLIB
|
||||
emake ${MAKE_ARGS}
|
||||
}
|
||||
|
||||
# set_config <file> <option name> <yes value> <no value> test
|
||||
# a value of "#" will just comment out the option
|
||||
set_config() {
|
||||
local file="${D}/$1" var=$2 val com
|
||||
eval "${@:5}" && val=$3 || val=$4
|
||||
[[ ${val} == "#" ]] && com="#" && val='\2'
|
||||
sed -i -r -e "/^#?${var}=/{s:=([\"'])?([^ ]*)\1?:=\1${val}\1:;s:^#?:${com}:}" "${file}"
|
||||
}
|
||||
|
||||
set_config_yes_no() {
|
||||
set_config "$1" "$2" YES NO "${@:3}"
|
||||
}
|
||||
|
||||
src_install() {
|
||||
make_args
|
||||
emake ${MAKE_ARGS} DESTDIR="${D}" install
|
||||
|
||||
# install the readme for the new network scripts
|
||||
dodoc README.newnet
|
||||
|
||||
# move the shared libs back to /usr so ldscript can install
|
||||
# more of a minimal set of files
|
||||
# disabled for now due to #270646
|
||||
#mv "${D}"/$(get_libdir)/lib{einfo,rc}* "${D}"/usr/$(get_libdir)/ || die
|
||||
#gen_usr_ldscript -a einfo rc
|
||||
gen_usr_ldscript libeinfo.so
|
||||
gen_usr_ldscript librc.so
|
||||
|
||||
keepdir /$(get_libdir)/rc/{init.d,tmp}
|
||||
|
||||
# Backup our default runlevels
|
||||
dodir /usr/share/"${PN}"
|
||||
cp -PR "${D}"/etc/runlevels "${D}"/usr/share/${PN} || die
|
||||
rm -rf "${D}"/etc/runlevels
|
||||
|
||||
# Stick with "old" net as the default for now
|
||||
doconfd conf.d/net || die
|
||||
pushd "${D}"/usr/share/${PN}/runlevels/boot > /dev/null
|
||||
rm -f network staticroute
|
||||
ln -s /etc/init.d/net.lo net.lo
|
||||
popd > /dev/null
|
||||
|
||||
# Setup unicode defaults for silly unicode users
|
||||
set_config_yes_no /etc/rc.conf unicode use unicode
|
||||
|
||||
# Cater to the norm
|
||||
set_config_yes_no /etc/conf.d/keymaps windowkeys '(' use x86 '||' use amd64 ')'
|
||||
|
||||
# On HPPA, do not run consolefont by default (bug #222889)
|
||||
if use hppa; then
|
||||
rm -f "${D}"/usr/share/openrc/runlevels/boot/consolefont
|
||||
fi
|
||||
|
||||
# Support for logfile rotation
|
||||
insinto /etc/logrotate.d
|
||||
newins "${FILESDIR}"/openrc.logrotate openrc
|
||||
}
|
||||
|
||||
add_boot_init() {
|
||||
local initd=$1
|
||||
local runlevel=${2:-boot}
|
||||
# if the initscript is not going to be installed and is not
|
||||
# currently installed, return
|
||||
[[ -e ${D}/etc/init.d/${initd} || -e ${ROOT}/etc/init.d/${initd} ]] \
|
||||
|| return
|
||||
[[ -e ${ROOT}/etc/runlevels/${runlevel}/${initd} ]] && return
|
||||
|
||||
# if runlevels dont exist just yet, then create it but still flag
|
||||
# to pkg_postinst that it needs real setup #277323
|
||||
if [[ ! -d ${ROOT}/etc/runlevels/${runlevel} ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/${runlevel}
|
||||
touch "${ROOT}"/etc/runlevels/.add_boot_init.created
|
||||
fi
|
||||
|
||||
elog "Auto-adding '${initd}' service to your ${runlevel} runlevel"
|
||||
ln -snf /etc/init.d/${initd} "${ROOT}"/etc/runlevels/${runlevel}/${initd}
|
||||
}
|
||||
add_boot_init_mit_config() {
|
||||
local config=$1 initd=$2
|
||||
if [[ -e ${ROOT}${config} ]] ; then
|
||||
if [[ -n $(sed -e 's:#.*::' -e '/^[[:space:]]*$/d' "${ROOT}"/${config}) ]] ; then
|
||||
add_boot_init ${initd}
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_preinst() {
|
||||
local f LIBDIR=$(get_libdir)
|
||||
|
||||
# default net script is just comments, so no point in biting people
|
||||
# in the ass by accident. we save in preinst so that the package
|
||||
# manager doesnt go throwing etc-update crap at us -- postinst is
|
||||
# too late to prevent that. this behavior also lets us keep the
|
||||
# file in the CONTENTS for binary packages.
|
||||
[[ -e ${ROOT}/etc/conf.d/net ]] && cp "${ROOT}"/etc/conf.d/net "${D}"/etc/conf.d/
|
||||
|
||||
# avoid default thrashing in conf.d files when possible #295406
|
||||
if [[ -e ${ROOT}/etc/conf.d/hostname ]] ; then
|
||||
(
|
||||
unset hostname HOSTNAME
|
||||
source "${ROOT}"/etc/conf.d/hostname
|
||||
: ${hostname:=${HOSTNAME}}
|
||||
[[ -n ${hostname} ]] && set_config /etc/conf.d/hostname hostname "${hostname}"
|
||||
)
|
||||
fi
|
||||
|
||||
# upgrade timezone file ... do it before moving clock
|
||||
if [[ -e ${ROOT}/etc/conf.d/clock && ! -e ${ROOT}/etc/timezone ]] ; then
|
||||
(
|
||||
unset TIMEZONE
|
||||
source "${ROOT}"/etc/conf.d/clock
|
||||
[[ -n ${TIMEZONE} ]] && echo "${TIMEZONE}" > "${ROOT}"/etc/timezone
|
||||
)
|
||||
fi
|
||||
|
||||
# /etc/conf.d/clock moved to /etc/conf.d/hwclock
|
||||
local clock
|
||||
use kernel_FreeBSD && clock="adjkerntz" || clock="hwclock"
|
||||
if [[ -e ${ROOT}/etc/conf.d/clock ]] ; then
|
||||
mv "${ROOT}"/etc/conf.d/clock "${ROOT}"/etc/conf.d/${clock}
|
||||
fi
|
||||
if [[ -e ${ROOT}/etc/init.d/clock ]] ; then
|
||||
rm -f "${ROOT}"/etc/init.d/clock
|
||||
fi
|
||||
if [[ -L ${ROOT}/etc/runlevels/boot/clock ]] ; then
|
||||
rm -f "${ROOT}"/etc/runlevels/boot/clock
|
||||
ln -snf /etc/init.d/${clock} "${ROOT}"/etc/runlevels/boot/${clock}
|
||||
fi
|
||||
if [[ -L ${ROOT}${LIBDIR}/rc/init.d/started/clock ]] ; then
|
||||
rm -f "${ROOT}${LIBDIR}"/rc/init.d/started/clock
|
||||
ln -snf /etc/init.d/${clock} "${ROOT}${LIBDIR}"/rc/init.d/started/${clock}
|
||||
fi
|
||||
|
||||
# /etc/conf.d/rc is no longer used for configuration
|
||||
if [[ -e ${ROOT}/etc/conf.d/rc ]] ; then
|
||||
elog "/etc/conf.d/rc is no longer used for configuration."
|
||||
elog "Please migrate your settings to /etc/rc.conf as applicable"
|
||||
elog "and delete /etc/conf.d/rc"
|
||||
fi
|
||||
|
||||
# force net init.d scripts into symlinks
|
||||
for f in "${ROOT}"/etc/init.d/net.* ; do
|
||||
[[ -e ${f} ]] || continue # catch net.* not matching anything
|
||||
[[ ${f} == */net.lo ]] && continue # real file now
|
||||
[[ ${f} == *.openrc.bak ]] && continue
|
||||
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
|
||||
|
||||
# termencoding was added in 0.2.1 and needed in boot
|
||||
has_version ">=sys-apps/openrc-0.2.1" || add_boot_init termencoding
|
||||
|
||||
# set default interactive shell to sulogin if it exists
|
||||
set_config /etc/rc.conf rc_shell /sbin/sulogin "#" test -e /sbin/sulogin
|
||||
|
||||
has_version sys-apps/openrc || migrate_from_baselayout_1
|
||||
has_version ">=sys-apps/openrc-0.4.0" || migrate_udev_init_script
|
||||
}
|
||||
|
||||
# >=openrc-0.4.0 no longer loads the udev addon
|
||||
migrate_udev_init_script() {
|
||||
# make sure udev is in sysinit if it was enabled before
|
||||
local enable_udev=false
|
||||
local rc_devices=$(
|
||||
[[ -f /etc/rc.conf ]] && source /etc/rc.conf
|
||||
[[ -f /etc/conf.d/rc ]] && source /etc/conf.d/rc
|
||||
echo "${rc_devices:-${RC_DEVICES:-auto}}"
|
||||
)
|
||||
case ${rc_devices} in
|
||||
udev|auto)
|
||||
enable_udev=true
|
||||
;;
|
||||
esac
|
||||
|
||||
if $enable_udev; then
|
||||
add_boot_init udev sysinit
|
||||
add_boot_init udev-postmount default
|
||||
fi
|
||||
}
|
||||
|
||||
migrate_from_baselayout_1() {
|
||||
# baselayout boot init scripts have been split out
|
||||
for f in $(cd "${D}"/usr/share/${PN}/runlevels/boot || exit; echo *) ; do
|
||||
# baselayout-1 is always "old" net, so ignore "new" net
|
||||
[[ ${f} == "network" ]] && continue
|
||||
|
||||
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/conf.d/dmcrypt dmcrypt
|
||||
add_boot_init_mit_config /etc/mdadm.conf mdraid
|
||||
add_boot_init_mit_config /etc/evms.conf evms
|
||||
[[ -e ${ROOT}/sbin/dmsetup ]] && add_boot_init 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 our 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() {
|
||||
local LIBDIR=$(get_libdir)
|
||||
|
||||
# Remove old baselayout links
|
||||
rm -f "${ROOT}"/etc/runlevels/boot/{check{fs,root},rmnologin}
|
||||
rm -f "${ROOT}"/etc/init.d/{depscan,runscript}.sh
|
||||
|
||||
# Make our runlevels if they don't exist
|
||||
if [[ ! -e ${ROOT}/etc/runlevels ]] || [[ -e ${ROOT}/etc/runlevels/.add_boot_init.created ]] ; then
|
||||
einfo "Copying across default runlevels"
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels "${ROOT}"/etc
|
||||
rm -f "${ROOT}"/etc/runlevels/.add_boot_init.created
|
||||
else
|
||||
if [[ ! -e ${ROOT}/etc/runlevels/sysinit/devfs ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/sysinit
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels/sysinit/* \
|
||||
"${ROOT}"/etc/runlevels/sysinit
|
||||
fi
|
||||
if [[ ! -e ${ROOT}/etc/runlevels/shutdown/mount-ro ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/shutdown
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels/shutdown/* \
|
||||
"${ROOT}"/etc/runlevels/shutdown
|
||||
fi
|
||||
fi
|
||||
|
||||
# /etc/conf.d/net.example is no longer valid
|
||||
local NET_EXAMPLE="${ROOT}/etc/conf.d/net.example"
|
||||
local NET_MD5='8ebebfa07441d39eb54feae0ee4c8210'
|
||||
if [[ -e "${NET_EXAMPLE}" ]] ; then
|
||||
if [[ $(md5sum "${NET_EXAMPLE}") == ${NET_MD5}* ]]; then
|
||||
rm -f "${NET_EXAMPLE}"
|
||||
elog "${NET_EXAMPLE} has been removed."
|
||||
else
|
||||
sed -i '1i# This file is obsolete.\n' "${NET_EXAMPLE}"
|
||||
elog "${NET_EXAMPLE} should be removed."
|
||||
fi
|
||||
elog "The new file is ${ROOT}/usr/share/doc/${PF}/net.example"
|
||||
fi
|
||||
|
||||
# /etc/conf.d/wireless.example is no longer valid
|
||||
local WIRELESS_EXAMPLE="${ROOT}/etc/conf.d/wireless.example"
|
||||
local WIRELESS_MD5='d1fad7da940bf263c76af4d2082124a3'
|
||||
if [[ -e "${WIRELESS_EXAMPLE}" ]] ; then
|
||||
if [[ $(md5sum "${WIRELESS_EXAMPLE}") == ${WIRELESS_MD5}* ]]; then
|
||||
rm -f "${WIRELESS_EXAMPLE}"
|
||||
elog "${WIRELESS_EXAMPLE} is deprecated and has been removed."
|
||||
else
|
||||
sed -i '1i# This file is obsolete.\n' "${WIRELESS_EXAMPLE}"
|
||||
elog "${WIRELESS_EXAMPLE} is deprecated and should be removed."
|
||||
fi
|
||||
elog "If you are using the old style network scripts,"
|
||||
elog "Configure wireless settings in ${ROOT}/etc/conf.d/net"
|
||||
elog "after reviewing ${ROOT}/usr/share/doc/${PF}/net.example"
|
||||
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
|
||||
|
||||
if use hppa; then
|
||||
elog "Setting the console font does not work on all HPPA consoles."
|
||||
elog "You can still enable it by running:"
|
||||
elog "# rc-update add consolefont boot"
|
||||
fi
|
||||
|
||||
# Handle the conf.d/local.{start,stop} -> local.d transition
|
||||
if path_exists -o "${ROOT}"etc/conf.d/local.{start,stop} ; then
|
||||
elog "Moving your ${ROOT}etc/conf.d/local.{start,stop}"
|
||||
elog "files to ${ROOT}etc/local.d"
|
||||
mv "${ROOT}"etc/conf.d/local.start "${ROOT}"etc/local.d/baselayout1.start
|
||||
mv "${ROOT}"etc/conf.d/local.stop "${ROOT}"etc/local.d/baselayout1.stop
|
||||
chmod +x "${ROOT}"etc/local.d/*{start,stop}
|
||||
fi
|
||||
if path_exists -o "${ROOT}"/etc/local.d/ ; then
|
||||
use pentoo && cp "${FILESDIR}"/*.start "${ROOT}"etc/local.d/
|
||||
use pentoo && chmod +x "${ROOT}"etc/local.d/*.{start,stop}
|
||||
fi
|
||||
|
||||
# update the dependency tree after touching all files #224171
|
||||
[[ "${ROOT}" = "/" ]] && "${ROOT}/${LIBDIR}"/rc/bin/rc-depend -u
|
||||
|
||||
elog "You should now update all files in /etc, using etc-update"
|
||||
elog "or equivalent before restarting any services or this host."
|
||||
elog
|
||||
elog "Please read the migration guide available at:"
|
||||
elog "http://www.gentoo.org/doc/en/openrc-migration.xml"
|
||||
}
|
||||
|
|
@ -1,432 +0,0 @@
|
|||
# Copyright 1999-2011 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/sys-apps/openrc/openrc-0.8.3.ebuild,v 1.1 2011/06/20 03:28:15 williamh Exp $
|
||||
|
||||
EAPI=4
|
||||
|
||||
EGIT_REPO_URI="git://git.overlays.gentoo.org/proj/${PN}.git"
|
||||
[[ ${PV} == "9999" ]] && SCM_ECLASS="git-2"
|
||||
inherit eutils flag-o-matic multilib toolchain-funcs ${SCM_ECLASS}
|
||||
unset SCM_ECLASS
|
||||
|
||||
DESCRIPTION="OpenRC manages the services, startup and shutdown of a host"
|
||||
HOMEPAGE="http://www.gentoo.org/proj/en/base/openrc/"
|
||||
if [[ ${PV} != "9999" ]] ; then
|
||||
SRC_URI="mirror://gentoo/${P}.tar.bz2"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~sparc-fbsd ~x86 ~x86-fbsd"
|
||||
fi
|
||||
|
||||
LICENSE="BSD-2"
|
||||
SLOT="0"
|
||||
IUSE="debug elibc_glibc ncurses pam pentoo selinux unicode kernel_linux kernel_FreeBSD"
|
||||
|
||||
RDEPEND="virtual/init
|
||||
kernel_FreeBSD? ( sys-process/fuser-bsd )
|
||||
elibc_glibc? ( >=sys-libs/glibc-2.5 )
|
||||
ncurses? ( sys-libs/ncurses )
|
||||
pam? ( virtual/pam )
|
||||
>=sys-apps/baselayout-2.0.0
|
||||
kernel_linux? ( !<sys-apps/module-init-tools-3.2.2-r2 )
|
||||
!<sys-fs/udev-133
|
||||
!<sys-apps/sysvinit-2.86-r11"
|
||||
DEPEND="${RDEPEND}
|
||||
virtual/os-headers"
|
||||
|
||||
make_args() {
|
||||
unset LIBDIR #266688
|
||||
|
||||
MAKE_ARGS="${MAKE_ARGS} LIBNAME=$(get_libdir) LIBEXECDIR=/$(get_libdir)/rc"
|
||||
MAKE_ARGS="${MAKE_ARGS} MKOLDNET=yes"
|
||||
|
||||
local brand="Unknown"
|
||||
if use kernel_linux ; then
|
||||
MAKE_ARGS="${MAKE_ARGS} OS=Linux"
|
||||
brand="Linux"
|
||||
elif use kernel_FreeBSD ; then
|
||||
MAKE_ARGS="${MAKE_ARGS} OS=FreeBSD"
|
||||
brand="FreeBSD"
|
||||
fi
|
||||
if use selinux; then
|
||||
MAKE_ARGS="${MAKE_ARGS} MKSELINUX=yes"
|
||||
fi
|
||||
if use pentoo ; then
|
||||
export BRANDING="Pentoo ${brand}"
|
||||
else
|
||||
export BRANDING="Gentoo ${brand}"
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_setup() {
|
||||
export DEBUG=$(usev debug)
|
||||
export MKPAM=$(usev pam)
|
||||
export MKTERMCAP=$(usev ncurses)
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
sed -i 's:0444:0644:' mk/sys.mk || die
|
||||
sed -i "/^DIR/s:/openrc:/${PF}:" doc/Makefile || die #241342
|
||||
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
local ver="git-${EGIT_VERSION:0:6}"
|
||||
sed -i "/^GITVER[[:space:]]*=/s:=.*:=${ver}:" mk/git.mk || die
|
||||
fi
|
||||
|
||||
# Allow user patches to be applied without modifying the ebuild
|
||||
epatch_user
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
make_args
|
||||
|
||||
tc-export CC AR RANLIB
|
||||
emake ${MAKE_ARGS}
|
||||
}
|
||||
|
||||
# set_config <file> <option name> <yes value> <no value> test
|
||||
# a value of "#" will just comment out the option
|
||||
set_config() {
|
||||
local file="${D}/$1" var=$2 val com
|
||||
eval "${@:5}" && val=$3 || val=$4
|
||||
[[ ${val} == "#" ]] && com="#" && val='\2'
|
||||
sed -i -r -e "/^#?${var}=/{s:=([\"'])?([^ ]*)\1?:=\1${val}\1:;s:^#?:${com}:}" "${file}"
|
||||
}
|
||||
|
||||
set_config_yes_no() {
|
||||
set_config "$1" "$2" YES NO "${@:3}"
|
||||
}
|
||||
|
||||
src_install() {
|
||||
make_args
|
||||
emake ${MAKE_ARGS} DESTDIR="${D}" install
|
||||
|
||||
# install the readme for the new network scripts
|
||||
dodoc README.newnet
|
||||
|
||||
# move the shared libs back to /usr so ldscript can install
|
||||
# more of a minimal set of files
|
||||
# disabled for now due to #270646
|
||||
#mv "${D}"/$(get_libdir)/lib{einfo,rc}* "${D}"/usr/$(get_libdir)/ || die
|
||||
#gen_usr_ldscript -a einfo rc
|
||||
gen_usr_ldscript libeinfo.so
|
||||
gen_usr_ldscript librc.so
|
||||
|
||||
keepdir /$(get_libdir)/rc/{init.d,tmp}
|
||||
|
||||
# Backup our default runlevels
|
||||
dodir /usr/share/"${PN}"
|
||||
cp -PR "${D}"/etc/runlevels "${D}"/usr/share/${PN} || die
|
||||
rm -rf "${D}"/etc/runlevels
|
||||
|
||||
# Stick with "old" net as the default for now
|
||||
doconfd conf.d/net || die
|
||||
pushd "${D}"/usr/share/${PN}/runlevels/boot > /dev/null
|
||||
rm -f network staticroute
|
||||
ln -s /etc/init.d/net.lo net.lo
|
||||
popd > /dev/null
|
||||
|
||||
# Setup unicode defaults for silly unicode users
|
||||
set_config_yes_no /etc/rc.conf unicode use unicode
|
||||
|
||||
# Cater to the norm
|
||||
set_config_yes_no /etc/conf.d/keymaps windowkeys '(' use x86 '||' use amd64 ')'
|
||||
|
||||
# On HPPA, do not run consolefont by default (bug #222889)
|
||||
if use hppa; then
|
||||
rm -f "${D}"/usr/share/openrc/runlevels/boot/consolefont
|
||||
fi
|
||||
|
||||
# Support for logfile rotation
|
||||
insinto /etc/logrotate.d
|
||||
newins "${FILESDIR}"/openrc.logrotate openrc
|
||||
}
|
||||
|
||||
add_boot_init() {
|
||||
local initd=$1
|
||||
local runlevel=${2:-boot}
|
||||
# if the initscript is not going to be installed and is not
|
||||
# currently installed, return
|
||||
[[ -e ${D}/etc/init.d/${initd} || -e ${ROOT}/etc/init.d/${initd} ]] \
|
||||
|| return
|
||||
[[ -e ${ROOT}/etc/runlevels/${runlevel}/${initd} ]] && return
|
||||
|
||||
# if runlevels dont exist just yet, then create it but still flag
|
||||
# to pkg_postinst that it needs real setup #277323
|
||||
if [[ ! -d ${ROOT}/etc/runlevels/${runlevel} ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/${runlevel}
|
||||
touch "${ROOT}"/etc/runlevels/.add_boot_init.created
|
||||
fi
|
||||
|
||||
elog "Auto-adding '${initd}' service to your ${runlevel} runlevel"
|
||||
ln -snf /etc/init.d/${initd} "${ROOT}"/etc/runlevels/${runlevel}/${initd}
|
||||
}
|
||||
add_boot_init_mit_config() {
|
||||
local config=$1 initd=$2
|
||||
if [[ -e ${ROOT}${config} ]] ; then
|
||||
if [[ -n $(sed -e 's:#.*::' -e '/^[[:space:]]*$/d' "${ROOT}"/${config}) ]] ; then
|
||||
add_boot_init ${initd}
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_preinst() {
|
||||
local f LIBDIR=$(get_libdir)
|
||||
|
||||
# default net script is just comments, so no point in biting people
|
||||
# in the ass by accident. we save in preinst so that the package
|
||||
# manager doesnt go throwing etc-update crap at us -- postinst is
|
||||
# too late to prevent that. this behavior also lets us keep the
|
||||
# file in the CONTENTS for binary packages.
|
||||
[[ -e ${ROOT}/etc/conf.d/net ]] && cp "${ROOT}"/etc/conf.d/net "${D}"/etc/conf.d/
|
||||
|
||||
# avoid default thrashing in conf.d files when possible #295406
|
||||
if [[ -e ${ROOT}/etc/conf.d/hostname ]] ; then
|
||||
(
|
||||
unset hostname HOSTNAME
|
||||
source "${ROOT}"/etc/conf.d/hostname
|
||||
: ${hostname:=${HOSTNAME}}
|
||||
[[ -n ${hostname} ]] && set_config /etc/conf.d/hostname hostname "${hostname}"
|
||||
)
|
||||
fi
|
||||
|
||||
# upgrade timezone file ... do it before moving clock
|
||||
if [[ -e ${ROOT}/etc/conf.d/clock && ! -e ${ROOT}/etc/timezone ]] ; then
|
||||
(
|
||||
unset TIMEZONE
|
||||
source "${ROOT}"/etc/conf.d/clock
|
||||
[[ -n ${TIMEZONE} ]] && echo "${TIMEZONE}" > "${ROOT}"/etc/timezone
|
||||
)
|
||||
fi
|
||||
|
||||
# /etc/conf.d/clock moved to /etc/conf.d/hwclock
|
||||
local clock
|
||||
use kernel_FreeBSD && clock="adjkerntz" || clock="hwclock"
|
||||
if [[ -e ${ROOT}/etc/conf.d/clock ]] ; then
|
||||
mv "${ROOT}"/etc/conf.d/clock "${ROOT}"/etc/conf.d/${clock}
|
||||
fi
|
||||
if [[ -e ${ROOT}/etc/init.d/clock ]] ; then
|
||||
rm -f "${ROOT}"/etc/init.d/clock
|
||||
fi
|
||||
if [[ -L ${ROOT}/etc/runlevels/boot/clock ]] ; then
|
||||
rm -f "${ROOT}"/etc/runlevels/boot/clock
|
||||
ln -snf /etc/init.d/${clock} "${ROOT}"/etc/runlevels/boot/${clock}
|
||||
fi
|
||||
if [[ -L ${ROOT}${LIBDIR}/rc/init.d/started/clock ]] ; then
|
||||
rm -f "${ROOT}${LIBDIR}"/rc/init.d/started/clock
|
||||
ln -snf /etc/init.d/${clock} "${ROOT}${LIBDIR}"/rc/init.d/started/${clock}
|
||||
fi
|
||||
|
||||
# /etc/conf.d/rc is no longer used for configuration
|
||||
if [[ -e ${ROOT}/etc/conf.d/rc ]] ; then
|
||||
elog "/etc/conf.d/rc is no longer used for configuration."
|
||||
elog "Please migrate your settings to /etc/rc.conf as applicable"
|
||||
elog "and delete /etc/conf.d/rc"
|
||||
fi
|
||||
|
||||
# force net init.d scripts into symlinks
|
||||
for f in "${ROOT}"/etc/init.d/net.* ; do
|
||||
[[ -e ${f} ]] || continue # catch net.* not matching anything
|
||||
[[ ${f} == */net.lo ]] && continue # real file now
|
||||
[[ ${f} == *.openrc.bak ]] && continue
|
||||
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
|
||||
|
||||
# termencoding was added in 0.2.1 and needed in boot
|
||||
has_version ">=sys-apps/openrc-0.2.1" || add_boot_init termencoding
|
||||
|
||||
# set default interactive shell to sulogin if it exists
|
||||
set_config /etc/rc.conf rc_shell /sbin/sulogin "#" test -e /sbin/sulogin
|
||||
|
||||
has_version sys-apps/openrc || migrate_from_baselayout_1
|
||||
has_version ">=sys-apps/openrc-0.4.0" || migrate_udev_init_script
|
||||
}
|
||||
|
||||
# >=openrc-0.4.0 no longer loads the udev addon
|
||||
migrate_udev_init_script() {
|
||||
# make sure udev is in sysinit if it was enabled before
|
||||
local enable_udev=false
|
||||
local rc_devices=$(
|
||||
[[ -f /etc/rc.conf ]] && source /etc/rc.conf
|
||||
[[ -f /etc/conf.d/rc ]] && source /etc/conf.d/rc
|
||||
echo "${rc_devices:-${RC_DEVICES:-auto}}"
|
||||
)
|
||||
case ${rc_devices} in
|
||||
udev|auto)
|
||||
enable_udev=true
|
||||
;;
|
||||
esac
|
||||
|
||||
if $enable_udev; then
|
||||
add_boot_init udev sysinit
|
||||
add_boot_init udev-postmount default
|
||||
fi
|
||||
}
|
||||
|
||||
migrate_from_baselayout_1() {
|
||||
# baselayout boot init scripts have been split out
|
||||
for f in $(cd "${D}"/usr/share/${PN}/runlevels/boot || exit; echo *) ; do
|
||||
# baselayout-1 is always "old" net, so ignore "new" net
|
||||
[[ ${f} == "network" ]] && continue
|
||||
|
||||
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/conf.d/dmcrypt dmcrypt
|
||||
add_boot_init_mit_config /etc/mdadm.conf mdraid
|
||||
add_boot_init_mit_config /etc/evms.conf evms
|
||||
[[ -e ${ROOT}/sbin/dmsetup ]] && add_boot_init 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 our 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() {
|
||||
local LIBDIR=$(get_libdir)
|
||||
|
||||
# Remove old baselayout links
|
||||
rm -f "${ROOT}"/etc/runlevels/boot/{check{fs,root},rmnologin}
|
||||
rm -f "${ROOT}"/etc/init.d/{depscan,runscript}.sh
|
||||
|
||||
# Make our runlevels if they don't exist
|
||||
if [[ ! -e ${ROOT}/etc/runlevels ]] || [[ -e ${ROOT}/etc/runlevels/.add_boot_init.created ]] ; then
|
||||
einfo "Copying across default runlevels"
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels "${ROOT}"/etc
|
||||
rm -f "${ROOT}"/etc/runlevels/.add_boot_init.created
|
||||
else
|
||||
if [[ ! -e ${ROOT}/etc/runlevels/sysinit/devfs ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/sysinit
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels/sysinit/* \
|
||||
"${ROOT}"/etc/runlevels/sysinit
|
||||
fi
|
||||
if [[ ! -e ${ROOT}/etc/runlevels/shutdown/mount-ro ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/runlevels/shutdown
|
||||
cp -RPp "${ROOT}"/usr/share/${PN}/runlevels/shutdown/* \
|
||||
"${ROOT}"/etc/runlevels/shutdown
|
||||
fi
|
||||
fi
|
||||
|
||||
# /etc/conf.d/net.example is no longer valid
|
||||
local NET_EXAMPLE="${ROOT}/etc/conf.d/net.example"
|
||||
local NET_MD5='8ebebfa07441d39eb54feae0ee4c8210'
|
||||
if [[ -e "${NET_EXAMPLE}" ]] ; then
|
||||
if [[ $(md5sum "${NET_EXAMPLE}") == ${NET_MD5}* ]]; then
|
||||
rm -f "${NET_EXAMPLE}"
|
||||
elog "${NET_EXAMPLE} has been removed."
|
||||
else
|
||||
sed -i '1i# This file is obsolete.\n' "${NET_EXAMPLE}"
|
||||
elog "${NET_EXAMPLE} should be removed."
|
||||
fi
|
||||
elog "The new file is ${ROOT}/usr/share/doc/${PF}/net.example"
|
||||
fi
|
||||
|
||||
# /etc/conf.d/wireless.example is no longer valid
|
||||
local WIRELESS_EXAMPLE="${ROOT}/etc/conf.d/wireless.example"
|
||||
local WIRELESS_MD5='d1fad7da940bf263c76af4d2082124a3'
|
||||
if [[ -e "${WIRELESS_EXAMPLE}" ]] ; then
|
||||
if [[ $(md5sum "${WIRELESS_EXAMPLE}") == ${WIRELESS_MD5}* ]]; then
|
||||
rm -f "${WIRELESS_EXAMPLE}"
|
||||
elog "${WIRELESS_EXAMPLE} is deprecated and has been removed."
|
||||
else
|
||||
sed -i '1i# This file is obsolete.\n' "${WIRELESS_EXAMPLE}"
|
||||
elog "${WIRELESS_EXAMPLE} is deprecated and should be removed."
|
||||
fi
|
||||
elog "If you are using the old style network scripts,"
|
||||
elog "Configure wireless settings in ${ROOT}/etc/conf.d/net"
|
||||
elog "after reviewing ${ROOT}/usr/share/doc/${PF}/net.example"
|
||||
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
|
||||
|
||||
if use hppa; then
|
||||
elog "Setting the console font does not work on all HPPA consoles."
|
||||
elog "You can still enable it by running:"
|
||||
elog "# rc-update add consolefont boot"
|
||||
fi
|
||||
|
||||
# Handle the conf.d/local.{start,stop} -> local.d transition
|
||||
if path_exists -o "${ROOT}"etc/conf.d/local.{start,stop} ; then
|
||||
elog "Moving your ${ROOT}etc/conf.d/local.{start,stop}"
|
||||
elog "files to ${ROOT}etc/local.d"
|
||||
mv "${ROOT}"etc/conf.d/local.start "${ROOT}"etc/local.d/baselayout1.start
|
||||
mv "${ROOT}"etc/conf.d/local.stop "${ROOT}"etc/local.d/baselayout1.stop
|
||||
chmod +x "${ROOT}"etc/local.d/*{start,stop}
|
||||
fi
|
||||
if path_exists -o "${ROOT}"/etc/local.d/ ; then
|
||||
use pentoo && cp "${FILESDIR}"/*.start "${ROOT}"etc/local.d/
|
||||
use pentoo && chmod +x "${ROOT}"etc/local.d/*.{start,stop}
|
||||
fi
|
||||
|
||||
# update the dependency tree after touching all files #224171
|
||||
[[ "${ROOT}" = "/" ]] && "${ROOT}/${LIBDIR}"/rc/bin/rc-depend -u
|
||||
|
||||
elog "You should now update all files in /etc, using etc-update"
|
||||
elog "or equivalent before restarting any services or this host."
|
||||
elog
|
||||
elog "Please read the migration guide available at:"
|
||||
elog "http://www.gentoo.org/doc/en/openrc-migration.xml"
|
||||
}
|
||||
Loading…
Reference in a new issue