wok view busybox/receipt @ rev 19255

Up cookutils (804)
author Aleksej Bobylev <al.bobylev@gmail.com>
date Sun Jul 03 11:20:09 2016 +0300 (2016-07-03)
parents d3584f1d2a06
children 2111808c7258
line source
1 # SliTaz package receipt.
3 PACKAGE="busybox"
4 VERSION="1.23.2"
5 CATEGORY="base-system"
6 SHORT_DESC="Busybox combines tiny versions of many common UNIX utilities."
7 MAINTAINER="pascal.bellard@slitaz.org"
8 LICENSE="GPL2"
9 TARBALL="$PACKAGE-$VERSION.tar.bz2"
10 WEB_SITE="http://www.busybox.net/"
11 WGET_URL="http://www.busybox.net/downloads/$TARBALL"
12 HOST_ARCH="i486 arm"
14 DEPENDS="slitaz-base-files glibc-base ncurses-common"
15 BUILD_DEPENDS="bzip2 pam pam-dev uclibc-cross-compiler-i486 \
16 musl-libc-dev dietlibc"
18 CONFIG_FILES="/etc/dnsd.conf /etc/inetd.conf /etc/udhcpd.conf \
19 /etc/resolv.conf /etc/httpd.conf"
20 AUFS_NOT_RAMFS="uclibc-cross-compiler-i486 is not compatible with aufs+tmpfs 8("
22 # Handle cross compilation
23 case "$ARCH" in
24 arm*) BUILD_DEPENDS="bzip2" ;;
25 esac
27 # Busybox patches
28 apply_bb_patchs()
29 {
30 while read file; do
31 [ -f done.$file ] && continue
32 echo "Apply $file..."
33 patch -p1 < $stuff/$PACKAGE-${VERSION%.*}-$file || return 1
34 touch done.$file
35 done <<EOT
36 tar.u
37 stat.u
38 ris.u
39 zmodules.u
40 printable.u
41 cmdline.u
42 diff.u
43 diet.u
44 losetup.u
45 fbvnc.u
46 cpio.u
47 ftpd.u
48 dpkgxz.u
49 shutdown.u
50 EOT
51 cp $stuff/$PACKAGE-${VERSION%.*}.config .config
52 }
54 # Rules to configure and make the package.
55 compile_rules()
56 {
57 case "$ARCH" in
58 arm*)
59 echo "cook: CROSS_COMPILE=$CROSS_COMPILE"
60 apply_bb_patchs &&
61 cp $stuff/arm/$PACKAGE.config .config
62 make oldconfig &&
63 make && make install || return 1
64 chmod 4755 $src/_install/bin/busybox ;;
65 x86_64) echo "TODO" ;;
66 i?86)
67 apply_bb_patchs &&
68 make oldconfig &&
69 make && make install || return 1
70 strip --strip-unneeded -R .eh_frame -R .eh_frame_hdr \
71 $src/_install/bin/busybox
73 # prepare busybox-pam package
74 sed -i 's/# CONFIG_PAM is not set/CONFIG_PAM=y/' .config
75 make oldconfig && make || return 1
76 strip --strip-unneeded -R .eh_frame -R .eh_frame_hdr busybox
77 mv busybox busybox-pam
79 # prepare busybox-static package
80 if [ -x /usr/bin/uclibc-i486-gcc ]; then
81 cp $stuff/$PACKAGE-${VERSION%.*}.config-static .config
82 make oldconfig && make || return 1
83 cp busybox busybox-static
84 mv busybox busybox-uclibc
85 fi
87 if [ -x /usr/bin/musl-gcc ]; then
88 # prepare busybox-musl package
89 cp $stuff/$PACKAGE-${VERSION%.*}.config-static .config
90 sed -i 's|uclibc-i486-||' .config
91 make oldconfig && make CC=musl-gcc || return 1
92 mv busybox busybox-musl
93 fi
95 if [ -x /usr/lib/diet/bin/diet ]; then
96 # prepare busybox-diet package
97 cp $stuff/$PACKAGE-${VERSION%.*}.config-static .config
98 sed -i 's|uclibc-i486-||;s|CFLAGS="|&-D_BSD_SOURCE |;s|LDFLAGS="|&-Wl,--allow-multiple-definition |;s|LDLIBS="|&compat rpc |' .config
99 make oldconfig && make CC="/usr/lib/diet/bin/diet gcc" || return 1
100 mv busybox busybox-diet
101 fi
103 # prepare ssfs-busybox package
104 rootfs=$src/ssfs-busybox/usr/share/ssfs/rootfs
105 mkdir -p $rootfs/etc
106 cp $stuff/$PACKAGE-${VERSION%.*}.config-ssfs .config
107 make oldconfig && make busybox &&
108 make CONFIG_PREFIX=$rootfs install || return 1
109 cp $stuff/busybox.conf-ssfs $rootfs/etc/busybox.conf
110 chown -R 0.0 $rootfs/etc
111 chmod 0600 $rootfs/etc/busybox.conf
112 chmod 4755 $rootfs/bin/busybox
114 # Compile translations
115 make -C $stuff/po install
117 ;;
119 esac
120 }
122 # Cross compilation check.
123 testsuite()
124 {
125 readelf -h $src/_install/bin/busybox
126 }
128 # Rules to gen a SliTaz package suitable for Tazpkg.
129 genpkg_rules()
130 {
131 cp -a $src/_install/* $fs
132 [ -e $fs/sbin/ip ] && ln -s busybox $fs/bin/ip
133 rm -f $fs/bin/bbconfig $fs/usr/bin/ar
134 mkdir -p $fs/etc/init.d $fs/var/spool/cron/crontabs $fs/var/spool/lpd \
135 $fs/var/lib/misc
137 # Busybox config files.
138 for f in busybox.conf dnsd.conf udhcpd.conf inetd.conf httpd.conf \
139 syslog.conf zcip.script
140 do
141 cp $stuff/$f $fs/etc
142 done
143 chown -R 0.0 $fs/etc
144 chmod 600 $fs/etc/busybox.conf
145 touch $fs/etc/resolv.conf
147 # Daemon scripts.
148 cp $stuff/daemon $fs/etc/init.d
149 DAEMON="crond dnsd ftpd httpd inetd lpd klogd ntpd syslogd telnetd tftpd udhcpd zcip"
150 for i in $DAEMON; do
151 grep -qi config_$i=y $stuff/$PACKAGE-${VERSION%.*}.config &&
152 ln -s daemon $fs/etc/init.d/$i
153 done
154 rm $fs/linuxrc
155 mkdir -p $fs/etc/modprobe.d
157 # Udhcpc stuff.
158 mkdir -p $fs/usr/share/udhcpc
159 cp $stuff/udhcp.script $fs/usr/share/udhcpc/default.script
160 chmod +x $fs/usr/share/udhcpc/default.script
162 # Httpd stuff.
163 ln -s /usr/lib/slitaz/httphelper.sh $fs/usr/bin/httpd_helper.sh
164 cp -a $stuff/www $fs/var
166 # Update copyright year
167 grep -rl 'copy; 2' $fs/var/www | xargs \
168 sed -i "s/copy; [0-9]*/copy; $(date +%Y)/"
170 # Remove kmod & core-util-mount links
171 while read link; do
172 rm -f $fs$link
173 done <<EOT
174 /bin/mount
175 /bin/mountpoint
176 /bin/umount
177 /sbin/depmod
178 /sbin/insmod
179 /sbin/modinfo
180 /sbin/modprobe
181 /sbin/rmmod
182 EOT
183 }
185 # GNU utils stuff.
186 pre_install()
187 {
188 local i
189 [ -s $1/etc/resolv.conf ] &&
190 cp -a $1/etc/resolv.conf $1/etc/resolv.conf-busybox-install
191 answer=""
192 for i in $(cat "$1$INSTALLED/$PACKAGE/files.list"); do
193 [ -f "$1$i" ] || continue
194 case "$i" in
195 /bin/busybox) continue ;;
196 *bin/*) ;;
197 *) continue ;;
198 esac
199 if [ -z "$answer" ]; then
200 echo -n "Keep installed GNU utilities ? "
201 read -t 30 answer # by default: keep
202 case "$answer" in
203 n*|N*) break;;
204 *) answer="Y";;
205 esac
206 fi
207 cp -a "$1$i" "$1$i-busybox-install"
208 done
209 }
211 post_install()
212 {
213 local i
214 [ -f $1/etc/resolv.conf-busybox-install ] &&
215 mv -f $1/etc/resolv.conf-busybox-install $1/etc/resolv.conf
216 while read i ; do
217 [ -f "$1$i-busybox-install" ] || continue
218 mv "$1$i-busybox-install" "$1$i"
219 done < "$1$INSTALLED/$PACKAGE/files.list"
220 chmod 4755 "$1/bin/busybox"
222 touch $1/etc/daemons.conf
223 # /etc/daemons.conf (tftp + dnsd + httpd may not be present)
224 if ! grep -q ^DNSD_OPTIONS $1/etc/daemons.conf; then
225 echo '# Domain name server options.' >> $1/etc/daemons.conf
226 echo 'DNSD_OPTIONS="-d"' >> $1/etc/daemons.conf
227 echo '' >> $1/etc/daemons.conf
228 fi
229 if ! grep -q ^TFTPD_OPTIONS $1/etc/daemons.conf; then
230 echo '# Tftp daemon options.' >> $1/etc/daemons.conf
231 echo 'TFTPD_OPTIONS="-r /boot"' >> $1/etc/daemons.conf
232 echo '' >> $1/etc/daemons.conf
233 fi
234 sed -i "s/copy; 20../copy; $(date +%Y)/" $1/var/www/httpd/404.html
235 }
237 pre_remove()
238 {
239 # We can not remove this package !
240 exit 1
241 }