On Wed, 2015-01-28 at 02:01 +0400, Konstantin Andreev wrote:
On 14/06/2013 17:07, Michael Schwendt wrote:
On Fri, 14 Jun 2013 15:26:59 +0300, Panu Matilainen wrote:
[... skip ...] The requires of src.rpm only reflect what build-requires were
active during the creation of that specific src.rpm file, ...
Which is nearly what I've been preaching. "The spec file's
BuildRequires become the src.rpm's Requires" depending on the environment the src.rpm is built within.
Michael,
building 32-bit software on x86_64 systems is *very* important, completely legal, and fully supported use case, right ? (RedHat-provided gcc, binutils, etc for x86_64 always support 32-bit targets.)
Fully supported by whom, and in what capacity? This is not an idle/weird question, there are a lot of things that an "upstream" will support that Fedora/FPC do not. For instance, lots of upstreams think that static linking or bundling is a great idea. This is not the view of Fedora policy though.
Given that, on x86_64 system, obviously,
- building 32-bit `foo' package requires 32-bit glibc-devel.
- building 64-bit `foo' package requires 64-bit glibc-devel.
And "BuildRequires: glibc-devel" will do the right thing with mock, koji and yum-builddep. And just as relevantly "BuildRequires: glibc-devel%{_isa}" will not DTRT with any of those tools ... and those are the tools Fedora uses.
Given that, how would I write a single spec for these to work on the same x86_64 system :
$ rpmbuild --rebuild foo.src.rpm $ rpmbuild --rebuild --target i686 foo.src.rpm
without arched BR's ?
You can't, and if you have some environment that needs to do that but doesn't need createrepo'd data of the BuildRequires then feel free to use arch'd BuildRequires. But Fedora doesn't use that environment, and does need createrepo'd data of the BuildRequires.
Dont' mention mock and preparing same-target build environment.
Why? That's the recommend way of doing local builds in Fedora.
If rpmbuild had not designed for [target arch != build arch] condition, it wouldn't has had `--target' option.
Again, this is a difference between what options upstream gives you and supports vs. what Fedora supports. rpm also supports --relocate, but that isn't valid in Fedora either.
As regards storing build requirements in *.src.rpm files. It's wrong asking
- What this .src.rpm requires ?
Correct asking is
- What this .src.rpm requires when building *for <some particular> arch* ?
Not in Fedora, in Fedora the target arch and the generic .src.rpm are the inputs. If you want to change this you need to speak to rel-eng/FESCO.