Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 22 Jan 2018 16:42:44 +0000 (UTC)
From:      Kyle Evans <kevans@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r459675 - head/Mk/Scripts
Message-ID:  <201801221642.w0MGgikW035992@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: kevans (src committer)
Date: Mon Jan 22 16:42:44 2018
New Revision: 459675
URL: https://svnweb.freebsd.org/changeset/ports/459675

Log:
  `make makepatch`: Don't replace patches with only metadata changes
  
  Rather than replacing patches that are effectively the same but with
  different timestamps, drop the new version and let the old version remain in
  place. This yields a `make makepatch` that doesn't try and produce unwanted
  churn.
  
  Approved by:	portmgr (mat)
  Differential Revision:	https://reviews.freebsd.org/D13960

Modified:
  head/Mk/Scripts/smart_makepatch.sh

Modified: head/Mk/Scripts/smart_makepatch.sh
==============================================================================
--- head/Mk/Scripts/smart_makepatch.sh	Mon Jan 22 16:40:46 2018	(r459674)
+++ head/Mk/Scripts/smart_makepatch.sh	Mon Jan 22 16:42:44 2018	(r459675)
@@ -230,6 +230,38 @@ stage_patches() {
 	done
 }
 
+compare_common_patches() {
+	[ -z "${old_patch_list}" ] && return
+	local archive_patch_list
+	local P
+	local ppatch
+	local ppatch_stripped
+	local cpatch
+	local cpatch_stripped
+	for P in ${old_patch_list}; do
+		if [ -e ${DESTDIR}/${P} ]; then
+			ppatch=${PATCHDIR}/${P}
+			cpatch=${DESTDIR}/${P}
+			ppatch_stripped=$(mktemp -t portpatch)
+			cpatch_stripped=$(mktemp -t portpatch)
+			egrep -v -- '--- .+ UTC$' ${ppatch} \
+				> ${ppatch_stripped}
+			egrep -v -- '--- .+ UTC$' ${cpatch} \
+				> ${cpatch_stripped}
+			# Don't replace patches with only metadata changes
+			if ! cmp -s ${ppatch_stripped} ${cpatch_stripped}; then
+				archive_patch_list="${archive_patch_list} ${P}"
+			else
+				echo "${P} only contains metadata changes; not replacing"
+				rm ${cpatch}
+			fi
+			rm ${ppatch_stripped}
+			rm ${cpatch_stripped}
+		fi
+	done
+	old_patch_list=${archive_patch_list}
+}
+
 conserve_old_patches() {
 	mkdir -p ${SAVEDIR}
 	rm -f ${SAVEDIR}/*
@@ -257,5 +289,6 @@ map_existing_patches
 extract_comments
 regenerate_patches
 stage_patches
+compare_common_patches
 conserve_old_patches
 install_regenerated_patches



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201801221642.w0MGgikW035992>