# Copyright 1999-2019 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=7 inherit flag-o-matic pam toolchain-funcs usr-ldscript DESCRIPTION="OpenRC manages the services, startup and shutdown of a host" HOMEPAGE="https://github.com/openrc/openrc/" if [[ ${PV} == "9999" ]]; then EGIT_REPO_URI="https://github.com/OpenRC/${PN}.git" inherit git-r3 else SRC_URI="https://github.com/${PN}/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz" KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sh ~sparc ~x86" fi LICENSE="BSD-2" SLOT="0" IUSE="+apparmor audit bash debug +dkms elogind +entropy ncurses pam newnet prefix +netifrc selinux +splash static-libs sysv-utils unicode" COMMON_DEPEND=" apparmor? ( sys-apps/apparmor sys-apps/apparmor-utils sec-policy/apparmor-profiles ) ncurses? ( sys-libs/ncurses:0= ) pam? ( sys-auth/pambase sys-libs/pam ) audit? ( sys-process/audit ) dkms? ( sys-kernel/dkms ) elogind? ( sys-auth/elogind ) entropy? ( sys-apps/haveged ) sys-process/psmisc !<sys-process/procps-3.3.9-r2 selinux? ( sys-apps/policycoreutils >=sys-libs/libselinux-2.6 ) splash? ( sys-boot/plymouth-openrc-plugin ) !<sys-apps/baselayout-2.1-r1 !<sys-fs/udev-init-scripts-27" DEPEND="${COMMON_DEPEND} virtual/os-headers ncurses? ( virtual/pkgconfig )" RDEPEND="${COMMON_DEPEND} bash? ( app-shells/bash ) !prefix? ( sysv-utils? ( !sys-apps/sysvinit ) !sysv-utils? ( >=sys-apps/sysvinit-2.86-r6[selinux?] ) virtual/tmpfiles ) selinux? ( >=sec-policy/selinux-base-policy-2.20170204-r4 >=sec-policy/selinux-openrc-2.20170204-r4 ) !<app-shells/gentoo-bashcomp-20180302 !<app-shells/gentoo-zsh-completions-20180228 " PDEPEND="netifrc? ( net-misc/netifrc )" src_prepare() { default if [[ ${PV} == "9999" ]] ; then local ver="git-${EGIT_VERSION:0:6}" sed -i "/^GITVER[[:space:]]*=/s:=.*:=${ver}:" mk/gitver.mk || die fi if use dkms ; then eapply "${FILESDIR}"/${PN}-dkms.patch fi eapply "${FILESDIR}"/${PN}-enable-rclogger.patch eapply "${FILESDIR}"/${PN}-gcc10.patch } src_compile() { unset LIBDIR #266688 MAKE_ARGS="${MAKE_ARGS} LIBNAME=$(get_libdir) LIBEXECDIR=${EPREFIX}/lib/rc MKBASHCOMP=yes MKNET=$(usex newnet) MKSELINUX=$(usex selinux) MKSYSVINIT=$(usex sysv-utils) MKAUDIT=$(usex audit) MKPAM=$(usev pam) MKSTATICLIBS=$(usex static-libs) MKZSHCOMP=yes SH=$(usex bash /bin/bash /bin/sh)" local brand="Unknown" MAKE_ARGS="${MAKE_ARGS} OS=Linux" brand="Linux" export BRANDING="Redcore ${brand} Hardened" use prefix && MAKE_ARGS="${MAKE_ARGS} MKPREFIX=yes PREFIX=${EPREFIX}" export DEBUG=$(usev debug) export MKTERMCAP=$(usev ncurses) 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="${ED}/$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() { emake ${MAKE_ARGS} DESTDIR="${D}" install # 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 "${ED}"/$(get_libdir)/lib{einfo,rc}* "${ED}"/usr/$(get_libdir)/ || die #gen_usr_ldscript -a einfo rc gen_usr_ldscript libeinfo.so gen_usr_ldscript librc.so keepdir /lib/rc/tmp # 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 "${ED}"/etc/runlevels/boot/consolefont fi # Support for logfile rotation insinto /etc/logrotate.d newins "${FILESDIR}"/openrc.logrotate openrc # install gentoo pam.d files newpamd "${FILESDIR}"/start-stop-daemon.pam start-stop-daemon newpamd "${FILESDIR}"/start-stop-daemon.pam supervise-daemon # install documentation dodoc ChangeLog *.md if use newnet; then dodoc README.newnet fi } pkg_preinst() { # avoid default thrashing in conf.d files when possible #295406 if [[ -e "${EROOT}"/etc/conf.d/hostname ]] ; then ( unset hostname HOSTNAME source "${EROOT}"/etc/conf.d/hostname : ${hostname:=${HOSTNAME}} [[ -n ${hostname} ]] && set_config /etc/conf.d/hostname hostname "${hostname}" ) fi # set default interactive shell to sulogin if it exists set_config /etc/rc.conf rc_shell /sbin/sulogin "#" test -e /sbin/sulogin return 0 } pkg_postinst() { 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 # Added for 0.35. if [[ ! -h "${EROOT}"/lib ]]; then if [[ -d "${EROOT}/$(get_libdir)"/rc ]]; then cp -RPp "${EROOT}/$(get_libdir)/rc" "${EROOT}"/lib fi fi # Redcore Linux Hardened : if [ -e "${ROOT}"/etc/init.d/dkms ] && use dkms; then if [ "$(rc-config list boot | grep dkms)" != "" ]; then einfo else "${ROOT}"/sbin/rc-update add dkms boot > /dev/null 2>&1 fi fi if [ -e "${ROOT}"/etc/init.d/dbus ] && use elogind; then if [ "$(rc-config list boot | grep dbus)" != "" ]; then einfo elif [ "$(rc-config list default | grep dbus)" != "" ]; then "${ROOT}"/sbin/rc-update del dbus default > /dev/null 2>&1 "${ROOT}"/sbin/rc-update add dbus boot > /dev/null 2>&1 else "${ROOT}"/sbin/rc-update add dbus boot > /dev/null 2>&1 fi fi if [ -e "${ROOT}"/etc/init.d/elogind ] && use elogind; then if [ "$(rc-config list boot | grep elogind)" != "" ]; then einfo else "${ROOT}"/sbin/rc-update add elogind boot > /dev/null 2>&1 fi if [ "$(rc-config list default | grep consolekit)" != "" ]; then "${ROOT}"/sbin/rc-update del consolekit default > /dev/null 2>&1 fi if [ "$(rc-config list default | grep cgmanager)" != "" ]; then "${ROOT}"/sbin/rc-update del cgmanager default > /dev/null 2>&1 fi fi if [ -e "${ROOT}"/etc/init.d/apparmor ] && use apparmor; then if [ "$(rc-config list boot | grep apparmor)" != "" ]; then einfo else "${ROOT}"/sbin/rc-update add apparmor boot > /dev/null 2>&1 fi fi if [ -e "${ROOT}"/etc/init.d/haveged ] && use entropy; then if [ "$(rc-config list default | grep haveged)" != "" ]; then einfo else "${ROOT}"/sbin/rc-update add haveged default > /dev/null 2>&1 fi fi if [ -e "${ROOT}"/etc/init.d/openrc-settingsd ]; then if [ "$(rc-config list default | grep openrc-settingsd)" != "" ]; then "${ROOT}"/sbin/rc-update del openrc-settingsd default > /dev/null 2>&1 else einfo fi fi }