fix msm-plugin.c svace issue: make sure dupPath is not NULL before strchr()
[platform/upstream/rpm.git] / installplatform
1 #!/usr/bin/env bash
2
3 DESTDIR="${DESTDIR:-/}"
4 pkglibdir="${pkglibdir:-/usr/lib/rpm}"
5 platformdir="${pkglibdir}/platform"
6
7 RPMRC="${1:-rpmrc}"
8 PLATFORM="${2:-platform}"
9 MACROS="${3:-macros}"
10 VENDOR="${4}"
11 OS="${5}"
12 RPMRC_GNU="${6}"
13
14 for ARCH in noarch `grep ^arch_canon $RPMRC | cut -d: -f2`; do
15   RPMRC_OPTFLAGS="`sed -n 's/^optflags: '$ARCH' //p' $RPMRC`"
16   RPMRC_OPTFLAGS="`echo $RPMRC_OPTFLAGS | sed -e 's, ,\ ,g'`"
17   case $RPMRC_OPTFLAGS in
18   *-g*) ;;
19   *) RPMRC_OPTFLAGS="$RPMRC_OPTFLAGS -g" ;;
20   esac
21
22   ARCH_INSTALL_POST='%{nil}'
23   LIB=lib
24
25   # XXX FIXME: incomplete and quite likely wrong too in places,
26   # consult various arch folks for correct names etc.
27   ISANAME=
28   ISABITS=
29   CANONARCH=
30   CANONCOLOR=
31   FILTER=cat
32   case "${ARCH}" in
33     sparc64*) 
34         ISANAME=sparc
35         ISABITS=64
36         CANONARCH=sparc64
37         CANONCOLOR=3
38         ;;
39     sparc*) 
40         ISANAME=sparc
41         ISABITS=32
42         CANONARCH=sparc
43         CANONCOLOR=0
44         ;;
45     s390)
46         ISANAME=s390
47         ISABITS=32
48         CANONARCH=s390
49         CANONCOLOR=0
50         ;;
51     s390x)
52         ISANAME=s390
53         ISABITS=64
54         CANONARCH=s390x
55         CANONCOLOR=3
56         ;;
57     ppc64|ppc64p7)
58         ISANAME=ppc
59         ISABITS=64
60         CANONARCH=ppc64
61         CANONCOLOR=3
62         ;;
63     ppc64le)
64         ISANAME=ppc
65         ISABITS=64
66         CANONARCH=ppc64le
67         CANONCOLOR=3
68         ;;
69     ppc*)
70         ISANAME=ppc
71         ISABITS=32
72         CANONARCH=ppc
73         CANONCOLOR=0
74         ;;
75     i?86|pentium?|athlon|geode)
76         ISANAME=x86
77         ISABITS=32
78         CANONARCH=i386
79         CANONCOLOR=0
80         ;;
81     x86_64|amd64|ia32e)
82         ISANAME=x86
83         ISABITS=64
84         CANONARCH=x86_64
85         CANONCOLOR=3
86         ;;
87     ia64)
88         ISANAME=ia
89         ISABITS=64
90         CANONARCH=ia64
91         CANONCOLOR=2
92         ;;
93     sh*)
94         ISANAME=sh
95         ISABITS=32
96         CANONARCH=${ARCH}
97         CANONCOLOR=0
98         ;;
99     armv7h*)
100         ISANAME=armv7hl
101         ISABITS=32
102         CANONARCH=arm
103         CANONCOLOR=0
104         ;;
105     arm*)
106         ISANAME=`echo ${ARCH} | sed "s/^\([^-]*\)-.*/\1/"`
107         ISABITS=32
108         CANONARCH=arm
109         CANONCOLOR=0
110         ;;
111     alpha*)
112         ISANAME=alpha
113         ISABITS=64
114         CANONARCH=alpha
115         CANONCOLOR=0
116         ;;
117     aarch64)
118         ISANAME=aarch
119         ISABITS=64
120         CANONARCH=aarch64
121         CANONCOLOR=3
122         ;;
123     mips)
124         ISANAME=mips
125         ISABITS=32
126         CANONARCH=mips
127         CANONCOLOR=0
128         ;;
129     mipsel)
130         ISANAME=mips
131         ISABITS=32
132         CANONARCH=mipsel
133         CANONCOLOR=0
134         ;;
135     mips64)
136         ISANAME=mips
137         ISABITS=64
138         CANONARCH=mips64
139         CANONCOLOR=3
140         ;;
141     mips64el)
142         ISANAME=mips
143         ISABITS=64
144         CANONARCH=mips64el
145         CANONCOLOR=3
146         ;;
147     mipsr6)
148         ISANAME=mipsr6
149         ISABITS=32
150         CANONARCH=mipsr6
151         CANONCOLOR=0
152         ;;
153     mipsr6el)
154         ISANAME=mipsr6
155         ISABITS=32
156         CANONARCH=mipsr6el
157         CANONCOLOR=0
158         ;;
159     mips64r6)
160         ISANAME=mipsr6
161         ISABITS=64
162         CANONARCH=mips64r6
163         CANONCOLOR=3
164         ;;
165     mips64r6el)
166         ISANAME=mipsr6
167         ISABITS=64
168         CANONARCH=mips64r6el
169         CANONCOLOR=3
170         ;;
171     m68k)
172         ISANAME=m68k
173         ISABITS=32
174         CANONARCH=m68k
175         CANONCOLOR=0
176         ;;
177     riscv64)
178         ISANAME=riscv
179         ISABITS=64
180         CANONARCH=riscv64
181         CANONCOLOR=3
182         ;;
183     noarch)
184         CANONARCH=noarch
185         CANONCOLOR=0
186         FILTER="grep -v -E ^(%optflag|%__isa)"
187         ;;
188   esac
189
190   # skip architectures for which we dont have full config parameters
191   [ -z "$CANONARCH" ] && continue
192
193   for macro in $(rpm --showrc | grep _host_cpu | cut -f2 );do
194     case "$macro" in
195       sparc64*) 
196       CANONCOLOR=3
197       ;;
198       sparc*) 
199       CANONCOLOR=0
200       ;;
201       s390)
202       CANONCOLOR=0
203       ;;
204       s390x)
205       CANONCOLOR=3
206       ;;
207       ppc64*)
208       CANONCOLOR=3
209       ;;
210       ppc*)
211       CANONCOLOR=0
212       ;;
213       i?86|pentium?|athlon|geode)
214       CANONCOLOR=0
215       ;;
216       x86_64|amd64|ia32e)
217       CANONCOLOR=3
218       ;;
219       ia64)
220       CANONCOLOR=2
221       ;;
222       sh*)
223       CANONCOLOR=0
224       ;;
225       arm*)
226       CANONCOLOR=0
227       ;;
228       alpha*)
229       CANONCOLOR=0
230       ;;
231       aarch64)
232       CANONCOLOR=3
233       ;;
234       noarch)
235       CANONCOLOR=0
236       ;;
237     esac
238   done
239
240   if [ "$OS" = "linux" ] && [ "$CANONCOLOR" = 3 ]; then
241       LIB=${LIB}64
242   fi
243
244   PPD="${DESTDIR}/${platformdir}/${ARCH}-${OS}"
245   [ -d $PPD ] || mkdir -p $PPD
246
247   cat $PLATFORM \
248   | sed -e "s#@RPMRC_OPTFLAGS@#$RPMRC_OPTFLAGS#" \
249         -e "s,@RPMCANONARCH@,$CANONARCH,g" \
250         -e "s,@RPMCANONCOLOR@,$CANONCOLOR," \
251         -e "s,@RPMRC_GNU@,$RPMRC_GNU," \
252         -e "s,@LIB@,$LIB," \
253         -e "s,@ARCH_INSTALL_POST@,$ARCH_INSTALL_POST," \
254         -e '/\${\w*:-/!s,\${,%{_,' \
255         -e "s,@ISANAME@,$ISANAME," \
256         -e "s,@ISABITS@,$ISABITS," \
257         -e "s,^@${VENDOR}@,," \
258   | grep -v '^@' \
259   | ${FILTER} \
260   > ${PPD}/macros
261
262 done
263
264 # gently adjust undefined autoconf variables to rpm macros...
265 cat $MACROS | sed -e 's,${prefix},%{_prefix},g' > ${DESTDIR}/${pkglibdir}/macros