[pacman-dev] add contrib/pkgdigest.sh: bash script that replaces md5sums in most PKGBUILDs

Martti Kühne mysatyre at gmail.com
Wed Nov 2 08:49:56 EDT 2011


I'd like to see support for split packages, too, maybe I'll add it some time. Using it locally, while improving my dwm patches.
Different approaches include playing around with $PATH, use absolute start paths for testing, but once I got used to this way, I just can't resist it any more... :)

cheers!
mar77i

---
 contrib/pkgdigest.sh |   39 +++++++++++++++++++++++++++++++++++++++
 1 files changed, 39 insertions(+), 0 deletions(-)
 create mode 100755 contrib/pkgdigest.sh

diff --git a/contrib/pkgdigest.sh b/contrib/pkgdigest.sh
new file mode 100755
index 0000000..278a838
--- /dev/null
+++ b/contrib/pkgdigest.sh
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+if ! [[ -w PKGBUILD ]]; then
+	echo "Error: no PKGBUILD found." >&2
+	exit 1
+fi
+
+cp PKGBUILD PKGBUILD~
+i=0
+lines=()
+marker=
+contexts=0
+md5context=0
+while read -r; do
+	if [[ "$REPLY" =~ (build|check|package)(_.*)?\(\) ]]; then
+		(( ${#marker} )) || marker=$i
+	fi
+	# only ever replace one sum
+	[[ "${REPLY,,}" == "md5sums="* ]] && (( md5context=1, contexts+= 1 ))
+	if (( md5context && contexts < 2 )); then
+		# no one ever would do parameter expansion in md5sums
+		# comments however that contain parens are possible
+		[[ "$REPLY" =~ [^#]*\) ]] && md5context=0
+	else
+		lines+=("$REPLY") && (( i++ ))
+	fi
+done < PKGBUILD
+
+while [[ "${lines[marker - 1]}" == '' ]]; do
+	(( marker -= 1 ))
+done
+
+for (( i=0; i < marker; i++ )); do
+	echo "${lines[i]}"
+done > PKGBUILD
+echo "$(makepkg -g)" >> PKGBUILD
+for (( i=marker; i < ${#lines[@]}; i++ )); do
+	echo "${lines[i]}"
+done >> PKGBUILD
-- 
1.7.7.1



More information about the pacman-dev mailing list