[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: Multi-arch RPM at once

Jeff Johnson wrote:

On Fri, Feb 04, 2005 at 04:14:55PM +0100, Toralf Lund wrote:

Jeff Johnson wrote:

On Mon, Jan 31, 2005 at 02:53:08PM -0700, Bryan Stillwell wrote:

Is there any way to have a spec file build an rpm for two separate
architectures with just the `rpmbuild -bb` command?

As an example, if I had a helloworld program written in C, and wanted it
to build on x86_64 on i386, how would I do that?

I figure in the build section I would have to build it twice with these
two commands:

x86_64: gcc helloworld.c -o bin64/helloworld
i386:   gcc -m32 helloworld.c -o bin32/helloworld

What I'm imagining is the build would take place, then the final lines
would look like:

Wrote: /home/build/rpm/RPMS/x86_64/helloworld-1.0-1.x86_64.rpm
Wrote: /home/build/rpm/RPMS/i386/helloworld-1.0-1.i386.rpm
Wrote: /home/build/rpm/RPMS/noarch/helloworld-docs-1.0-1.noarch.rpm

Any ideas on how to make this happen?

Add --target arch1,arch2,arch3,arch4

Note that these are sequential builds, not multiple arches in one build.

The design goal in rpm is
 One value of arch is static throughout a build.

So, to repeat one of my questions from elsewhere on this branch: Does that mean there is no way to ask for more than one output architecture via spec file tags or macros instead of command line options? I wouldn't want those to give multiple archs in one build, either, but rather request multiple builds from within, of you know what I mean.

Yes, no way, by design:
Only one static arch value per build.

Yes, you said that already. What I had in mind, however, was something that would essentially cause rpmbuild to re-exec itself as "rpmbuild --target <something>" when no --target option was passed already - where "<something>" would be the value of a tag or macro, and might contain more than one target. This wouldn't break with the design, I think, or at least not more than the support for multiple targets in --target does. It may be undesirable for other reasons, though, like simplicity (or the lack thereof.)

Loop on the build, either external to rpmbuild, or with --target
if you must. External loop is perhaps more flexibly configured
than the internal --target loop.

I may be on the wrong track here, though. What I really want to do, is to add different archs to different %packages built from the same spec file. That's also in some ways in conflict with the design goal stated above, but I really only want one architecture *for the build* - I just happen to know that some of the packages aren't really affected by the build architecture at all (e.g. because they contain plain-text files only), or their architecture may be "reduced" to a more basic version, like i386 when building for i686 (because some or the files output by an i686 build will actually be compatible with all i386 variants.)

- Toralf

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]