Discussion:
Failing build of python-moin on SLE_11_SP3
Olav Reinert
2014-09-10 18:30:39 UTC
Permalink
I'm the maintainer of the python-moin package:

<https://build.opensuse.org/package/show/devel:languages:python/python-moin>

The build succeeds on all platforms for which the package is enabled, except
on SLE_11_SP3, where it succeeds for i586 but fails for x86_64.

To me it appears to be a problem with the python build infrastructure, because
on that particular platform and architecture, python files end up in the wrong
place. But I may well be wrong - perhaps a python packaging expert can take a
look and figure out what's going on?

Regards,
Olav
--
To unsubscribe, e-mail: opensuse-packaging+***@opensuse.org
To contact the owner, e-mail: opensuse-packaging+***@opensuse.org
Andrew Daugherity
2014-09-10 19:40:57 UTC
Permalink
I would not consider myself a "python packaging expert", but I've done a bit of it for our internal repo.

According to https://en.opensuse.org/openSUSE:Packaging_Python#File_lists
there are two macros:
"""
• %python_sitelib expands to /usr/lib/pythonX.Y/site-packages. This is the install location for platform-independent modules.
• %python_sitearch expands to %{_libdir}/pythonX.Y/site-packages, that is, either /usr/lib or /usr/lib64, depending on your architecture. This is the install location for platform-dependent modules.
"""

Since the build log is complaining about a noarch package installing stuff under /usr/lib64, I see two options:
* use %python_sitelib, not %python_sitearch
* make the package not be noarch


I think you may have to use the latter solution for SLES 11 -- looking at /usr/lib/rpm/macros, both s11sp3 and opensuse 12.3 define them like this:
%python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; import sys; sys.stdout.write(get_python_lib())")
%python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; import sys; sys.stdout.write(get_python_lib(1))")

However on SLES 11, both of them return /usr/lib64/python2.6/site-packages. Looking at the source (/usr/lib64/python2.X/site-packages/distutils/sysconfig.py, part of python-base), there's different logic in the opensuse one to return 'lib' for certain cases and sys.lib (i.e. 'lib' on i586, 'lib64' on x86_64) in others, which simply isn't present in the SLES version.



TL;DR: It appears you need to wrap your noarch setting inside a %suse_version check that excludes SLES 11.


-Andrew
Post by Olav Reinert
<https://build.opensuse.org/package/show/devel:languages:python/python-moin>
The build succeeds on all platforms for which the package is enabled, except
on SLE_11_SP3, where it succeeds for i586 but fails for x86_64.
To me it appears to be a problem with the python build infrastructure, because
on that particular platform and architecture, python files end up in the wrong
place. But I may well be wrong - perhaps a python packaging expert can take a
look and figure out what's going on?
Regards,
Olav
--
--
To unsubscribe, e-mail: opensuse-packaging+***@opensuse.org
To contact the owner, e-mail: opensuse-packaging+***@opensuse.org
Loading...