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