wok-current view busybox/receipt @ rev 19785
Up cookutils (883)
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Wed Feb 22 13:36:36 2017 +0100 (2017-02-22) |
parents | 1bf436c396bc |
children | 864a180f69c3 |
line source
1 # SliTaz package receipt.
3 PACKAGE="busybox"
4 VERSION="1.26.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 gettext-tools"
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 cmdline.u
41 diff.u
42 diet.u
43 losetup.u
44 fbvnc.u
45 cpio.u
46 ftpd.u
47 shutdown.u
48 scriptreplay.u
49 bug9471.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 echo "=== Build busybox ==="
68 apply_bb_patchs &&
69 make oldconfig &&
70 make && make install || return 1
71 strip --strip-unneeded -R .eh_frame -R .eh_frame_hdr \
72 $src/_install/bin/busybox
73 mv docs/busybox.1 docs/busybox.base.1
75 # prepare busybox-pam package
76 echo "=== Build busybox-pam ==="
77 sed -i 's/# CONFIG_PAM is not set/CONFIG_PAM=y/' .config
78 make oldconfig && make || return 1
79 strip --strip-unneeded -R .eh_frame -R .eh_frame_hdr busybox
80 mv busybox busybox-pam
81 mv docs/busybox.1 docs/busybox.pam.1
83 # prepare busybox-static package
84 if [ -x /usr/bin/uclibc-i486-gcc ]; then
85 echo "=== Build busybox-uclibc ==="
86 cp $stuff/$PACKAGE-${VERSION%.*}.config-static .config
87 sed -i 's/# CONFIG_ASH_INTERNAL_GLOB is not set/CONFIG_ASH_INTERNAL_GLOB=y/' .config
88 make oldconfig && make || return 1
89 cp busybox busybox-static
90 mv busybox busybox-uclibc
91 mv -f docs/busybox.1 docs/busybox.static.1
92 fi
94 if [ -x /usr/bin/musl-gcc ]; then
95 echo "=== Build busybox-musl ==="
96 # prepare busybox-musl package
97 cp $stuff/$PACKAGE-${VERSION%.*}.config-static .config
98 sed -i 's|uclibc-i486-||' .config
99 make oldconfig && make CC=musl-gcc || return 1
100 mv busybox busybox-musl
101 mv -f docs/busybox.1 docs/busybox.static.1
102 fi
104 if [ -x /usr/lib/diet/bin/diet ]; then
105 echo "=== Build busybox-diet ==="
106 # prepare busybox-diet package
107 cp $stuff/$PACKAGE-${VERSION%.*}.config-static .config
108 sed -i 's|uclibc-i486-||;s|CFLAGS="|&-D_BSD_SOURCE |;s|LDFLAGS="|&-Wl,--allow-multiple-definition |;s|LDLIBS="|&compat rpc |' .config
109 make oldconfig && make CC="/usr/lib/diet/bin/diet gcc" || return 1
110 mv busybox busybox-diet
111 mv -f docs/busybox.1 docs/busybox.static.1
112 fi
114 # prepare ssfs-busybox package
115 echo "=== Build busybox-ssfs ==="
116 rootfs=$src/ssfs-busybox/usr/share/ssfs/rootfs
117 mkdir -p $rootfs/etc
118 cp $stuff/$PACKAGE-${VERSION%.*}.config-ssfs .config
119 make oldconfig && make busybox &&
120 make CONFIG_PREFIX=$rootfs install || return 1
121 cp $stuff/busybox.conf-ssfs $rootfs/etc/busybox.conf
122 chown -R 0.0 $rootfs/etc
123 chmod 0600 $rootfs/etc/busybox.conf
124 chmod 4755 $rootfs/bin/busybox
126 # Compile translations
127 echo "=== Build translations ==="
128 make -C $stuff/po install
129 cp docs/busybox.base.1 docs/busybox.1
131 ;;
133 esac
134 }
136 # Cross compilation check.
137 testsuite()
138 {
139 readelf -h $src/_install/bin/busybox
140 }
142 # Rules to gen a SliTaz package suitable for Tazpkg.
143 genpkg_rules()
144 {
145 mkdir -p $install/usr/share/man/man1 $install/usr/share/doc/busybox
146 cp -a $src/_install/* $fs
147 cp -a $src/docs/busybox.base.1 $install/usr/share/man/man1/busybox.1
148 cp -a $src/docs/*.txt $install/usr/share/doc/busybox
149 cp -a $src/docs/*.htm* $install/usr/share/doc/busybox
150 cp -a $src/docs/cgi $install/usr/share/doc/busybox
151 [ -e $fs/sbin/ip ] && ln -s busybox $fs/bin/ip
152 rm -f $fs/bin/bbconfig $fs/usr/bin/ar
153 mkdir -p $fs/etc/init.d $fs/var/spool/cron/crontabs $fs/var/spool/lpd \
154 $fs/var/lib/misc
156 # Busybox config files.
157 for f in busybox.conf dnsd.conf udhcpd.conf inetd.conf httpd.conf \
158 syslog.conf zcip.script
159 do
160 cp $stuff/$f $fs/etc
161 done
162 chown -R 0.0 $fs/etc
163 chmod 600 $fs/etc/busybox.conf
164 touch $fs/etc/resolv.conf
166 # Daemon scripts.
167 cp $stuff/daemon $fs/etc/init.d
168 DAEMON="crond dnsd ftpd httpd inetd lpd klogd ntpd syslogd telnetd tftpd udhcpd zcip"
169 for i in $DAEMON; do
170 grep -qi config_$i=y $stuff/$PACKAGE-${VERSION%.*}.config &&
171 ln -s daemon $fs/etc/init.d/$i
172 done
173 mkdir -p $fs/etc/modprobe.d
175 # Udhcpc stuff.
176 mkdir -p $fs/usr/share/udhcpc
177 cp $stuff/udhcp.script $fs/usr/share/udhcpc/default.script
178 chmod +x $fs/usr/share/udhcpc/default.script
180 # Httpd stuff.
181 ln -s /usr/lib/slitaz/httphelper.sh $fs/usr/bin/httpd_helper.sh
182 cp -a $stuff/www $fs/var
184 # Update copyright year
185 grep -rl 'copy; 2' $fs/var/www | xargs \
186 sed -i "s/copy; [0-9]*/copy; $(date +%Y)/"
188 # Remove kmod & util-linux-mount links
189 while read link; do
190 rm -f $fs$link
191 done <<EOT
192 /bin/mount
193 /bin/mountpoint
194 /bin/umount
195 /sbin/depmod
196 /sbin/insmod
197 /sbin/modinfo
198 /sbin/modprobe
199 /sbin/rmmod
200 EOT
201 }
203 # GNU utils stuff.
204 pre_install()
205 {
206 local i
207 [ -s $1/etc/resolv.conf ] &&
208 cp -a $1/etc/resolv.conf $1/etc/resolv.conf-busybox-install
209 answer=""
210 for i in $(cat "$1$INSTALLED/$PACKAGE/files.list"); do
211 [ -f "$1$i" ] || continue
212 case "$i" in
213 /bin/busybox) continue ;;
214 *bin/*) ;;
215 *) continue ;;
216 esac
217 if [ -z "$answer" ]; then
218 echo -n "Keep installed GNU utilities ? "
219 read -t 30 answer # by default: keep
220 case "$answer" in
221 n*|N*) break;;
222 *) answer="Y";;
223 esac
224 fi
225 cp -a "$1$i" "$1$i-busybox-install"
226 done
227 }
229 post_install()
230 {
231 local i
232 [ -f $1/etc/resolv.conf-busybox-install ] &&
233 mv -f $1/etc/resolv.conf-busybox-install $1/etc/resolv.conf
234 while read i ; do
235 [ -f "$1$i-busybox-install" ] || continue
236 mv "$1$i-busybox-install" "$1$i"
237 done < "$1$INSTALLED/$PACKAGE/files.list"
238 chmod 4755 "$1/bin/busybox"
240 touch $1/etc/daemons.conf
241 # /etc/daemons.conf (tftp + dnsd + httpd may not be present)
242 if ! grep -q ^DNSD_OPTIONS $1/etc/daemons.conf; then
243 echo '# Domain name server options.' >> $1/etc/daemons.conf
244 echo 'DNSD_OPTIONS="-d"' >> $1/etc/daemons.conf
245 echo '' >> $1/etc/daemons.conf
246 fi
247 if ! grep -q ^TFTPD_OPTIONS $1/etc/daemons.conf; then
248 echo '# Tftp daemon options.' >> $1/etc/daemons.conf
249 echo 'TFTPD_OPTIONS="-r /boot"' >> $1/etc/daemons.conf
250 echo '' >> $1/etc/daemons.conf
251 fi
252 sed -i "s/copy; 20../copy; $(date +%Y)/" $1/var/www/httpd/404.html
253 }
255 pre_remove()
256 {
257 # We can not remove this package !
258 exit 1
259 }