Enhance build script to utilize a configuration template for BusyBox and improve installation logic. Added checks for the presence of the config template and updated installation steps for shared libraries.

This commit is contained in:
2026-04-08 08:54:02 +03:00
parent 8ba06f5382
commit 720a12374c
2 changed files with 1218 additions and 9 deletions

View File

@@ -21,6 +21,7 @@ BUSYBOX_DIR="${SCRIPT_DIR}/busybox"
SYSROOT_DEFAULT="/home/stargazer/arm-uclinuxfdpiceabi/sysroot" SYSROOT_DEFAULT="/home/stargazer/arm-uclinuxfdpiceabi/sysroot"
SYSROOT="${1:-${SYSROOT:-$SYSROOT_DEFAULT}}" SYSROOT="${1:-${SYSROOT:-$SYSROOT_DEFAULT}}"
ENV_FILE="${ENV_FILE:-${SCRIPT_DIR}/env.sh}" ENV_FILE="${ENV_FILE:-${SCRIPT_DIR}/env.sh}"
CONFIG_TEMPLATE="${SCRIPT_DIR}/config/.config"
die() { die() {
echo "ERROR: $*" >&2 echo "ERROR: $*" >&2
@@ -55,19 +56,22 @@ echo "Strip: ${STRIP_BIN}"
echo "SYSROOT: ${SYSROOT}" echo "SYSROOT: ${SYSROOT}"
echo "Source dir: ${BUSYBOX_DIR}" echo "Source dir: ${BUSYBOX_DIR}"
echo "Install dir: ${INSTALL_DIR}" echo "Install dir: ${INSTALL_DIR}"
echo "Config template: ${CONFIG_TEMPLATE}"
if [ ! -f "${CONFIG_TEMPLATE}" ]; then
die "Config template not found: ${CONFIG_TEMPLATE}"
fi
cd "${BUSYBOX_DIR}" cd "${BUSYBOX_DIR}"
if [ ! -f ".config" ]; then cp "${CONFIG_TEMPLATE}" .config
make defconfig
fi
# Force BusyBox shared library build profile. # Force BusyBox shared library build profile.
if [ -x "./scripts/config" ]; then if [ -x "./scripts/config" ]; then
./scripts/config \ ./scripts/config \
-e BUILD_LIBBUSYBOX \ -e BUILD_LIBBUSYBOX \
-e FEATURE_SHARED_BUSYBOX \ -e FEATURE_SHARED_BUSYBOX \
-e FEATURE_INDIVIDUAL \ -d FEATURE_INDIVIDUAL \
-d STATIC \ -d STATIC \
-d PIE \ -d PIE \
-d FEATURE_LIBBUSYBOX_STATIC -d FEATURE_LIBBUSYBOX_STATIC
@@ -84,13 +88,27 @@ make -j"${JOBS}" \
EXTRA_LDFLAGS="--sysroot=${SYSROOT}" EXTRA_LDFLAGS="--sysroot=${SYSROOT}"
make CONFIG_PREFIX="${INSTALL_DIR}" install make CONFIG_PREFIX="${INSTALL_DIR}" install
if [ -f "busybox" ]; then
"${STRIP_BIN}" busybox # If FEATURE_SHARED_BUSYBOX/BUILD_LIBBUSYBOX are enabled, BusyBox also
fi # produces a tiny launcher in 0_lib/ that links against libbusybox.
if [ -f "libbusybox.so" ]; then # Install that pair instead of the monolithic ./busybox to actually save space.
"${STRIP_BIN}" libbusybox.so if [ -f "0_lib/busybox" ]; then
install -D -m 0755 "0_lib/busybox" "${INSTALL_DIR}/bin/busybox"
fi fi
# Install the exact SONAME that the launcher needs (e.g. libbusybox.so.1.31.1)
shopt -s nullglob
libbusybox_candidates=(0_lib/libbusybox.so.*)
shopt -u nullglob
for f in "${libbusybox_candidates[@]}"; do
case "${f}" in
*_unstripped*|*.map|*.out) continue ;;
esac
install -D -m 0755 "${f}" "${INSTALL_DIR}/lib/$(basename "${f}")"
# Optional convenience symlink (not required at runtime).
ln -sf "$(basename "${f}")" "${INSTALL_DIR}/lib/libbusybox.so" 2>/dev/null || true
done
echo "Build completed successfully." echo "Build completed successfully."
echo "Binary: ${BUSYBOX_DIR}/busybox" echo "Binary: ${BUSYBOX_DIR}/busybox"
echo "Shared library: ${BUSYBOX_DIR}/libbusybox.so" echo "Shared library: ${BUSYBOX_DIR}/libbusybox.so"

1191
config/.config Normal file

File diff suppressed because it is too large Load Diff