File PKGBUILD of Package busybox

# Maintainer: Yukari Chiba <[email protected]>
# Contributor: Julian Droske <[email protected]>

pkgname=busybox
pkgver=1.38.0
pkgrel=3
pkgdesc="Utilities for rescue and embedded systems"
arch=(x86_64 aarch64 riscv64 loongarch64)
url="https://www.busybox.net"
license=('GPL-2.0-only')
depends=("utmps")
makedepends=("ncurses" "musl" "skalibs" "linux-headers")
options=(!lto emptydirs)
backup=(
  "etc/ntp.conf"
  "etc/sysctl.conf"
)
source=(
  "$url/downloads/$pkgname-$pkgver.tar.bz2"
  "config"
  "sysctl.conf"
  "ntp.conf"
  "ntpd.service"
  "syslogd.service"
  "udhcpc.service"
  "udhcpc.script"
  "mdev.service"
  "getty.service"
  "remove_empty_dir.patch"
  "busybox-suidwrapper.c"
  "acpid.service"
  "sha256-aarch64-hwaccel.patch"
)
sha256sums=('34f9ea6ff8636f2c9241153b9114eefa9e65674a45318ae1ef95bb5f31c53bb2'
            '77a0d3187fad3ba5966289fbccefbe4cb12e12f6643b52999d126ddab66ca03f'
            '204a0fc1dabe7cc02a8a18bdec4637d7ddb6547042c9ee1e5f9b71cd22de2f85'
            '644321e67516c8e6869dd1f09b9dfc06d6758dec91df0bdea3cb614419a1e0d3'
            '76b310d897b03efe753969e1b917fe2e3e36beb772e2145e67638af655fad04e'
            '3709439bd12a216bd515e4f4759c69464e15d4ca0bb71b9a9838b0eccce8fd9b'
            '63044f1031a3d9405fbd23df091d4816264141241fd74730acd0b6b294b87618'
            '69e028725a63763e21684fb0ce941f6a34a4b72bb328a0cab43b4d39d6d767dc'
            '802aff2664c40867a616144cfa2c5cd0c28e53d6a07f8d78bdcdf78705244842'
            '6ebc1362e00c59005ccb70ccb663e7efcd7efb1606a7b1255d972f3585fbf901'
            '622d0a1743a127bab1fc15e5057034db52c7fa475298b8d085cfc7c046ae5537'
            'cd62d9d1ae294099b1a28e6ffb053267dd7a17ba8cfadb810bb7901292c4f89b'
            'c1b9ddd15914bcac1dccc646aaf7b2dcbc51a574eeeff5af92839a5f206c989a'
            '46619fcf3b865adff41607f1c26396f0a012e56a58228d2d64e48aa1b14f5df1')

prepare() {
  # remove_empty_dir: Fix eweOS/bugs/#2
  _patch_ $pkgname-$pkgver

  cd "$srcdir/$pkgname-$pkgver"
  sed "/CONFIG_PREFIX/s@=.*@=\"${pkgdir}/usr/\"@" \
    "${srcdir}/config" > .config
  sed -i -e 's@<none>@-lutmps@' \
    -e '/^l_list=/s@$LDLIBS@-lutmps@' \
    scripts/trylink
  # Fix depmod: buffer 67104768 too small with gz modules
  sed -i 's/64\*1024\*1024/512\*1024\*1024/' modutils/depmod.c
}

build() {
  cd "$srcdir/$pkgname-$pkgver"
  make HOSTCC=clang CC=clang LDLIBS='-lutmps'
  cc -o $srcdir/busybox-suidwrapper $srcdir/busybox-suidwrapper.c
}

check() {
  cd "$srcdir/$pkgname-$pkgver"
  # it takes too long to test 'md5sum-verifies-non-binary-file'
  #make HOSTCC=clang CC=clang LDLIBS='-lutmps' check
}

package() {
  cd "$srcdir/$pkgname-$pkgver"
  make HOSTCC=clang CC=clang LDLIBS='-lutmps' install
  mv $pkgdir/usr/sbin/* $pkgdir/usr/bin
  rm -r $pkgdir/usr/sbin

  install -m 0755 $srcdir/busybox-suidwrapper $pkgdir/usr/bin/busybox-suidwrapper
  for SUIDCMD in $($pkgdir/usr/bin/busybox-suidwrapper -l); do
    ln -sf busybox-suidwrapper $pkgdir/usr/bin/$SUIDCMD
  done
  chmod u+s $pkgdir/usr/bin/busybox-suidwrapper

  cd $pkgdir
  # Config Files
  install -d etc
  install -m 0644 "${srcdir}/sysctl.conf" etc/
  install -m 0644 "${srcdir}/ntp.conf" etc/
  install -d usr/share/udhcpc
  install -m 0755 "${srcdir}/udhcpc.script" \
    usr/share/udhcpc/default.script

  # acpid config dir
  install -d etc/acpi

  for service in ntpd syslogd udhcpc mdev acpid getty; do
    _dinit_install_services_ $srcdir/${service}.service
  done

  for TTYNUM in 1 2 3 4 5 6; do
    _dinit_enable_services_ getty@tty$TTYNUM
  done

  # Enable ntpd, acpid
  _dinit_enable_services_ ntpd acpid
}