107 lines
2.5 KiB
Bash
107 lines
2.5 KiB
Bash
|
#!/bin/sh
|
||
|
#
|
||
|
# Convert per-system configuration in /etc/rpmrc to macros in /etc/rpm/macros.
|
||
|
#
|
||
|
# prereq: awk fileutils textutils sh-utils mktemp
|
||
|
#
|
||
|
|
||
|
RPMRC=$1
|
||
|
[ -z "$RPMRC" ] && RPMRC=/etc/rpmrc
|
||
|
MACROS=$2
|
||
|
[ -z "$MACROS" ] && MACROS=/etc/rpm/macros
|
||
|
# for testing
|
||
|
#RPMRC=/tmp/rpmrc
|
||
|
#MACROS=/tmp/macros
|
||
|
|
||
|
[ -f $RPMRC ] || exit 0
|
||
|
|
||
|
[ -f $MACROS ] && {
|
||
|
echo "$MACROS already exists" 1>&2
|
||
|
exit 1
|
||
|
}
|
||
|
|
||
|
DIRN="`dirname $MACROS`"
|
||
|
[ -d "$DIRN" ] || mkdir -p "$DIRN"
|
||
|
[ -d "$DIRN" ] || {
|
||
|
echo "could not create directory $DIRN" 1>&2
|
||
|
exit 1
|
||
|
}
|
||
|
|
||
|
TMP=$(mktemp /tmp/rpmrc.XXXXXX) || {
|
||
|
echo could not create temp file 1>&2
|
||
|
exit 1
|
||
|
}
|
||
|
|
||
|
awk 'BEGIN {
|
||
|
macros="'"$MACROS"'"
|
||
|
# direct translation except underscore prepended
|
||
|
xlate["builddir"] = "_builddir"
|
||
|
xlate["buildshell"] = "_buildshell"
|
||
|
xlate["bzip2bin"] = "_bzip2bin"
|
||
|
xlate["dbpath"] = "_dbpath"
|
||
|
xlate["defaultdocdir"] = "_defaultdocdir"
|
||
|
xlate["excludedocs"] = "_excludedocs"
|
||
|
xlate["ftpport"] = "_ftpport"
|
||
|
xlate["ftpproxy"] = "_ftpproxy"
|
||
|
xlate["gzipbin"] = "_gzipbin"
|
||
|
xlate["instchangelog"] = "_instchangelog"
|
||
|
xlate["langpatt"] = "_langpatt"
|
||
|
xlate["netsharedpath"] = "_netsharedpath"
|
||
|
xlate["pgp_name"] = "_pgp_name"
|
||
|
xlate["pgp_path"] = "_pgp_path"
|
||
|
xlate["rpmdir"] = "_rpmdir"
|
||
|
xlate["rpmfilename"] = "_rpmfilename"
|
||
|
xlate["signature"] = "_signature"
|
||
|
xlate["sourcedir"] = "_sourcedir"
|
||
|
xlate["specdir"] = "_specdir"
|
||
|
xlate["srcrpmdir"] = "_srcrpmdir"
|
||
|
xlate["timecheck"] = "_timecheck"
|
||
|
xlate["tmppath"] = "_tmppath"
|
||
|
xlate["topdir"] = "_topdir"
|
||
|
|
||
|
# direct translation with no underscore at all
|
||
|
xlate["buildroot"] = "buildroot"
|
||
|
xlate["distribution"] = "distribution"
|
||
|
xlate["packager"] = "packager"
|
||
|
xlate["vendor"] = "vendor"
|
||
|
|
||
|
# simply remove
|
||
|
xlate["messagelevel"] = ""
|
||
|
xlate["require_distribution"] = ""
|
||
|
xlate["require_icon"] = ""
|
||
|
xlate["require_vendor"] = ""
|
||
|
}
|
||
|
|
||
|
{
|
||
|
for (str in xlate) {
|
||
|
ms = "^" str ":"
|
||
|
if (match($1, ms)) {
|
||
|
if (xlate[str]) {
|
||
|
sub(ms, "%" xlate[str] " ")
|
||
|
print >> macros
|
||
|
}
|
||
|
# else get ignore and thus get rid of obsolete items
|
||
|
next
|
||
|
}
|
||
|
if (match ($1, "^fixperms:")) {
|
||
|
sub("^fixperms:", "%_fixperms chmod -R ")
|
||
|
print >> macros
|
||
|
next
|
||
|
}
|
||
|
}
|
||
|
print
|
||
|
next
|
||
|
}
|
||
|
' < $RPMRC > $TMP || {
|
||
|
echo "could not convert $RPMRC entries to $MACROS entries" 1>&2
|
||
|
exit 1
|
||
|
}
|
||
|
if [ -s $TMP ] ; then
|
||
|
# don't mess with timestamp unless we have actually changed something
|
||
|
cat $TMP > $RPMRC && rm -f $TMP
|
||
|
[ -f $TMP ] && { echo "could not overwrite $RPMRC" 1>&2 ; exit 1 ; }
|
||
|
fi
|
||
|
rm -f $TMP
|
||
|
|
||
|
exit 0
|