summaryrefslogtreecommitdiff
blob: 44527824e61465980ff4f62c34b71905425e32ff (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
inherit flag-o-matic eutils toolchain-funcs multilib

DESCRIPTION="OpenRC manages the services, startup and shutdown of a host"
HOMEPAGE="http://roy.marples.name/"
SRC_URI="http://roy.marples.name/${P}.tar.bz2"

LICENSE="BSD-2"
SLOT="0"
KEYWORDS="~alpha ~amd64 ~hppa ~ia64 ~ppc ~ppc64 ~sh ~sparc ~sparc-fbsd ~x86 ~x86-fbsd"
IUSE="ncurses pam static unicode kernel_linux kernel_FreeBSD"

RDEPEND="virtual/init
 		kernel_linux? (
			>=sys-apps/coreutils-5.2.1
			>=sys-apps/module-init-tools-3.2.2-r2
			sys-apps/makedev
		)
		kernel_FreeBSD? ( sys-process/fuser-bsd )
		ncurses? ( sys-libs/ncurses )
		pam? ( virtual/pam )
		!<sys-apps/baselayout-2.0.0"
DEPEND="virtual/os-headers"

pkg_setup() {
	LIBDIR="lib"
	[ "${SYMLINK_LIB}" = "yes" ] && LIBDIR=$(get_abi_LIBDIR "${DEFAULT_ABI}")
}

make_opts() {
	local opts="${opts} LIB=${LIBDIR}"

	if use kernel_linux; then
		opts="${opts} OS=Linux"
	else
		opts="${opts} OS=BSD"
	fi

	use ncurses && opts="${opts} TERMCAP=ncurses"
	use pam && opts="${opts} PAM=pam"

	echo "${opts}"
}

src_compile() {
	use static && append-ldflags -static
	emake $(make_opts) CC=$(tc-getCC) || die
}

src_install() {
	emake $(make_opts) DESTDIR="${D}" install || die

	rm "${D}"usr/"${LIBDIR}"/libeinfo.so "${D}"usr/"${LIBDIR}"/librc.so
	gen_usr_ldscript libeinfo.so librc.so

	# Backup our default runlevels
	dodir /usr/share/"${PN}"
	mv "${D}/etc/runlevels" "${D}/usr/share/${PN}"

	# Setup unicode defaults for silly unicode users
	if use unicode; then
		sed -i -e '/^unicode=/s:NO:YES:' "${D}"/etc/rc.conf
	fi
}

pkg_preinst() {
	# baselayout bootmisc init script has been split out in OpenRC
	# so handle upgraders
	if ! has_version sys-apps/openrc; then
		local x= xtra=
		use kernel_linux && xtra="${xtra} procfs sysctl"
		use kernel_FreeBSD && xtra="${xtra} savecore dumpon"
		for x in swap ${xtra}; do
			[ -e "${ROOT}"etc/runlevels/boot/"${x}" ] && continue
			ln -snf /etc/init.d/"${x}" "${ROOT}"etc/runlevels/boot/"${x}"
		done
	fi
}

pkg_postinst() {
	# Make our runlevels if they don't exist
	if [ ! -e "${ROOT}"etc/runlevels ]; then
		einfo "Copying across default runlevels"
		cp -RPp "${ROOT}"usr/share/"${PN}"/runlevels "${ROOT}"/etc
	fi

	einfo "You should now update all files in /etc, using etc-update"
	einfo "or equivalent before restarting any services or this host."
}