Re: Converting PyPI to feeds

Thomas Leonard <[email protected]> Wed, 3 May 2017 20:09:06 +0100
Newsgroups gmane.comp.file-systems.zero-install.devel
Message-ID <CAG4opy-nL5c_zXMaZhLkQPiWZVcQuf7LhoO5Hux8hfS3z_TYtQ@mail.gmail.com>
On 2 May 2017 at 15:06, Tim Diels <[email protected]> wrote:
> Dear all,
>
> An update on the PyPI to 0install conversion + feature request:
>
> I've got most of the support for Python source distributions implemented but
> it turns out some important packages (e.g. numpy) only provide wheels (a
> type of binary package). Some wheels need to match the ABI of the Python
> interpreter (to name just one constraint). Ideally the wheel with the most
> specific ABI and architecture that matches the selected interpreter is used.
> I plan to implement this as follows as a temporary solution to try things
> out:
>
> - python.xml: manually written feed containing CPython, PyPy, ...
>
>       <implementation ...>
>           <require interface="python_abi.xml" version="0|1|2|4|...">
>           ...
>
> - python_abi.xml: manually written
>       <implementation id='py3_3' version='2'/>
>       <implementation id='py3' version='1'/>
>       <implementation id='none' version='0'/>
>       ...
>
> - some_wheel.xml
>       <impl>
>           <require interface=python_abi.xml version="1|2">
>
> Versions encode ABI names such as 'py3'. Version numbers are chosen such
> that more specific ABIs will be chosen when possible. The ABI
> implementations are empty as they only serve to constrain which
> implementations may be selected. The Python implementation provides ABIs
> py3_3, py3 and the special 'none' for those wheels which do not care about
> the ABI.
>
> When moving on from a temporary solution, it would be useful to have a way
> of defining a property, its values, an ordering between values and requiring
> properties. Currently these values needn't form a hierarchy. So for example:
>
> - property.xml
>       <value>py3_3</value> <!-- plus a way to express ordering of values,
> perhaps simply the order in which they appear in the xml -->
>       <value>py3</value>
>
> - python.xml
>       <implementation ...>
>           <require property="property.xml" value="py3_3|py3|...">
>           ...
>
> Or put yet another way, it's a classification with an ordering that can be
> depended on with <requires>.

Related: http://zero-install-devel.narkive.com/9Iijv2KE/linkage-feature


-- 
talex5 (GitHub/Twitter)        http://roscidus.com/blog/
GPG: 5DD5 8D70 899C 454A 966D  6A51 7513 3C8F 94F6 E0CC

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot