Fedora and Cross Compiling
Andy Green
andy at warmcat.com
Fri Jun 15 13:45:11 UTC 2007
David Woodhouse wrote:
> On Fri, 2007-06-15 at 07:59 -0500, David Smith wrote:
>> Note that we leave things so that native compiles still work. We then
>> check native dependencies (_arch == _build_arch) against our mock
>> chroot's native rpm database, then check cross dependencies (_arch !=
>> _build_arch) against the mock chroot's target rpm database.
>>
>> Target versions of autoconf and sed aren't needed since nothing links
>> against anything in those packages (those packages are only run
>> natively). The only problem with this scheme is that we end up with an
>> extra native dependency of libblah-devel (which really isn't needed
>> since nothing links against it in the cross compile). But the benefit
>> of unaffected native compiles outweighed the extra dependency.
>
> I might go so far as to suggest that the benefit of avoiding that
> %if "%{_arch" == "%{_build_arch}" stuff in the specfile might outweigh
> the extra dependencies on autoconf and sed, too.
>
> One way of handling dependencies in mock for cross-builds might be to
> install the full set of dependencies for _both_ host and target
> architectures.
I would be the first to reach for a dirty but unanswerably effective
hack to get me where I am going... But in this case I think the only
true answer is to tag BuildRequires as being host or target in the spec
file, not to unmanageably duplicate the target-world dependencies in the
host. Eg
HostBuildRequires: byacc (<-- for it is he)
BuildRequires: libblah-devel
...where they are considered the same deal when hostArch == buildArch.
We can see if this logic raises objections anywhere given the effective
forkage of rpm but I suspect it is a basic fact necessary for cross to
work in rpm semantics.
-Andy
More information about the fedora-devel-list
mailing list