-
Notifications
You must be signed in to change notification settings - Fork 526
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
RFC: Changes in Paket Global Tool #3623
Comments
Shouldn't we just wait for SDK v3 which apparently introduces repro-local tools or something like that? Would the bootstrapper download the mono/framework dependent tool as today? -> You still need mono/Windows? |
I think current proposal for repo-local tools has its own problems but, TBF, I think it's orthogonal issue - I'm worried about people using/wanting to use global installation and having bad behavior.
I think we should download Core version of Paket (something something "Core is new .Net Framework"). Latest or pinned, just like magic mode bootstrapper does it nowadays.
We probably could use the same version of dotnet runtime that bootstrapper is running on, I guess we should be able to get this information (?) |
you also have the CWD of the user when they would run |
Ok let's do this! |
On a build server, I have some concerns with the global tool. It may run different jobs, requiring different versions of paket. Honestly, I'm quite happy with the isolated, self-contained nature of the local paket. Allowing different versions of the .NET-Runtime in parallel as well as self-contained application deployment is also a huge benefit of .NET Core. Regarding the two problems pointed out in this issues description:
I'd like to propose a different approach:
The first issue, of not being able to pin paket's version within the repo is addressed: Use a I have such a setup running on a mixed Windows/Linux environment and I'm quite happy with it.
I can prepare a PR with my bootstrapper.exe-free variant of |
Now that local tools have arrived and work reasonably well, I think we should get rid of the bootstrapper and if anything make Paket update/edit the manifest version. |
|
Users should get into the habbit of pinning the version anyway. We cannot keep telling people to use a lockfile and then use a floating version in paket.
It isn't breaking, we'd just change the recommendation at this point. The rest is not really an argument. Can you say "why" having a 'common'/standardized way to add dotnet based tools to your repository is a bad thing? Or "why" we should continue investing time building our own? Having the version in the deps file was imho always a "hacky" way of doing things, as long as you have to manage the paket version by hand it wasn't really "that" useful (you could have used a bootstrapper argument just as well in build.sh for example). Now you can use dotnet sdk just like lots of other tools. |
Problem
At the moment we can install Paket as a global .Net Core tool with
dotnet tool install paket -g
. It's really nice delivery strategy consistent with the direction in which whole .Net world is moving and consistent with the tool distribution strategies in many other ecosystems.However it currently installs particular version of Paket which means
paket.dependecies
filepaket.bootstrapper.exe
back in the days, or by using Bootstrapper in magic mode nowadays.This is hugely problematic because it's different from the "normal" Paket behavior.
Proposed Solution
My proposal would be distributing Paket.Bootstrapper (in magic mode, called
paket
) instead of Paket as a global tool.This would solve per-repo versioning problem we have right now - Bootstrapper in magic mode is either respecting pinning in
paket.dependencies
files or getting latest version. In such case updates of the Paket .Net Tool (dotnet tool update paket -g
) would be necessary only when we have Bootstrapper update (which is not as often as Paket update)Work plan
paket
(due to behavior of the Bootstrapper Magic Mode this shouldn't be a breaking change for users)CC: @forki @isaacabraham @baronfel @vbfox @enricosada
The text was updated successfully, but these errors were encountered: