generating 32-bit RPM's

Dave Atkinson dave_atkinson at blueyonder.co.uk
Tue Sep 20 10:12:42 UTC 2005


Can I stick my 2p's worth in?  Sorry for v. late reply, I've only just
discovered this list...

I too have been considering this problem recently.  I wanted to install
32-bit mplayer so's I could use the [ahem] other codecs... couldn't get
yum to install 32-bit mplayer (if anyone can explain to me a simple way
of installing an arbitary 32-bit pkg on x86_64..? thx ;).

Couldn't find one, so I thought I'd compile the pkgs myself, using

$ rpmbuild --target i386 ....

as I'd had no problems building SMP i686 and non-SMP i386 and i686 pkgs
on my old dual PIII...

I have tried to understand what rpmbuild does from looking at the srcs
and the rc/macro files that get sourced (rpmbuild --showrc, or more
accurately, strace -e open rpmbuild --showrc | awk 'prog to dig out
filenames'*).

The --target option sets the %_target_cpu, %_target_os and %
target_platform macros.  This I _believe_ affects the setting of the %
_optflags, so any RPM that uses %configure should get the right compiler
flags.  What gets screwed on x86_64 is that the %_lib and %_libdir
macros remains set to lib64 regardless of the setting of --target.

So I'm wondering if the fix is a patch to rpm, either to 
a) post-process (hack) the above macros based on the host and target
arch at runtime, (bad idea) or 
b) add a new conditional %if(|n)targetarch and ship a rpmrc file which
sets the macros correctly at runtime (better idea) or
c) have rpm set %_lib, %_libdir and anything else that may be required
internally based on target arch (previous idea is better?)
d) something I haven't thought of ;)

What have I missed? ;)
Dave A.

* awk '/^open\("\/(etc|usr\/lib)\/rpm\/.*(rc|macro).*/ && $0 !
~ /ENOENT/{tmp=substr($1,7);gsub(/".*/,"",tmp);print tmp}'




More information about the amd64-list mailing list