openrc-0.41.2.ebuild (6296B)
1 # Copyright 1999-2019 Gentoo Authors
2 # Distributed under the terms of the GNU General Public License v2
3
4 EAPI=6
5
6 inherit flag-o-matic pam toolchain-funcs
7
8 DESCRIPTION="OpenRC manages the services, startup and shutdown of a host"
9 HOMEPAGE="https://github.com/openrc/openrc/"
10
11 if [[ ${PV} == "9999" ]]; then
12 EGIT_REPO_URI="https://github.com/OpenRC/${PN}.git"
13 inherit git-r3
14 else
15 SRC_URI="https://github.com/${PN}/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
16 KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd"
17 fi
18
19 LICENSE="BSD-2"
20 SLOT="0"
21 IUSE="audit bash debug init ncurses pam newnet prefix +netifrc selinux
22 static-libs unicode kernel_linux kernel_FreeBSD"
23
24 COMMON_DEPEND="kernel_FreeBSD? ( || ( >=sys-freebsd/freebsd-ubin-9.0_rc sys-process/fuser-bsd ) )
25 ncurses? ( sys-libs/ncurses:0= )
26 pam? (
27 sys-auth/pambase
28 virtual/pam
29 )
30 audit? ( sys-process/audit )
31 kernel_linux? (
32 sys-process/psmisc
33 !<sys-process/procps-3.3.9-r2
34 )
35 selinux? (
36 sys-apps/policycoreutils
37 >=sys-libs/libselinux-2.6
38 )
39 !<sys-apps/baselayout-2.1-r1
40 !<sys-fs/udev-init-scripts-27"
41 DEPEND="${COMMON_DEPEND}
42 virtual/os-headers
43 ncurses? ( virtual/pkgconfig )"
44 RDEPEND="${COMMON_DEPEND}
45 bash? ( app-shells/bash )
46 !prefix? (
47 kernel_linux? (
48 !init? ( >=sys-apps/sysvinit-2.86-r6[selinux?] )
49 init? ( !sys-apps/sysvinit )
50 virtual/tmpfiles
51 )
52 kernel_FreeBSD? ( sys-freebsd/freebsd-sbin )
53 )
54 selinux? (
55 >=sec-policy/selinux-base-policy-2.20170204-r4
56 >=sec-policy/selinux-openrc-2.20170204-r4
57 )
58 !<app-shells/gentoo-bashcomp-20180302
59 !<app-shells/gentoo-zsh-completions-20180228
60 "
61
62 PDEPEND="netifrc? ( net-misc/netifrc )"
63
64 src_prepare() {
65 default
66 if [[ ${PV} == "9999" ]] ; then
67 local ver="git-${EGIT_VERSION:0:6}"
68 sed -i "/^GITVER[[:space:]]*=/s:=.*:=${ver}:" mk/gitver.mk || die
69 fi
70 }
71
72 src_compile() {
73 unset LIBDIR #266688
74
75 MAKE_ARGS="${MAKE_ARGS}
76 LIBNAME=$(get_libdir)
77 LIBEXECDIR=${EPREFIX}/lib/rc
78 MKBASHCOMP=yes
79 MKNET=$(usex newnet)
80 MKSELINUX=$(usex selinux)
81 MKAUDIT=$(usex audit)
82 MKPAM=$(usev pam)
83 MKSTATICLIBS=$(usex static-libs)
84 MKSYSVINIT=$(usex init)
85 MKZSHCOMP=yes
86 SH=$(usex bash /bin/bash /bin/sh)"
87
88 local brand="Unknown"
89 if use kernel_linux ; then
90 MAKE_ARGS="${MAKE_ARGS} OS=Linux"
91 brand="Linux"
92 elif use kernel_FreeBSD ; then
93 MAKE_ARGS="${MAKE_ARGS} OS=FreeBSD"
94 brand="FreeBSD"
95 fi
96 export BRANDING="Gentoo ${brand}"
97 use prefix && MAKE_ARGS="${MAKE_ARGS} MKPREFIX=yes PREFIX=${EPREFIX}"
98 export DEBUG=$(usev debug)
99 export MKTERMCAP=$(usev ncurses)
100
101 tc-export CC AR RANLIB
102 emake ${MAKE_ARGS}
103 }
104
105 # set_config <file> <option name> <yes value> <no value> test
106 # a value of "#" will just comment out the option
107 set_config() {
108 local file="${ED}/$1" var=$2 val com
109 eval "${@:5}" && val=$3 || val=$4
110 [[ ${val} == "#" ]] && com="#" && val='\2'
111 sed -i -r -e "/^#?${var}=/{s:=([\"'])?([^ ]*)\1?:=\1${val}\1:;s:^#?:${com}:}" "${file}"
112 }
113
114 set_config_yes_no() {
115 set_config "$1" "$2" YES NO "${@:3}"
116 }
117
118 src_install() {
119 emake ${MAKE_ARGS} DESTDIR="${D}" install
120
121 # move the shared libs back to /usr so ldscript can install
122 # more of a minimal set of files
123 # disabled for now due to #270646
124 #mv "${ED}"/$(get_libdir)/lib{einfo,rc}* "${ED}"/usr/$(get_libdir)/ || die
125 #gen_usr_ldscript -a einfo rc
126 gen_usr_ldscript libeinfo.so
127 gen_usr_ldscript librc.so
128
129 if ! use kernel_linux; then
130 keepdir /lib/rc/init.d
131 fi
132 keepdir /lib/rc/tmp
133
134 # Setup unicode defaults for silly unicode users
135 set_config_yes_no /etc/rc.conf unicode use unicode
136
137 # Cater to the norm
138 set_config_yes_no /etc/conf.d/keymaps windowkeys '(' use x86 '||' use amd64 ')'
139
140 # On HPPA, do not run consolefont by default (bug #222889)
141 if use hppa; then
142 rm -f "${ED}"/etc/runlevels/boot/consolefont
143 fi
144
145 # Support for logfile rotation
146 insinto /etc/logrotate.d
147 newins "${FILESDIR}"/openrc.logrotate openrc
148
149 # install gentoo pam.d files
150 newpamd "${FILESDIR}"/start-stop-daemon.pam start-stop-daemon
151 newpamd "${FILESDIR}"/start-stop-daemon.pam supervise-daemon
152
153 # install documentation
154 dodoc ChangeLog *.md
155 if use newnet; then
156 dodoc README.newnet
157 fi
158
159 # start all the tty at boot except tty1 to not conflict with OpenRC output
160 if use init; then
161 for n in 2 3 4 5 6; do
162 dosym "/etc/init.d/agetty" "/etc/init.d/agetty.tty${n}"
163 dosym "/etc/init.d/agetty.tty${n}" "/etc/runlevel/boot/agetty.tty${n}"
164 done
165 # I like to keep a tty for OpenRC
166 #dosym "/etc/init.d/agetty" "${ED}/etc/init.d/agetty.1"
167 #dosym "/etc/init.d/agetty.1" "/etc/runlevel/default/agetty.1"
168 fi
169 }
170
171 pkg_preinst() {
172 # avoid default thrashing in conf.d files when possible #295406
173 if [[ -e "${EROOT}"etc/conf.d/hostname ]] ; then
174 (
175 unset hostname HOSTNAME
176 source "${EROOT}"etc/conf.d/hostname
177 : ${hostname:=${HOSTNAME}}
178 [[ -n ${hostname} ]] && set_config /etc/conf.d/hostname hostname "${hostname}"
179 )
180 fi
181
182 # set default interactive shell to sulogin if it exists
183 set_config /etc/rc.conf rc_shell /sbin/sulogin "#" test -e /sbin/sulogin
184 return 0
185 }
186
187 pkg_postinst() {
188 if use hppa; then
189 elog "Setting the console font does not work on all HPPA consoles."
190 elog "You can still enable it by running:"
191 elog "# rc-update add consolefont boot"
192 fi
193
194 # Added for 0.35.
195 if use kernel_linux && [[ ! -h "${EROOT}"/lib ]]; then
196 if [[ -d "${EROOT}$(get_libdir)"/rc ]]; then
197 cp -RPp "${EROOT}$(get_libdir)/rc" "${EROOT}"lib
198 fi
199 elif ! use kernel_linux; then
200 if [[ -d "${EROOT}$(get_libdir)"/rc ]]; then
201 cp -RPp "${EROOT}$(get_libdir)/rc" "${EROOT}"lib
202 fi
203 fi
204
205 if ! use newnet && ! use netifrc; then
206 ewarn "You have emerged OpenRc without network support. This"
207 ewarn "means you need to SET UP a network manager such as"
208 ewarn " net-misc/netifrc, net-misc/dhcpcd, net-misc/wicd,"
209 ewarn "net-misc/NetworkManager, or net-vpn/badvpn."
210 ewarn "Or, you have the option of emerging openrc with the newnet"
211 ewarn "use flag and configuring /etc/conf.d/network and"
212 ewarn "/etc/conf.d/staticroute if you only use static interfaces."
213 ewarn
214 fi
215
216 if use newnet && [ ! -e "${EROOT}"etc/runlevels/boot/network ]; then
217 ewarn "Please add the network service to your boot runlevel"
218 ewarn "as soon as possible. Not doing so could leave you with a system"
219 ewarn "without networking."
220 ewarn
221 fi
222 }