Building rpms on AMD64

Per Steinar Iversen PerSteinar.Iversen at adm.hio.no
Sat Jan 15 14:32:00 UTC 2005


On Fri, 14 Jan 2005, seth vidal wrote:

> On Fri, 2005-01-14 at 12:36 -0500, John Ellson wrote:
>> Nick Bargnesi wrote:
>>
>>> If I were you - I would check to make sure you also do not have 32-bit
>>> X libraries installed.  Part of the full installation you selected
>>> installs compat packages allowing you to build for different
>>> platforms.  If removing the 32-bit libraries helps, send the solution
>>> back to the user list.
>>>
>>>
>>
>> Related to this.  How does one go about removing 32bit libraries with rpm?
>>
>> How do you selectively remove just i386 rpms?    I couldn't find any
>> option in "rpm --help"
>> that selects just the rpms of a given architecture.
>>
>
> with rpm you can do:
>
> rpm -e name.arch
>
> with yum you can do the same:
>
> yum remove name.arch

Yet another problem: On a system with dual x86_64 and i386 libraries many 
rpms are installed by default for both architectures, an example is 
mozilla, the default install of FC3 contains these:

mozilla-1.7.3-17.x86_64.rpm
mozilla-chat-1.7.3-17.x86_64.rpm
mozilla-devel-1.7.3-17.x86_64.rpm
mozilla-dom-inspector-1.7.3-17.x86_64.rpm
mozilla-js-debugger-1.7.3-17.x86_64.rpm
mozilla-mail-1.7.3-17.x86_64.rpm
mozilla-nspr-1.7.3-17.i386.rpm
mozilla-nspr-1.7.3-17.x86_64.rpm
mozilla-nspr-devel-1.7.3-17.x86_64.rpm
mozilla-nss-1.7.3-17.i386.rpm
mozilla-nss-1.7.3-17.x86_64.rpm
mozilla-nss-devel-1.7.3-17.x86_64.rpm
mozplugger-1.6.2-1.x86_64.rpm

Here mozilla-nspr and mozilla-nss are for both architectures - the problem 
is: If one builds updates for x86_64 how does one easily determine what 
packages that also must be created for i386?


I have problems creating the i386 packages anyway, for example:

# setarch i386 rpmbuild --target i386 --rebuild mozilla-1.7.5-3.src.rpm

Goes like this:

Installing mozilla-1.7.5-3.src.rpm
Building target platforms: i386
Building for target i386
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.33053

...lines deleted...

Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.60269
+ umask 022
+ cd /usr/src/redhat/BUILD
+ cd mozilla
+ LANG=C
+ export LANG
+ unset DISPLAY
+ /bin/rm -f ./configure
+ /usr/bin/autoconf-2.13
+ '[' -x /usr/bin/getconf ']'
++ getconf _NPROCESSORS_ONLN
+ CPUS=1
+ test x1 = x -o x1 = x0
+ OPTFLAGS=-O2
+ XCFLAGS=-g
+ CFLAGS=-g
+ CXXFLAGS=-g
+ BUILD_OFFICIAL=1
+ MOZILLA_OFFICIAL=1
+ ./configure --prefix=/usr --libdir=/usr/lib64 --enable-optimize=-O2 
--disable-debug --with-default-mozilla-five-home=/usr/lib64/mozilla-1.7.5 
--disable-strip-libs --disable-tests --enable-xinerama 
--enable-nspr-autoconf --enable-extensions=default,irc
--without-mng --enable-crypto --disable-xprint 
--without-system-nspr --with-system-zlib --with-system-png 
--with-system-jpeg --enable-default-toolkit=gtk2 --disable-freetype2 
--enable-xft --enable-pango --mandir=/usr/share/man

...lines deleted...

gmake[6]: Entering directory `/usr/src/redhat/BUILD/mozilla/xpcom/reflect/xptcall/src/md/unix'
xptcinvoke_gcc_x86_unix.cpp
c++ -o xptcinvoke_gcc_x86_unix.o -c -DOSTYPE=\"Linux2.6.10-1\" -DOSARCH=\"Linux\" -DEXPORT_XPTC_API   -I../../../../../../dist/include/xpcom -I../../../../../../dist/include -I/usr/src/redhat/BUILD/mozilla/dist/include/nspr     -I./../.. -I/usr/X11R6/include   -fPIC  -I/usr/X11R6/include -fno-rtti -fno-exceptions -Wall -Wconversion -Wpointer-arith -Wcast-align -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor -Wno-long-long -pedantic -g -fshort-wchar -pthread -pipe  -DNDEBUG -DTRIMMED -O2  -I/usr/X11R6/include -DMOZILLA_CLIENT -include ../../../../../../mozilla-config.h -Wp,-MD,.deps/xptcinvoke_gcc_x86_unix.pp xptcinvoke_gcc_x86_unix.cpp
{standard input}: Assembler messages:
{standard input}:16: Error: suffix or operands invalid for `push'
{standard input}:26: Error: suffix or operands invalid for `push'
{standard input}:32: Error: suffix or operands invalid for `pop'
gmake[6]: *** [xptcinvoke_gcc_x86_unix.o] Error 1
gmake[6]: Leaving directory `/usr/src/redhat/BUILD/mozilla/xpcom/reflect/xptcall/src/md/unix'

Clearly something triggers setup for the wrong platform in this case, at 
configure looks in the lib64 directories.

This "works" though:

# rpmbuild --target i386 --rebuild mozilla-1.7.5-3.src.rpm

However the resulting rpm is not okay at all:

# rpm -qpl mozilla-nspr-1.7.5-3.i386.rpm
/usr/lib64/libnspr4.so
/usr/lib64/libplc4.so
/usr/lib64/libplds4.so


Life on the combined x86_64 / i386 architecture seems a bit confusing to me so far :-(

-psi




More information about the devel mailing list