blob: 8d6056f4ffba490141722a9272de37661d53c699 (
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
|
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit toolchain-funcs flag-o-matic
DESCRIPTION="A UNIX init scheme with service supervision"
HOMEPAGE="https://smarden.org/runit/"
PATCH_VER=20240905
SRC_URI="
https://smarden.org/runit/${P}.tar.gz
https://github.com/clan/runit/releases/download/${PV}-r5/${P}-patches-${PATCH_VER}.tar.xz
"
S=${WORKDIR}/admin/${P}/src
LICENSE="BSD"
SLOT="0"
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~ia64 ~m68k ~mips ppc ppc64 ~s390 sparc x86"
IUSE="static"
RDEPEND="sys-apps/openrc"
src_unpack() {
unpack ${P}.tar.gz
unpack ${P}-patches-${PATCH_VER}.tar.xz
}
src_prepare() {
default
cd "${S}"/.. || die
eapply -p3 "${WORKDIR}"/patches
cd "${S}" || die
# We either build everything or nothing static
sed -i -e 's:-static: :' Makefile || die
# see https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=726008
[[ ${COMPILER} == "diet" ]] &&
use ppc &&
filter-flags "-mpowerpc-gpopt"
}
src_configure() {
use static && append-ldflags -static
echo "$(tc-getCC) ${CFLAGS}" > conf-cc || die
echo "$(tc-getCC) ${LDFLAGS}" > conf-ld || die
}
src_install() {
into /
dobin $(<../package/commands)
dodir /sbin
mv "${ED}"/bin/{runit-init,runit,utmpset} "${ED}"/sbin/ || die "dosbin"
dosym ../etc/runit/2 /sbin/runsvdir-start
DOCS=( ../package/{CHANGES,README,THANKS,TODO} )
HTML_DOCS=( ../doc/*.html )
einstalldocs
doman ../man/*.[18]
exeinto /etc/runit
doexe "${FILESDIR}"/ctrlaltdel
newexe "${FILESDIR}"/1-${PV} 1
newexe "${FILESDIR}"/2-${PV} 2
newexe "${FILESDIR}"/3-${PV} 3
dodir /etc/sv
for tty in tty1 tty2 tty3 tty4 tty5 tty6; do
exeinto /etc/sv/getty-$tty/
newexe "${FILESDIR}"/finish.getty finish
newexe "${FILESDIR}"/run.getty-${PV} run
for script in finish run; do
sed -i -e "s:TTY:${tty}:g" "${ED}"/etc/sv/getty-$tty/$script
done
done
# make sv command work
newenvd - 20runit <<- EOF
#/etc/env.d/20runit
SVDIR="/etc/service/"
EOF
}
default_config() {
local sv="${EROOT}"/etc/sv
local service="${EROOT}"/etc/service
mkdir -p "${service}" || die
for x in tty1 tty2 tty3 tty4 tty5 tty6; do
ln -sf "${sv}"/getty-$x "${service}"/getty-$x || die
done
einfo "The links to services runit will supervise are installed"
einfo "in $service."
einfo "If you need multiple runlevels, please see the documentation"
einfo "for how to set them up."
einfo
}
migrate_from_211() {
# Create /etc/service and /var/service if requested
if [[ -e "${T}"/make_var_service ]]; then
ln -sf "${EROOT}"/etc/runit/runsvdir/current "${EROOT}"/etc/service || die
ln -sf "${EROOT}"/etc/runit/runsvdir/current "${EROOT}"/var/service || die
fi
if [[ -d "${T}"/runsvdir ]]; then
cp -a "${T}"/runsvdir "${EROOT}"/etc/runit || die
fi
return 0
}
pkg_preinst() {
if has_version '<sys-process/runit-2.1.2'; then
pre_212=yes
fi
}
pkg_postinst() {
if [[ -z ${REPLACING_VERSIONS} ]]; then
default_config
elif [[ -n ${pre_212} ]]; then
migrate_from_211
fi
ewarn "To make sure sv works correctly in your currently open"
ewarn "shells, please run the following command:"
ewarn
ewarn "source /etc/profile"
ewarn
if [[ -L "${EROOT}"/var/service ]]; then
ewarn "Once this version of runit is active, please remove the"
ewarn "compatibility symbolic link at ${EROOT}/var/service"
ewarn "The correct path now is ${EROOT}/etc/service"
ewarn
fi
if [[ -L "${EROOT}"/etc/runit/runsvdir/all ]]; then
ewarn "${EROOT}/etc/runit/runsvdir/all has moved to"
ewarn "${EROOT}/etc/sv."
ewarn "Any symbolic links under ${EROOT}/etc/runit/runsvdir"
ewarn "which point to services through ../all should be updated to"
ewarn "point to them through ${EROOT}/etc/sv."
ewarn "Once that is done, ${EROOT}/etc/runit/runsvdir/all should be"
ewarn "removed."
ewarn
fi
}
|