wok-next annotate busybox/receipt @ rev 19941

gst0-ffmpeg*: tiny patch
author Pascal Bellard <pascal.bellard@slitaz.org>
date Sun Oct 15 19:06:21 2017 +0200 (2017-10-15)
parents d6dd7b81a69c
children 0e7893ac206d
rev   line source
al@19875 1 # SliTaz package receipt v2.
pankso@0 2
pankso@0 3 PACKAGE="busybox"
al@19875 4 VERSION="1.27.2"
pankso@0 5 CATEGORY="base-system"
al@19875 6 SHORT_DESC="Tiny versions of UNIX utilities"
pankso@289 7 MAINTAINER="pascal.bellard@slitaz.org"
pascal@14657 8 LICENSE="GPL2"
al@19596 9 WEB_SITE="https://busybox.net/"
pankso@12772 10 HOST_ARCH="i486 arm"
pankso@0 11
al@19596 12 TARBALL="$PACKAGE-$VERSION.tar.bz2"
al@19596 13 WGET_URL="${WEB_SITE}downloads/$TARBALL"
al@19596 14
al@19875 15 BUILD_DEPENDS_arm="bzip2"
al@19875 16 BUILD_DEPENDS="patch bzip2 gettext perl pam-dev" # uclibc-cross-compiler-i486 musl-libc-dev dietlibc
al@19875 17 #SPLIT="busybox-boot busybox-pam busybox-static ssfs-busybox"
al@19875 18 SPLIT="busybox-pam ssfs-busybox"
pascal@8237 19
pankso@0 20 # Rules to configure and make the package.
al@19875 21 compile_rules() {
pankso@12755 22 case "$ARCH" in
pankso@16528 23 arm*)
pankso@12755 24 echo "cook: CROSS_COMPILE=$CROSS_COMPILE"
pankso@12926 25 cp $stuff/arm/$PACKAGE.config .config
pankso@12926 26 make oldconfig &&
pankso@12926 27 make && make install || return 1
al@19596 28 chmod 4755 $src/_install/bin/busybox
al@19596 29 ;;
al@19596 30 x86_64)
al@19596 31 echo "TODO"
al@19596 32 ;;
pankso@12755 33 i?86)
al@19596 34 echo 'Making busybox'
al@19875 35 cp $stuff/.config $src &&
pankso@12926 36 make oldconfig &&
al@19875 37 make &&
al@19875 38 make install || return 1
al@19596 39 strip --strip-unneeded -R .eh_frame -R .eh_frame_hdr \
pankso@12755 40 $src/_install/bin/busybox
al@19626 41 mv docs/busybox.1 docs/busybox.base.1
al@19626 42
al@19626 43 # prepare busybox-pam package
al@19875 44 echo 'Making busybox-pam'
al@19875 45 sed -i 's|# CONFIG_PAM is not set|CONFIG_PAM=y|' $src/.config
al@19875 46 make oldconfig &&
al@19875 47 make || return 1
al@19626 48 strip --strip-unneeded -R .eh_frame -R .eh_frame_hdr busybox
al@19626 49 mv busybox busybox-pam
al@19626 50 mv docs/busybox.1 docs/busybox.pam.1
al@19626 51
al@19626 52 # prepare busybox-static package
pascal@19631 53 if [ -n "$(/usr/bin/uclibc-i486-gcc --version 2>/dev/null)" ]; then
al@19875 54 echo 'Making busybox-uclibc'
al@19875 55 cp $stuff/.config-static $src/.config
al@19875 56 sed -i 's|# CONFIG_ASH_INTERNAL_GLOB is not set|CONFIG_ASH_INTERNAL_GLOB=y|' $src/.config
al@19875 57 make oldconfig &&
al@19875 58 make || return 1
al@19626 59 cp busybox busybox-static
al@19626 60 mv busybox busybox-uclibc
al@19626 61 mv -f docs/busybox.1 docs/busybox.static.1
al@19626 62 fi
al@19626 63
al@19875 64 if [ -x '/usr/bin/musl-gcc' ]; then
al@19875 65 echo 'Making busybox-musl'
al@19626 66 # prepare busybox-musl package
al@19875 67 cp $stuff/.config-static $src/.config
al@19875 68 sed -i 's|uclibc-i486-||' $src/.config
al@19875 69 make oldconfig &&
al@19875 70 make CC=musl-gcc || return 1
al@19626 71 mv busybox busybox-musl
al@19626 72 mv -f docs/busybox.1 docs/busybox.static.1
al@19626 73 fi
al@19626 74
al@19875 75 if [ -x '/usr/lib/diet/bin/diet' ]; then
al@19875 76 echo 'Making busybox-diet'
al@19626 77 # prepare busybox-diet package
al@19875 78 cp $stuff/.config-static $src/.config
al@19875 79 sed -i 's|uclibc-i486-||;
al@19875 80 s|CFLAGS="|&-D_BSD_SOURCE |;
al@19875 81 s|LDFLAGS="|&-Wl,--allow-multiple-definition |;
al@19875 82 s|LDLIBS="|&compat rpc |' $src/.config
al@19875 83 make oldconfig &&
al@19875 84 make CC="/usr/lib/diet/bin/diet gcc" || return 1
al@19626 85 mv busybox busybox-diet
al@19626 86 mv -f docs/busybox.1 docs/busybox.static.1
al@19626 87 fi
al@19626 88
al@19626 89 # prepare ssfs-busybox package
al@19875 90 echo 'Making busybox-ssfs'
al@19875 91 rootfs="$src/ssfs-busybox/usr/share/ssfs/rootfs"
al@19626 92 mkdir -p $rootfs/etc
al@19875 93 cp $stuff/.config-ssfs $src/.config
al@19875 94 make oldconfig &&
al@19875 95 make busybox &&
al@19626 96 make CONFIG_PREFIX=$rootfs install || return 1
al@19626 97 cp $stuff/busybox.conf-ssfs $rootfs/etc/busybox.conf
al@19626 98 chown -R 0.0 $rootfs/etc
al@19626 99 chmod 0600 $rootfs/etc/busybox.conf
al@19626 100 chmod 4755 $rootfs/bin/busybox
al@19159 101
al@19596 102 echo 'Making translations'
al@19159 103 make -C $stuff/po install
al@19626 104 cp docs/busybox.base.1 docs/busybox.1
al@19159 105 ;;
al@19159 106
pankso@12755 107 esac
al@19596 108
al@19596 109 cook_pick_manpages $src/docs/busybox.1
al@19875 110 cook_pick_docs \
al@19875 111 $src/docs/*.txt \
al@19875 112 $src/docs/*.htm* \
al@19875 113 $src/docs/cgi
pankso@12755 114 }
pankso@12755 115
pankso@12755 116 # Cross compilation check.
al@19875 117 testsuite() {
pankso@12755 118 readelf -h $src/_install/bin/busybox
pankso@0 119 }
pankso@0 120
pankso@0 121 # Rules to gen a SliTaz package suitable for Tazpkg.
al@19875 122 genpkg_rules() {
al@19875 123 case $PACKAGE in
al@19875 124 busybox)
al@19875 125 DEPENDS="slitaz-base-files glibc-base ncurses"
al@19875 126 CONFIG_FILES="/etc/dnsd.conf /etc/inetd.conf /etc/udhcpd.conf \
al@19875 127 /etc/resolv.conf /etc/httpd.conf"
al@19875 128 cp -a $src/_install/* $fs
al@19875 129 [ -e $fs/sbin/ip ] && ln -s busybox $fs/bin/ip
al@19875 130 rm -f $fs/bin/bbconfig $fs/usr/bin/ar
al@19875 131 mkdir -p \
al@19875 132 $fs/etc/init.d \
al@19875 133 $fs/var/spool/cron/crontabs \
al@19875 134 $fs/var/spool/lpd \
al@19875 135 $fs/var/lib/misc \
al@19875 136 $fs/etc/modprobe.d \
al@19875 137 $fs/usr/share/udhcpc
pankso@12755 138
al@19875 139 # Busybox config files
al@19875 140 cp -a $stuff/etc/* $fs/etc
al@19875 141 chown -R 0.0 $fs/etc
al@19875 142 chmod 600 $fs/etc/busybox.conf
pankso@10817 143
al@19875 144 # Daemon scripts
al@19875 145 cp $stuff/daemon $fs/etc/init.d
al@19875 146 for i in crond dnsd ftpd httpd inetd lpd klogd ntpd syslogd \
al@19875 147 telnetd tftpd udhcpd zcip; do
al@19875 148 grep -qi "config_$i=y" $stuff/.config &&
al@19875 149 ln -s daemon $fs/etc/init.d/$i
al@19875 150 done
al@19875 151 rm $fs/linuxrc
pankso@12755 152
al@19875 153 # Udhcpc stuff
al@19875 154 cp $stuff/udhcp.script $fs/usr/share/udhcpc/default.script
al@19875 155 chmod +x $fs/usr/share/udhcpc/default.script
pankso@10817 156
al@19875 157 # Httpd stuff (httphelper.sh found in slitaz-base-files package)
al@19875 158 ln -s /usr/lib/slitaz/httphelper.sh $fs/usr/bin/httpd_helper.sh
al@19875 159 cp -r $stuff/www $fs/var
pascal@18006 160
al@19875 161 # Update copyright year
al@19875 162 grep -rl 'YEAR' $fs/var/www | xargs sed -i "s|YEAR|$(date +%Y)|"
al@19875 163 :
al@19875 164 ;;
al@19875 165 busybox-boot)
al@19875 166 jslinux=false
al@19875 167 CAT="base-system|for core-5in1/boot flavor"
al@19875 168 DEPENDS="linux syslinux"
al@19875 169 mkdir -p \
al@19875 170 $fs/usr/share/boot/bin \
al@19875 171 $fs/usr/share/boot/dev
al@19875 172
al@19875 173 CHOICE='static'
al@19875 174 for i in uclibc musl diet; do
al@19875 175 [ -x "$src/busybox-$i" ] || continue
al@19875 176 [ -x "$src/busybox-$CHOICE" ] &&
al@19875 177 [ $(stat -c %s $src/busybox-$i) -ge \
al@19875 178 $(stat -c %s $src/busybox-$CHOICE) ] &&
al@19875 179 continue
al@19875 180 CHOICE="$i"
al@19875 181 done
al@19875 182 cp -a $src/busybox-$CHOICE $fs/usr/share/boot/bin/busybox
al@19875 183
al@19875 184 chmod 4755 $fs/usr/share/boot/bin/busybox
al@19875 185 mknod -m 660 $fs/usr/share/boot/dev/console c 5 1
al@19875 186 mknod -m 771 $fs/usr/share/boot/dev/null c 1 3
al@19875 187 mknod -m 660 $fs/usr/share/boot/dev/tty c 5 0
al@19875 188 mknod -m 660 $fs/usr/share/boot/dev/tty1 c 4 1
al@19875 189 if $jslinux; then
al@19875 190 mknod -m 644 $fs/usr/share/boot/dev/clipboard c 10 231
al@19875 191 mknod -m 660 $fs/usr/share/boot/dev/ttyS0 c 4 64
al@19875 192 fi
al@19875 193
al@19875 194 cp $stuff/init $fs/usr/share/boot/init
al@19875 195 $jslinux || sed -i '/jslinux/d' $fs/usr/share/boot/init
al@19875 196 chmod +x $fs/usr/share/boot/init
al@19875 197
al@19875 198 ( cd $fs/usr/share/boot; find bin dev init | cpio -o -H newc > initrd )
al@19875 199 rm -rf \
al@19875 200 $fs/usr/share/boot/bin \
al@19875 201 $fs/usr/share/boot/dev \
al@19875 202 $fs/usr/share/boot/init
al@19875 203 ;;
al@19875 204 busybox-pam)
al@19875 205 CAT="base-system|with PAM support"
al@19875 206 DEPENDS="busybox pam"
al@19875 207 CONFIG_FILES="/etc/pam.d"
al@19875 208 PROVIDE="busybox:pam"
al@19875 209 mkdir -p \
al@19875 210 $fs/bin/ \
al@19875 211 $fs/etc/pam.d/
al@19875 212 cp -a $src/busybox-pam $fs/bin/busybox
al@19875 213 cp $stuff/login $fs/etc/pam.d/
al@19875 214 ;;
al@19875 215 busybox-static)
al@19875 216 CAT="base-system|static version"
al@19875 217 DEPENDS=" "
al@19875 218 mkdir -p $fs/usr/share/boot
al@19875 219
al@19875 220 CHOICE='static'
al@19875 221 for i in uclibc musl diet; do
al@19875 222 [ -x "$src/busybox-$i" ] || continue
al@19875 223 [ -x "$src/busybox-$CHOICE" ] &&
al@19875 224 [ $(stat -c %s $src/busybox-$i) -ge \
al@19875 225 $(stat -c %s $src/busybox-$CHOICE) ] &&
al@19875 226 continue
al@19875 227 CHOICE="$i"
al@19875 228 done
al@19875 229 cp -a $src/busybox-$CHOICE $fs/usr/share/boot/busybox-static
al@19875 230 ;;
al@19875 231 ssfs-busybox)
al@19875 232 # NOTE: We install files in Ssfs data directory to always have ready
al@19875 233 # to create chroot on the server and provide an easy way to update
al@19875 234 # the vdisk. We don't do a static build, we need some shared lib in
al@19875 235 # the chroot anyway. Busybox is configured to not use /usr and with
al@19875 236 # a minimal set of applets.
al@19875 237
al@19875 238 CAT="base-system|for Ssfs virtual disk minimal chroot"
al@19875 239 rootfs=$fs/usr/share/ssfs/rootfs
al@19875 240 cp -a $src/ssfs-busybox/* $fs
al@19875 241 ;;
al@19875 242 esac
pankso@0 243 }
pankso@557 244
pankso@12755 245 # GNU utils stuff.
al@19875 246 pre_install_busybox() {
pascal@5015 247 local i
pascal@18846 248 [ -s $1/etc/resolv.conf ] &&
pascal@18816 249 cp -a $1/etc/resolv.conf $1/etc/resolv.conf-busybox-install
al@19875 250 answer=''
al@19596 251 for i in $(sed '/busybox$/d; /bin\//!d' "$1$INSTALLED/$PACKAGE/files.list"); do
pascal@18730 252 [ -f "$1$i" ] || continue
pascal@5015 253 if [ -z "$answer" ]; then
al@19596 254 echo
al@19596 255 confirm 'Keep installed GNU utilities?' y || break
al@19596 256 answer='Y'
pascal@5015 257 fi
pascal@18730 258 cp -a "$1$i" "$1$i-busybox-install"
pascal@5924 259 done
pankso@557 260 }
pascal@983 261
al@19875 262 post_install_busybox() {
pascal@5015 263 local i
pascal@18816 264 [ -f $1/etc/resolv.conf-busybox-install ] &&
pascal@18816 265 mv -f $1/etc/resolv.conf-busybox-install $1/etc/resolv.conf
al@19596 266 for i in $($1/bin/busybox --list-full); do
al@19596 267 [ -f "$1/$i-busybox-install" ] || continue
al@19596 268 mv "$1/$i-busybox-install" "$1/$i"
al@19596 269 done
pascal@18730 270 chmod 4755 "$1/bin/busybox"
pankso@10818 271
al@19596 272 touch "$1/etc/daemons.conf"
pankso@10818 273 # /etc/daemons.conf (tftp + dnsd + httpd may not be present)
al@19596 274 if ! grep -q ^DNSD_OPTIONS "$1/etc/daemons.conf"; then
al@19596 275 cat >> "$1/etc/daemons.conf" <<EOF
al@19596 276 # Domain name server options.
al@19596 277 DNSD_OPTIONS="-d"
al@19596 278
al@19596 279 EOF
pankso@10818 280 fi
pascal@18816 281 if ! grep -q ^TFTPD_OPTIONS $1/etc/daemons.conf; then
al@19596 282 cat >> "$1/etc/daemons.conf" <<EOF
al@19596 283 # Tftp daemon options.
al@19596 284 TFTPD_OPTIONS="-r /boot"
al@19596 285
al@19596 286 EOF
pankso@10818 287 fi
pascal@5686 288 }
pascal@8932 289
al@19875 290 # We can't remove this package!
al@19875 291 pre_remove_busybox() {
pascal@8932 292 exit 1
pascal@8932 293 }
al@19875 294
al@19875 295 pre_remove_busybox_pam() {
al@19875 296 # We install non-pam busybox to replace busybox-pam.
al@19875 297 tazpkg get-install busybox --forced
al@19875 298
al@19875 299 # We remove /bin/busybox from the file.list of busybox-pam.
al@19875 300 # This way, the non-pam busybox we just installed will not be
al@19875 301 # removed.
al@19875 302 sed '/\/bin\/busybox/d' \
al@19875 303 -i /var/lib/tazpkg/installed/busybox-pam/files.list
al@19875 304 }
al@19875 305
al@19875 306 post_install_busybox_pam() {
al@19875 307 chmod 4755 "$1/bin/busybox"
al@19875 308 }
al@19875 309
al@19875 310 post_install_busybox_static() {
al@19875 311 chmod 4755 "$1/usr/share/boot/busybox-static"
al@19875 312 }