On 10.4.2017 17:25, Todd Rme wrote:
In devel:languages:python, the new singlespec approach is causing problems with SLE_12_SP2_Backports build target. The issue is that this build target fails if a package includes files from any package in SLE, and packages that have this problem include some really critical ones like setuptools.
This is a problem because in most cases only the python2 versions of the files are available from SLE, but the build failure means the python3 versions do not get published. This results in critical python3 packages needed for singlespec builds not being available. Currently more than half of the packages are either disabled or unresolvable, and that number is going to grow to almost every package as the singlespec conversion continues.
Does it mean that we are not allowed to use "python2-setuptools" from local repository because "python-setuptools" is part of SLE and should be used in the SLE version? Or does the build of "python2-setuptools" fail because the resulting RPM has file conflicts with a package present in SLE? In any case, I'm confused as to what is the purpose of the Backports repository. Are people expected to add it straight from OBS and install OBS-built RPMs? So they get "python-foo" version from SLE and "python3-foo" from d:l:py? What if the SLE version is too old, or the d:l:py version is too new? Would only building "python3-foo" help at all?
The simplest solution would be to just disable that repo by default. However, if there (or could be) some way to selectively disable building python2 versions of specific packages just for that build target it might be better.
I know that you can add per-repository macros in prjconf. Not sure about per-package. Adding this configuration to the individual spec files seems ugly but possible if necessary... In any case, it would be a question of "%undefine have_python2" and fixing the bugs that prevent it from working. We could also create a custom version of python-rpm-macros that contains the "python2 blacklist" as part of itself. As long as it is limited to d:l:py(SLE12_Backports), this might very well be the cleanest solution -- no need to touch individual specs. m.