1SUMMARY = "SysV init scripts"
2HOMEPAGE = "https://github.com/fedora-sysv/initscripts"
3DESCRIPTION = "Initscripts provide the basic system startup initialization scripts for the system.  These scripts include actions such as filesystem mounting, fsck, RTC manipulation and other actions routinely performed at system startup.  In addition, the scripts are also used during system shutdown to reverse the actions performed at startup."
4SECTION = "base"
5LICENSE = "GPL-2.0-only"
6LIC_FILES_CHKSUM = "file://functions;beginline=7;endline=7;md5=829e563511c9a1d6d41f17a7a4989d6a"
7PR = "r155"
8
9INHIBIT_DEFAULT_DEPS = "1"
10
11SRC_URI = "file://functions \
12           file://halt \
13           file://umountfs \
14           file://devpts.sh \
15           file://devpts \
16           file://hostname.sh \
17           file://mountall.sh \
18           file://banner.sh \
19           file://bootmisc.sh \
20           file://mountnfs.sh \
21           file://reboot \
22           file://checkfs.sh \
23           file://single \
24           file://sendsigs \
25           file://urandom \
26           file://rmnologin.sh \
27           file://checkroot.sh \
28           file://umountnfs.sh \
29           file://sysfs.sh \
30           file://populate-volatile.sh \
31           file://read-only-rootfs-hook.sh \
32           file://volatiles \
33           file://save-rtc.sh \
34           file://dmesg.sh \
35           file://logrotate-dmesg.conf \
36           ${@bb.utils.contains('DISTRO_FEATURES','selinux','file://sushell','',d)} \
37"
38
39S = "${WORKDIR}"
40
41SRC_URI:append:arm = " file://alignment.sh"
42SRC_URI:append:armeb = " file://alignment.sh"
43
44KERNEL_VERSION = ""
45
46DEPENDS:append = " update-rc.d-native"
47PACKAGE_WRITE_DEPS:append = " ${@bb.utils.contains('DISTRO_FEATURES','systemd','systemd-systemctl-native','',d)}"
48
49PACKAGES =+ "${PN}-functions ${PN}-sushell"
50RDEPENDS:${PN} = "initd-functions \
51                  ${@bb.utils.contains('DISTRO_FEATURES','selinux','${PN}-sushell','',d)} \
52                  init-system-helpers-service \
53		 "
54# Recommend pn-functions so that it will be a preferred default provider for initd-functions
55RRECOMMENDS:${PN} = "${PN}-functions"
56RPROVIDES:${PN}-functions = "initd-functions"
57RCONFLICTS:${PN}-functions = "lsbinitscripts"
58FILES:${PN}-functions = "${sysconfdir}/init.d/functions*"
59FILES:${PN}-sushell = "${base_sbindir}/sushell"
60
61HALTARGS ?= "-d -f"
62
63do_configure() {
64	sed -i -e "s:SED_HALTARGS:${HALTARGS}:g" ${WORKDIR}/halt
65	sed -i -e "s:SED_HALTARGS:${HALTARGS}:g" ${WORKDIR}/reboot
66}
67
68do_install () {
69#
70# Create directories and install device independent scripts
71#
72	install -d ${D}${sysconfdir}/init.d
73	install -d ${D}${sysconfdir}/rcS.d
74	install -d ${D}${sysconfdir}/rc0.d
75	install -d ${D}${sysconfdir}/rc1.d
76	install -d ${D}${sysconfdir}/rc2.d
77	install -d ${D}${sysconfdir}/rc3.d
78	install -d ${D}${sysconfdir}/rc4.d
79	install -d ${D}${sysconfdir}/rc5.d
80	install -d ${D}${sysconfdir}/rc6.d
81	install -d ${D}${sysconfdir}/default
82	install -d ${D}${sysconfdir}/default/volatiles
83	# Holds state information pertaining to urandom
84	install -d ${D}${localstatedir}/lib/urandom
85
86	install -m 0644    ${WORKDIR}/functions		${D}${sysconfdir}/init.d
87	install -m 0755    ${WORKDIR}/bootmisc.sh	${D}${sysconfdir}/init.d
88	install -m 0755    ${WORKDIR}/checkroot.sh	${D}${sysconfdir}/init.d
89	install -m 0755    ${WORKDIR}/halt		${D}${sysconfdir}/init.d
90	install -m 0755    ${WORKDIR}/hostname.sh	${D}${sysconfdir}/init.d
91	install -m 0755    ${WORKDIR}/mountall.sh	${D}${sysconfdir}/init.d
92	install -m 0755    ${WORKDIR}/mountnfs.sh	${D}${sysconfdir}/init.d
93	install -m 0755    ${WORKDIR}/reboot		${D}${sysconfdir}/init.d
94	install -m 0755    ${WORKDIR}/rmnologin.sh	${D}${sysconfdir}/init.d
95	install -m 0755    ${WORKDIR}/sendsigs		${D}${sysconfdir}/init.d
96	install -m 0755    ${WORKDIR}/single		${D}${sysconfdir}/init.d
97	install -m 0755    ${WORKDIR}/umountnfs.sh	${D}${sysconfdir}/init.d
98	install -m 0755    ${WORKDIR}/urandom		${D}${sysconfdir}/init.d
99	sed -i ${D}${sysconfdir}/init.d/urandom -e 's,/var/,${localstatedir}/,g;s,/etc/,${sysconfdir}/,g'
100	install -m 0755    ${WORKDIR}/devpts.sh	${D}${sysconfdir}/init.d
101	install -m 0755    ${WORKDIR}/devpts		${D}${sysconfdir}/default
102	install -m 0755    ${WORKDIR}/sysfs.sh		${D}${sysconfdir}/init.d
103	install -m 0755    ${WORKDIR}/populate-volatile.sh ${D}${sysconfdir}/init.d
104	install -m 0755    ${WORKDIR}/read-only-rootfs-hook.sh ${D}${sysconfdir}/init.d
105	install -m 0755    ${WORKDIR}/save-rtc.sh	${D}${sysconfdir}/init.d
106	install -m 0644    ${WORKDIR}/volatiles		${D}${sysconfdir}/default/volatiles/00_core
107	if [ ${@ oe.types.boolean('${VOLATILE_LOG_DIR}') } = True ]; then
108		sed -i -e '\@^d root root 0755 /var/volatile/log none$@ a\l root root 0755 /var/log /var/volatile/log' \
109			${D}${sysconfdir}/default/volatiles/00_core
110	fi
111	install -m 0755    ${WORKDIR}/dmesg.sh		${D}${sysconfdir}/init.d
112	install -m 0644    ${WORKDIR}/logrotate-dmesg.conf ${D}${sysconfdir}/
113
114	if [ "${TARGET_ARCH}" = "arm" ]; then
115		install -m 0755 ${WORKDIR}/alignment.sh	${D}${sysconfdir}/init.d
116	fi
117
118	if ${@bb.utils.contains('DISTRO_FEATURES','selinux','true','false',d)}; then
119		install -d ${D}/${base_sbindir}
120		install -m 0755 ${WORKDIR}/sushell ${D}/${base_sbindir}
121	fi
122#
123# Install device dependent scripts
124#
125	install -m 0755 ${WORKDIR}/banner.sh	${D}${sysconfdir}/init.d/banner.sh
126	install -m 0755 ${WORKDIR}/umountfs	${D}${sysconfdir}/init.d/umountfs
127#
128# Create runlevel links
129#
130	update-rc.d -r ${D} rmnologin.sh start 99 2 3 4 5 .
131	update-rc.d -r ${D} sendsigs start 20 0 6 .
132	update-rc.d -r ${D} urandom start 38 S 0 6 .
133	update-rc.d -r ${D} umountnfs.sh stop 31 0 1 6 .
134	update-rc.d -r ${D} umountfs start 40 0 6 .
135	update-rc.d -r ${D} reboot start 90 6 .
136	update-rc.d -r ${D} halt start 90 0 .
137	update-rc.d -r ${D} save-rtc.sh start 25 0 6 .
138	update-rc.d -r ${D} banner.sh start 02 S .
139	update-rc.d -r ${D} checkroot.sh start 05 S .
140	update-rc.d -r ${D} mountall.sh start 03 S .
141	update-rc.d -r ${D} hostname.sh start 39 S .
142	update-rc.d -r ${D} mountnfs.sh start 15 2 3 4 5 .
143	update-rc.d -r ${D} bootmisc.sh start 36 S .
144	update-rc.d -r ${D} sysfs.sh start 02 S .
145	update-rc.d -r ${D} populate-volatile.sh start 37 S .
146	update-rc.d -r ${D} read-only-rootfs-hook.sh start 29 S .
147	update-rc.d -r ${D} devpts.sh start 06 S .
148	if [ "${TARGET_ARCH}" = "arm" ]; then
149	        update-rc.d -r ${D} alignment.sh start 06 S .
150	fi
151	# We wish to have /var/log ready at this stage so execute this after
152	# populate-volatile.sh
153	update-rc.d -r ${D} dmesg.sh start 38 S .
154}
155
156MASKED_SCRIPTS = " \
157  banner \
158  bootmisc \
159  checkfs \
160  checkroot \
161  devpts \
162  dmesg \
163  hostname \
164  mountall \
165  mountnfs \
166  populate-volatile \
167  read-only-rootfs-hook \
168  rmnologin \
169  sysfs \
170  urandom"
171
172pkg_postinst:${PN} () {
173	if type systemctl >/dev/null 2>/dev/null; then
174		if [ -n "$D" ]; then
175			OPTS="--root=$D"
176		fi
177		for SERVICE in ${MASKED_SCRIPTS}; do
178			systemctl $OPTS mask $SERVICE.service
179		done
180	fi
181
182    # Delete any old volatile cache script, as directories may have moved
183    if [ -z "$D" ]; then
184        rm -f "/etc/volatile.cache"
185    fi
186}
187
188CONFFILES:${PN} += "${sysconfdir}/init.d/checkroot.sh"
189