[Fedora-packaging] RPM macro to match build arch

Jujens jujens at jujens.eu
Sat Aug 1 11:37:49 UTC 2015


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?

Regards,

-- 
Julien Enselme aka Jujens
http://www.jujens.eu/


More information about the packaging mailing list