SPECS: adapter.awk, adapter - import rpm macros in one rpm invocation (via ...

glen glen at pld-linux.org
Mon Oct 27 22:25:39 CET 2008


Author: glen                         Date: Mon Oct 27 21:25:39 2008 GMT
Module: SPECS                         Tag: HEAD
---- Log message:
- import rpm macros in one rpm invocation (via env from shell)

---- Files affected:
SPECS:
   adapter.awk (1.411 -> 1.412) , adapter (1.30 -> 1.31) 

---- Diffs:

================================================================
Index: SPECS/adapter.awk
diff -u SPECS/adapter.awk:1.411 SPECS/adapter.awk:1.412
--- SPECS/adapter.awk:1.411	Sat Oct 25 21:26:36 2008
+++ SPECS/adapter.awk	Mon Oct 27 22:25:33 2008
@@ -50,62 +50,18 @@
 	removed["CFLAGS"] = 0
 	removed["CXXFLAGS"] = 0
 
-	# get cvsaddress for changelog section
-	# using rpm macros as too lazy to add ~/.adapterrc parsing support.
-	"rpm --eval '%{?_cvsmaildomain}%{!?_cvsmaildomain:@pld-linux.org}'" | getline _cvsmaildomain
-	"rpm --eval '%{?_cvsmailfeedback}%{!?_cvsmailfeedback:PLD Team <feedback at pld-linux.org>}'" | getline _cvsmailfeedback
-
 	# If 1, we are inside of comment block (started with /^#%/)
 	comment_block = 0
 
-	# File with rpm groups
-	"rpm --eval %_sourcedir" | getline groups_file
-	groups_file = groups_file "/rpm.groups"
+	import_rpm_macros()
+
+	groups_file = sourcedir "/rpm.groups"
+
 	system("cd `rpm --eval %_sourcedir`; [ -f rpm.groups ] || cvs up rpm.groups >/dev/null")
 	system("[ -d ../PLD-doc ] && cd ../PLD-doc && ([ -f BuildRequires.txt ] || cvs up BuildRequires.txt >/dev/null)");
 
 	# Temporary file for changelog section
 	changelog_file = ENVIRON["HOME"] "/tmp/adapter.changelog"
-
-	# Load rpm macros
-	"rpm --eval %_prefix"	| getline prefix
-	"rpm --eval %_bindir"	| getline bindir
-	"rpm --eval %_sbindir"	| getline sbindir
-	"rpm --eval %_libdir"	| getline libdir
-	"rpm --eval %_sysconfdir" | getline sysconfdir
-	"rpm --eval %_datadir"	| getline datadir
-	"rpm --eval %_includedir" | getline includedir
-	"rpm --eval %_mandir"	| getline mandir
-	"rpm --eval %_infodir"	| getline infodir
-	"rpm --eval %_examplesdir"	| getline examplesdir
-	"rpm --eval %_defaultdocdir"	| getline docdir
-	"rpm --eval %_kdedocdir"	| getline kdedocdir
-	"rpm --eval %_gtkdocdir"	| getline gtkdocdir
-	"rpm --eval %_desktopdir" | getline desktopdir
-	"rpm --eval %_pixmapsdir" | getline pixmapsdir
-	"rpm --eval %_javadir" | getline javadir
-
-	"rpm --eval %perl_sitearch" | getline perl_sitearch
-	"rpm --eval %perl_archlib" | getline perl_archlib
-	"rpm --eval %perl_privlib" | getline perl_privlib
-	"rpm --eval %perl_vendorlib" | getline perl_vendorlib
-	"rpm --eval %perl_vendorarch" | getline perl_vendorarch
-	"rpm --eval %perl_sitelib" | getline perl_sitelib
-
-	"rpm --eval %py_sitescriptdir 2>/dev/null" | getline py_sitescriptdir
-	"rpm --eval %py_sitedir 2>/dev/null" | getline py_sitedir
-	"rpm --eval %py_scriptdir 2>/dev/null" | getline py_scriptdir
-	"rpm --eval %py_ver 2>/dev/null" | getline py_ver
-
-	"rpm --eval %ruby_archdir" | getline ruby_archdir
-	"rpm --eval %ruby_ridir" | getline ruby_ridir
-	"rpm --eval %ruby_rubylibdir" | getline ruby_rubylibdir
-	"rpm --eval %ruby_sitearchdir" | getline ruby_sitearchdir
-	"rpm --eval %ruby_sitelibdir" | getline ruby_sitelibdir
-
-	"rpm --eval %php_pear_dir" | getline php_pear_dir
-	"rpm --eval %php_data_dir" | getline php_data_dir
-	"rpm --eval %tmpdir" | getline tmpdir
 }
 
 # There should be a comment with CVS keywords on the first line of file.
@@ -1786,8 +1742,58 @@
 	}
 }
 
-function replace_groupnames(group)
-{
+# Load rpm macros
+# you should update the list also in adapter when making changes here
+function import_rpm_macros() {
+	# get cvsaddress for changelog section
+	# using rpm macros as too lazy to add ~/.adapterrc parsing support.
+	_cvsmaildomain = ENVIRON["_cvsmaildomain"]
+	_cvsmailfeedback = ENVIRON["_cvsmailfeedback"]
+
+	# File with rpm groups
+	sourcedir = ENVIRON["_sourcedir"]
+
+	prefix = ENVIRON["_prefix"]
+	bindir = ENVIRON["_bindir"]
+	sbindir = ENVIRON["_sbindir"]
+	libdir = ENVIRON["_libdir"]
+	sysconfdir = ENVIRON["_sysconfdir"]
+	datadir = ENVIRON["_datadir"]
+	includedir = ENVIRON["_includedir"]
+	mandir = ENVIRON["_mandir"]
+	infodir = ENVIRON["_infodir"]
+	examplesdir = ENVIRON["_examplesdir"]
+	docdir = ENVIRON["_defaultdocdir"]
+	kdedocdir = ENVIRON["_kdedocdir"]
+	gtkdocdir = ENVIRON["_gtkdocdir"]
+	desktopdir = ENVIRON["_desktopdir"]
+	pixmapsdir = ENVIRON["_pixmapsdir"]
+	javadir = ENVIRON["_javadir"]
+
+	perl_sitearch = ENVIRON["perl_sitearch"]
+	perl_archlib = ENVIRON["perl_archlib"]
+	perl_privlib = ENVIRON["perl_privlib"]
+	perl_vendorlib = ENVIRON["perl_vendorlib"]
+	perl_vendorarch = ENVIRON["perl_vendorarch"]
+	perl_sitelib = ENVIRON["perl_sitelib"]
+
+	py_sitescriptdir = ENVIRON["py_sitescriptdir"]
+	py_sitedir = ENVIRON["py_sitedir"]
+	py_scriptdir = ENVIRON["py_scriptdir"]
+	py_ver = ENVIRON["py_ver"]
+
+	ruby_archdir = ENVIRON["ruby_archdir"]
+	ruby_ridir = ENVIRON["ruby_ridir"]
+	ruby_rubylibdir = ENVIRON["ruby_rubylibdir"]
+	ruby_sitearchdir = ENVIRON["ruby_sitearchdir"]
+	ruby_sitelibdir = ENVIRON["ruby_sitelibdir"]
+
+	php_pear_dir = ENVIRON["php_pear_dir"]
+	php_data_dir = ENVIRON["php_data_dir"]
+	tmpdir = ENVIRON["tmpdir"]
+}
+
+function replace_groupnames(group) {
 	group = replace(group, "Amusements/Games/Strategy/Real Time", "X11/Applications/Games/Strategy");
 	group = replace(group, "Application/Multimedia", "Applications/Multimedia");
 	group = replace(group, "Application/System", "Applications/System");

================================================================
Index: SPECS/adapter
diff -u SPECS/adapter:1.30 SPECS/adapter:1.31
--- SPECS/adapter:1.30	Wed Sep 24 17:23:14 2008
+++ SPECS/adapter	Mon Oct 27 22:25:33 2008
@@ -139,17 +139,79 @@
 ' "$@"
 }
 
-adapterize()
-{
-	local tmpdir
-	tmpdir=$(mktemp -d ${TMPDIR:-/tmp}/adapter-XXXXXX) || exit
+# import selected macros for adapter.awk
+# you should update the list also in adapter.awk when making changes here
+import_rpm_macros() {
+	macros="
+	_sourcedir
+	_prefix
+	_bindir
+	_sbindir
+	_libdir
+	_sysconfdir
+	_datadir
+	_includedir
+	_mandir
+	_infodir
+	_examplesdir
+	_defaultdocdir
+	_kdedocdir
+	_gtkdocdir
+	_desktopdir
+	_pixmapsdir
+	_javadir
+
+	perl_sitearch
+	perl_archlib
+	perl_privlib
+	perl_vendorlib
+	perl_vendorarch
+	perl_sitelib
+
+	py_sitescriptdir
+	py_sitedir
+	py_scriptdir
+	py_ver
+
+	ruby_archdir
+	ruby_ridir
+	ruby_rubylibdir
+	ruby_sitearchdir
+	ruby_sitelibdir
+
+	php_pear_dir
+	php_data_dir
+	tmpdir
+"
+	eval_expr=""
+	for macro in $macros; do
+		eval_expr="$eval_expr\nexport $macro='%{$macro}'"
+	done
+
+
+	# get cvsaddress for changelog section
+	# using rpm macros as too lazy to add ~/.adapterrc parsing support.
+	eval_expr="$eval_expr
+	export _cvsmaildomain='%{?_cvsmaildomain}%{!?_cvsmaildomain:@pld-linux.org}'
+	export _cvsmailfeedback='%{?_cvsmailfeedback}%{!?_cvsmailfeedback:PLD Team <feedback at pld-linux.org>}'
+	"
+
+	eval $(rpm --eval "$(echo -e $eval_expr)")
+}
+
+adapterize() {
+	local workdir
+	workdir=$(mktemp -d ${TMPDIR:-/tmp}/adapter-XXXXXX) || exit
 	if grep -q '\.UTF-8' $SPECFILE; then
 		awk=gawk
 	else
 		awk=awk
 	fi
 
-	local tmp=$tmpdir/$(basename $SPECFILE) || exit
+	local tmp=$workdir/$(basename $SPECFILE) || exit
+
+	import_rpm_macros
+
 	$awk -f $adapter $SPECFILE > $tmp || exit
 
 	if [ "$(diff --brief $SPECFILE $tmp)" ]; then
@@ -195,7 +257,7 @@
 		echo "The SPEC is perfect ;)"
 	fi
 
-	rm -rf $tmpdir
+	rm -rf $workdir
 }
 
 SPECFILE="$1"
================================================================

---- CVS-web:
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/SPECS/adapter.awk?r1=1.411&r2=1.412&f=u
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/SPECS/adapter?r1=1.30&r2=1.31&f=u



More information about the pld-cvs-commit mailing list