From 2f7360988b2dbd3df72512b8fe6c0d25907e8be5 Mon Sep 17 00:00:00 2001
From: Marcin Krol <hawk@tld-linux.org>
Date: Sat, 20 Mar 2021 20:30:00 +0100
Subject: [PATCH] - move setting pkgrev right after package is built

---
 builder.sh | 36 ++++++++++++++++++++----------------
 1 file changed, 20 insertions(+), 16 deletions(-)

diff --git a/builder.sh b/builder.sh
index a091ffc..40e0ff4 100755
--- a/builder.sh
+++ b/builder.sh
@@ -122,6 +122,7 @@ WGET_RETRIES=${MAX_WGET_RETRIES:-0}
 
 # rsync repository with git refs of packages
 PKGREVS_URL="http://pkgrevs.tld-linux.org"
+SETPKGREV="false"
 
 # TLD git/df config
 TLD_GIT_SERVER="git://git.tld-linux.org"
@@ -740,14 +741,20 @@ EOF
 }
 
 cache_rpm_dump() {
+	local SPEC_PATH
 	if [ -n "$DEBUG" ]; then
 		set -x
 		set -v
 	fi
 
+	if [ ! -z "$1" ]; then
+		SPEC_PATH="$1"
+	else
+		SPEC_PATH="$PACKAGE_DIR/$SPECFILE"
+	fi
 	if [ -x /usr/bin/rpm-specdump ]; then
 		update_shell_title "cache_rpm_dump using rpm-specdump command"
-		rpm_dump_cache=$(rpm-specdump $TARGET_SWITCH $BCOND --define "_specdir $PACKAGE_DIR" --define "_sourcedir $PACKAGE_DIR" $PACKAGE_DIR/$SPECFILE)
+		rpm_dump_cache=$(eval rpm-specdump $TARGET_SWITCH $BCOND $RPMOPTS --define \'_specdir $PACKAGE_DIR\' --define \'_sourcedir $PACKAGE_DIR\' $SPEC_PATH)
 	else
 		update_shell_title "cache_rpm_dump using rpmbuild command"
 		local rpm_dump
@@ -810,7 +817,7 @@ parse_spec() {
 	get_icons
 
 	cd $PACKAGE_DIR
-	cache_rpm_dump
+	cache_rpm_dump "$1"
 
 	if rpm_dump | grep -qEi ":.*nosource.*1"; then
 		FAIL_IF_NO_SOURCES="no"
@@ -1553,6 +1560,7 @@ get_pkgrev() {
 
 set_pkgrev() {
 	local _tag
+	parse_spec "$1"
 	if [ "$TAG_VERSION" = "yes" ]; then
 		_tag=`make_tagver`
 	fi
@@ -1761,6 +1769,12 @@ build_package() {
 	# FIXME: eval here is exactly why?
 	PATH=$CLEAN_PATH eval teeboth "'$logfile'" ${TIME_COMMAND} ${NICE_COMMAND} $RPMBUILD $TARGET_SWITCH $BUILD_SWITCH -v $QUIET $CLEAN $RPMOPTS $RPMBUILDOPTS $BCOND --define \'_specdir $PACKAGE_DIR\' --define \'_sourcedir $PACKAGE_DIR\' $specdir/$SPECFILE
 	retval=$?
+
+	# Set pkgrev if requested and build status is OK
+	if [ ! -z "$SETPKGREV" ] && [ "$SETPKGREV" = "true" ] && [ "$retval" -eq "0" ]; then
+		set_pkgrev "$specdir/$SPECFILE"
+	fi
+
 	rm -r $specdir
 
 	if [ -n "$logfile" ] && [ -n "$LOGDIROK" ] && [ -n "$LOGDIRFAIL" ]; then
@@ -1889,9 +1903,9 @@ process_distbcond() {
 				# use only flags which are in this package.
 				if [[ $bcond_avail = *${opt}* ]]; then
 					if [[ $flag = -* ]]; then
-						sed -i -r -e '/^%bcond_(with|without)\s+'$opt'/s/^%bcond_(with|without)/%bcond_with/g;' $specdir/$SPECFILE
+						sed -i -r -e '/^%bcond_(with|without)\s+'$opt'/s/^%bcond_(with|without)/%bcond_with/g;' "$1"
 					elif [[ $flag = +* ]]; then
-						sed -i -r -e '/^%bcond_(with|without)\s+'$opt'/s/^%bcond_(with|without)/%bcond_without/g;' $specdir/$SPECFILE
+						sed -i -r -e '/^%bcond_(with|without)\s+'$opt'/s/^%bcond_(with|without)/%bcond_without/g;' "$1"
 					fi
 				fi
 			done
@@ -2520,7 +2534,8 @@ while [ $# -gt 0 ]; do
 			DISTFILES_SERVER=${TLD_DISTFILES_SERVER}
 			;;
 		--pkgrev)
-			COMMAND="set_pkgrev"
+			SETPKGREV="true"
+			COMMAND="build-source"
 			shift;;
 		-lp)
 			COMMAND="list_pkgrev"
@@ -2871,17 +2886,6 @@ case "$COMMAND" in
 	"version" )
 		echo "$VERSIONSTRING"
 		;;
-	"set_pkgrev" )
-		init_builder
-		if [ -z "$SPECFILE" ]; then
-			Exit_error err_no_spec_in_cmdl
-		fi
-		get_spec > /dev/null
-		parse_spec
-		set_bconds_values
-		display_bconds
-		set_pkgrev
-		;;
 	"list_pkgrev" )
 		init_builder
 		if [ -z "$SPECFILE" ]; then
-- 
2.49.0