On 01.11.2017 7:33, Nick Coghlan wrote:
There's no such thing as "a set of compiler flags that unequivocally
defines ABI." Any proprocessor macro that changes a type or a
subroutine's signature will result in an incompatibility, too. So,
"ABI" can only be defined on a case by case basis.
CPython is compiled with the corresponding /arch and doesn't use
SSE2 intrinsics (I did check that cl.exe doesn't trigger an error on
the latter even with lower /arch). That's enough to guarantee the
instruction set that it uses. So, I don't see a problem here.
Having to download a wheel just to check compatibility is a deal
breaker. There are dozens of them for a given package (pip examines
old versions, too), and each one can weigh quite a bit. With more
flavors to add, the number will multiply. Metadata required to check
if the wheel is suitable for install must be available separately
from its contents.
Currently, pip examines the triplets in package names.
What I'm suggesting is to put/append something more specific than
"win32" into it when applicable.
I checked it out.
It's not applicable here for the aforementioned reason, and one more
thing.
A package's file name should be unique - to easily distinguish it
from others. The _one obviouls way_(tm) is to make it contain all
the metadata fields that distinguish this package from others.
I mean, you _can_ make metadata available otherwise (with some API,
in a small companion file etc.) -- but that'd be suboptimal to
simply a meaningful file name that will go with this file wherever
it goes.
(For an illustration why this is an anti-pattern, you can check out
a WSUS server contents -- that's an epitome of meaningless
filenames, you can't know anything about a file without a database
query. Not only is that grossly inconvenient; if the database goes
under, the entire multigigabyte storage becomes useless.)
--
Regards,
Ivan;