-
-
Notifications
You must be signed in to change notification settings - Fork 62
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
Feedback / Experience / Adventures meta-issue #19
Comments
Discovered I've been trying to run |
glad to hear it ^_^
ahh, yeah, i'm definitely open to improvements if you have ideas! have contemplated making the discovery process a bit more robust/overzealous if there's no config, or some kind of unofficial registry so where folks have CI builds we could link to their binaries without
sounds like a great idea to me! given it's already interactive a prompt w/ ci flag to automagically do it would probably make sense? |
That sounds great! I vaguely remembered seeing some interactive prompts already in cargo-binstall hence my suggestion. |
It seems that both terms are used in a confusing way : |
It's hard to understand why
Does the |
thanks for the reports! wrt. wrt. format, those are actually two (unfortunately named) different concepts, the first refers to the archive format (eg. it would be nice to rename these to highlight the difference, and it might make sense to include the |
for the |
This from feedback in #19: > wrt. bin-dir and bin-path, this appears to be a typo / should all be called bin-dir This is only a readme fix afaict, I changed all occurences of `bin-path` in there to `bin-dir`. > wrt. format, those are actually two (unfortunately named) different concepts, the first refers to the archive format (eg. .tgz), the second to the binary format (which needs a .exe appended for windows). This introduces two new substitutions: - `binary-ext` is the old "`format` in `bin-dir`" - `archive-format` is the old "`format` in `pkg-url`" Contents are unchanged: `binary-ext` includes the dot, `archive-format` doesn't. That makes it easy to upgrade and also personally I slightly prefer it that way. The old contextual `format` is still available, "soft deprecated": it will be accepted silently so everything will work, but all documentation will use the new syntax. In the future we could move to a "hard deprecated" model where installing a package that uses `format` will warn the user / tell them to report that to the maintainer. I don't think we'll ever really be able to remove it but that should be good enough. A cool new feature is that `binary-ext` is now usable in `pkg-url`, which will be useful for raw binary downloads: ```toml pkg_url = "{ repo }/releases/download/v{ version }/{ name }-v{ version }-{ target }{ binary-ext }" ``` I've also added a bunch of tests to GhCrateMeta around the templating for `pkg-url`.
Would it be possible to add a scan feature to see what you have installed via cargo install and list whether they are also able to be installed via cargo binstall? Sort of a binstall version of this: |
Something like "install from Cargo.toml" would be nice. We have a case where some people joined the team and didn't know the tools and just listing them one by one can be a long process on multiple machines. Also this would give us the oportinity to profit from tooling like Also, tried to add cicd with cross and a lot more to just have But in general, just awesome, saves a lot of time |
Oh, that's interesting! Are you looking for a list of crates or also something like having version requirements or a lockfile? |
Yes, well would be nice. Just has been a small pain point for me today. Me personally, I have a small repo with a So lets say if Edit: Also just had a thought about rust equivalent tooling to like npms |
Just saw that there is some usage report thing going on for
Over at |
The usage report for quickinstall is because:
I don't personally want to collect tracking information; Ryan may have a different opinion. It's a service to keep up, potentially bills to pay, security to be looked after; there's privacy considerations. It's a very different ballgame to just providing a tool. Additionally, I don't see the interest in maintaining two tracking services. The features you propose could very well be built into quickinstall's solution; we even have a different user agent so provenance can in theory be differentiated. Also note that binstall pulls directly from the urls, it doesn't transit or cache, so if you do have binaries up you can get usage stats from those. For github release artifacts, that information is exposed in the github UI (and API). |
yep we're on the same page @passcod, if we can feed better user-agent information (or anything else) to the APIs we're interacting with that could be neat, but definitely prefer no tracking here. (thinking about feedback, we could have a |
So, during the last weekend I made some PRs, some intentionally (more or less planed) and some more spontaneousas I ran into some small issues or saw some potential. You @ryankurte engeuraged me to open issues about some things. Just to reiterate, I like this project, so I would like to contribute. Its up to you what you accept, ignore or reject. I'm motivated by learning and also by hearing/reading others opinions. In order to proceed, I listed some of my wishes/motivations below, I would love to hear from you on which you would like to see PRs, issues or general discussions, or plainly reject. These may include some of the things already merged but may paint the bigger picture Some ideas:
More spontaneous ones:
If you feel like discussions or comment threads could be too big, feel free to email me |
It's great to see enthusiasm for this project! It's a big list and there's certainly a lot of potential. I think primarily what we're looking at moderating here is going too fast and not justifying complexity which will come back to bite us in the long run. One thing in particular you've touched on is this:
That would be great success! It would also mean that a breaking change will break thousands of uses. I think we want to avoid that, and a good way to avoid this is to be careful on what we implement now so we are less likely to revisit it later. We can move a tad faster than Rust itself ;) but let's not go too far in the "move fast and break things" direction either. One thing I see often in open source contributions vs open source maintainership is this idea that Ryan touched on a bit earlier: we want to fix problems that exist. But it's not enough that you have the issue. As maintainers, we're looking at the software as it is used by a lot of people. You having the issue is one person. Sometimes it's obvious that something will affect more people. Sometimes it's much less so. Other times, an issue might be better solved outside of this project, and "fixing" it here is a false herring. We also want to consider the direction for the project. As a secondary maintainer, this is something that I'll often defer to Ryan about, as it's his project in the first place, right? It's things like, do we want to be a one-stop-shop where you hit So, let's take a step back, let's take a breath, let's talk some things out and see where we fall. I think also something to keep in mind is both Ryan and I are fairly busy and don't have a lot of time to dedicate to this project: so it's both great to see progress being made, and a bit overwhelming at the same time.
Can you expand more on this? I can't see how that would fit/work with what diesel is. |
I am working on adding |
I'm working on the "installing a suite of tools from manifest" thing btw |
I found out about |
Can confirm this solved it for me as well. |
It would be nice in the README to have an example of a one-liner to download and install (extract and move) from the links given. At each time I want to use binstall on a new setup without a desktop, I totally forget the syntax when it comes to tar, so I always end up searching how to do it. At least for the linux links |
Binaries installed using
but for locally-built executables, the interpreter path is to the eliza@noctis:~ $ file /home/eliza/.cargo/bin/cargo-binstall
/home/eliza/.cargo/bin/cargo-binstall: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /nix/store/ibp4camsx1mlllwzh32yyqcq2r2xsy1a-glibc-2.37-8/lib/ld-linux-x86-64.so.2, for GNU/Linux 3.10.0, with debug_info, not stripped note that the interpreter path is:
I first encountered this issue while trying to install Oranda using I'm not sure if there's really anything that |
@hawkw You could use --tarfers to specifically use the musl target instead, that will definitely work. |
Oh, that's a great idea, installing statically-linked musl targets on NixOS would probably work fine. |
Related to this, I recently ran into a problem that I believe was caused by Thanks for wonderful tool! |
We could add another glibc version check, if it is lower than a certain threshold then we would fallback to musl instead. We can also provide an environment variable for overriding targets. |
@eitsupi After thinking this again, I think this is more of an issue with mdbook pre-built and it's a good idea to open an issue there. You could also try using quickinstall build, it uses older glibc. The best way forward is to check the glibc version used by the binary, if it is newer than the system-installed glibc, then fallback to musl |
Thanks for pointing that! Edit: I found the issue about that. Thanks! rust-lang/mdBook#1954 In any case, a fallback mechanism to musl would definitely be useful. |
I'm not sure why, but $ cargo binstall cargo-nextest -y
INFO resolve: Resolving package: 'cargo-nextest'
WARN The package cargo-nextest v0.9.57 will be downloaded from github.com
INFO This will install the following binaries:
INFO - cargo-nextest.exe (cargo-nextest.exe -> C:\Users\$USER\.cargo\bin\cargo-nextest.exe)
INFO Installing binaries...
INFO Done in 196.7039375s Then, I ran the same command again to check how long it took when $ cargo binstall cargo-nextest -y
INFO resolve: Resolving package: 'cargo-nextest'
INFO resolve: cargo-nextest v0.9.57 is already installed, use --force to override
INFO Done in 45.3914203s Taking a look at other issues in this repo, I'm definitely sure that this shouldn't take that long. |
It looks like it is on Windows, can you rule out any antivirus interference in that test? |
I first ran $ cargo binstall cargo-nextest -y
INFO resolve: Resolving package: 'cargo-nextest'
WARN The package cargo-nextest v0.9.57 will be downloaded from github.com
INFO This will install the following binaries:
INFO - cargo-nextest.exe (cargo-nextest.exe -> C:\Users\$USER\.cargo\bin\cargo-nextest.exe)
INFO Installing binaries...
INFO Done in 197.1092732s No dice, unfortunately. I've reran the same commands, but now with debug logging enabled: $ cargo binstall cargo-nextest -y --log-level debug Log: contents.log |
Can you provide that log again but with |
I've done the same steps as before (uninstall, turn off AV), here's the command I ran: $ cargo binstall cargo-nextest -y --log-level trace --json-output Log: contents.log Looking at the log myself, the 2 things that take the longest are the download from crates.io and the download from GitHub. Why is that? I have a gigabit fiber connection (and a speed test proves that), so it's not my internet being slow. I'm clueless. |
Howdy folks! Really enjoying cargo-binstall. I'm not sure if this already exists (because it's not noted in SUPPORT.md), but it would be lovely to support a bin name that's different from the package name. For a project I'm working on, |
That's indeed a usecase we yet to support: We assume that the release name contains package name, not binary name. I'm working on dist-manifest support which might help this, and maybe we can also support this directly in existing fetchers. |
I just discovered, it seems to work for taplo-cli. $ cargo binstall taplo-cli -y
$ which taplo-cli
taplo-cli not found
$ which taplo
/home/carter/.cargo/bin/taplo |
Yes, this should work as we do parse the Cargo.toml. Can you clarify and open an issue with what "doesn't work" in your case? |
Our project just had a mis-adventure with martinvonz/jj#3844 (comment) Is there a way to specify in our Cargo.toml that our binaries should be preferred? We already have some cargo binstall config: Another issue is that we only provide |
Yes that's why quickinstall is preferred, on gnu target it will try crate-meta-data => quickinstall, if it fails, then fallback to musl. We can add a new configuration key to Cargo.toml to disable quickinstall fallback, for now you can either
Thanks for reporting this! |
A meta-issue for the experience of using this, if you have any thoughts / feelings / ideas please comment here!
The text was updated successfully, but these errors were encountered: