wok-current view busybox/receipt @ rev 19793
busybox: e2fsck support fallback
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Thu Feb 23 10:06:33 2017 +0100 (2017-02-23) |
parents | 035585dc224b |
children | 10cf54238be9 |
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 # Keep e2fsprogs kmod & util-linux-mount files
143 REMOVED_SYMLINKS="/bin/mount /bin/mountpoint /bin/umount /sbin/depmod \
144 /sbin/insmod /sbin/modinfo /sbin/modprobe /sbin/rmmod /bin/lsattr /bin/chattr \
145 /sbin/tune2fs"
147 # Rules to gen a SliTaz package suitable for Tazpkg.
148 genpkg_rules()
149 {
150 mkdir -p $install/usr/share/man/man1 $install/usr/share/doc/busybox
151 cp -a $src/_install/* $fs
152 cp -a $src/docs/busybox.base.1 $install/usr/share/man/man1/busybox.1
153 cp -a $src/docs/*.txt $install/usr/share/doc/busybox
154 cp -a $src/docs/*.htm* $install/usr/share/doc/busybox
155 cp -a $src/docs/cgi $install/usr/share/doc/busybox
156 [ -e $fs/sbin/ip ] && ln -s busybox $fs/bin/ip
157 rm -f $fs/bin/bbconfig $fs/usr/bin/ar
158 mkdir -p $fs/etc/init.d $fs/var/spool/cron/crontabs $fs/var/spool/lpd \
159 $fs/var/lib/misc
161 # Busybox config files.
162 for f in busybox.conf dnsd.conf udhcpd.conf inetd.conf httpd.conf \
163 syslog.conf zcip.script
164 do
165 cp $stuff/$f $fs/etc
166 done
167 chown -R 0.0 $fs/etc
168 chmod 600 $fs/etc/busybox.conf
169 touch $fs/etc/resolv.conf
171 # Daemon scripts.
172 cp $stuff/daemon $fs/etc/init.d
173 DAEMON="crond dnsd ftpd httpd inetd lpd klogd ntpd syslogd telnetd tftpd udhcpd zcip"
174 for i in $DAEMON; do
175 grep -qi config_$i=y $stuff/$PACKAGE-${VERSION%.*}.config &&
176 ln -s daemon $fs/etc/init.d/$i
177 done
178 mkdir -p $fs/etc/modprobe.d
180 # Udhcpc stuff.
181 mkdir -p $fs/usr/share/udhcpc
182 cp $stuff/udhcp.script $fs/usr/share/udhcpc/default.script
183 chmod +x $fs/usr/share/udhcpc/default.script
185 # Httpd stuff.
186 ln -s /usr/lib/slitaz/httphelper.sh $fs/usr/bin/httpd_helper.sh
187 cp -a $stuff/www $fs/var
189 # Update copyright year
190 grep -rl 'copy; 2' $fs/var/www | xargs \
191 sed -i "s/copy; [0-9]*/copy; $(date +%Y)/"
193 # Remove kmod & util-linux-mount links
194 for link in $REMOVED_SYMLINKS; do
195 rm -f $fs$link
196 done
197 }
199 # GNU utils stuff.
200 pre_install()
201 {
202 local i
203 [ -s $1/etc/resolv.conf ] &&
204 cp -a $1/etc/resolv.conf $1/etc/resolv.conf-busybox-install
205 answer=""
206 for i in $(cat "$1$INSTALLED/$PACKAGE/files.list"); do
207 [ -f "$1$i" ] || continue
208 case "$i" in
209 /bin/busybox) continue ;;
210 *bin/*) ;;
211 *) continue ;;
212 esac
213 if [ -z "$answer" ]; then
214 echo -n "Keep installed GNU utilities ? "
215 read -t 30 answer # by default: keep
216 case "$answer" in
217 n*|N*) break;;
218 *) answer="Y";;
219 esac
220 fi
221 cp -a "$1$i" "$1$i-busybox-install"
222 done
223 }
225 post_install()
226 {
227 local i
228 [ -f $1/etc/resolv.conf-busybox-install ] &&
229 mv -f $1/etc/resolv.conf-busybox-install $1/etc/resolv.conf
230 while read i ; do
231 [ -f "$1$i-busybox-install" ] || continue
232 mv "$1$i-busybox-install" "$1$i"
233 done < "$1$INSTALLED/$PACKAGE/files.list"
234 chmod 4755 "$1/bin/busybox"
236 touch $1/etc/daemons.conf
237 # /etc/daemons.conf (tftp + dnsd + httpd may not be present)
238 if ! grep -q ^DNSD_OPTIONS $1/etc/daemons.conf; then
239 echo '# Domain name server options.' >> $1/etc/daemons.conf
240 echo 'DNSD_OPTIONS="-d"' >> $1/etc/daemons.conf
241 echo '' >> $1/etc/daemons.conf
242 fi
243 if ! grep -q ^TFTPD_OPTIONS $1/etc/daemons.conf; then
244 echo '# Tftp daemon options.' >> $1/etc/daemons.conf
245 echo 'TFTPD_OPTIONS="-r /boot"' >> $1/etc/daemons.conf
246 echo '' >> $1/etc/daemons.conf
247 fi
248 sed -i "s/copy; 20../copy; $(date +%Y)/" $1/var/www/httpd/404.html
249 for link in $REMOVED_SYMLINKS; do
250 [ -e $1$link ] || ln -s /bin/busybox $1$link
251 done
252 }
254 pre_remove()
255 {
256 # We can not remove this package !
257 exit 1
258 }