packages: rpm-build-tools/adapter.sh - update r1.38

glen glen at pld-linux.org
Sun Jun 28 18:59:30 CEST 2009


Author: glen                         Date: Sun Jun 28 16:59:30 2009 GMT
Module: packages                      Tag: HEAD
---- Log message:
- update r1.38

---- Files affected:
packages/rpm-build-tools:
   adapter.sh (1.4 -> 1.5) 

---- Diffs:

================================================================
Index: packages/rpm-build-tools/adapter.sh
diff -u packages/rpm-build-tools/adapter.sh:1.4 packages/rpm-build-tools/adapter.sh:1.5
--- packages/rpm-build-tools/adapter.sh:1.4	Wed Sep 24 16:56:03 2008
+++ packages/rpm-build-tools/adapter.sh	Sun Jun 28 18:59:25 2009
@@ -1,8 +1,5 @@
 #!/bin/sh
 #
-# This is adapter v0.30-RELEASE. Adapter adapts .spec files for PLD Linux.
-#
-# Copyright (C) 1999-2008 PLD Team <feedback at pld-linux.org>
 # Authors:
 # 	Michał Kuratczyk <kura at pld.org.pl>
 # 	Sebastian Zagrodzki <s.zagrodzki at mimuw.edu.pl>
@@ -15,9 +12,18 @@
 #
 # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
 
-self=$(basename "$0")
-adapter=$(dirname "$0")/adapter.awk
-usage="Usage: $self [FLAGS] SPECFILE
+RCSID='$Id$'
+r=${RCSID#* * }
+rev=${r%% *}
+VERSION="v0.31/$rev"
+VERSIONSTRING="\
+Adapter adapts .spec files for PLD Linux.
+$VERSION (C) 1999-2009 Free Penguins".
+
+PROGRAM=${0##*/}
+dir=$(d=$0; [ -L "$d" ] && d=$(readlink "$d"); dirname "$d")
+adapter=$dir/adapter.awk
+usage="Usage: $PROGRAM [FLAGS] SPECFILE
 
 -s|--no-sort|--skip-sort
 	skip BuildRequires, Requires sorting
@@ -27,20 +33,21 @@
 	skip desc wrapping
 -a|--skip-defattr
 	skip %defattr corrections
-
+-o
+	do not do any diffing, just dump the output
 "
 
 if [ ! -x /usr/bin/getopt ]; then
-	echo >&1 "You need to install util-linux to use adapter"
+	echo >&2 "You need to install util-linux to use adapter"
 	exit 1
 fi
 
 if [ ! -x /usr/bin/patch ]; then
-	echo >&1 "You need to install patch to use adapter"
+	echo >&2 "You need to install patch to use adapter"
 	exit 1
 fi
 
-t=`getopt -o hsmda --long help,sort,sort-br,no-macros,skip-macros,skip-desc,skip-defattr -n "$self" -- "$@"` || exit $?
+t=$(getopt -o hsomdaV --long help,version,sort,sort-br,no-macros,skip-macros,skip-desc,skip-defattr -n "$PROGRAM" -- "$@") || exit $?
 eval set -- "$t"
 
 while true; do
@@ -61,12 +68,19 @@
 	-a|--skip-defattr)
 		export SKIP_DEFATTR=1
 	;;
+	-V|--version)
+		echo "$VERSIONSTRING"
+		exit 0
+		;;
+	-o)
+		outputonly=1
+	;;
 	--)
 		shift
 		break
 	;;
 	*)
-		echo 2>&1 "$self: Internal error: [$1] not recognized!"
+		echo >&2 "$PROGRAM: Internal error: \`$1' not recognized!"
 		exit 1
 		;;
 	esac
@@ -130,20 +144,82 @@
 ' "$@"
 }
 
-adapterize()
-{
-	local tmpdir
-	tmpdir=$(mktemp -d ${TMPDIR:-/tmp}/adapter-XXXXXX) || exit
-	if grep -q '\.UTF-8' $SPECFILE; then
-		awk=gawk
-	else
-		awk=awk
-	fi
+# import selected macros for adapter.awk
+# you should update the list also in adapter.awk when making changes here
+import_rpm_macros() {
+	macros="
+	_topdir
+	_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
+	ruby_rdocdir
+
+	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
+	awk=gawk
+
+	local tmp=$workdir/$(basename $SPECFILE) || exit
+
+	import_rpm_macros
+
+	LC_ALL=en_US.UTF-8 $awk -f $adapter $SPECFILE > $tmp || exit
 
-	local tmp=$tmpdir/$(basename $SPECFILE) || exit
-	$awk -f $adapter $SPECFILE > $tmp || exit
+	if [ "$outputonly" = 1 ]; then
+		cat $tmp
 
-	if [ "$(diff --brief $SPECFILE $tmp)" ]; then
+	elif [ "$(diff --brief $SPECFILE $tmp)" ]; then
 		diff -u $SPECFILE $tmp > $tmp.diff
 		if [ -t 1 ]; then
 				diffcol $tmp.diff | less -r
@@ -186,7 +262,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/packages/rpm-build-tools/adapter.sh?r1=1.4&r2=1.5&f=u



More information about the pld-cvs-commit mailing list