summaryrefslogtreecommitdiff
path: root/scripts/convertrpmrc.sh
blob: 7faa5d376dcf16131f626104f11243c73b3a642d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#!/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