Magellan Linux

Contents of /branches/R11-stable/core/initscripts/initscripts-0.8.1-r1.smage2

Parent Directory Parent Directory | Revision Log Revision Log


Revision 17008 - (show annotations) (download)
Thu Apr 4 15:34:52 2013 UTC (11 years, 1 month ago) by niro
File size: 8890 byte(s)
-release branches/R11-stable
1 # $Id$
2
3 PNAME="initscripts"
4 PVER="0.8.1"
5 PBUILD="r1"
6
7 # enable busybox initscripts y|n
8 # disabled atm, busybox missing in tree
9 BUSYBOX_ENABLED="n"
10 # enable sysvinit initscripts y|n
11 # disabled, we have replaced sysvinit with systemd
12 SYSVINIT_ENABLED="n"
13
14 SPLIT_PACKAGES="systemd-initscripts"
15
16 [[ ${BUSYBOX_ENABLED} = y ]] && SPLIT_PACKAGES+=" busybox-initscripts"
17 [[ ${SYSVINIT_ENABLED} = y ]] && SPLIT_PACKAGES+=" initscripts"
18
19 PCAT="sys-apps"
20 HOMEPAGE="http://magellan-linux.net"
21
22 # the pkgs "coreutils, findutils, sed, gawk, bzip2, tar, rsync, wget"
23 # are needed to fix the /etc/profile issue
24 COMMON_DEPEND=">= sys-apps/base-files-0.5
25 >= sys-apps/mage-release-R11
26 >= sys-apps/coreutils-5
27 >= sys-apps/findutils-4
28 >= sys-apps/grep-2
29 >= sys-apps/sed-4
30 >= sys-apps/gawk-3
31 >= app-arch/bzip2-1
32 >= sys-apps/tar-1
33 >= net-misc/rsync-2
34 >= net-misc/wget-1
35 >= sys-apps/which-2.20"
36
37 SYSTEMD_DEPEND=">= sys-apps/systemd-197"
38
39 SDEPEND="${COMMON_DEPEND}
40 ${SYSTEMD_DEPEND}"
41
42 if [[ ${BUSYBOX_ENABLED} = y ]]
43 then
44 BUSYBOX_DEPEND=">= sys-apps/busybox-1.17"
45 SDEPEND="${SDEPEND}
46 ${BUSYBOX_DEPEND}"
47 fi
48
49 if [[ ${SYSVINIT_ENABLED} = y ]]
50 then
51 SYSVINIT_DEPEND=">= sys-apps/sysvinit-2.88"
52 SDEPEND="${SDEPEND}
53 ${SYSVINIT_DEPEND}"
54 fi
55
56 PROVIDE="virtual/initscripts"
57
58 SRCFILE="${PNAME}-${PVER}.tar.bz2"
59 SRCDIR="${BUILDDIR}/${PNAME}-${PVER}"
60
61 sminclude mtools
62
63 SRC_URI=( mirror://${PNAME}/${SRCFILE} )
64
65 SPECIAL_VARS="BLOCKER SYSVINIT_ENABLED BUSYBOX_ENABLED"
66
67 if [[ ${SYSVINIT_ENABLED} = y ]]
68 then
69 split_info_initscripts()
70 {
71 DESCRIPTION="Magellan Initscripts for sysVinit."
72 DEPEND="${COMMON_DEPEND}
73 ${SYSVINIT_DEPEND}"
74
75 BLOCKER="sys-apps/systemd-initscripts sys-apps/busybox-initscripts"
76 }
77 fi
78
79 split_info_systemd-initscripts()
80 {
81 DESCRIPTION="Magellan Initscripts for systemd."
82 DEPEND="${COMMON_DEPEND}
83 ${SYSTEMD_DEPEND}"
84
85 BLOCKER="sys-apps/initscripts sys-apps/busybox-initscripts"
86 }
87
88 if [[ ${BUSYBOX_ENABLED} = y ]]
89 then
90 split_info_busybox-initscripts()
91 {
92 DESCRIPTION="Magellan Initscripts for busybox."
93 DEPEND="${COMMON_DEPEND}
94 ${BUSYBOX_DEPEND}"
95
96 BLOCKER="sys-apps/initscripts sys-apps/systemd-initscripts"
97 }
98 fi
99
100 src_prepare()
101 {
102 munpack ${SRCFILE} || die
103 }
104
105 src_compile()
106 {
107 cd ${SRCDIR}
108 mmake || die
109 }
110
111 common_install()
112 {
113 local method="$1"
114 local MCONFIG
115 local config_protect_ignore
116
117 cd ${SRCDIR}
118 make DESTDIR=${BINDIR} LIBDIR=/usr/lib SBINDIR=/usr/sbin install_${method} || die
119
120 # always keep this files even if the user edited them
121 config_protect_ignore="/etc/fstab"
122 config_protect_ignore+=" /etc/hostname"
123 config_protect_ignore+=" /etc/hosts"
124 config_protect_ignore+=" /etc/inittab"
125 config_protect_ignore+=" /etc/locale.conf"
126 config_protect_ignore+=" /etc/vconsole.conf"
127 config_protect_ignore+=" /etc/conf.d/net.eth0"
128 config_protect_ignore+=" /etc/conf.d/net.routes"
129 minstalldir /etc/env.d || die
130 MCONFIG="/etc/env.d/01initscripts"
131 mclearconfig || die
132 maddconfig "CONFIG_PROTECT_IGNORE=\"${config_protect_ignore}\"" || die
133 }
134
135 if [[ ${SYSVINIT_ENABLED} = y ]]
136 then
137 src_install_initscripts()
138 {
139 local flavor="sysvinit"
140 local config_protect_ignore
141 local MCONFIG
142
143 cd ${SRCDIR}
144 common_install ${flavor} || die
145
146 # CONFIG_PROTECT_MASK for /etc/rc.d/init.d
147 minstalldir /etc/env.d || die
148 MCONFIG="/etc/env.d/01${flavor}"
149 mclearconfig || die
150 maddconfig "CONFIG_PROTECT_MASK=\"/etc/rc.d/init.d\"" || die
151 config_protect_ignore+=" /etc/modules.autoload.d/kernel-2.4"
152 config_protect_ignore+=" /etc/modules.autoload.d/kernel-2.6"
153 config_protect_ignore+=" /etc/modules.autoload"
154 maddconfig "CONFIG_PROTECT_IGNORE=\"${config_protect_ignore}\"" || die
155 }
156 fi
157
158 src_install_systemd-initscripts()
159 {
160 local flavor="systemd"
161 local config_protect_ignore
162 local MCONFIG
163
164 cd ${SRCDIR}
165 common_install ${flavor} || die
166
167 # install these binaries for old sysvinit compat only
168 if [[ ${SYSVINIT_ENABLED} = n ]]
169 then
170 minstalldir /usr/sbin || die
171 minstallexec ${SRCDIR}/sysvinit/sbin/rc-config /usr/sbin || die
172 minstalldir /etc/rc.d/init.d || die
173 minstallfile ${SRCDIR}/sysvinit/rc/functions /etc/rc.d/init.d/ || die
174 fi
175
176 # CONFIG_PROTECT_MASK for /etc/rc.d/init.d
177 MCONFIG="/etc/env.d/01${flavor}"
178 minstalldir /etc/env.d || die
179 config_protect_ignore+=" /etc/systemd/system"
180 mclearconfig || die
181 maddconfig "CONFIG_PROTECT_IGNORE=\"${config_protect_ignore}\"" || die
182 }
183
184 if [[ ${BUSYBOX_ENABLED} = y ]]
185 then
186 src_install_busybox-initscripts()
187 {
188 local flavor="busybox"
189 local config_protect_ignore
190 local MCONFIG
191
192 cd ${SRCDIR}
193 common_install ${flavor} || die
194
195 # CONFIG_PROTECT_MASK for /etc/rc.d/init.d
196 minstalldir /etc/env.d || die
197 MCONFIG="/etc/env.d/01${flavor}"
198 mclearconfig || die
199 maddconfig "CONFIG_PROTECT_MASK=\"/etc/rc.d/init.d\"" || die
200 config_protect_ignore+=" /etc/modules.autoload.d/kernel-2.4"
201 config_protect_ignore+=" /etc/modules.autoload.d/kernel-2.6"
202 config_protect_ignore+=" /etc/modules.autoload"
203 maddconfig "CONFIG_PROTECT_IGNORE=\"${config_protect_ignore}\"" || die
204 # add conf.d/kernel to protect current udev|mdev configuration
205 config_protect_ignore+=" /etc/conf.d/kernel"
206 maddconfig "CONFIG_PROTECT_IGNORE=\"${config_protect_ignore}\"" || die
207 }
208 fi
209
210 postinstall()
211 {
212 # emulate seq; its needed to run rc-config
213 # this fixes some annyoing warning when building
214 # livecd or bootstrapping a system.
215 # this hack will be removed when the toolchain is fixed
216 if [ ! -f /usr/bin/seq ]
217 then
218 echo "Using fake 'seq' command ..."
219 seq() {
220 start=$1
221 end=$2
222 for ((i=start; i < end+1; i++))
223 do
224 echo $i
225 done
226 }
227 export -f seq
228 fi
229
230 # move old /etc/conf.d/locale to /etc/locale.conf
231 if [ -f ${MROOT}/etc/conf.d/locale ]
232 then
233 echo "Moving ${MROOT}/etc/conf.d/locale -> ${MROOT}/etc/locale.conf"
234 cp ${MROOT}/etc/conf.d/locale ${MROOT}/etc/locale.conf
235 rm ${MROOT}/etc/conf.d/locale
236 fi
237
238 # generate a valid /etc/vconsole.conf from old data
239 if [ -f ${MROOT}/etc/conf.d/consolefont ] && [ -f ${MROOT}/etc/conf.d/keymap ]
240 then
241 echo "Generating ${MROOT}/etc/vconsole.conf with /etc/conf.d data"
242 local consolefont=$(source ${MROOT}/etc/conf.d/consolefont; echo "${CONSOLEFONT}")
243 local keymap=$(source ${MROOT}/etc/conf.d/keymap; echo "${KEYMAP}")
244 cat > ${MROOT}/etc/vconsole.conf << EOF
245 KEYMAP=${keymap}
246 FONT=${consolefont}
247 FONT_MAP=8851-1_to_uni
248 EOF
249 echo "Deleting old ${MROOT}/etc/conf.d/consolefont"
250 rm ${MROOT}/etc/conf.d/consolefont
251 echo "Deleting old ${MROOT}/etc/conf.d/keymap"
252 rm ${MROOT}/etc/conf.d/keymap
253 fi
254
255 # sysvinit and busybox only!
256 if [ -f ${MROOT}/etc/rc.d/init.d/functions ] &&
257 [[ ${BUSYBOX_ENABLED} = y ]] || [[ ${SYSVINIT_ENABLED} = y ]]
258 then
259 # create service state dir mountpoint
260 # needed by >=initscripts-0.3.2-r1
261 [ ! -d ${MROOT}/var/lib/init.d ] && install -d ${MROOT}/var/lib/init.d
262
263 # mark this dir as undeletable
264 touch ${MROOT}/var/lib/init.d/.keep
265
266 if [[ -x ${MROOT}/usr/sbin/rc-config ]]
267 then
268 echo "Creating Runlevels ..."
269 local i
270 for i in checkfs cleanfs halt \
271 loadkeys localnet modules mountfs \
272 network reboot sendsignals \
273 setclock swap sysctl consolefont
274 do
275 echo -e "\tAdded ${i} ..."
276 ${MROOT}/usr/sbin/rc-config del ${i} > /dev/null
277 ${MROOT}/usr/sbin/rc-config add ${i} > /dev/null
278 done
279 fi
280 fi
281
282 # enable network.service (systemd only)
283 if [ -x ${MROOT}/usr/bin/systemctl ]
284 then
285 mstartunit network.service
286 fi
287
288 # keep this only for transitional purposes
289 # do not ask the user about following files
290 #
291 # if they exist let config_protect process them
292 # but then remove the protected files, to keep only the original file
293 #
294 # file-root is ${MROOT}/etc
295 local CONFIG_IGNORE="fstab hostname hosts inittab conf.d/net.eth0 modules.autoload.d/kernel-2.4 modules.autoload.d/kernel-2.6 modules.autoload"
296 local i file path
297 for i in ${CONFIG_IGNORE}
298 do
299 file="$(basename ${i})"
300 path="$(dirname ${i})/"
301 [[ ${path} == ./ ]] && path=""
302
303 rm -f ${MROOT}/etc/${path}._cfg????_${file}
304 done
305
306 # initscripts >= 0.5.0: rc file moved to /etc/conf.d/rc
307 if [[ -f ${MROOT}/etc/conf.d/rc ]] && [[ -f ${MROOT}/etc/sysconfig/rc ]]
308 then
309 rm -f ${MROOT}/etc/sysconfig/rc
310 fi
311
312 # aliases and i368 got renamed to *.conf
313 local i
314 for i in aliases i386
315 do
316 if [[ -f ${MROOT}/etc/modules.d/${i} ]]
317 then
318 rm ${MROOT}/etc/modules.d/${i}
319 fi
320 done
321 }
322
323 preinstall()
324 {
325 # ignore this while package building
326 if [[ ! -f /.installrc ]]
327 then
328 local package
329 for package in ${BLOCKER}
330 do
331 if [[ ! -z $(magequery -n ${package##*/}) ]]
332 then
333 echo -e ${COLRED}
334 echo -e "Error: ${package} is installed!!"
335 echo -e "This initscript flavor cannot co-exist ${package}."
336 echo -e "Please uninstall ${package} first!"
337 echo -e ${COLDEFAULT}
338 die "${package} found!"
339 fi
340 done
341 fi
342 }
343
344 preremove()
345 {
346 # protect these files, that they do not get removed from the system
347 local CONFIG_IGNORE="fstab hostname hosts"
348 for i in ${CONFIG_IGNORE}
349 do
350 [[ -e ${MROOT}/etc/${i} ]] && touch ${MROOT}/etc/${i}
351 done
352 }