[Fedora-packaging] RPM macro to match build arch

Thomas Spura tomspur at fedoraproject.org
Thu Aug 6 19:57:05 UTC 2015

Jujens <jujens at jujens.eu> schrieb am Sa., 1. Aug. 2015 um 13:38 Uhr:

> On 07/31/2015 11:26 PM, Dominik 'Rathann' Mierzejewski wrote:
> > Hi,
> >
> > On Friday, 31 July 2015 at 16:52, Jujens wrote:
> >> Hi,
> >>
> >> I am in the process of packaging python-wsaccel
> >> (https://bugzilla.redhat.com/show_bug.cgi?id=1244517). This module
> >> contains C extensions and in order to launch the tests, I need to modify
> >> the python path so that the build module are found.
> >>
> >> The build directory to add to the path is like:
> >> build/lib.%{_os}-%{_target_cpu}-%{python3_version}
> >>
> >> This expression works fine with i686 and x64_84. However, on armv,
> >> %{_target_cpu} resolves to armv7hl whereas the folder is named
> >> lib.linux-armv7l-3.4.
> >>
> >> Previously, I tried the %{_host} macro but it extends to i386 instead of
> >> i686 for 32 bits build.
> >>
> >> Is there a macro that would correctly extends in all cases (x86_64, i686
> >> and armv7l)? If not, I will use grep to get the proper folder name.
> >
> > Note: the advice below is provided without looking at the code.
> >
> > armv7hl is correct (it's set by build environment). You could patch the
> > package's build system to use that instead of armv7l and then you could
> > use the first macro.
> >
> > Regards,
> > Dominik
> >
> Maybe there is a solution based on this. I don't know how to patch the
> build system to use armv7hl. I found a `--plat-name` option in distutils
> but it is only available for windows.
> The most promising option I have right know is the `--build-lib` option
> which allows me to choose how the build directory is named. So instead
> of relying the the default
> build/lib.%{_os}-%{_target_cpu}-%{python3_version} I can choose
> build/lib for instance which removes the problem of arch.
> However, there are two problem with this option:
> - I don't seem to be able to use the %py2_build macro with the option. I
> tried %py2_build --build-lib but rpm says that option '-' is not
> recognized. Is there a way to use the macro with the option (other than
> using the very ugly `eval "$(rpm --eval %%py2_build) --build-lib
> %{build_lib}"`)? Or should I just not use the macro?
> - `setup.py install` doesn't support `build-lib` and will always try to
> install the lib from the default directory. This is not a big deal as I
> can use `%{__python2} setup.py install_lib -O1 --skip-build --build-dir
> %{build_lib} --install-dir %{buildroot}%{python2_sitearch}`afterwards to
> complete the installation. Are you aware of a better solution?

--build-dir=build/lib.%{_os}-%{_target_cpu}-%{python3_version} sounds like
a good default and we are discussion on adding that by default, which would
fix some problems with noarch builds. And at the same time this issue would
be fixed.

But normally, if I need to modify PYTHONPATH, I use wildcards, doesn't that
work here in that case also?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.fedoraproject.org/pipermail/packaging/attachments/20150806/a8cfe52c/attachment.html>

More information about the packaging mailing list