wok-current view busybox/receipt @ rev 18429
busybox: add shutdown
| author | Pascal Bellard <pascal.bellard@slitaz.org> | 
|---|---|
| date | Mon Sep 21 17:56:57 2015 +0200 (2015-09-21) | 
| parents | 23ecc4e2565b | 
| children | 57ce4a5c6e0f | 
 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 ;;
   113 	esac
   114 }
   116 # Cross compilation check.
   117 testsuite()
   118 {
   119 	readelf -h $src/_install/bin/busybox
   120 }
   122 # Rules to gen a SliTaz package suitable for Tazpkg.
   123 genpkg_rules()
   124 {
   125 	cp -a $src/_install/* $fs
   126 	[ -e $fs/sbin/ip ] && ln -s busybox $fs/bin/ip
   127 	rm -f $fs/bin/bbconfig $fs/usr/bin/ar
   128 	mkdir -p $fs/etc/init.d $fs/var/spool/cron/crontabs $fs/var/spool/lpd
   130 	# Busybox config files.
   131 	for f in busybox.conf dnsd.conf udhcpd.conf inetd.conf httpd.conf \
   132 		syslog.conf zcip.script
   133 	do
   134 		cp $stuff/$f $fs/etc
   135 	done
   136 	chown -R 0.0 $fs/etc
   137 	chmod 600 $fs/etc/busybox.conf
   138 	touch $fs/etc/resolv.conf
   140 	# Daemon scripts.
   141 	cp $stuff/daemon $fs/etc/init.d
   142 	DAEMON="crond dnsd ftpd httpd inetd lpd klogd ntpd syslogd telnetd tftpd udhcpd zcip"
   143 	for i in $DAEMON; do
   144 		grep -qi config_$i=y $stuff/$PACKAGE-${VERSION%.*}.config &&
   145 		ln -s daemon $fs/etc/init.d/$i
   146 	done
   147 	rm $fs/linuxrc
   148 	mkdir -p $fs/etc/modprobe.d
   150 	# Udhcpc stuff.
   151 	mkdir -p $fs/usr/share/udhcpc
   152 	cp $stuff/udhcp.script $fs/usr/share/udhcpc/default.script
   153 	chmod +x $fs/usr/share/udhcpc/default.script
   155 	# Httpd stuff.
   156 	ln -s /usr/lib/slitaz/httphelper.sh $fs/usr/bin/httpd_helper.sh
   157 	cp -a $stuff/www $fs/var
   159 	# Update copyright year
   160 	grep -rl 'copy; 2' $fs/var/www | xargs \
   161 		sed -i "s/copy; [0-9]*/copy; $(date +%Y)/"
   162 }
   164 # GNU utils stuff.
   165 pre_install()
   166 {
   167 	local i
   168 	cp -a /etc/resolv.conf /etc/resolv.conf-busybox-install
   169 	answer=""
   170 	for i in $(cat $1$INSTALLED/$PACKAGE/files.list); do
   171 		[ -f $1$i ] || continue
   172 		case "$i" in
   173 			/bin/busybox) continue ;;
   174 			*bin/*) ;;
   175 			*) continue ;;
   176 		esac
   177 		if [ -z "$answer" ]; then
   178 			echo -n "Keep installed GNU utilities ? "
   179 			read -t 30 answer	# by default: keep
   180 			case "$answer" in
   181 			n*|N*) break;;
   182 			*) answer="Y";;
   183 			esac
   184 		fi
   185 		cp -a $1$i $1$i-busybox-install
   186 	done
   187 }
   189 post_install()
   190 {
   191 	local i
   192 	[ -f /etc/resolv.conf-busybox-install ] &&
   193 	mv -f /etc/resolv.conf-busybox-install /etc/resolv.conf
   194 	while read i ; do
   195 		[ -f $1$i-busybox-install ] || continue
   196 		mv $1$i-busybox-install $1$i
   197 	done < $1$INSTALLED/$PACKAGE/files.list
   198 	chmod 4755 $1/bin/busybox
   200 	# /etc/daemons.conf (tftp + dnsd + httpd may not be present)
   201 	if ! grep -q ^DNSD_OPTIONS $root/etc/daemons.conf; then
   202 		echo '# Domain name server options.' >> $root/etc/daemons.conf
   203 		echo 'DNSD_OPTIONS="-d"' >> $root/etc/daemons.conf
   204 		echo '' >> $root/etc/daemons.conf
   205 	fi
   206 	if ! grep -q ^TFTPD_OPTIONS $root/etc/daemons.conf; then
   207 		echo '# Tftp daemon options.' >> $root/etc/daemons.conf
   208 		echo 'TFTPD_OPTIONS="-r /boot"' >> $root/etc/daemons.conf
   209 		echo '' >> $root/etc/daemons.conf
   210 	fi
   211 	sed -i "s/copy; 20../copy; $(date +%Y)/" $root/var/www/httpd/404.html
   212 }
   214 pre_remove()
   215 {
   216 	# We can not remove this package !
   217 	exit 1
   218 }