On Fri, 21 Dec 2018 at 12:08, Sumana Harihareswara <s...@changeset.nyc> wrote:
> Brett, did you end up making progress on this? If not, would you be open > to someone else picking it up? > The complete outline can be found in an email I sent to pypa-dev and I have started work by trying to add PEP 425 support to 'packaging': https://github.com/pypa/packaging/pull/156 . -Brett > > Thanks! > > -- > Sumana Harihareswara > Changeset Consulting > https://changeset.nyc > > On 3/5/18 1:01 PM, Brett Cannon wrote: > > Thanks for the extra details, Nick! I have some documentation to read on > > some projects now that I have a complete list, but once that's done I'll > > come back here with my idea. ;) > > > > On Fri, 2 Mar 2018 at 21:50 Nick Coghlan <ncogh...@gmail.com> wrote: > > > >> On 3 March 2018 at 06:55, Brett Cannon <br...@python.org> wrote: > >> > >>> I have a project idea, but before I start it I need to make sure that I > >>> have the high-order steps necessary to go from `pip install pip=9.0.1` > to > >>> it actually ending up on disk. Now I'm only considered with > >>> modern/bleeding-edge, spec-based stuff, so PEP 517/518 and no > setup.py, etc. > >>> > >>> Anyway, if people can point out any steps the below outline is missing > I > >>> would appreciate it. Thanks! > >>> > >>> > >>> 1. Specify package requirement > >>> 1. Translate name to PyPI-compatible name > >>> 2. Tease out requirement details (e.g. version, markers, etc.) > >>> 2. Check if package is already installed > >>> > >>> > >> Depending on the installer design, a local download/build cache may be > >> checked before checking PyPI (and since you include a caching step > later, > >> you'll presumably want to cover the caching step as well). > >> > >> > >>> > >>> 1. Check PyPI for package > >>> 2. Choose appropriate file > >>> 1. Get list of files > >>> 2. Calculate best-fitting wheel > >>> 3. Fallback to .tar.gz sdist > >>> 3. Download file > >>> 4. If sdist: > >>> 1. Extract > >>> 2. Read pyproject.toml > >>> 3. Create venv > >>> 4. Install build dependencies > >>> > >>> > >> After installing the static build dependencies, you also need to query > for > >> any dynamic build dependencies and install them if they're requested: > >> https://www.python.org/dev/peps/pep-0517/#get-requires-for-build-wheel > >> > >> This build dependency installation step can get arbitrarily complicated > if > >> you allow build dependencies to be installed from source, so the initial > >> implementation in pip requires that build dependencies already be > available > >> as wheel files (either on the index server or in the local artifact > cache). > >> > >> Cheers, > >> Nick. > >> > >> -- > >> Nick Coghlan | ncogh...@gmail.com | Brisbane, Australia > >> > > >