On Mon, Jun 3, 2013 at 12:25 PM, Chris Barker - NOAA Federal <chris.barker@noaa.gov> wrote:
On Fri, May 31, 2013 at 3:38 PM, Daniel Holth <dholth@gmail.com> wrote:
Wheel already supports compound tags. Just like py2.py3-none-any a tag
Is this from PEP 425? It's still a little unclear to me exactly how those tags are to be used, but, yes, this seems to be the right direction.
py3-none-x86.ppc (with real platform names) would work. Does that make sense for Mac?
hmm, for one, I"m confused about the "Python Tag" vs. the "ABI Tag" vs. the "Platform Tag" -- I guess these all get mushed together in the filename?
but a few issues anyway: it looks like the platform tag has the OS and a architecture in one, so would a universal bild on the mac be:
macosx_10_3_i386.ppc or macosx_10_3_i386.macosx_10_3_ppc
I'm thinking the latter, though it gets pretty wordy:
A potential full name:
my_package-3_2-cp27-cp27-macosx_10_3_i386.macosx_10_3_ppc.whl
(Im a little confused about python version tag vs. ABI tag, in the case of a compiled extension...)
But a potential confusion -- in this case, having two platform tags indicates that _both_ are present, rather than one thing that works with either. Maybe that would always be the case with platform.
So if that's how the wheel is specified, we still need the other side of the process:
Installing:
A "universal" macpython binary needs to know that it is universal (distutils.util.get_platform() returns only the currently running version). Once that is know, the installer needs to make some choice:
If a matching universal binary is found -- use it If a non-universal binary is found that matches the currently running python -- then what? install it with a warning? raise an exception?
-Chris
The Python Tag is the Python implementation or language version. It lets you indicate compatibility with only CPython or Jython or PyPy even if you do not have compiled extensions: cp27, py27, py2, py3 The ABI tag is the Python ABI. The difference is that it will indicate "d"ebug "m"alloc, "u"nicode: none (also means "we don't know"), cp33dm, abi3 The platform tag is the OS+architecture. They get joined together with a dash '-'.join(python, abi, platform) For compatibility matching the tags are expanded to the Cartesian product of the string.split('.') of each of the python, abi, and platform tags. This is mostly only useful when only one part of the tag is compound. http://www.python.org/dev/peps/pep-0425/#compressed-tag-sets There used to be a rule about preferring packages with the fewest number of tags in case of a tie but I can't seem to find it now. It's probably not very important. If this doesn't work then it might be more useful to invent a tag like "macosx_10_3_universal" for some value of universal. Daniel Holth