# Template file for 'busybox'
pkgname=busybox
version=1.32.1
revision=3
hostmakedepends="perl"
checkdepends="tar which zip"
short_desc="Swiss Army Knife of Embedded Linux"
maintainer="Tuxliban Torvalds <tenshalito@gmail.com>"
license="GPL-2.0-only"
homepage="https://www.busybox.net"
distfiles="${homepage}/downloads/busybox-${version}.tar.bz2"
checksum=9d57c4bd33974140fd4111260468af22856f12f5b5ef7c70c8d9b75c712a0dee

_alternatives_core="
 ash:ash:/usr/bin/busybox
 awk:awk:/usr/bin/busybox
 hostname:hostname:/usr/bin/busybox
 sh:sh:/usr/bin/busybox
 vi:vi:/usr/bin/busybox
 logger:logger:/usr/bin/busybox"

_alternatives="
 ${_alternatives_core}
 ntpd:ntpd:/usr/bin/busybox
 ntpd:ntpd:/etc/sv/busybox-ntpd"

alternatives="${_alternatives}"
register_shell="/usr/bin/ash"

_patch_config() {
	local t="$1"
	shift
	while [ "$1" ]; do
		local p="$1"
		shift
		echo "Applying $p..."
		patch "${t}/.config" <"${FILESDIR}/dotconfig.d/${p}.patch"
	done
}

do_configure() {
	mkdir -p src
	mv * src || true

	local t
#	for t in busybox busybox-static busybox-core busybox-huge; do
	for t in busybox busybox-static; do
		mkdir -p $t
		cp -f ${FILESDIR}/dotconfig ${t}/.config

		case "$XBPS_TARGET_MACHINE" in
		*-musl) vsed -i -e /CONFIG_FEATURE_VI_REGEX_SEARCH/s/y/n/ \
				${t}/.config
			vsed -i 's|# CONFIG_FEATURE_VERBOSE_USAGE is not set|CONFIG_FEATURE_VERBOSE_USAGE=y|g' \
				${t}/.config;;
		esac

		if [ "$CROSS_BUILD" ]; then
			vsed -i -e \
				"s,\(CONFIG_CROSS_COMPILER_PREFIX\).*,\1=\"${XBPS_CROSS_TRIPLET}-\",g" \
				${t}/.config
		fi
	done

	_patch_config busybox udhcpc ntpd
	_patch_config busybox-static udhcpc ntpd static
#	_patch_config busybox-huge udhcpc ntpd httpd mdev sysklogd huge

#	for t in busybox-core busybox busybox-static busybox-huge; do
	for t in busybox-static busybox; do
		make -C "${t}" KBUILD_SRC="${wrksrc}/src" -f "${wrksrc}/src/Makefile" oldconfig
		make -C "${t}" KBUILD_SRC="${wrksrc}/src" -f "${wrksrc}/src/Makefile" prepare "${makejobs}"
	done

	if [ "$SOURCE_DATE_EPOCH" ]; then
		# rewrite date with the one from the date wrapper.
		d=$(date +"%F %T %Z")
		sed -i "s/\(#define AUTOCONF_TIMESTAMP\).*/\1 \"$d\"/" */include/autoconf.h
	fi
}

do_build() {
#	for t in busybox-core busybox busybox-static busybox-huge; do
	for t in busybox-static busybox; do
		make -C "${t}" SKIP_STRIP=y "${makejobs}"
	done
}

do_check() {
#	for t in busybox-core busybox busybox-static busybox-huge; do
	for t in busybox-static busybox; do
		make -C "${t}" "${makejobs}" \
			SKIP_KNOWN_BUGS=yes SKIP_INTERNET_TESTS=yes \
			check
	done
}

do_install() {
	vbin busybox/busybox_unstripped busybox
	vman busybox/docs/busybox.1
	vsv busybox-ntpd
}

#busybox-core_package() {
#	short_desc+=" (essential applets)"
#	conflicts="busybox>=0 busybox-huge>=0"
#	alternatives="${_alternatives_core}"
#	register_shell="/usr/bin/ash"
#	pkg_install() {
#		vbin busybox-core/busybox_unstripped busybox
#		vman busybox-core/docs/busybox.1
#	}
#}

busybox-static_package() {
	short_desc+=" (statically linked)"
	pkg_install() {
		vbin busybox-static/busybox busybox.static
	}
}

#busybox-huge_package() {
#	short_desc+=" (extra applets)"
#	conflicts="busybox>=0 busybox-core>=0"
#	alternatives="${_alternatives}"
#	register_shell="/usr/bin/ash"
#	pkg_install() {
#		vbin busybox-huge/busybox_unstripped busybox
#		vman busybox-huge/docs/busybox.1
#		vsv busybox-ntpd
#		vsv busybox-syslogd
#		vsv busybox-klogd
#	}
#}
