On 21.01.2016 17:13, Nathaniel Smith wrote: > On Jan 21, 2016 2:07 AM, "M.-A. Lemburg" <m...@egenix.com> wrote: >> >> On 21.01.2016 10:31, Nick Coghlan wrote: >>> On 21 January 2016 at 19:03, M.-A. Lemburg <m...@egenix.com> wrote: >>>> By using the version based approach, we'd not run into this >>>> problem and gain a lot more. >>> >>> I think it's better to start with a small core that we *know* works, >>> then expand later, rather than trying to make the first iteration too >>> wide. The "manylinux1" tag itself is versioned (hence the "1" at the >>> end), so "manylinux2" may simply have *more* libraries defined, rather >>> than newer ones. >> >> My argument is that the file based approach taken by the PEP >> is too limiting to actually make things work for a large >> set of Python packages. >> >> It will basically only work for packages that do not interface >> to other external libraries (except for the few cases listed in >> the PEP, e.g. X11, GL, which aren't always installed or >> available either). > > The list of allowed libraries is exactly the same list of libraries as are > required by the Anaconda python distribution, so we *know* that it works > for about a hundred different python packages, including lots of tricky > ones (the whole scientific stack), and had been tested by tens or hundreds > of thousands of users. (I posted a link above to some actual working, > compliant pyside and numpy packages, which we picked for testing because > they're particular interesting/difficult packages that need to interface to > external libraries.) Yes, various extra tricks are needed to get things > working on top of this base, including strategies for shipping libraries > that are not in the baseline set, but these are problems that can be solved > on a project-by-project basis, and don't need a PEP.
And that's the problem: The set is limited to the needs of the scientific community and there to the users of one or two distributions only. It doesn't address needs of others that e.g. use Qt or GTK as basis for GUIs, people using OpenSSL for networking, people using ImageMagick for processing images, or type libs for type setting, or sound libs for doing sound processing, codec libs for video processing, etc. The idea to include the needed share libs in the wheel goes completely against the idea of relying on a system vendor to provide updates and security fixes. In some cases, this may be reasonable, but as design approach, it's not a good idea. > [...] >> Another detail we have found when external dependencies >> is that some platforms use different names for the libraries, >> e.g. RedHat has a tendency to use non-standard OpenSSL >> library names (/lib64/libssl.so.10 instead of the more >> common libssl.so.1.0.0). >> >>> The key is that we only have one chance to make a good first >>> impression with binary Linux wheel support on PyPI, and we want that >>> to be positive for everyone: >> >> Sure, but if we get the concept wrong, it'll be difficult >> to switch later on and since there will always be libs not in the >> set, we'll need to address this in some way. > > There's no lock-in here -- any alternative approach just needs its own > platform tag. Pypi and pip can easily support multiple such tags at the > same time, if more sophisticated proposals arise in the future. In the mean > time, for packagers targeting manylinux is at least as easy as targeting > windows (which also provides very few libraries "for free"). Yes, there's no lock-in, there's lock-out :-) We'd simply not allow people who have other requirements to upload Linux wheels to PyPI and that's not really acceptable. Right now, no one can upload Linux wheels, so that a fair setup. Using an approach where every single group first has to write a PEP, get it accepted and have PyPI and pip patched before they can upload wheels to PyPI does not read like a community friendly approach. I also can't imagine that we really want proliferation of "linux" tags for various purposes or even for various versions of library catalogs. What we need is a system that provides a few dimensions for various system specific differences (e.g. bitness, architecture) and a recommendation for library versions of a few very basic libraries to use when compiling for those systems. I believe the PEP is almost there, it just needs to use a slightly different concept, since limiting the set of allowed libraries does not provide the basis of an open system which PyPI/pip/wheels need to be. -- Marc-Andre Lemburg eGenix.com Professional Python Services directly from the Experts (#1, Jan 21 2016) >>> Python Projects, Coaching and Consulting ... http://www.egenix.com/ >>> Python Database Interfaces ... http://products.egenix.com/ >>> Plone/Zope Database Interfaces ... http://zope.egenix.com/ ________________________________________________________________________ ::: We implement business ideas - efficiently in both time and costs ::: eGenix.com Software, Skills and Services GmbH Pastor-Loeh-Str.48 D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg Registered at Amtsgericht Duesseldorf: HRB 46611 http://www.egenix.com/company/contact/ http://www.malemburg.com/ _______________________________________________ Distutils-SIG maillist - Distutils-SIG@python.org https://mail.python.org/mailman/listinfo/distutils-sig