]> git.pld-linux.org Git - packages/rpm-build-tools.git/blobdiff - builder.sh
do db-devel replacement on exact match only
[packages/rpm-build-tools.git] / builder.sh
index 11e01efcbe992f278a9ccb96a03f19ef7bfe24fb..453625d7f15c6bfbfbecbb88308dc0c11d2d97ef 100755 (executable)
@@ -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)
This page took 0.060708 seconds and 4 git commands to generate.