mottosso / rez-installz

Native Rez package manager
The Unlicense
2 stars 0 forks source link

Design Document #1

Open mottosso opened 5 years ago

mottosso commented 5 years ago

A Rez package repository.

$ rez install python-3.7

Where packages reside as Git repositories on GitHub, like vcpkg.

Such as:

mottosso commented 5 years ago

Gather as many existing scripts as possible.

Most if not all of these need rewriting to include support for Windows and remove assumptions on what exists in its current working directory, e.g. Maya and Nuke.

mottosso commented 5 years ago

Stage 0 - No integration, no central repo

$ rez env installz -- install https://github.com/mottosso/rez-scoopz

Which is the equivalent of:

$ git clone https://github.com/mottosso/rez-scoopz
$ cd rez-scoopz
$ rez build --install

Stage 1 - No central repository

As a plug-in.

$ rez install https://github.com/mottosso/rez-scoopz

Stage 2 - Central Repository

$ rez install rez-scoopz
mottosso commented 5 years ago

Like pipz and scoopz, we'll also want packages mentioned in requires = [] included in an install. I think for that, we could either let the user specify URLs as requirements, or let that wait till Stage 2 such that a name and version can get mapped to a URI.

mottosso commented 5 years ago

It would be great having rez install available per default with bleeding-rez, but we would still want to keep some form of connection to this project, so that it can get updated independently.

$ pip install bleeding-rez
$ rez install
# Running post-install script..
# Installing default packages:
#  - platform-linux
#  - arch-x86_64
#  - os-centos-7
#  - python-3.7
#  - bleeding-rez-2.34.1
#  - installz-1.0.0
# All done! Use rez install <name> to install any
# package from Rez's online package repository
$ 

And then, once there is a new version of installz..

$ rez install installz --update

From here it'd work like pip, capable of self-updating itself. With that, we could also get rid of rez bind --quickstart.

mottosso commented 5 years ago

This should also handle "wheels", that is pre-built binaries of Rez packages. The benefit are akin to pip install PySide2 and either getting the pre-built binary or having to build it yourself. Building it yourself requires all relevant compiler and compiler libraries, whereas a pre-built binary does not.

This means we'll need somewhere to host binaries, such as bintray or GitHub Packages

mottosso commented 5 years ago

Master Index

$ rez install python-3 hdf5 pyblish_base

This should fetch python-3 from Scoop, hdf5 from VcPkg and pyblish_base from Pip. Where install correlates requests with a "master index" of {package name: [repository]}, whereby each package can have multiple sources. Normally, the first source is picked. Alternatively, if you wanted to e.g. pick physx-4 from Conan rather than VcPkg you could..

$ rez install physx-4 --source=conan
mottosso commented 5 years ago

Master Source

Entries into the index may be added by plug-ins, like pipz and scoopz.

$ rez install pipz
# pipz index added

Whereby you can either call..

$ rez env pipz -- install pyblish_base-1.8.0

Or..

$ rez install pyblish_base-1.8.0