On 1 April 2018 at 01:18, Brett Cannon <br...@python.org> wrote:

>
>
> On Fri, Mar 30, 2018, 09:13 Trishank Kuppusamy, <
> trishank.kuppus...@datadoghq.com> wrote:
>
>> Hi Nick,
>>
>> Long time no see --- hope everything is well on your side :)
>>
>> First of all, thanks Mark, Thomas, and everyone else for your hard work
>> on manylinux2010 --- I'm excited about this release, as I'm sure many
>> others are!
>>
>> This may be the wrong thread to discuss this,
>>
>
> It is, so I've forked the conversation 😉
>
> and
>
>> I haven't looked too deeply into it, but are there plans to support
>> container-specific Linux distros like Alpine that use musl instead of glibc?
>>
>
> Are there other container-specific distros other than Alpine that people
> use widely?
>
> I'm guessing the answer is "no," but I'm curious to hear what others think
>> on the subject.
>>
>
> The discussion of distro-specific wheels has been brought up. I believe
> they are technically supported if you have your own index server, but PyPI
> doesn't, I believe, to keep an explosion of wheels people can't widely use
> down.
>

The main reason PyPI doesn't currently support distro specific wheels is
because there isn't a compatibility tagging spec for them that's reasonable
to use on a public index server - they currently end up being tagged as
generic "linux" wheels. You can live with that on a private index server
like the one that https://galaxyproject.org/ runs, but it would be
incredibly confusing on PyPI.

As far as I know,
https://mail.python.org/pipermail/distutils-sig/2015-July/026617.html is
still the most complete write-up we have of a potential way to fix that,
which is to:

1. extend the default Linux platform tag to include the ID and VERSION_ID
fields from /etc/os-release (credit to Galaxy Project's Nate Coraor for
that core concept)
2. define a config file under /etc/python/ that distros can use to change
both the build tag (e.g. allowing CentOS users to emit RHEL compatible
wheels, or Ubuntu users to emit Debian compatible ones), and a list of
binary compatible distro tags (e.g. allowing CentOS to consume RHEL tagged
wheels, Ubuntu to consume Debian tagged wheels, and other musl based
distros to consume Alpine tagged wheels)
3. define an equivalent per-virtualenv file to override the settings from
(2)
4. update pip/setuptools/twine/warehouse/etc to account for the new
compatibility tag variant

One useful aspect here is that older clients will just ignored the new tags
as "not a match", which means there shouldn't be any significant backwards
compatibility hurdles.


> Currently, if you want to cover all formats PyPI supports you need to
> produce 5 wheels. Adding a musl-based wheel format would bump that to 7 (as
> I assume musl supports 23 and 64-bit OSs).
>
> For me, the questions of whether to support musl-based wheels on PyPI is
> will there be enough users to justify the cost to all project maintainers
> to produce 2 more wheels per release and what would the
> manylinux-equivalent spec look like (since it would have to be generic and
> not specific to Alpine)?
>

Honestly, I think the main benefit of heading down this road will be to
allow folks to cache their custom wheel builds more effectively, so I'm not
especially worried about making it generic (beyond the platform level
config file suggested above).

That said, if there were to be a significant growth in non-manylinux Linux
wheels on PyPI, I'd expect them to be for the official Docker Inc base
Python images, which are Alpine based, and hence can't use the glibc-based
manylinux binaries.

Cheers,
Nick.

-- 
Nick Coghlan   |   ncogh...@gmail.com   |   Brisbane, Australia
_______________________________________________
Distutils-SIG maillist  -  Distutils-SIG@python.org
https://mail.python.org/mailman/listinfo/distutils-sig

Reply via email to