update buildroot - work in progress development
[cmdllinux.git] / buildroot / _buildroot / scripts / targz_packages0124
blob73c36a0061352a3ba3202cd407dbf4da75287b2d
1 #! /bin/sh
3 #/bin/_add_linefeed.sh
4 #/bin/_lsexecs.sh
5 #_mkcpio
6 #_strip
7 #/run/... may be needed to add (pkg@run.cpio)
8 #_scripts/pkg.ver may be needed to add
9 #package/_pkgs.group@@@@
11 CREATEDIRS="\
12 etc/pam.d \
13 etc/profile.d \
14 etc/init.d \
15 etc \
16 bin \
17 sbin \
18 lib \
19 usr/share/doc \
20 usr/share/man \
21 usr/share/info \
22 usr/share \
23 usr/bin \
24 usr/sbin \
25 usr/lib \
26 usr/include \
27 usr \
28 var/cache \
29 var/lib \
30 var/log \
31 var/spool \
32 var \
35 PKG=$3
37 ###overwrite
38 [ "$PKG" = "gcc-tgt" ] && PKG=gcc
39 [ "$PKG" = "glibc-tgt" ] && PKG=glibc
40 ###overwrite
42 DONTINSTALL=" skeleton toolchain toolchain-external toolchain-external-custom initscripts jpeg busybox coreutils "
43 DONTINSTALL2=" getent jpeg toolchain-external toolchain-external-custom libgl libegl "
44 SKIPGROUP=" input "
46 echo "$DONTINSTALL2" | grep -q " $PKG " && exit 0
48 DIRSCRIPT=$(cd $(dirname "$0") && pwd -P)
49 echo "***********"
50 pwd -P
51 echo "***********"
53 DESTROOT=output/target
54 BUILDROOT=output/build
55 PKGDEST=/dest
56 retval=0
57 echo "###### PKG_SCRIPT $PKG $(cat $BUILDROOT/build-sysinit.log) $1 $2"
59 if [ "$1" = "start" ] && [ "$2" = "install-target" -o "$2" = "install-staging" ]; then
61 [ -e $BUILDROOT/inst_start.log ] && exit 0
62 touch $BUILDROOT/inst_start.log
64 rm -f _scripts/$PKG.scr
66 rm -rf $DESTROOT/*
68 for i in $CREATEDIRS; do
69 mkdir -p $DESTROOT/$i
70 done
71 ln -sf share/doc $DESTROOT/usr/doc
72 ln -sf share/man $DESTROOT/usr/man
73 ln -sf share/info $DESTROOT/usr/info
74 ln -sf lib $DESTROOT/usr/lib64
75 ln -sf lib $DESTROOT/lib64
77 [ -e _scripts/$PKG.inst_start.sh ] && source _scripts/$PKG.inst_start.sh
80 if [ "$1" = "end" ] && [ "$2" = "install-target" ]; then
81 source $BUILDROOT/.package_source
82 #NAME
83 #VERSION
84 #SOURCE_DIR
86 ###overwrite
87 [ "$PKG" = "glibc" ] && NAME="glibc"
88 [ "$PKG" = "gcc" ] && NAME="gcc"
89 ###overwrite
91 ###overwrite
92 [ ! -e _scripts/$PKG.rev ] && echo 1 > _scripts/$PKG.rev
93 ###overwrite
95 #update revision
96 REV=`cat _scripts/$PKG.rev`
97 [ -e _scripts/$PKG.ver ] && VERSION=`cat _scripts/$PKG.ver`
100 #rearrange some dirs
101 if [ -e $DESTROOT/var/lock ]; then
102 mkdir -p $DESTROOT/run/lock
103 LSFILE=`find $DESTROOT/var/lock -mindepth 1 -maxdepth 1 -print -quit 2> /dev/null`
104 #mv doesn't move hidden files (.*|the dot char started filenames)
105 [ ! -z "$LSFILE" ] && mv $DESTROOT/var/lock/* $DESTROOT/run/lock
106 rmdir $DESTROOT/var/lock
108 LSFILE=
110 if [ -e $DESTROOT/run ]; then
111 mkdir -p $DESTROOT/var/run
112 LSFILE=`find $DESTROOT/run -mindepth 1 -maxdepth 1 -print -quit 2> /dev/null`
113 #mv doesn't move hidden files (.*|the dot char started filenames)
114 [ ! -z "$LSFILE" ] && mv $DESTROOT/run/* $DESTROOT/var/run
115 rmdir $DESTROOT/run
117 LSFILE=
119 if [ -e $DESTROOT/var/run ]; then
120 echo "###### PKG_SCRIPT $PKG /var/run"
121 if ! rmdir $DESTROOT/var/run 2> /dev/null; then
122 (ODIR=`pwd`; cd $DESTROOT/var/run && _mkcpio $ODIR/_scripts/$PKG@run.cpio)
123 rm -rf $DESTROOT/var/run 2> /dev/null
124 if [ ! -e _scripts/$PKG.inst_end.sh ]; then
125 echo 'rm -rf $DESTROOT/var/run 2> /dev/null' > _scripts/$PKG.inst_end.sh
126 else
127 sh /bin/_add_linefeed.sh _scripts/$PKG.inst_end.sh
128 ! grep -qFx 'rm -rf $DESTROOT/var/run 2> /dev/null' _scripts/$PKG.inst_end.sh && \
129 echo 'rm -rf $DESTROOT/var/run 2> /dev/null' >> _scripts/$PKG.inst_end.sh
135 #remove created links (symbolic links to put some files into other directory)
136 rm -f $DESTROOT/usr/share/info/dir
137 rm -f $DESTROOT/tools/share/info/dir
139 rm $DESTROOT/usr/doc
140 rm $DESTROOT/usr/man
141 rm $DESTROOT/usr/info
142 rm $DESTROOT/usr/lib64
143 rm $DESTROOT/lib64
144 for i in $CREATEDIRS; do
145 rmdir $DESTROOT/$i 2> /dev/null
146 done
149 #call package update script
150 [ -e _scripts/$PKG.inst_end.sh ] && source _scripts/$PKG.inst_end.sh
153 #update some special packages
154 if [ -e $DESTROOT/usr/lib/perl5 ]; then
155 if [ -e _scripts/perl.ver ]; then
156 PERL=`cat _scripts/perl.ver`
157 rm -f $DESTROOT/usr/lib/perl5/$PERL/x86_64-linux/perllocal.pod
158 find $DESTROOT/usr/lib/perl5/site_perl/$PERL/x86_64-linux/auto -name ".packlist" -type f | \
159 xargs sed -i -n '/^\/usr\//p'
162 #...
163 #...
166 #create texinfo's (raw) script
167 TEXINFO=`find $DESTROOT/usr/share/info -name "*.info*" -print -quit 2> /dev/null`
168 if [ -n "$TEXINFO" ]; then
169 OPWD=`pwd`
170 cd $DESTROOT/usr/share/info
171 TI_FILES=`ls *.info*`
172 OIFS=$IFS
173 IFS=$'\n'
174 for i in $TI_FILES; do
175 [ -z "$TI_VAR" ] && TI_VAR="'$i'" || TI_VAR="$TI_VAR '$i'"
176 done
177 IFS=$OIFS
178 cd "$OPWD"
179 echo "#INC#texinfo" >> _scripts/$PKG.scr
180 echo "#VAR#filelist=($TI_VAR)" >> _scripts/$PKG.scr
184 #create package user related files
185 F_PASSWD="$BUILDROOT/tmp_passwd"
186 F_GROUP="$BUILDROOT/tmp_group"
188 if [ -e _scripts/$PKG.users ]; then
189 cat _scripts/$PKG.users | \
190 while read username uid group gid passwd home shell groups comment; do
191 if [ "$group" != "-" ]; then
192 GRPID=`grep "^${group}:" "$F_GROUP" | cut -d : -f 3`
193 if [ -z "$GRPID" ]; then
194 echo "**Group not found: ${group}**"
195 else
196 if ! echo "$processed" | grep -q "^${group}$"; then
197 if ! echo "$SKIPGROUP" | grep -q " $group "; then
198 echo "#PRI#addgroup -g $GRPID $group 2> /dev/null" >> _scripts/$PKG.scr
199 echo "#POR#delgroup $group 2> /dev/null" >> _scripts/$PKG.scr
201 [ -z "$processed" ] && processed="$group" || processed=`echo -ne "$processed\n$group"`
205 if [ "$groups" != "-" ]; then
206 OIFS=$IFS
207 IFS=$','
208 for i in $groups; do
209 GRPID=`grep "^${i}:" "$F_GROUP" | cut -d : -f 3`
210 if [ -z "$GRPID" ]; then
211 echo "**Group not found: ${i}**"
212 else
213 if ! echo "$processed" | grep -q "^${i}$"; then
214 if ! echo "$SKIPGROUP" | grep -q " $i "; then
215 echo "#PRI#addgroup -g $GRPID $i 2> /dev/null" >> _scripts/$PKG.scr
216 echo "#POR#delgroup $i 2> /dev/null" >> _scripts/$PKG.scr
218 [ -z "$processed" ] && processed="$i" || processed=`echo -ne "$processed\n$i"`
221 done
222 IFS=$OIFS
224 done
225 cat _scripts/$PKG.users | \
226 while read username uid group gid passwd home shell groups comment; do
227 [ "$shell" != "-" ] && SHELL="-s $shell" || SHELL=
228 [ "$home" != "-" ] && HHOME="-h $home" || HHOME=
229 [ "$group" != "-" ] && GROUP="-G $group" || GROUP=
230 [ "$comment" != "-" -a ! -z "$comment" ] && COMMENT="-g '$comment'" || COMMENT=
231 if [ "$username" != "-" ]; then
232 USRID=`grep "^${username}:" "$F_PASSWD" | cut -d : -f 3`
233 if [ -z "$USRID" ]; then
234 echo "**User not found: ${username}**"
235 else
236 echo "#PRI#adduser $HHOME $COMMENT $GROUP $SHELL -D -H -u $USRID $username 2> /dev/null" >> _scripts/$PKG.scr
237 echo "#POR#deluser $username 2> /dev/null" >> _scripts/$PKG.scr
238 if [ "$groups" != "-" ]; then
239 OIFS=$IFS
240 IFS=$','
241 for i in $groups; do
242 echo "#PRI#adduser $username $i 2> /dev/null" >> _scripts/$PKG.scr
243 echo "#POR#delgroup $username $i 2> /dev/null" >> _scripts/$PKG.scr
244 done
245 IFS=$OIFS
249 done
253 #create install files
254 if [ -e _scripts/$PKG.scr ]; then
255 echo -n > _scripts/$PKG.install
256 if INC=$(grep "^#INC#" _scripts/$PKG.scr); then
257 OIFS=$IFS
258 IFS=$'\n'
259 for i in $INC; do
260 INCVAL=`echo "$i" | sed 's/^#INC#//'`
261 if [ -e _scripts/scripts/$INCVAL.scr ]; then
262 [ -z "$INCSCR" ] && INCSCR="$INCVAL" || INCSCR=`echo -ne "$INCSCR\n$INCVAL"`
264 done
265 #IFS=$OIFS
267 for i in $INCSCR; do
268 grep "^#VAR#" _scripts/scripts/$i.scr | sed 's/^#VAR#//' >> _scripts/$PKG.install
269 done
271 grep "^#VAR#" _scripts/$PKG.scr | sed 's/^#VAR#//' >> _scripts/$PKG.install
273 echo "post_install() {" >> _scripts/$PKG.install
274 for i in $INCSCR; do
275 grep "^#POI#" _scripts/scripts/$i.scr | sed 's/^#POI#//' >> _scripts/$PKG.install
276 done
277 grep "^#POI#" _scripts/$PKG.scr | sed 's/^#POI#//' >> _scripts/$PKG.install
278 echo "}" >> _scripts/$PKG.install
280 echo "post_upgrade() {" >> _scripts/$PKG.install
281 for i in $INCSCR; do
282 grep "^#POU#" _scripts/scripts/$i.scr | sed 's/^#POU#//' >> _scripts/$PKG.install
283 done
284 grep "^#POU#" _scripts/$PKG.scr | sed 's/^#POU#//' >> _scripts/$PKG.install
285 echo "}" >> _scripts/$PKG.install
287 echo "post_remove() {" >> _scripts/$PKG.install
288 for i in $INCSCR; do
289 grep "^#POR#" _scripts/scripts/$i.scr | sed 's/^#POR#//' >> _scripts/$PKG.install
290 done
291 grep "^#POR#" _scripts/$PKG.scr | sed 's/^#POR#//' >> _scripts/$PKG.install
292 echo "}" >> _scripts/$PKG.install
294 echo "pre_install() {" >> _scripts/$PKG.install
295 for i in $INCSCR; do
296 grep "^#PRI#" _scripts/scripts/$i.scr | sed 's/^#PRI#//' >> _scripts/$PKG.install
297 done
298 grep "^#PRI#" _scripts/$PKG.scr | sed 's/^#PRI#//' >> _scripts/$PKG.install
299 echo "}" >> _scripts/$PKG.install
301 echo "pre_upgrade() {" >> _scripts/$PKG.install
302 for i in $INCSCR; do
303 grep "^#PRU#" _scripts/scripts/$i.scr | sed 's/^#PRU#//' >> _scripts/$PKG.install
304 done
305 grep "^#PRU#" _scripts/$PKG.scr | sed 's/^#PRU#//' >> _scripts/$PKG.install
306 echo "}" >> _scripts/$PKG.install
308 echo "pre_remove() {" >> _scripts/$PKG.install
309 for i in $INCSCR; do
310 grep "^#PRR#" _scripts/scripts/$i.scr | sed 's/^#PRR#//' >> _scripts/$PKG.install
311 done
312 grep "^#PRR#" _scripts/$PKG.scr | sed 's/^#PRR#//' >> _scripts/$PKG.install
313 echo "}" >> _scripts/$PKG.install
315 IFS=$OIFS
316 else
317 grep "^#VAR#" _scripts/$PKG.scr | sed 's/^#VAR#//' >> _scripts/$PKG.install
319 echo "post_install() {" >> _scripts/$PKG.install
320 grep "^#POI#" _scripts/$PKG.scr | sed 's/^#POI#//' >> _scripts/$PKG.install
321 echo "}" >> _scripts/$PKG.install
323 echo "post_upgrade() {" >> _scripts/$PKG.install
324 grep "^#POU#" _scripts/$PKG.scr | sed 's/^#POU#//' >> _scripts/$PKG.install
325 echo "}" >> _scripts/$PKG.install
327 echo "post_remove() {" >> _scripts/$PKG.install
328 grep "^#POR#" _scripts/$PKG.scr | sed 's/^#POR#//' | tac >> _scripts/$PKG.install
329 echo "}" >> _scripts/$PKG.install
331 echo "pre_install() {" >> _scripts/$PKG.install
332 grep "^#PRI#" _scripts/$PKG.scr | sed 's/^#PRI#//' >> _scripts/$PKG.install
333 echo "}" >> _scripts/$PKG.install
335 echo "pre_upgrade() {" >> _scripts/$PKG.install
336 grep "^#PRU#" _scripts/$PKG.scr | sed 's/^#PRU#//' >> _scripts/$PKG.install
337 echo "}" >> _scripts/$PKG.install
339 echo "pre_remove() {" >> _scripts/$PKG.install
340 grep "^#PRR#" _scripts/$PKG.scr | sed 's/^#PRR#//' | tac >> _scripts/$PKG.install
341 echo "}" >> _scripts/$PKG.install
343 anum=0
344 grep -A 1 -n "() {$" _scripts/$PKG.install | grep "^[0-9]\+-}$" | sed "s/-}$//" | \
345 while read num; do
346 sed -i "$(expr $num - $anum)d" _scripts/$PKG.install
347 sed -i "$(expr $num - 1 - $anum)d" _scripts/$PKG.install
348 anum=$(expr $anum + 2)
349 done
353 #copy in (auto)generated cpio
354 if [ -e _scripts/${PKG}@run.cpio ]; then
355 mkdir -p $DESTROOT/etc/rundir
356 cp -Rdp _scripts/${PKG}@run.cpio $DESTROOT/etc/rundir
358 #buildroot's sysvinit scripts()()
359 if [ -e $DESTROOT/etc/init.d ]; then
360 [ "$PKG" != "openrc" ] && mv $DESTROOT/etc/init.d $DESTROOT/etc/sysvinit.d
361 ####rm sysvinit runscript if there is
362 [ -e $DESTROOT/etc/sysvinit.d/rcS ] && rm $DESTROOT/etc/sysvinit.d/rcS
363 [ -e $DESTROOT/etc/sysvinit.d/rcK ] && rm $DESTROOT/etc/sysvinit.d/rcK
365 #execute permissions in /etc/profile.d
366 if [ -e $DESTROOT/etc/profile.d ]; then
367 LSFILE=`find $DESTROOT/etc/profile.d -mindepth 1 -maxdepth 1 -print -quit 2> /dev/null`
368 [ ! -z "$LSFILE" ] && chmod 755 $DESTROOT/etc/profile.d/*
372 #copy raw package files
373 #cp ... -p -> cp ... --preserve=mode,ownership (new timestamp)
374 [ -d _scripts/files/$PKG/etc ] && cp -Rdp _scripts/files/$PKG/etc $DESTROOT
375 [ -d _scripts/files/$PKG/@file ] && cp -Rdp _scripts/files/$PKG/@file/* $DESTROOT
378 #strip
379 _strip $DESTROOT
382 #make package info files
383 mkdir -p $DESTROOT/var/lib/instpkg/local
384 mkdir -p $DESTROOT/var/lib/instpkg/local/$PKG-$VERSION-$REV
385 mkdir -p $DESTROOT/var/lib/instpkg/local/.local
386 ln -sf ../$PKG-$VERSION-$REV $DESTROOT/var/lib/instpkg/local/.local/$PKG
387 SIZE=`du -sk $DESTROOT | grep -o "^[0-9]\+"`
388 #short descriptions
389 if [ -e _scripts/$PKG.desc ]; then
390 SHORT_DESC=`cat _scripts/$PKG.desc`
392 #write pkginfo
393 echo -ne "NAME=$NAME\nVERSION=$VERSION\nREV=$REV\nDESC=\"$SHORT_DESC\"\nSIZE=$SIZE\n" > $DESTROOT/var/lib/instpkg/local/$PKG-$VERSION-$REV/info
394 #buildroot descriptions
395 tar xzf _scripts/files/desc.tar.gz -C $DESTROOT/var/lib/instpkg/local/$PKG-$VERSION-$REV desc/$PKG.desc@ 2> /dev/null
396 [ -e $DESTROOT/var/lib/instpkg/local/$PKG-$VERSION-$REV/desc/$PKG.desc@ ] && \
397 mv $DESTROOT/var/lib/instpkg/local/$PKG-$VERSION-$REV/desc/$PKG.desc@ $DESTROOT/var/lib/instpkg/local/$PKG-$VERSION-$REV/desc@
398 rm -rf $DESTROOT/var/lib/instpkg/local/$PKG-$VERSION-$REV/desc
400 ###overwrite
401 [ ! -e _scripts/$PKG.deps ] && touch _scripts/$PKG.deps
402 ###overwrite
404 sort -u _scripts/$PKG.deps > $DESTROOT/var/lib/instpkg/local/$PKG-$VERSION-$REV/depends
405 cat $DESTROOT/var/lib/instpkg/local/$PKG-$VERSION-$REV/depends | tr '\n' ' ' | \
406 sed 's% $%%' > $DESTROOT/var/lib/instpkg/local/$PKG-$VERSION-$REV/depend@
407 GRP=`grep "package.*/$PKG/Config.in" package/_pkgs.group@@@@ | cut -d " " -f 1-2`
409 ###overwrite
410 [ "$PKG" = "busybox" ] && GRP="base system"
411 [ "$PKG" = "glibc" ] && GRP="base development"
412 [ "$PKG" = "gcc" ] && GRP="base development"
413 ###overwrite
414 [ -z "$GRP" ] && GRP="unknown other"
416 #write groups entry
417 echo "$GRP" > $DESTROOT/var/lib/instpkg/local/$PKG-$VERSION-$REV/groups
418 #copy install file
419 [ -e _scripts/$PKG.install ] && cp -dp _scripts/$PKG.install $DESTROOT/var/lib/instpkg/local/$PKG-$VERSION-$REV/install
420 #copy keepdirs file
421 [ -e _scripts/$PKG.keepdirs ] && cp -dp _scripts/$PKG.keepdirs $DESTROOT/var/lib/instpkg/local/$PKG-$VERSION-$REV/keepdirs
422 #findexecs
423 sh /bin/_lsexecs.sh $DESTROOT | sort > $DESTROOT/var/lib/instpkg/local/$PKG-$VERSION-$REV/execs
426 #targz
427 (cd $DESTROOT; tar czf $PKGDEST/$PKG-$VERSION-$REV.tar.gz *)
428 retval=$?
430 # echo "$DONTINSTALL" | grep -q " $PKG " || tar xzf $PKGDEST/$PKG-$VERSION-$REV.tar.gz -C /
432 rm -rf $DESTROOT/*
434 rm -f $BUILDROOT/inst_start.log
436 exit $retval