rename FORCE_RPMRC_GNU->APPEND_TARGET_ABI to better express intention
[packages/rpm.git] / x32.patch
CommitLineData
718646f9
JR
1diff -ur rpm-4.16.1.2/build/rpmfc.c rpm-4.16.1.2.x32/build/rpmfc.c
2--- rpm-4.16.1.2/build/rpmfc.c 2021-03-21 21:51:28.231530270 +0100
3+++ rpm-4.16.1.2.x32/build/rpmfc.c 2021-03-21 21:50:04.127398387 +0100
4@@ -641,6 +641,7 @@
fb35e2d9 5
321b78b0
JR
6 { "ELF 32-bit", RPMFC_ELF32|RPMFC_INCLUDE },
7 { "ELF 64-bit", RPMFC_ELF64|RPMFC_INCLUDE },
8+// { "ELF 32-bit", RPMFC_ELFX32|RPMFC_INCLUDE },
9
fb35e2d9
JR
10 { "troff or preprocessor input", RPMFC_INCLUDE },
11 { "GNU Info", RPMFC_INCLUDE },
718646f9 12@@ -746,7 +747,11 @@
321b78b0
JR
13 if (strstr(fmstr, fct->token) == NULL)
14 continue;
fb35e2d9 15
321b78b0
JR
16- fcolor |= fct->colors;
17+ // This is a nasty hack, but will have to do for now
18+ if ((fct->colors & RPMFC_ELF32) && (strstr(fmstr, "x86-64") != NULL))
83a0601a 19+ fcolor |= RPMFC_ELFX32|RPMFC_INCLUDE;
321b78b0 20+ else
83a0601a 21+ fcolor |= fct->colors;
321b78b0 22 if (fcolor & RPMFC_INCLUDE)
83a0601a 23 break;
321b78b0 24 }
718646f9 25@@ -1147,7 +1152,10 @@
09cbffaa
JR
26 color = RPMFC_ELF64;
27 break;
28 case ELFCLASS32:
29- color = RPMFC_ELF32;
30+ if (ehdr.e_machine == EM_X86_64)
31+ color = RPMFC_ELFX32;
32+ else
33+ color = RPMFC_ELF32;
34 break;
35 }
36 elf_end(elf);
718646f9
JR
37diff -ur rpm-4.16.1.2/build/rpmfc.h rpm-4.16.1.2.x32/build/rpmfc.h
38--- rpm-4.16.1.2/build/rpmfc.h 2020-05-28 12:04:25.011136544 +0200
39+++ rpm-4.16.1.2.x32/build/rpmfc.h 2021-03-21 21:50:04.127398387 +0100
83a0601a 40@@ -26,8 +26,9 @@
321b78b0
JR
41 RPMFC_BLACK = 0,
42 RPMFC_ELF32 = (1 << 0),
43 RPMFC_ELF64 = (1 << 1),
44+ RPMFC_ELFX32 = (1 << 2),
45 RPMFC_ELFMIPSN32 = (1 << 2),
46-#define RPMFC_ELF (RPMFC_ELF32|RPMFC_ELF64|RPMFC_ELFMIPSN32)
47+#define RPMFC_ELF (RPMFC_ELF32|RPMFC_ELF64|RPMFC_ELFX32|RPMFC_ELFMIPSN32)
48 /* (1 << 3) leaks into package headers, reserved */
49
83a0601a 50 RPMFC_WHITE = (1 << 29),
718646f9
JR
51diff -ur rpm-4.16.1.2/configure.ac rpm-4.16.1.2.x32/configure.ac
52--- rpm-4.16.1.2/configure.ac 2021-03-21 21:51:28.221530479 +0100
53+++ rpm-4.16.1.2.x32/configure.ac 2021-03-21 21:50:04.127398387 +0100
b10d9d9e 54@@ -930,6 +930,10 @@
83a0601a
JR
55 host_os=`echo "${host_os}" | sed 's/-gnueabi$//'`
56 host_os_gnu=-gnueabi
57 fi
58+if echo "$host_os" | grep '.*-gnux32' > /dev/null ; then
59+ host_os=`echo "${host_os}" | sed 's/-gnux32$//'`
b10d9d9e 60+ host_os_gnu=-gnux32
83a0601a
JR
61+fi
62 if echo "$host_os" | grep '.*-gnu' > /dev/null ; then
63 host_os=`echo "${host_os}" | sed 's/-gnu$//'`
64 fi
718646f9
JR
65diff -ur rpm-4.16.1.2/fileattrs/python.attr rpm-4.16.1.2.x32/fileattrs/python.attr
66--- rpm-4.16.1.2/fileattrs/python.attr 2020-08-31 11:14:07.991087349 +0200
67+++ rpm-4.16.1.2.x32/fileattrs/python.attr 2021-03-21 21:50:04.127398387 +0100
68@@ -14,14 +14,15 @@
69 %__python_requires() %{lua:
70 -- Match buildroot paths of the form
71 -- /PATH/OF/BUILDROOT/usr/lib/pythonMAJOR.MINOR/ and
72- -- /PATH/OF/BUILDROOT/usr/lib64/pythonMAJOR.MINOR/
73+ -- /PATH/OF/BUILDROOT/usr/lib64/pythonMAJOR.MINOR/ and
74+ -- /PATH/OF/BUILDROOT/usr/libx32/pythonMAJOR.MINOR/
75 -- generating a line of the form:
76 -- python(abi) = MAJOR.MINOR
77 local path = rpm.expand('%1')
78- if path:match('/usr/lib%d*/python%d+%.%d+/.*') then
79- local requires = path:gsub('.*/usr/lib%d*/python(%d+%.%d+)/.*', 'python(abi) = %1')
80+ if path:match('/usr/lib%w*/python%d+%.%d+/.*') then
81+ local requires = path:gsub('.*/usr/lib%w*/python(%d+%.%d+)/.*', 'python(abi) = %1')
82 print(requires)
83 end
84 }
85
86-%__python_path ^((%{_prefix}/lib(64)?/python[[:digit:]]+\\.[[:digit:]]+/.*\\.(py[oc]?|so))|(%{_bindir}/python[[:digit:]]+\\.[[:digit:]]+))$
87+%__python_path ^((%{_prefix}/lib(64|x32)?/python[[:digit:]]+\\.[[:digit:]]+/.*\\.(py[oc]?|so))|(%{_bindir}/python[[:digit:]]+\\.[[:digit:]]+))$
88diff -ur rpm-4.16.1.2/fileattrs/pythondist.attr rpm-4.16.1.2.x32/fileattrs/pythondist.attr
89--- rpm-4.16.1.2/fileattrs/pythondist.attr 2020-05-28 12:04:25.026136626 +0200
90+++ rpm-4.16.1.2.x32/fileattrs/pythondist.attr 2021-03-21 21:50:04.127398387 +0100
91@@ -1,3 +1,3 @@
92 %__pythondist_provides %{_rpmconfigdir}/pythondistdeps.py --provides --majorver-provides
93 %__pythondist_requires %{_rpmconfigdir}/pythondistdeps.py --requires
94-%__pythondist_path /lib(64)?/python[[:digit:]]\\.[[:digit:]]+/site-packages/[^/]+\\.(dist-info|egg-info|egg-link)$
95+%__pythondist_path /lib(64|x32)?/python[[:digit:]]\\.[[:digit:]]+/site-packages/[^/]+\\.(dist-info|egg-info|egg-link)$
96diff -ur rpm-4.16.1.2/installplatform rpm-4.16.1.2.x32/installplatform
97--- rpm-4.16.1.2/installplatform 2020-05-28 12:04:25.027136631 +0200
98+++ rpm-4.16.1.2.x32/installplatform 2021-03-21 21:51:47.671145954 +0100
99@@ -21,6 +21,8 @@
83a0601a
JR
100
101 ARCH_INSTALL_POST='%{nil}'
102 LIB=lib
103+ TARGETCPU="%{_target_cpu}"
95f0c2a4 104+ APPEND_TARGET_ABI=
83a0601a
JR
105
106 # XXX FIXME: incomplete and quite likely wrong too in places,
107 # consult various arch folks for correct names etc.
6d3506bd 108@@ -82,7 +84,15 @@
83a0601a
JR
109 ISANAME=x86
110 ISABITS=64
111 CANONARCH=x86_64
5c979c25 112- CANONCOLOR=3
83a0601a
JR
113+ CANONCOLOR=7
114+ ;;
115+ x32)
116+ ISANAME=x86
d6d53b26 117+ ISABITS=x32
83a0601a 118+ CANONARCH=x32
f2d42e9b 119+ CANONCOLOR=7
95f0c2a4 120+ APPEND_TARGET_ABI=1
83a0601a
JR
121+ TARGETCPU="x86_64"
122 ;;
123 ia64)
124 ISANAME=ia
6d3506bd
JP
125@@ -190,10 +200,14 @@
126 # skip architectures for which we dont have full config parameters
127 [ -z "$CANONARCH" ] && continue
128
129- if [ "$OS" = "linux" ] && [ "$CANONCOLOR" = 3 ]; then
130+ if [ "$OS" = "linux" ] && ( [ "$CANONCOLOR" = 3 ] || [ "$CANONARCH" = "x86_64" ] ); then
83a0601a
JR
131 LIB=${LIB}64
132 fi
133
134+ if [ "$OS" = "linux" ] && [ "$CANONARCH" = "x32" ]; then
135+ LIB=${LIB}x32
136+ fi
137+
138 PPD="${DESTDIR}/${platformdir}/${ARCH}-${OS}"
139 [ -d $PPD ] || mkdir -p $PPD
140
6d3506bd 141@@ -202,6 +216,8 @@
83a0601a
JR
142 -e "s,@RPMCANONARCH@,$CANONARCH,g" \
143 -e "s,@RPMCANONCOLOR@,$CANONCOLOR," \
718646f9 144 -e "s,@RPMRC_GNU@,$RPMRC_GNU," \
95f0c2a4 145+ -e "s,@TARGET_ABI@,${APPEND_TARGET_ABI:+%{?_gnu\}}," \
83a0601a
JR
146+ -e "s,@TARGETCPU@,$TARGETCPU," \
147 -e "s,@LIB@,$LIB," \
148 -e "s,@ARCH_INSTALL_POST@,$ARCH_INSTALL_POST," \
149 -e '/\${\w*:-/!s,\${,%{_,' \
718646f9
JR
150diff -ur rpm-4.16.1.2/platform.in rpm-4.16.1.2.x32/platform.in
151--- rpm-4.16.1.2/platform.in 2020-05-28 12:04:25.047136741 +0200
152+++ rpm-4.16.1.2.x32/platform.in 2021-03-21 21:51:47.671145954 +0100
83a0601a
JR
153@@ -8,7 +8,7 @@
154 %_vendor @RPMCANONVENDOR@
155 %_os @RPMCANONOS@
156 %_gnu @RPMRC_GNU@
157-%_target_platform %{_target_cpu}-%{_vendor}-%{_target_os}
95f0c2a4 158+%_target_platform @TARGETCPU@-%{_vendor}-%{_target_os}@TARGET_ABI@
83a0601a
JR
159 %optflags @RPMRC_OPTFLAGS@
160
161 %__isa_name @ISANAME@
718646f9
JR
162diff -ur rpm-4.16.1.2/rpmrc.in rpm-4.16.1.2.x32/rpmrc.in
163--- rpm-4.16.1.2/rpmrc.in 2020-05-28 12:04:25.075136894 +0200
164+++ rpm-4.16.1.2.x32/rpmrc.in 2021-03-21 21:50:04.127398387 +0100
83a0601a
JR
165@@ -24,6 +24,7 @@
166 optflags: x86_64 -O2 -g
167 optflags: amd64 -O2 -g
168 optflags: ia32e -O2 -g
169+optflags: x32 -O2 -g -mtune=generic -march=x86-64
170
171 optflags: alpha -O2 -g -mieee
172 optflags: alphaev5 -O2 -g -mieee -mtune=ev5
173@@ -155,6 +156,8 @@
174
175 archcolor: riscv64 2
176
177+archcolor: x32 4
178+
179 #############################################################
180 # Canonical arch names and numbers
181
182@@ -170,6 +173,7 @@
183 arch_canon: amd64: amd64 1
184 arch_canon: ia32e: ia32e 1
185 arch_canon: em64t: em64t 1
186+arch_canon: x32: x32 1
187
188 arch_canon: alpha: alpha 2
189 arch_canon: alphaev5: alphaev5 2
190@@ -379,6 +383,8 @@
191 buildarchtranslate: amd64: x86_64
192 buildarchtranslate: ia32e: x86_64
193
194+buildarchtranslate: x32: x32
195+
196 buildarchtranslate: sh3: sh3
197 buildarchtranslate: sh4: sh4
198 buildarchtranslate: sh4a: sh4
581969f1 199@@ -486,10 +492,12 @@
f2d42e9b
JR
200
201 arch_compat: ia64: noarch
202
203-arch_compat: x86_64: amd64 em64t athlon noarch
204+arch_compat: x86_64: amd64 em64t athlon x32 noarch
83a0601a
JR
205 arch_compat: amd64: x86_64 em64t athlon noarch
206 arch_compat: ia32e: x86_64 em64t athlon noarch
207
f2d42e9b 208+arch_compat: x32: x32 x86_64 noarch
83a0601a
JR
209+
210 arch_compat: sh3: noarch
211 arch_compat: sh4: noarch
212 arch_compat: sh4a: sh4
213@@ -628,6 +636,8 @@
214 buildarch_compat: amd64: x86_64
215 buildarch_compat: ia32e: x86_64
216
217+buildarch_compat: x32: noarch
218+
219 buildarch_compat: sh3: noarch
220 buildarch_compat: sh4: noarch
221 buildarch_compat: sh4a: sh4
718646f9
JR
222diff -ur rpm-4.16.1.2/tools/elfdeps.c rpm-4.16.1.2.x32/tools/elfdeps.c
223--- rpm-4.16.1.2/tools/elfdeps.c 2020-05-28 12:04:25.084136944 +0200
224+++ rpm-4.16.1.2.x32/tools/elfdeps.c 2021-03-21 21:50:04.127398387 +0100
83a0601a
JR
225@@ -94,6 +94,9 @@
226 break;
227 }
228 }
229+ if ((ehdr->e_ident[EI_CLASS] == ELFCLASS32) && (ehdr->e_machine == EM_X86_64)) {
230+ marker = "(x32bit)";
231+ }
232 return marker;
233 }
234
This page took 0.075853 seconds and 4 git commands to generate.