#!/usr/bin/env bash # Written and placed in public domain by Jeffrey Walton # This script builds Diffutils from sources. DIFFUTILS_VER=3.8 DIFFUTILS_XZ=diffutils-${DIFFUTILS_VER}.tar.xz DIFFUTILS_TAR=diffutils-${DIFFUTILS_VER}.tar DIFFUTILS_DIR=diffutils-${DIFFUTILS_VER} PKG_NAME=diffutils ############################################################################### # Get the environment as needed. if [[ "${SETUP_ENVIRON_DONE}" != "yes" ]]; then if ! source ./setup-environ.sh then echo "Failed to set environment" exit 1 fi fi # The password should die when this subshell goes out of scope if [[ "${SUDO_PASSWORD_DONE}" != "yes" ]]; then if ! source ./setup-password.sh then echo "Failed to process password" exit 1 fi fi ############################################################################### if ! ./build-cacert.sh then echo "Failed to install CA Certs" exit 1 fi ############################################################################### if ! ./build-base.sh then echo "Failed to build GNU base packages" exit 1 fi ############################################################################### if [[ ! -f "${INSTX_PREFIX}/bin/xz" ]] then if ! ./build-xz.sh then echo "Failed to build XZ" exit 1 fi fi ############################################################################### echo "" echo "========================================" echo "============ GNU Diffutils =============" echo "========================================" echo "" echo "**********************" echo "Downloading package" echo "**********************" echo "" echo "Diffutils ${DIFFUTILS_VER}..." if ! "${WGET}" -q -O "$DIFFUTILS_XZ" --ca-certificate="${LETS_ENCRYPT_ROOT}" \ "https://ftp.gnu.org/gnu/diffutils/$DIFFUTILS_XZ" then echo "Failed to download Diffutils" exit 1 fi rm -rf "$DIFFUTILS_TAR" "$DIFFUTILS_DIR" &>/dev/null unxz "$DIFFUTILS_XZ" && tar -xf "$DIFFUTILS_TAR" cd "$DIFFUTILS_DIR" || exit 1 # Fix sys_lib_dlsearch_path_spec bash "${INSTX_TOPDIR}/fix-configure.sh" echo "" echo "**********************" echo "Configuring package" echo "**********************" PKG_CONFIG_PATH="${INSTX_PKGCONFIG}" \ CPPFLAGS="${INSTX_CPPFLAGS}" \ ASFLAGS="${INSTX_ASFLAGS}" \ CFLAGS="${INSTX_CFLAGS}" \ CXXFLAGS="${INSTX_CXXFLAGS}" \ LDFLAGS="${INSTX_LDFLAGS}" \ LIBS="${INSTX_LDLIBS}" \ ./configure \ --build="${AUTOCONF_BUILD}" \ --prefix="${INSTX_PREFIX}" \ --libdir="${INSTX_LIBDIR}" \ --with-libiconv-prefix="${INSTX_PREFIX}" \ --with-libintl-prefix="${INSTX_PREFIX}" if [[ "$?" -ne 0 ]]; then echo "" echo "*****************************" echo "Failed to configure Diffutils" echo "*****************************" bash "${INSTX_TOPDIR}/collect-logs.sh" "${PKG_NAME}" exit 1 fi # Escape dollar sign for $ORIGIN in makefiles. Required so # $ORIGIN works in both configure tests and makefiles. bash "${INSTX_TOPDIR}/fix-makefiles.sh" echo "" echo "**********************" echo "Building package" echo "**********************" MAKE_FLAGS=("-j" "${INSTX_JOBS}" "V=1") if ! "${MAKE}" "${MAKE_FLAGS[@]}" then echo "" echo "*****************************" echo "Failed to build Diffutils" echo "*****************************" bash "${INSTX_TOPDIR}/collect-logs.sh" "${PKG_NAME}" exit 1 fi # Fix flags in *.pc files bash "${INSTX_TOPDIR}/fix-pkgconfig.sh" # Fix runpaths bash "${INSTX_TOPDIR}/fix-runpath.sh" echo "" echo "**********************" echo "Testing package" echo "**********************" MAKE_FLAGS=("check" "-k" "V=1") if ! "${MAKE}" "${MAKE_FLAGS[@]}" then echo "" echo "*****************************" echo "Failed to test Diffutils" echo "*****************************" bash "${INSTX_TOPDIR}/collect-logs.sh" "${PKG_NAME}" exit 1 fi # Fix runpaths again bash "${INSTX_TOPDIR}/fix-runpath.sh" echo "" echo "**********************" echo "Installing package" echo "**********************" MAKE_FLAGS=("install") if [[ -n "${SUDO_PASSWORD}" ]]; then printf "%s\n" "${SUDO_PASSWORD}" | sudo ${SUDO_ENV_OPT} -S "${MAKE}" "${MAKE_FLAGS[@]}" printf "%s\n" "${SUDO_PASSWORD}" | sudo ${SUDO_ENV_OPT} -S bash "${INSTX_TOPDIR}/fix-permissions.sh" "${INSTX_PREFIX}" else "${MAKE}" "${MAKE_FLAGS[@]}" bash "${INSTX_TOPDIR}/fix-permissions.sh" "${INSTX_PREFIX}" fi ############################################################################### echo "" echo "*****************************************************************************" echo "Please run Bash's 'hash -r' to update program cache in the current shell" echo "*****************************************************************************" ############################################################################### touch "${INSTX_PKG_CACHE}/${PKG_NAME}" cd "${CURR_DIR}" || exit 1 ############################################################################### # Set to false to retain artifacts if true; then ARTIFACTS=("$DIFFUTILS_XZ" "$DIFFUTILS_TAR" "$DIFFUTILS_DIR") for artifact in "${ARTIFACTS[@]}"; do rm -rf "$artifact" done fi exit 0