[CMake] rpmbuild architecture
Eric Noulard
eric.noulard at gmail.com
Fri Apr 5 13:59:57 EDT 2013
2013/4/5 <clinton at elemtech.com>
> I'm trying to build an i686 RPM package on a x86_64 Linux machine.
>
> I have a set(CPACK_RPM_PACKAGE_ARCHITECTURE i686)
> but I get an error at CPack time:
> error: No compatible architectures found for build
>
> I can get it to work if I also use setarch when calling rpmbuild giving it
> the CPack generated RPM spec file, like so:
> setarch i686 rpmbuild --bb --define "_topdir $PWD" --buildroot
> $PWD/<mypath> SPECS/myspec.spec
>
>
> Doing the equivalent for a Debian package seemed to work by simply setting
> set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE i386)
>
> Is there some way to make this work automatically within cpack?
>
CPack wasn't design for "cross-packaging" so any usage like this may fail
at some point.
the CPACK_RPM_PACKAGE_ARCHITECTURE was tested only
for the "noarch" case where the developper knows he can force noarch
because the package contains no arch-dependent part i.e.:
an RPM containing only script or data file etc...
That's basically what the doc says:
cpack --help-variable CPACK_RPM_PACKAGE_ARCHITECTURE
Now,
setarch <ARCH> rpmbuild etc... seems the appropriate way to proceed.
however the (setarch) doc seems to say that you need to use --target=<arch>
as well:
i.e.
setarch i686 rpmbuild --target=i686 --bb --define "_topdir $PWD"
--buildroot $PWD/<mypath> SPECS/myspec.spec
Adding this way of work to CPackRPM.cmake should be quite easy.
It would simply be necessary to check whether if
CPACK_RPM_PACKAGE_ARCHITECTURE
has been set or not and differentiate the noarch case from the
"arch specific but not native" case.
I guess this still leave the door open for error if non-native libraries
your
package depends upon are installed in a non-unified way
on various native arch.
This is solved on "Debian MultiArch" see:
http://wiki.debian.org/Multiarch
For RPM-based distros I don't really know.
Basically you may be able to build an i686 RPM package on a x86_64 host
but may be in the end this package would not be installable on a i686 host,
or this may work on some distros and fails on others...
I think you get what I mean.
--
Erk
Le gouvernement représentatif n'est pas la démocratie --
http://www.le-message.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20130405/268ccd61/attachment.htm>
More information about the CMake
mailing list