On Thu, Jul 30, 2015 at 07:34:48PM -0500, Jason L Tibbitts III wrote:
After some additional discussion and cleanup, I've gone ahead and moved my drafts into place in the main guidelines. Please let me know if I've made any mistakes or typos or left out anything important.
There's a dead link in "Example common spec file".
However, there is one thing I'm trying to understand about the new guidelines (which came from one of the submitted drafts, not something that I wrote). They say:
" The following is a very simple spec file for a module building for both python2 and python3. It builds both versions in the same directory; this is possible because setuptools uses different build directories for different python versions and architectures. In addition, python3 will include the version of the interpreter in the names of generated files, so the build products don't conflict. (Of course this only works if a package builds for a single python2 version, which should always be the case in Fedora.) "
Which is fine, except that I must be missing something about the second sentence. Setuptools in f22 and rawhide (which I know are different versions) seems to use "build" regardless of which python version is used to execute setup.py. Am I misunderstanding what that sentence is trying to tell me?
I wrote that. I turns out, which I didn't know at the time, that this is only true for binary modules (for example python-systemd has build/{lib,temp}.linux-x86_64-{2.7,3.4}). For pure-python modules it seems to use a single build directory, but separate build/scripts directories.
[ It seems that there's no nice way to tell setuptools/distutils/distribute to always use separate build directories. It still uses the same build directory even if 2to3 translation is specified in the setup.py file, which is probably a bug. In a pinch, it is possible to override the build dir with --build-lib. So something like this works, even if 2to3 is used: %{__python2} setup.py build --build-lib build/2 %{__python3} setup.py build --build-lib build/3 Fortunately this is rarely necessary.]
So I think the detailed justification should be removed, and the first paragraph of "Example common spec file" replaced with something like this:
"The following is a very simple spec file for a module building for both python2 and python3. It builds both versions in the same directory; this is possible because build products for different versions of Python usually do not conflict."
For the package I'm using for testing (python-requests) it turns out that the results of %py2_build and %py3_build are completely identical, but this might just be coincidence.
Zbyszek