summaryrefslogtreecommitdiff
path: root/repo/system/openrc.xibuild
blob: d7c061b5402e0b97154b7698477d7a72cf5905c1 (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
#!/bin/sh

MAKEDEPS="make "
DEPS="ifupdown-ng sbase musl"

PKG_VER=0.44.10
SOURCE=https://github.com/OpenRC/openrc/archive/refs/tags/$PKG_VER.zip
ADDITIONAL="
	0001-call-sbin-mkmntdirs-in-localmount-OpenRC-service.patch
	0002-fsck-don-t-add-C0-to-busybox-fsck.patch
	0003-rc-pull-in-sysinit-and-boot-as-stacked-levels-when-n.patch
	0004-make-consolefont-service-compatible-with-busyboxs-se.patch
	0005-Support-early-loading-of-keymap-if-kbd-is-installed.patch
	0006-Add-support-for-starting-services-in-a-specified-VRF.patch
	0007-Clean-up-staticroute-config-remove-irrelevant-parts-.patch
	0008-bootmisc-switch-wipe_tmp-setting-to-no-by-default.patch
	0009-fix-bootmisc-mv-error.patch
	0010-noexec-devfs.patch
	seedrng.patch
	openrc.logrotate
	hostname.initd
	hwdrivers.initd
	modules.initd
	modloop.initd
	networking.initd
	modloop.confd
	sysfsconf.initd
	firstboot.initd
	sysctl.initd
	machine-id.initd
	test-networking.sh
    "

DESC="Dependency based init system that works with sysvinit"

# build borrowed from alpine linux
prepare () {
    apply_patches
    sed -i -e '/^sed/d' pkgconfig/Makefile
    find ./ -name "Makefile" | xargs sed -i 's/ln -snf/ln -sf/g'
}

build () {
    export MKZSHCOMP=yes
	export MKBASHCOMP=yes
	make LIBDIR=/lib LIBEXECDIR=/lib/rc
}

check () {
	make check
}

package () {
	make LIBEXECDIR=/lib/rc DESTDIR="$PKG_DEST/" install

	rm -f "$PKG_DEST"/sbin/openrc-init "$PKG_DEST"/sbin/openrc-shutdown

	# we cannot have anything turned on by default
	rm -f "$PKG_DEST"/etc/runlevels/*/*

	# we still use our ifup/ifdown based net config
	rm -f "$PKG_DEST"/etc/conf.d/network "$PKG_DEST"/etc/init.d/network

	# our hostname init script reads hostname from /etc/hostname
	rm -f "$PKG_DEST"/etc/conf.d/hostname

	# we override some of the scripts
	for i in *.initd; do
		j=${i##*/}
		install -Dm755 $i "$PKG_DEST"/etc/init.d/${j%.initd}
	done

	# we override some of the conf.d files
	for i in *.confd; do
		j=${i##*/}
		install -Dm644 $i "$PKG_DEST"/etc/conf.d/${j%.confd}
	done

	# additional documentation considered useful
	mkdir -p "$PKG_DEST"/usr/share/doc/openrc/
	install -m644 ChangeLog ./*.md "$PKG_DEST"/usr/share/doc/openrc/

	# we use a virtual keymaps services to allow users to set their
	# keymaps either with the OpenRC loadkeys service provided by
	# the kbd aport or with the loadkmap service provided by the
	# busybox-initscripts aport.
	rm -f "$PKG_DEST/etc/init.d/keymaps" \
		"$PKG_DEST/etc/conf.d/keymaps"

	install -Dm644 openrc.logrotate $PKG_DEST/etc/logrotate.d/openrc
	install -d "$PKG_DEST"/etc/local.d "$PKG_DEST"/run

	# openrc upstream removed service(8) for whatever reason, put it back
	ln -s /sbin/rc-service $PKG_DEST/sbin/service

	# remove deprecated /sbin/runscript to avoid conflict with minicom
	rm $PKG_DEST/sbin/runscript
}

postinstall () {
    mkdir -p /run/openrc
    for dir in /libexec /lib; do
        [ -d $dir/rc/init.d ] || continue

        for i in $dir/rc/init.d/* ; do
            [ -e "$i" ] || continue
            if [ -e /run/openrc/${i##*/} ]; then
                rm -r $i
            else
                mv $i /run/openrc/
            fi
        done

        rmdir $dir/rc/init.d $dir/rc /libexec 2>/dev/null
    done

    # create rc.local compat
    if [ -f /etc/rc.local ]; then
        cat >/etc/local.d/rc.local-compat.start<< EOF
#!/bin/sh

# this is only here for compatibility reasons
if [ -f /etc/rc.local ]; then
    . /etc/rc.local
fi
EOF
        chmod +x /etc/local.d/rc.local-compat.start
    fi
}