From 11913f259bd613261d3ccc0301874e26a4dcdbab Mon Sep 17 00:00:00 2001
From: Andreas Wacknitz <A.Wacknitz@gmx.de>
Date: Sun, 31 Mar 2024 18:36:29 +0200
Subject: [PATCH] nodejs-18: update to 18.20.0

---
 tools/python-integrate-project |  103 ++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 76 insertions(+), 27 deletions(-)

diff --git a/tools/python-integrate-project b/tools/python-integrate-project
index 7cd7e09..63ea6f6 100755
--- a/tools/python-integrate-project
+++ b/tools/python-integrate-project
@@ -69,13 +69,6 @@
 [[ -d "$BASE_DIR" ]] || usage "Directory $BASE_DIR not found"
 
 
-# Get data from pypi
-PYPI_PROJECT=$($CURL "$APIURL/$PROJECT/json")
-if (($? != 0)) || [[ -z "$PYPI_PROJECT" ]] ; then
-	printf "FATAL: Failed to get data from pypi\n" >&2
-	exit 1
-fi
-
 # Distribution match project
 DISTRIBUTION="$PROJECT"
 
@@ -96,7 +89,6 @@
 # Prepare the directory
 [[ -z "$DIRECTORY" ]] && DIRECTORY="python/$DISTRIBUTION"
 DIR="$BASE_DIR/$DIRECTORY"
-rm -rf "$DIR"/*
 mkdir -p "$DIR"
 cd "$DIR"
 git restore --staged . > /dev/null 2>&1
@@ -107,6 +99,8 @@
 VERSION=
 HOMEPAGE=
 DOWNLOAD_URL=
+LICENSE_FILE=
+SUMMARY=
 
 # Execute hook-begin snippet
 if [[ -f "$CONF" ]] ; then
@@ -117,6 +111,17 @@
 
 # Version specified as option takes precedence
 [[ -n "$OPT_VERSION" ]] && VERSION="$OPT_VERSION"
+
+
+# Get data from PyPI if needed
+if [[ -z "$VERSION" || -z "$HOMEPAGE" || -z "$SUMMARY" ]] ; then
+	PYPI_PROJECT=$($CURL "$APIURL/$PROJECT/json")
+	if (($? != 0)) || [[ -z "$PYPI_PROJECT" ]] ; then
+		printf 'WARNING: Failed to get data for project %s from PyPI\n' "$PROJECT" >&2
+		PYPI_PROJECT=
+	fi
+fi
+
 
 # Find the latest version if not already provided
 if [[ -z "$VERSION" ]] ; then
@@ -130,13 +135,11 @@
 
 # Is this new project, or just a rebuild?
 NEW=1
-REBUILD=0
 PREV_VER=
 PREV_HVER=
 PREV_REV=0
 if git ls-files --error-unmatch Makefile > /dev/null 2>&1 ; then
 	NEW=0
-	REBUILD=1
 	PREV_VER=$($GMAKE print-value-COMPONENT_VERSION 2>/dev/null)
 	(($? != 0)) && printf "FATAL: 'gmake print-value-COMPONENT_VERSION' failed!\n" >&2 && exit 1
 	PREV_REV=$($GMAKE print-value-COMPONENT_REVISION 2>/dev/null)
@@ -188,6 +191,9 @@
 fi
 
 
+# Remove everything that is not in git
+rm -rf *
+git checkout . > /dev/null 2>&1
 # Remove everything from git (except known patches, files, history, and $CONF)
 [[ -f "$CONF" ]] && grep "^%patch%" "$CONF" | while read TAG PATCH ; do rm -f "patches/$PATCH" ; done
 [[ -f "$CONF" ]] && grep "^%file%" "$CONF" | while read TAG FILE ; do rm -f "files/$FILE" ; done
@@ -207,13 +213,16 @@
 
 
 # Makefile template
+GENERATE_CMD="\$WS_TOOLS/$THIS"
+[[ "$DIRECTORY" != "python/$DISTRIBUTION" ]] && GENERATE_CMD="$GENERATE_CMD -d $DIRECTORY"
+GENERATE_CMD="$GENERATE_CMD $PROJECT"
 (
 cat $WS_TOP/transforms/copyright-template | sed -e '/^$/,$d'
 cat <<EOF
 
 #
 # This file was automatically generated using the following command:
-#   \$WS_TOOLS/$THIS $PROJECT
+#   $GENERATE_CMD
 #
 
 BUILD_STYLE = pyproject
@@ -230,7 +239,7 @@
 COMPONENT_SUMMARY =		$PROJECT - TODO
 EOF
 [[ -n "$HOMEPAGE" ]] && printf "COMPONENT_PROJECT_URL =\t\t%s\n" "$HOMEPAGE"
-[[ -n "$DOWNLOAD_URL" ]] && printf 'COMPONENT_ARCHIVE_URL =\t\t\\\n\t%s\n' "$DOWNLOAD_URL"
+[[ -n "$DOWNLOAD_URL" ]] && printf 'DOWNLOAD_URL =\t\t\\\n\t%s\n' "$DOWNLOAD_URL"
 cat <<EOF
 COMPONENT_ARCHIVE_HASH =	\\
 	sha256:TODO
@@ -245,9 +254,28 @@
 printf "\n"
 ) > Makefile
 
+# If the automatically constructed COMPONENT_ARCHIVE_URL points to the same
+# location as DOWNLOAD_URL then we should use it
+if [[ -n "$DOWNLOAD_URL" ]] ; then
+	COMPONENT_ARCHIVE_URL=$($GMAKE print-value-COMPONENT_ARCHIVE_URL)
+	[[ "$COMPONENT_ARCHIVE_URL" == "$DOWNLOAD_URL" ]] && DOWNLOAD_URL=
+fi
+# The default COMPONENT_ARCHIVE_URL usually redirects to DOWNLOAD_URL so check
+# that too
+if [[ -n "$DOWNLOAD_URL" ]] ; then
+	[[ $($CURL --head --write-out "%{redirect_url}\n" --output /dev/null \
+	    "$COMPONENT_ARCHIVE_URL") == "$DOWNLOAD_URL" ]] && DOWNLOAD_URL=
+fi
+# Use either DOWNLOAD_URL or default COMPONENT_ARCHIVE_URL
+if [[ -n "$DOWNLOAD_URL" ]] ; then
+	sed -i -e $'s/^DOWNLOAD_URL =/COMPONENT_ARCHIVE_URL =/' Makefile
+else
+	sed -i -e $'/^DOWNLOAD_URL =/,+1d' Makefile
+fi
+
 # Remove COMPONENT_REVISION if not needed
 COMPONENT_VERSION=$($GMAKE print-value-COMPONENT_VERSION)
-[[ "$PREV_VER" != "$COMPONENT_VERSION" ]] && REBUILD=0 && sed -i -e '/^COMPONENT_REVISION/d' Makefile
+[[ "$PREV_VER" != "$COMPONENT_VERSION" ]] && sed -i -e '/^COMPONENT_REVISION/d' Makefile
 git add Makefile
 
 # Calculate sham256 sum for source package
@@ -259,7 +287,21 @@
 sed -i -e 's/sha256:TODO/sha256:'"$SHA256"'/g' Makefile
 git add Makefile
 
-# Unpack sources
+# Unpack sources and apply patches
+! $GMAKE patch > /dev/null 2>&1 && printf "FATAL: 'gmake patch' failed!\n" >&2 && exit 1
+
+# Refresh patches
+if $GMAKE refresh-patches > /dev/null 2>&1 ; then
+	git add patches 2>/dev/null
+else
+	printf "ERROR: 'gmake refresh-patches' failed!\n" >&2
+	git checkout patches 2>/dev/null
+fi
+
+# Cleanup after patch refresh
+$GMAKE clobber > /dev/null 2>&1
+
+# Prepare sources
 ! $GMAKE prep > /dev/null 2>&1 && printf "FATAL: 'gmake prep' failed!\n" >&2 && exit 1
 SOURCE_DIR=$($GMAKE print-value-SOURCE_DIR)
 COMPONENT_SUBDIR=$($GMAKE print-value-COMPONENT_SUBDIR)
@@ -270,12 +312,14 @@
 	sed -i -e 's/^\(BUILD_STYLE = \).*$/\1setup.py/' Makefile
 fi
 
-# Get summary
-SUMMARY=$(printf "%s" "$PYPI_PROJECT" | /usr/bin/jq -r '.info.summary')
-if (($? != 0)) || [[ -z "$SUMMARY" || "$SUMMARY" == "null" ]] ; then
-	printf "WARNING: Failed to get summary for project %s from pypi\n" "$PROJECT" >&2
-	SUMMARY=$(get_PKGINFO_entry "Summary")
-	[[ -z "$SUMMARY" ]] && SUMMARY="TODO"
+# Get summary if not already provided
+if [[ -z "$SUMMARY" ]] ; then
+	SUMMARY=$(printf "%s" "$PYPI_PROJECT" | /usr/bin/jq -r '.info.summary')
+	if (($? != 0)) || [[ -z "$SUMMARY" || "$SUMMARY" == "null" ]] ; then
+		printf "WARNING: Failed to get summary for project %s from pypi\n" "$PROJECT" >&2
+		SUMMARY=$(get_PKGINFO_entry "Summary")
+		[[ -z "$SUMMARY" ]] && SUMMARY="TODO"
+	fi
 fi
 # Summary needs to be sanitized
 SUMMARY="${SUMMARY//\`/\\\\\`}"
@@ -299,7 +343,7 @@
 
 LICENSE=
 LICFILE=
-for f in $(get_PKGINFO_entry "License-File") LICENSE LICENSE.rst LICENSE.txt ; do
+for f in $LICENSE_FILE $(get_PKGINFO_entry "License-File") LICENSE LICENSE.rst LICENSE.txt ; do
 	[[ -f "$SOURCE_DIR$COMPONENT_SUBDIR/$f" ]] || continue
 	LICFILE="$f"
 
@@ -343,8 +387,12 @@
 	((TOX_RET == 0)) && ! printf "%s" "$TOX_OUT" | grep -q 'assuming empty tox\.ini' && TEST_STYLE="tox" && break
 
 	# Disable some pytest plugins that almost always collects tests to run
-	# even there are no pytest tests available otherwise
-	pytest -p no:black -p no:checkdocs -p no:cov -p no:mypy -p no:relaxed --setup-plan
+	# even there are no pytest tests available otherwise.
+	#
+	# The system-statistics plugin is disabled because it often causes the
+	# pytest to fail.
+	# See also https://github.com/saltstack/pytest-system-statistics/issues/4
+	pytest -p no:black -p no:checkdocs -p no:cov -p no:mypy -p no:relaxed -p no:system-statistics --setup-plan
 	(($? != 5)) && TEST_STYLE="pytest" && break
 
 	[[ -f setup.py ]] && python setup.py test --help && TEST_STYLE="setup.py" && break
@@ -435,13 +483,15 @@
 	FMRI_T=$((FMRI_T + 1))
 	printf "%s.%s noincorporate\n" "$FMRI_H" "$FMRI_T" >> history
 
-	[[ -n "$OV" ]] && OV="$OV and " && OV_PLURAL="s"
+	[[ -n "$OV" ]] && OV="${OV/ and /, } and " && OV_PLURAL="s"
 	OV="$OV$o"
 done
 if [[ -f history ]] ; then
 	LC_ALL=C sort -u history > history.new
 	mv history.new history
 	git add history
+
+	awk '$NF == "noincorporate" {printf("WARNING: Unincorporated package: %s\n", $1)}' < history >&2
 fi
 
 
@@ -526,9 +576,8 @@
 if ((NEW)) ; then
 	MSG="Add $PROJECT Python project"
 else
-	if ((REBUILD == 0)) ; then
-		[[ "$PREV_HVER" != "$VERSION" ]] && MSG="update to $VERSION" || MSG="change version format"
-	fi
+	[[ "$PREV_VER" != "$COMPONENT_VERSION" ]] && MSG="change version format"
+	[[ "$PREV_HVER" != "$VERSION" ]] && MSG="update to $VERSION"
 
 	REBUILDMSG=
 

--
Gitblit v1.9.3