[Fedora-packaging] arched BuildRequires?
mschwendt at gmail.com
Fri Jun 14 07:11:45 UTC 2013
On Thu, 13 Jun 2013 22:44:53 +0200, Mattias Ellert wrote:
> tor 2013-06-13 klockan 19:20 +0200 skrev Björn Esser:
> > What will break the spec by removing _isa-macro from BRs? Is there any
> > PROVEN reason for this? I'm NOT talking about the final-Requires in
> > spec.
> It is VERY EASY to construct such an example.
Sure, that's the known corner-case for multiarch installations.
It's similar for any arch-conditional build requirements in spec files.
They are a bit of a hindrance, since one cannot rely on a downloaded
src.rpm's Requires being complete. Unless one rebuilds the src.rpm first
and then proceeds with the changed list of possibly arch-specific Requires
in the freshly built src.rpm (e.g. as Mock does it before fetching the
build requirements). Only then one can query the src.rpm with tools to
install a long list of needed builddeps.
> Consider a package containing the following BRs:
> BuildRequires: nss-devel >= 3.10
> BuildRequires: openssl-devel
> BuildRequires: cppunit-devel
> BuildRequires: glibmm24-devel
> BuildRequires: libdb-cxx-devel
> All the BRs are satisfied:
> $ rpm -q --whatprovides nss-devel openssl-devel cppunit-devel
> glibmm24-devel libdb-cxx-devel
Except for the minimum build environment, such as glibc-devel.i686 and
libstdc++-devel.i686, the compiler(s) and preprocessor(s). The build
would fail later on. %_isa in BRs here is like band-aid for a more
fundamental problem, and it adds even another problem.
Oh, btw, not even all -devel dependencies use %_isa yet. On a normal
x86_64 installation, installing something -devel.i686 often pulls in
x86_64 deps. For your example, nss-devel.i686 will do that, too.
%_isa would be needed in many many more places for multiarch operation.
> rpmbuild correctly detects the missing BRs:
> error: Failed build dependencies:
> nss-devel(x86-64) >= 3.10 is needed by canl-c++-1.0.0-2.fc18.x86_64
> libdb-cxx-devel(x86-64) is needed by canl-c++-1.0.0-2.fc18.x86_64
Don't we prefer clean build environments, such as constructed by Mock?
I know some people use "setarch i686 rpmbuild ..." and "setarch i686 yum
...", which accesses the full i386 repos on x86_64 installations.
Conclusively, I understand what you like about %_isa in BR, but I think
it doesn't improve much compared with the confusion it adds.
Fedora release 19 (Schrödinger’s Cat) - Linux 3.9.5-301.fc19.x86_64
loadavg: 0.10 0.35 0.29
More information about the packaging