Note: This is a beta release of Red Hat Bugzilla 5.0. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Also email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback here.
Bug 159557 - Crossbuild: arch should use _build_cpu, not _target_cpu
Summary: Crossbuild: arch should use _build_cpu, not _target_cpu
Alias: None
Product: Fedora
Classification: Fedora
Component: rpm
Version: 4
Hardware: i686
OS: Linux
Target Milestone: ---
Assignee: Paul Nasrat
QA Contact: Mike McLean
Depends On:
TreeView+ depends on / blocked
Reported: 2005-06-04 02:13 UTC by Jan Kratochvil
Modified: 2007-11-30 22:11 UTC (History)
1 user (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Last Closed: 2005-08-27 02:14:05 UTC

Attachments (Terms of Use)

Description Jan Kratochvil 2005-06-04 02:13:44 UTC
From Bugzilla Helper:
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050513 Galeon/1.3.21

Description of problem:
Currently if you define:
%define _target_cpu arm
%define _build_cpu i386
%define _host_cpu i386

the final .rpm gets built in RPMS/arm/... with the .rpm architecture set to "arm".
It should be set to "i386" - you should use "_build_cpu", not "_target_cpu".

Version-Release number of selected component (if applicable):

How reproducible:

Steps to Reproduce:
1. Define keywords in .spec like above.
2. Type rpmbuild -bb x.spec

Actual Results:  .rpm in RPMS/arm

Expected Results:  .rpm in RPMS/i386

Additional info:

Comment 1 Jeff Johnson 2005-08-27 02:14:05 UTC
I disagree; I expect packages built for an arm architecture to appear in RPMS/arm, not RPMS/i386,
even if cross-compiled.

The path to the directory where rpms are written is entirely configurable, override if you disagree.
Thhe following macro should write to %{_build_cpu}, not the %{_target_cpu}, directory:

#       The output binary package file name template used when building
#       binary packages.
# XXX   Note: escaped %% for use in headerSprintf()
%_build_name_fmt        %{_build_cpu}/%%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm

Comment 2 Jan Kratochvil 2005-08-27 02:31:47 UTC
> I disagree; I expect packages built for an arm architecture to appear in
> RPMS/arm, not RPMS/i386, even if cross-compiled.

I agree with this. But currently if you build binutils/gcc .rpm package to be
used on my PC (i686) producing binaries for arm it is called .arm.rpm while
it should be called .i386.rpm as I install the rpm to my PC (i686).

When checking again and the autoconf doc:
# If you want to _use_ a cross compiler, that generates code for a platform
# different from the build platform, you should specify the "host" platform
# (i.e., that on which the generated programs will eventually be run) with
# `--host=TYPE'.

, therefore this Bug name was wrong, it should have been:
% Crossbuild: arch should use _host_cpu, not _target_cpu

but anyway it is no longer an issue for me (I sold the arm device).

Note You need to log in before you can comment on or make changes to this bug.