JuliaPackaging / PkgServer.jl

MIT License
41 stars 14 forks source link

Advertisement of the registries that PkgServer knows about #26

Open mbauman opened 4 years ago

mbauman commented 4 years ago

Since a great use of a Package Server is to coordinate work across multiple registries — potentially a private registry in addition to the General one — it'd be helpful if the Package Server could advertise which registries are available. This could allow for two niceties on the client side:

and/or

StefanKarpinski commented 4 years ago

I think we should actually do more than this: when you update and you're talking to a Pkg server, you should automatically install and update all the registries that it advertises. That way you set the Pkg server and you automatically know about all the right packages. Making people mess about with adding and removing registries just doesn't work. I'd like to do this for 1.5 if I can get everything done in time.

StefanKarpinski commented 4 years ago

Oh, this also removes any need for special casing General: instead we make pkg.julialang.org the default pkg server and when users connect to that, they get General "for free".

GunnarFarneback commented 4 years ago

It looks to me like the /registry resource effectively already advertises which registries are available and that everything else are Pkg features?

StefanKarpinski commented 4 years ago

Yes, this is more of a Pkg issue.

GunnarFarneback commented 4 years ago

I guess I'm a little slow on the uptake. So the /registry resource will only give direct information about the registry UUIDs, and currently the only way to add a non-General registry from a Pkg server is by UUID? Well, if that's the case it's not gonna fly. How can I help get this off the ground?

StefanKarpinski commented 4 years ago

The notion is that you set your pkg server—or use pkg.julialang.org by default—and the pkg server advertises which registries is serves—in the case of pkg.julialang.org only General. The client would automatically install any registries advertised by its current pkg server. The client could also automatically update any registries installed as git repos since it can do so by git pulling them and they were presumably manually installed (except for legacy General registries). This arrangement largely moves management of what registries to look in from the client to the server.

GunnarFarneback commented 4 years ago

Yes, that plan sounds good. I'm more wondering about what can be done to make it a reality sooner rather than later. Or is this earlier comment

I'd like to do this for 1.5 if I can get everything done in time.

already under control?

StefanKarpinski commented 4 years ago

I've been doing a major Pkg rewrite from the resource acquisition layer up, but it's not going to be ready in time for the 1.5 feature freeze, so I'll have to pause that and figure out where to add this functionality in the current architecture this week.

GunnarFarneback commented 4 years ago

I have a working PkgServer set up now that serves General and a private registry, so I can at least help with testing a solution. On 1.4 it does work to do registry add by UUID, but that's obviously not so convenient.

fredrikekre commented 4 years ago

registry add with no arguments could install all known registries.