View Raw Ebuild
# Copyright 2014-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit flag-o-matic readme.gentoo-r1 toolchain-funcs verify-sig
DESCRIPTION="A UNIX init scheme with service supervision"
HOMEPAGE="http://smarden.org/runit/"
SRC_URI="http://smarden.org/runit/${P}.tar.gz
verify-sig? ( https://smarden.org/runit/sha256sum.asc -> ${P}.sha256sum.asc )"
S="${WORKDIR}/admin/${P}/src"
LICENSE="BSD"
SLOT="0/vanilla"
KEYWORDS="~amd64 ~x86"
IUSE="static verify-sig"
VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/gerritpape.asc
BDEPEND="verify-sig? ( sec-keys/openpgp-keys-gerritpape )"
# runtime dependencies in /etc/runit/{1,3}
RDEPEND="
sys-apps/openrc
sys-process/psmisc
"
PATCHES=( "${FILESDIR}"/bug721880-dont-hardcode-ar-ranlib.patch )
src_unpack() {
if use verify-sig; then
pushd "${DISTDIR}" || die
verify-sig_verify_signed_checksums \
"${P}".sha256sum.asc sha256 "${P}".tar.gz
popd || die
fi
default
}
src_prepare() {
default
# No half measures: USE=static determines whether everything or nothing is built static.
sed -i -e 's:-static: :' Makefile
}
src_configure() {
use static && append-ldflags "-static"
echo "$(tc-getCC) ${CFLAGS}" > conf-cc
echo "$(tc-getCC) ${LDFLAGS}" > conf-ld # [sic]
tc-getAR > conf-ar
tc-getRANLIB > conf-ranlib
}
src_install() {
cd "${S}/.." || die
# Install documentation.
DOCS=( package/{CHANGES,README,THANKS} )
HTML_DOCS=( doc/*.html )
einstalldocs
doman man/*.[18]
readme.gentoo_create_doc
# Install runit-init stages
exeinto "/etc/runit"
doexe "${FILESDIR}/stages/"*
for rc_dir in rc.{1..3}; do
exeinto "/etc/runit/${rc_dir}"
doexe "${FILESDIR}/${rc_dir}/"*
done
# Install the example other-distro scripts as reference material.
docinto examples
dodoc -r etc/2 etc/*/
# …and our own agetty one
docinto examples/gentoo/agetty
# this slightly awkward dance is to avoid using newdoc, which does the same worsely
mkdir "${T}"/agetty
for script in finish run; do
cp "${FILESDIR}/${script}.agetty" "${T}/agetty/${script}"
dodoc "${T}/agetty/${script}"
done
# Set up symlinks for normal operation (all of these are runtime-created tmpfs)
keepdir /etc/runit/runsvdir
dosym -r /etc/runit/runsvdir/current /service
dosym -r /run/runit.reboot /etc/runit/reboot
dosym -r /run/runit.stopit /etc/runit/stopit
cd "${S}" || die
# Install compiled binaries
into /
dobin chpst runsv runsvchdir runsvdir sv svlogd
dosbin runit runit-init utmpset
}
pkg_postinst() {
readme.gentoo_print_elog
if [[ -n ${REPLACING_VERSIONS} ]] ; then
einfo "A pre-existing runit version was detected."
ewarn "This package has changed significantly as of runit-2.2.0-r4."
ewarn "Check the README.gentoo file for details."
fi
}
pkg_postrm() {
if [[ -z ${REPLACED_BY_VERSION} ]] ; then
ewarn "${P} was uninstalled. Make sure your system is still bootable!"
fi
}