State of multilib development

Hans de Goede j.w.r.degoede at hhs.nl
Mon Oct 16 14:30:51 UTC 2006



Dennis Gilmore wrote:
> On Monday 16 October 2006 03:04, Hans de Goede wrote:
>> Hi all,
>>
>> Yesterday I tried to build i386 rpms on my x86_64 using the new
>> multilib-devel packages instead of resorting to an i386 chroot.
>>
>> Although we have come a long way to making this possible there are still
>> a few issues which makes doing this very hard:
>>
>> 1) gcc ignores setarch
>> ======================
>>
>> "gcc -o hello helloworld.c", creates an x86_64 elf file on my x86_64
>> system as expected however, "setarch i386 gcc -o hello helloworld.c"
>> also creates an x86_64 elf file instead of an i386 one, to get an i386
>> one I must do: "gcc -m32 -o hello helloworld.c".
>>
>> This is unfortunate, because even though rpmbuild adds -m32 to the
>> *FLAGS environment variables things still don't for many packages,
>> because they for example often ignore LDFLAGS, thus not specifying -m32
>> when linking, causing things to fail.
> Make sure  you do not have a /etc/rpm/platform file if you intend to build 
> i386 on x86_64   it will mess some things up.
> 

Thanks for responding, but I don't see how /etc/rpm/platform has
anything todo with problem nr 1) I've described as that only involves
gcc not rpmbuild.


>> 2) rpmbuild ignores setarch
>> ===========================
>>
>> "setarch i386 rpmbuild -bb foo.spec" Still tries to build an x86_64 foo,
>> I know "rpmbuild --target i386" works better but still has issues, for
>> example libdir is still set to /usr/lib64, this is already in bugzilla.
>>
>> I however still believe that rpmbuild should change its default build
>> target when using setarch and should call setarch itself when called
>> with --target, shall I BZ this?
> Again due to /etc/rpm/platform  
> 

Okay, this may be true, I indeed have an /etc/rpm/platform, and it is
not owned by any package, still I didn't put it there I'll try removing it.

>> 4) rpmbuild lets x86_64 packages satisfy BR's when building for i386
>> ====================================================================
>>
>> The subject says most of it, when doing an rpmbuild --target=i386 I
>> don't want libXt-devel.x86_64 to satisfy a BR: libXt-devel .
>>
>> I know things aren't that easy because with something like BR:
>> desktop-file-utils, the x86_64 version will do fine.
>>
>> Suggestion: make rpmbuild check the arch of BR's who's name ends with
>> -devel.
>>
>> This will still have a few exceptions, but will be a big improvement in
>> general. BZ?
> again due to /etc/rpm/platform   it overrides some of rpms logic  and it 
> thinks its building x86_64  always
> 

Erm, please read properly before commenting, having any arch of
libXt-devel installed will currently make rpmbuild happy with regards to
a BR: libXt-devel, no matter what platform is being build.

>> 5) xxx-devel.arch should require xxx.arch not just xxx
>> ======================================================
>>
>> When I install libXt-devel.i386 I expect it to drag in libXt.i386 and
>> not to be happy with the already installed libXt.x86_64 .
>>
> possibly due to the same issue.
> 

Nope, it does the same too drag in i386 packages to resolve x86_64
-devel packages deps. To fix this we need a way to add the arch to deps,
  because currently deps don't have archs.

Regards,

Hans




More information about the fedora-devel-list mailing list