X-Git-Url: http://git.pld-linux.org/?p=packages%2Frpm-build-tools.git;a=blobdiff_plain;f=builder.sh;h=453625d7f15c6bfbfbecbb88308dc0c11d2d97ef;hp=11e01efcbe992f278a9ccb96a03f19ef7bfe24fb;hb=6c0815a;hpb=e267517f208dae6ee42da97e4380b9735a8b65bf diff --git a/builder.sh b/builder.sh index 11e01ef..453625d 100755 --- a/builder.sh +++ b/builder.sh @@ -38,9 +38,10 @@ APPDIR=$(d=$0; [ -L "$d" ] && d=$(readlink -f "$d"); dirname "$d") VERSION="v0.35" VERSIONSTRING="\ Build package utility from PLD Linux Packages repository -$VERSION (C) 1999-2016 Free Penguins". +$VERSION (C) 1999-2021 Free Penguins". -CLEAN_PATH="/bin:/usr/bin:/usr/sbin:/sbin:/usr/X11R6/bin" +# Clean PATH without /usr/local or user paths +CLEAN_PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin" # required rpm-build-macros RPM_MACROS_VER=1.534 @@ -150,9 +151,13 @@ REVERT_BROKEN_UPGRADE="yes" if rpm --specsrpm 2>/dev/null; then FETCH_BUILD_REQUIRES_RPMSPECSRPM="yes" + FETCH_BUILD_REQUIRES_RPMSPEC_BINARY="no" FETCH_BUILD_REQUIRES_RPMGETDEPS="no" -else +elif [ -x /usr/bin/rpmspec ]; then FETCH_BUILD_REQUIRES_RPMSPECSRPM="no" + FETCH_BUILD_REQUIRES_RPMSPEC_BINARY="yes" + FETCH_BUILD_REQUIRES_RPMGETDEPS="no" +else if [ -x /usr/bin/rpm-getdeps ]; then FETCH_BUILD_REQUIRES_RPMGETDEPS="yes" else @@ -272,7 +277,6 @@ download_wget() { local outfile=$1 url=$2 retval wget_help if [ -z "${WGET_OPTS_SET+x}" ]; then wget_help="$(wget --help 2>&1)" - echo "$wget_help" | grep -q -- ' --no-check-certificate ' && WGET_OPTS="$WGET_OPTS --no-check-certificate" echo "$wget_help" | grep -q -- ' --inet ' && WGET_OPTS="$WGET_OPTS --inet" echo "$wget_help" | grep -q -- ' --retry-connrefused ' && WGET_OPTS="$WGET_OPTS --retry-connrefused" echo "$wget_help" | grep -q -- ' --no-iri ' && WGET_OPTS="$WGET_OPTS --no-iri" @@ -478,9 +482,9 @@ Usage: builder [--all-branches] [-D|--debug] [-V|--version] [--short-version] [ is_rpmorg() { local v - v=$(rpm --version 2>&1) + v=$(LC_ALL=C LANG=C rpm --version 2>&1) v=${v#RPM version } # rpm 4 - v=${v#rpm (RPM) } # rpm 5 + v=${v#rpm \(RPM\) } # rpm 5 case "$v" in 4.5|5.*) @@ -489,6 +493,9 @@ is_rpmorg() { 4.*) return 0; ;; + *) + echo "ERROR: unsupported RPM version $v" >&2 + exit 1 esac } @@ -589,7 +596,7 @@ depspecname() { s/apache\(EAPI\)-devel/apache-devel/ - s/db-devel/db5.3-devel/ + s/^db-devel/db5.3-devel/ s/libjpeg-devel/libjpeg-turbo-devel/ ' } @@ -1695,9 +1702,9 @@ build_package() { # this may be set by user unset GIT_SSH # may be set by user - unset GIT_COMMITTER_NAME GIT_COMMITTER_EMAIL GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL GIT_TESTING_PORCELAIN_COMMAND_LIST + unset GIT_COMMITTER_NAME GIT_COMMITTER_EMAIL GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL GIT_TESTING_PORCELAIN_COMMAND_LIST GIT_EDITOR # fail if something still set - env | grep ^GIT_ && Exit_error err_build_fail + env | grep ^GIT_ && Exit_error err_build_fail "One of GIT_* env variables is still set. The builder script needs to be updated to unset that variable. In the meantime, unset it manually." local specdir=$(insert_gitlog $SPECFILE) ulimit -c unlimited @@ -1824,7 +1831,7 @@ set_bconds_values() { without_*) bcond=${opt#without_} case "$BCOND" in - *--without?${bcond}*) + *--without?${bcond}\ *|*--without?${bcond}) AVAIL_BCONDS_WITHOUT="$AVAIL_BCONDS_WITHOUT <$bcond>" ;; *) @@ -1835,7 +1842,7 @@ set_bconds_values() { with_*) bcond=${opt#with_} case "$BCOND" in - *--with?${bcond}*) + *--with?${bcond}\ *|*--with?${bcond}) AVAIL_BCONDS_WITH="$AVAIL_BCONDS_WITH <$bcond>" ;; *) @@ -1892,7 +1899,7 @@ run_sub_builder() { # this requires following sudo rules: # - poldek --noask --caplookup -ug poldek_install() { - LANG=C $POLDEK_CMD --noask --caplookup --uniq -ug "$@" + LC_ALL=C LANG=C $POLDEK_CMD --noask --caplookup --uniq -ug "$@" } # install packages @@ -2021,7 +2028,7 @@ _rpm_cnfl_check() { DEPS=$(cat) fi - LANG=C rpm -q --whatprovides $DEPS 2>/dev/null | awk '!/no package provides/ { print }' + LC_ALL=C LANG=C rpm -q --whatprovides $DEPS 2>/dev/null | awk '!/no package provides/ { print }' } # install deps via information from 'rpm-getdeps' or 'rpm --specsrpm' @@ -2032,6 +2039,10 @@ install_build_requires_rpmdeps() { CNFL=$(eval rpm-getdeps $BCOND $RPMOPTS $SPECFILE 2> /dev/null | awk '/^\-/ { print $3 } ' | _rpm_cnfl_check | xargs) DEPS=$(eval rpm-getdeps $BCOND $RPMOPTS $SPECFILE 2> /dev/null | awk '/^\+/ { print $3 } ' | _rpm_prov_check | xargs) fi + if [ "$FETCH_BUILD_REQUIRES_RPMSPEC_BINARY" = "yes" ]; then + CNFL=$(eval rpmspec --query --conflicts $BCOND $RPMOPTS $SPECFILE 2> /dev/null | awk '{print $1}' | _rpm_cnfl_check | xargs); + DEPS=$(eval rpmspec --query --buildrequires $BCOND $RPMOPTS $SPECFILE 2> /dev/null | awk '{print $1}' | _rpm_prov_check | xargs); + fi if [ "$FETCH_BUILD_REQUIRES_RPMSPECSRPM" = "yes" ]; then CNFL=$(eval rpm -q --specsrpm --conflicts $BCOND $RPMOPTS $SPECFILE | awk '{print $1}' | _rpm_cnfl_check | xargs) DEPS=$(eval rpm -q --specsrpm --requires $BCOND $RPMOPTS $SPECFILE | awk '{print $1}' | _rpm_prov_check | xargs) @@ -2055,7 +2066,7 @@ fetch_build_requires() fi update_shell_title "fetch build requires" - if [ "$FETCH_BUILD_REQUIRES_RPMGETDEPS" = "yes" ] || [ "$FETCH_BUILD_REQUIRES_RPMSPECSRPM" = "yes" ]; then + if [ "$FETCH_BUILD_REQUIRES_RPMGETDEPS" = "yes" ] || [ "$FETCH_BUILD_REQUIRES_RPMSPECSRPM" = "yes" ] || [ "$FETCH_BUILD_REQUIRES_RPMSPEC_BINARY" = "yes" ]; then install_build_requires_rpmdeps return fi @@ -2186,11 +2197,11 @@ while [ $# -gt 0 ]; do --http ) PROTOCOL="http"; shift ;; -j) - RPMOPTS="${RPMOPTS} --define \"_smp_mflags -j$2\"" + RPMOPTS="${RPMOPTS} --define \"__jobs $2\"" shift 2 ;; -j[0-9]*) - RPMOPTS="${RPMOPTS} --define \"_smp_mflags $1\"" + RPMOPTS="${RPMOPTS} --define \"__jobs ${1#-j}\"" shift ;; -p)