X-Git-Url: https://git.tld-linux.org/?p=packages%2Frpm-build-tools.git;a=blobdiff_plain;f=builder.sh;h=a19da1207d111a72e70ecf92315418108f3452d0;hp=bbeb418625bbeb9c5e97b839fa344a112441a999;hb=45d8f2d9258214696ed2d3bba02ceb0236d47fd3;hpb=f8a24e0ba6f0a677b7b4626b6a1085ba966b0959 diff --git a/builder.sh b/builder.sh index bbeb418..a19da12 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-2020 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 @@ -496,6 +497,26 @@ Usage: builder [--all-branches] [-D|--debug] [-V|--version] [--short-version] [ " } +is_rpmorg() { + local v + + v=$(LC_ALL=C LANG=C rpm --version 2>&1) + v=${v#RPM version } # rpm 4 + v=${v#rpm \(RPM\) } # rpm 5 + + case "$v" in + 4.5|5.*) + return 1 + ;; + 4.*) + return 0; + ;; + *) + echo "ERROR: unsupported RPM version $v" >&2 + exit 1 + esac +} + # create tempfile. as secure as possible tempfile() { local prefix=builder.$PACKAGE_NAME${1:+.$1} @@ -709,7 +730,8 @@ EOF %_sourcedir ./ EOF fi - if rpm --version 2>&1 | grep -qE '5\.[0-9]+\.[0-9]+'; then + if ! is_rpmorg; then + local safe_macrofiles safe_macrofiles=$(rpm $TARGET_SWITCH --showrc | awk -F: '/^macrofiles/ { gsub(/^macrofiles[ \t]+:/, "", $0); print $0 } ') eval PATH=$CLEAN_PATH $RPMBUILD $TARGET_SWITCH --macros "$safe_macrofiles:$BUILDER_MACROS" $QUIET $RPMOPTS $RPMBUILDOPTS $BCOND $* 2>&1 else @@ -1079,7 +1101,10 @@ get_spec() { local _rev=$(get_pkgrev "$CVSTAG") echo "$_rev" | grep -q -E "^ERROR$" || CVSTAG="$_rev" if git rev-parse --verify -q "$CVSTAG" >/dev/null; then - git checkout "$CVSTAG" -- + # checkout only if differs, so this will not trash git reflog + if [ $(git rev-parse "$CVSTAG") != $(git rev-parse HEAD) ]; then + git checkout "$CVSTAG" -- + fi elif git rev-parse --verify -q "refs/remotes/${REMOTE_PLD}/$CVSTAG"; then git checkout -t "refs/remotes/${REMOTE_PLD}/$CVSTAG" > /dev/null fi @@ -1386,6 +1411,7 @@ get_files() { ${GETURI} "$target" "$url" fi + if [ -s "$target" ]; then cvsignore_df $target else @@ -1847,7 +1873,7 @@ set_bconds_values() { without_*) bcond=${opt#without_} case "$BCOND" in - *--without?${bcond}*) + *--without?${bcond}\ *|*--without?${bcond}) AVAIL_BCONDS_WITHOUT="$AVAIL_BCONDS_WITHOUT <$bcond>" ;; *) @@ -1858,7 +1884,7 @@ set_bconds_values() { with_*) bcond=${opt#with_} case "$BCOND" in - *--with?${bcond}*) + *--with?${bcond}\ *|*--with?${bcond}) AVAIL_BCONDS_WITH="$AVAIL_BCONDS_WITH <$bcond>" ;; *) @@ -1915,7 +1941,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 @@ -2044,7 +2070,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'