From c1feac02bda187528ca178ca4aeafdc261abf862 Mon Sep 17 00:00:00 2001
From: Marcin Krol <hawk@tld-linux.org>
Date: Wed, 1 May 2024 13:28:52 +0200
Subject: [PATCH] - update .distbcond before processing

---
 builder.sh | 28 ++++++++++++++++++++--------
 1 file changed, 20 insertions(+), 8 deletions(-)

diff --git a/builder.sh b/builder.sh
index a6eb3d7..b022e1f 100755
--- a/builder.sh
+++ b/builder.sh
@@ -121,8 +121,11 @@ PARALLEL_DOWNLOADS=10
 
 WGET_RETRIES=${MAX_WGET_RETRIES:-0}
 
+# .distbcond URL
+DISTBCOND_URL="https://src.tld-linux.org/.distbcond"
+
 # rsync repository with git refs of packages
-PKGREVS_URL="http://pkgrevs.tld-linux.org"
+PKGREVS_URL="https://pkgrevs.tld-linux.org"
 PKGREVS_PREFIX="tld/"
 SETPKGREV="false"
 
@@ -920,6 +923,9 @@ Exit_error() {
 		"err_pkgrev_get" )
 			echo >&2 "Error: failed to get package revision for tag ${2}"
 			exit 16 ;;
+		"err_distbcond_update" )
+			echo >&2 "Error: failed to update .distbcond"
+			exit 17 ;;
 		"err_not_implemented" )
 			remove_build_requires
 			echo >&2 "Error: functionality not yet imlemented"
@@ -1807,17 +1813,23 @@ process_distbcond() {
 	# w32codec-installer license_agreement
 	# php +mysqli
 	# ---
-	if [ -f $HOME/.distbcond ] || ([ -n $HOME_ETC ] && [ -f $HOME_ETC/.distbcond ]); then
-		:
-	else
-		return
+
+	local distbcond=$HOME/.distbcond
+
+	echo "Updating .distbcond"
+	wget -q --no-check-certificate $DISTBCOND_URL -O "$distbcond"
+	if [ $? -ne 0 ]; then
+		Exit_error err_distbcond_update
+	fi
+	DISTBCOND_MD5=$(grep -E "^# MD5 " "$distbcond" | cut -d ' ' -f 3)
+	DISTBCOND_MD5_LOCAL=$(grep -v -E "^#" "$distbcond" | md5sum | cut -d ' ' -f 1)
+	if [ "$DISTBCOND_MD5" != "$DISTBCOND_MD5_LOCAL" ]; then
+		rm -f "$distbcond"
+		Exit_error err_distbcond_update
 	fi
 
 	SN=${SPECFILE%%\.spec}
 
-	local distbcond=$HOME/.distbcond
-	[ -n $HOME_ETC ] && [ -f $HOME_ETC/.distbcond ] && distbcond=$HOME_ETC/.distbcond
-
 	local bcond_avail=$(find_spec_bcond $SPECFILE)
 
 	while read pkg flags; do
-- 
2.49.0