update buildroot - work in progress development
[cmdllinux.git] / buildroot / _buildroot / scripts / targz_packages0118
blobc55af0b76b3865ccda5e9558fb226f2c6b7ee84c
1 #! /bin/sh
3 #/bin/_add_linefeed.sh
4 #_mkcpio
5 #_strip
6 #/run/... may be needed to add (pkg@run.cpio)
7 #_scripts/pkg.ver may be needed to add
8 #package/_pkgs.group@@@@
10 CREATEDIRS="\
11 etc/pam.d \
12 etc/profile.d \
13 etc/init.d \
14 etc \
15 bin \
16 sbin \
17 lib \
18 usr/share/doc \
19 usr/share/man \
20 usr/share/info \
21 usr/share \
22 usr/bin \
23 usr/sbin \
24 usr/lib \
25 usr/include \
26 usr \
27 var/cache \
28 var/lib \
29 var/log \
30 var/spool \
31 var \
34 PKG=$3
36 ###overwrite
37 [ "$PKG" = "gcc-tgt" ] && PKG=gcc
38 [ "$PKG" = "glibc-tgt" ] && PKG=glibc
39 ###overwrite
41 DONTINSTALL=" skeleton toolchain toolchain-external toolchain-external-custom initscripts jpeg busybox coreutils "
42 DONTINSTALL2=" getent jpeg toolchain-external toolchain-external-custom libgl libegl "
43 SKIPGROUP=" input "
45 echo "$DONTINSTALL2" | grep -q " $PKG " && exit 0
47 DIRSCRIPT=$(cd $(dirname "$0") && pwd -P)
48 echo "***********"
49 pwd -P
50 echo "***********"
52 DESTROOT=output/target
53 BUILDROOT=output/build
54 PKGDEST=/dest
55 retval=0
56 echo "###### PKG_SCRIPT $PKG $(cat $BUILDROOT/build-sysinit.log) $1 $2"
58 if [ "$1" = "start" ] && [ "$2" = "install-target" -o "$2" = "install-staging" ]; then
60 [ -e $BUILDROOT/inst_start.log ] && exit 0
61 touch $BUILDROOT/inst_start.log
63 rm -f _scripts/$PKG.scr
65 rm -rf $DESTROOT/*
67 for i in $CREATEDIRS; do
68 mkdir -p $DESTROOT/$i
69 done
70 ln -sf share/doc $DESTROOT/usr/doc
71 ln -sf share/man $DESTROOT/usr/man
72 ln -sf share/info $DESTROOT/usr/info
73 ln -sf lib $DESTROOT/usr/lib64
74 ln -sf lib $DESTROOT/lib64
76 [ -e _scripts/$PKG.inst_start.sh ] && source _scripts/$PKG.inst_start.sh
79 if [ "$1" = "end" ] && [ "$2" = "install-target" ]; then
80 source $BUILDROOT/.package_source
81 #NAME
82 #VERSION
83 #SOURCE_DIR
85 ###overwrite
86 [ "$PKG" = "glibc" ] && NAME="glibc"
87 [ "$PKG" = "gcc" ] && NAME="gcc"
88 ###overwrite
90 ###overwrite
91 [ ! -e _scripts/$PKG.rev ] && echo 1 > _scripts/$PKG.rev
92 ###overwrite
94 #update revision
95 REV=`cat _scripts/$PKG.rev`
96 [ -e _scripts/$PKG.ver ] && VERSION=`cat _scripts/$PKG.ver`
99 #rearrange some dirs
100 if [ -e $DESTROOT/var/lock ]; then
101 mkdir -p $DESTROOT/run/lock
102 LSFILE=`find $DESTROOT/var/lock -mindepth 1 -maxdepth 1 -print -quit 2> /dev/null`
103 #mv doesn't move hidden files (.*|the dot char started filenames)
104 [ ! -z "$LSFILE" ] && mv $DESTROOT/var/lock/* $DESTROOT/run/lock
105 rmdir $DESTROOT/var/lock
107 LSFILE=
109 if [ -e $DESTROOT/run ]; then
110 mkdir -p $DESTROOT/var/run
111 LSFILE=`find $DESTROOT/run -mindepth 1 -maxdepth 1 -print -quit 2> /dev/null`
112 #mv doesn't move hidden files (.*|the dot char started filenames)
113 [ ! -z "$LSFILE" ] && mv $DESTROOT/run/* $DESTROOT/var/run
114 rmdir $DESTROOT/run
116 LSFILE=
118 if [ -e $DESTROOT/var/run ]; then
119 echo "###### PKG_SCRIPT $PKG /var/run"
120 if ! rmdir $DESTROOT/var/run 2> /dev/null; then
121 (ODIR=`pwd`; cd $DESTROOT/var/run && _mkcpio $ODIR/_scripts/$PKG@run.cpio)
122 rm -rf $DESTROOT/var/run 2> /dev/null
123 if [ ! -e _scripts/$PKG.inst_end.sh ]; then
124 echo 'rm -rf $DESTROOT/var/run 2> /dev/null' > _scripts/$PKG.inst_end.sh
125 else
126 sh /bin/_add_linefeed.sh _scripts/$PKG.inst_end.sh
127 ! grep -qFx 'rm -rf $DESTROOT/var/run 2> /dev/null' _scripts/$PKG.inst_end.sh && \
128 echo 'rm -rf $DESTROOT/var/run 2> /dev/null' >> _scripts/$PKG.inst_end.sh
134 #remove created links (symbolic links to put some files into other directory)
135 rm -f $DESTROOT/usr/share/info/dir
136 rm -f $DESTROOT/tools/share/info/dir
138 rm $DESTROOT/usr/doc
139 rm $DESTROOT/usr/man
140 rm $DESTROOT/usr/info
141 rm $DESTROOT/usr/lib64
142 rm $DESTROOT/lib64
143 for i in $CREATEDIRS; do
144 rmdir $DESTROOT/$i 2> /dev/null
145 done
148 #call package update script
149 [ -e _scripts/$PKG.inst_end.sh ] && source _scripts/$PKG.inst_end.sh
152 #update some special packages
153 if [ -e $DESTROOT/usr/lib/perl5 ]; then
154 if [ -e _scripts/perl.ver ]; then
155 PERL=`cat _scripts/perl.ver`
156 rm -f $DESTROOT/usr/lib/perl5/$PERL/x86_64-linux/perllocal.pod
157 find $DESTROOT/usr/lib/perl5/site_perl/$PERL/x86_64-linux/auto -name ".packlist" -type f | \
158 xargs sed -i -n '/^\/usr\//p'
161 #...
162 #...
165 #create texinfo's (raw) script
166 TEXINFO=`find $DESTROOT/usr/share/info -name "*.info*" -print -quit 2> /dev/null`
167 if [ -n "$TEXINFO" ]; then
168 OPWD=`pwd`
169 cd $DESTROOT/usr/share/info
170 TI_FILES=`ls *.info*`
171 OIFS=$IFS
172 IFS=$'\n'
173 for i in $TI_FILES; do
174 [ -z "$TI_VAR" ] && TI_VAR="'$i'" || TI_VAR="$TI_VAR '$i'"
175 done
176 IFS=$OIFS
177 cd "$OPWD"
178 echo "#INC#texinfo" >> _scripts/$PKG.scr
179 echo "#VAR#filelist=($TI_VAR)" >> _scripts/$PKG.scr
183 #create package user related files
184 F_PASSWD="$BUILDROOT/tmp_passwd"
185 F_GROUP="$BUILDROOT/tmp_group"
187 if [ -e _scripts/$PKG.users ]; then
188 cat _scripts/$PKG.users | \
189 while read username uid group gid passwd home shell groups comment; do
190 if [ "$group" != "-" ]; then
191 GRPID=`grep "^${group}:" "$F_GROUP" | cut -d : -f 3`
192 if [ -z "$GRPID" ]; then
193 echo "**Group not found: ${group}**"
194 else
195 if ! echo "$processed" | grep -q "^${group}$"; then
196 if ! echo "$SKIPGROUP" | grep -q " $group "; then
197 echo "#PRI#addgroup -g $GRPID $group 2> /dev/null" >> _scripts/$PKG.scr
198 echo "#POR#delgroup $group 2> /dev/null" >> _scripts/$PKG.scr
200 [ -z "$processed" ] && processed="$group" || processed=`echo -ne "$processed\n$group"`
204 if [ "$groups" != "-" ]; then
205 OIFS=$IFS
206 IFS=$','
207 for i in $groups; do
208 GRPID=`grep "^${i}:" "$F_GROUP" | cut -d : -f 3`
209 if [ -z "$GRPID" ]; then
210 echo "**Group not found: ${i}**"
211 else
212 if ! echo "$processed" | grep -q "^${i}$"; then
213 if ! echo "$SKIPGROUP" | grep -q " $i "; then
214 echo "#PRI#addgroup -g $GRPID $i 2> /dev/null" >> _scripts/$PKG.scr
215 echo "#POR#delgroup $i 2> /dev/null" >> _scripts/$PKG.scr
217 [ -z "$processed" ] && processed="$i" || processed=`echo -ne "$processed\n$i"`
220 done
221 IFS=$OIFS
223 done
224 cat _scripts/$PKG.users | \
225 while read username uid group gid passwd home shell groups comment; do
226 [ "$shell" != "-" ] && SHELL="-s $shell" || SHELL=
227 [ "$home" != "-" ] && HHOME="-h $home" || HHOME=
228 [ "$group" != "-" ] && GROUP="-G $group" || GROUP=
229 [ "$comment" != "-" -a ! -z "$comment" ] && COMMENT="-g '$comment'" || COMMENT=
230 if [ "$username" != "-" ]; then
231 USRID=`grep "^${username}:" "$F_PASSWD" | cut -d : -f 3`
232 if [ -z "$USRID" ]; then
233 echo "**User not found: ${username}**"
234 else
235 echo "#PRI#adduser $HHOME $COMMENT $GROUP $SHELL -D -H -u $USRID $username 2> /dev/null" >> _scripts/$PKG.scr
236 echo "#POR#deluser $username 2> /dev/null" >> _scripts/$PKG.scr
237 if [ "$groups" != "-" ]; then
238 OIFS=$IFS
239 IFS=$','
240 for i in $groups; do
241 echo "#PRI#adduser $username $i 2> /dev/null" >> _scripts/$PKG.scr
242 echo "#POR#delgroup $username $i 2> /dev/null" >> _scripts/$PKG.scr
243 done
244 IFS=$OIFS
248 done
252 #create install files
253 if [ -e _scripts/$PKG.scr ]; then
254 echo -n > _scripts/$PKG.install
255 if INC=$(grep "^#INC#" _scripts/$PKG.scr); then
256 OIFS=$IFS
257 IFS=$'\n'
258 for i in $INC; do
259 INCVAL=`echo "$i" | sed 's/^#INC#//'`
260 if [ -e _scripts/scripts/$INCVAL.scr ]; then
261 [ -z "$INCSCR" ] && INCSCR="$INCVAL" || INCSCR=`echo -ne "$INCSCR\n$INCVAL"`
263 done
264 #IFS=$OIFS
266 for i in $INCSCR; do
267 grep "^#VAR#" _scripts/scripts/$i.scr | sed 's/^#VAR#//' >> _scripts/$PKG.install
268 done
270 grep "^#VAR#" _scripts/$PKG.scr | sed 's/^#VAR#//' >> _scripts/$PKG.install
272 echo "post_install() {" >> _scripts/$PKG.install
273 for i in $INCSCR; do
274 grep "^#POI#" _scripts/scripts/$i.scr | sed 's/^#POI#//' >> _scripts/$PKG.install
275 done
276 grep "^#POI#" _scripts/$PKG.scr | sed 's/^#POI#//' >> _scripts/$PKG.install
277 echo "}" >> _scripts/$PKG.install
279 echo "post_upgrade() {" >> _scripts/$PKG.install
280 for i in $INCSCR; do
281 grep "^#POU#" _scripts/scripts/$i.scr | sed 's/^#POU#//' >> _scripts/$PKG.install
282 done
283 grep "^#POU#" _scripts/$PKG.scr | sed 's/^#POU#//' >> _scripts/$PKG.install
284 echo "}" >> _scripts/$PKG.install
286 echo "post_remove() {" >> _scripts/$PKG.install
287 for i in $INCSCR; do
288 grep "^#POR#" _scripts/scripts/$i.scr | sed 's/^#POR#//' >> _scripts/$PKG.install
289 done
290 grep "^#POR#" _scripts/$PKG.scr | sed 's/^#POR#//' >> _scripts/$PKG.install
291 echo "}" >> _scripts/$PKG.install
293 echo "pre_install() {" >> _scripts/$PKG.install
294 for i in $INCSCR; do
295 grep "^#PRI#" _scripts/scripts/$i.scr | sed 's/^#PRI#//' >> _scripts/$PKG.install
296 done
297 grep "^#PRI#" _scripts/$PKG.scr | sed 's/^#PRI#//' >> _scripts/$PKG.install
298 echo "}" >> _scripts/$PKG.install
300 echo "pre_upgrade() {" >> _scripts/$PKG.install
301 for i in $INCSCR; do
302 grep "^#PRU#" _scripts/scripts/$i.scr | sed 's/^#PRU#//' >> _scripts/$PKG.install
303 done
304 grep "^#PRU#" _scripts/$PKG.scr | sed 's/^#PRU#//' >> _scripts/$PKG.install
305 echo "}" >> _scripts/$PKG.install
307 echo "pre_remove() {" >> _scripts/$PKG.install
308 for i in $INCSCR; do
309 grep "^#PRR#" _scripts/scripts/$i.scr | sed 's/^#PRR#//' >> _scripts/$PKG.install
310 done
311 grep "^#PRR#" _scripts/$PKG.scr | sed 's/^#PRR#//' >> _scripts/$PKG.install
312 echo "}" >> _scripts/$PKG.install
314 IFS=$OIFS
315 else
316 grep "^#VAR#" _scripts/$PKG.scr | sed 's/^#VAR#//' >> _scripts/$PKG.install
318 echo "post_install() {" >> _scripts/$PKG.install
319 grep "^#POI#" _scripts/$PKG.scr | sed 's/^#POI#//' >> _scripts/$PKG.install
320 echo "}" >> _scripts/$PKG.install
322 echo "post_upgrade() {" >> _scripts/$PKG.install
323 grep "^#POU#" _scripts/$PKG.scr | sed 's/^#POU#//' >> _scripts/$PKG.install
324 echo "}" >> _scripts/$PKG.install
326 echo "post_remove() {" >> _scripts/$PKG.install
327 grep "^#POR#" _scripts/$PKG.scr | sed 's/^#POR#//' | tac >> _scripts/$PKG.install
328 echo "}" >> _scripts/$PKG.install
330 echo "pre_install() {" >> _scripts/$PKG.install
331 grep "^#PRI#" _scripts/$PKG.scr | sed 's/^#PRI#//' >> _scripts/$PKG.install
332 echo "}" >> _scripts/$PKG.install
334 echo "pre_upgrade() {" >> _scripts/$PKG.install
335 grep "^#PRU#" _scripts/$PKG.scr | sed 's/^#PRU#//' >> _scripts/$PKG.install
336 echo "}" >> _scripts/$PKG.install
338 echo "pre_remove() {" >> _scripts/$PKG.install
339 grep "^#PRR#" _scripts/$PKG.scr | sed 's/^#PRR#//' | tac >> _scripts/$PKG.install
340 echo "}" >> _scripts/$PKG.install
342 anum=0
343 grep -A 1 -n "() {$" _scripts/$PKG.install | grep "^[0-9]\+-}$" | sed "s/-}$//" | \
344 while read num; do
345 sed -i "$(expr $num - $anum)d" _scripts/$PKG.install
346 sed -i "$(expr $num - 1 - $anum)d" _scripts/$PKG.install
347 anum=$(expr $anum + 2)
348 done
352 #copy in (auto)generated cpio
353 if [ -e _scripts/${PKG}@run.cpio ]; then
354 mkdir -p $DESTROOT/etc/rundir
355 cp -Rdp _scripts/${PKG}@run.cpio $DESTROOT/etc/rundir
357 #buildroot's sysvinit scripts()()
358 if [ -e $DESTROOT/etc/init.d ]; then
359 [ "$PKG" != "openrc" ] && mv $DESTROOT/etc/init.d $DESTROOT/etc/sysvinit.d
360 ####rm sysvinit runscript if there is
361 [ -e $DESTROOT/etc/sysvinit.d/rcS ] && rm $DESTROOT/etc/sysvinit.d/rcS
362 [ -e $DESTROOT/etc/sysvinit.d/rcK ] && rm $DESTROOT/etc/sysvinit.d/rcK
364 #execute permissions in /etc/profile.d
365 if [ -e $DESTROOT/etc/profile.d ]; then
366 LSFILE=`find $DESTROOT/etc/profile.d -mindepth 1 -maxdepth 1 -print -quit 2> /dev/null`
367 [ ! -z "$LSFILE" ] && chmod 755 $DESTROOT/etc/profile.d/*
371 #copy raw package files
372 [ -d _scripts/files/$PKG/etc ] && cp -Rdp _scripts/files/$PKG/etc $DESTROOT
373 [ -d _scripts/files/$PKG/@file ] && cp -Rdp _scripts/files/$PKG/@file/* $DESTROOT
376 #strip
377 _strip $DESTROOT
380 #make package info files
381 mkdir -p $DESTROOT/var/lib/instpkg/local
382 mkdir -p $DESTROOT/var/lib/instpkg/local/$PKG-$VERSION-$REV
383 mkdir -p $DESTROOT/var/lib/instpkg/local/.local
384 ln -sf ../$PKG-$VERSION-$REV $DESTROOT/var/lib/instpkg/local/.local/$PKG
385 SIZE=`du -sk $DESTROOT | grep -o "^[0-9]\+"`
386 #short descriptions
387 if [ -e _scripts/$PKG.desc ]; then
388 SHORT_DESC=`cat _scripts/$PKG.desc`
390 #write pkginfo
391 echo -ne "NAME=$NAME\nVERSION=$VERSION\nREV=$REV\nDESC=\"$SHORT_DESC\"\nSIZE=$SIZE\n" > $DESTROOT/var/lib/instpkg/local/$PKG-$VERSION-$REV/info
392 #buildroot descriptions
393 tar xzf _scripts/files/desc.tar.gz -C $DESTROOT/var/lib/instpkg/local/$PKG-$VERSION-$REV desc/$PKG.desc@ 2> /dev/null
394 [ -e $DESTROOT/var/lib/instpkg/local/$PKG-$VERSION-$REV/desc/$PKG.desc@ ] && \
395 mv $DESTROOT/var/lib/instpkg/local/$PKG-$VERSION-$REV/desc/$PKG.desc@ $DESTROOT/var/lib/instpkg/local/$PKG-$VERSION-$REV/desc@
396 rm -rf $DESTROOT/var/lib/instpkg/local/$PKG-$VERSION-$REV/desc
398 ###overwrite
399 [ ! -e _scripts/$PKG.deps ] && touch _scripts/$PKG.deps
400 ###overwrite
402 sort -u _scripts/$PKG.deps > $DESTROOT/var/lib/instpkg/local/$PKG-$VERSION-$REV/depends
403 cat $DESTROOT/var/lib/instpkg/local/$PKG-$VERSION-$REV/depends | tr '\n' ' ' | \
404 sed 's% $%%' > $DESTROOT/var/lib/instpkg/local/$PKG-$VERSION-$REV/depend@
405 GRP=`grep "package.*/$PKG/Config.in" package/_pkgs.group@@@@ | cut -d " " -f 1-2`
407 ###overwrite
408 [ "$PKG" = "busybox" ] && GRP="base system"
409 [ "$PKG" = "glibc" ] && GRP="base development"
410 [ "$PKG" = "gcc" ] && GRP="base development"
411 ###overwrite
412 [ -z "$GRP" ] && GRP="unknown other"
414 #write groups entry
415 echo "$GRP" > $DESTROOT/var/lib/instpkg/local/$PKG-$VERSION-$REV/groups
416 #copy install file
417 [ -e _scripts/$PKG.install ] && cp -dp _scripts/$PKG.install $DESTROOT/var/lib/instpkg/local/$PKG-$VERSION-$REV/install
420 #targz
421 (cd $DESTROOT; tar czf $PKGDEST/$PKG-$VERSION-$REV.tar.gz *)
422 retval=$?
424 echo "$DONTINSTALL" | grep -q " $PKG " || tar xzf $PKGDEST/$PKG-$VERSION-$REV.tar.gz -C /
426 rm -rf $DESTROOT/*
428 rm -f $BUILDROOT/inst_start.log
430 exit $retval