Canop / broot

A new way to see and navigate directory trees : https://dystroy.org/broot
MIT License
10.64k stars 234 forks source link

cargo binstall broot #847

Closed FrancescElies closed 7 months ago

FrancescElies commented 7 months ago

I would like to cargo binstall broot and get directly the binary without having to think any further.

This pr

Adds support for cargo binstall broot see support

I kept the current zip file for release as it is, next to it other zip files can be found too.

~/src/oss/broot: ls releases/broot-1.35.1/ | get name 
 0   releases/broot-1.35.1/broot-aarch64-unknown-linux-gnu.zip
 1   releases/broot-1.35.1/broot-aarch64-unknown-linux-musl.zip
 2   releases/broot-1.35.1/broot-armv7-unknown-linux-gnueabihf.zip
 3   releases/broot-1.35.1/broot-armv7-unknown-linux-musleabi.zip
 4   releases/broot-1.35.1/broot-x86_64-linux.zip
 5   releases/broot-1.35.1/broot-x86_64-pc-windows-gnu.zip
 6   releases/broot-1.35.1/broot-x86_64-unknown-linux-gnu.zip
 7   releases/broot-1.35.1/broot-x86_64-unknown-linux-musl.zip
 8   releases/broot-1.35.1/broot_1.35.1.zip

Uploading this files to the next release should make cargo binstall broot possible.

If I understand the docs correctly the files without the version should be fine too.

I didn't update any docs because I can't be 100% sure it works.

I know changing stuff in the release process can result in lots of frustration, help or feedback appreciated, if in the end this doesn't get merged it also fine with me.

⚠️ Warning

I couldn't manage to get cross to work on my machine, thus I had to test release.sh without being able to execute compile-all-targets.sh, but I got the latest release as my input and manually added the broot prefix to each folder.

Canop commented 7 months ago

The new target archives like releases/broot-1.35.1/broot-armv7-unknown-linux-gnueabihf.zip look good, but can you keep the broot_1.35.1.zip file the same than before (i.e. without the broot- prefix in folders, and with a _ instead of a -) ? As I understand it that should not be a problem for bininstall as it doesn't care for this file.

Old left, new right: image

Canop commented 7 months ago

Just to be clear: I'm OK with the new files and their naming, I'd just like to keep the old broot_version.zip archive exactly as it was (name and content) because there's some automation based on it

FrancescElies commented 7 months ago

I added a change so that new artifacts keep a similar naming format with the old artifacts.

After running release, hopefully you should see the following files instead.

~/src/oss/broot: tree releases/                                            03/06/24 08:56:28 AM
/Users/cesc/src/oss/broot/releases
 └──broot_1.35.1
    ├──broot_1.35.1.zip
    ├──broot_1.35.1_aarch64-unknown-linux-gnu.zip
    ├──broot_1.35.1_aarch64-unknown-linux-musl.zip
    ├──broot_1.35.1_armv7-unknown-linux-gnueabihf.zip
    ├──broot_1.35.1_armv7-unknown-linux-musleabi.zip
    ├──broot_1.35.1_x86_64-linux.zip
    ├──broot_1.35.1_x86_64-pc-windows-gnu.zip
    ├──broot_1.35.1_x86_64-unknown-linux-gnu.zip
    └──broot_1.35.1_x86_64-unknown-linux-musl.zip
Canop commented 7 months ago

Are you sure the underscore is OK for bininstall for the target specific archives ?

FrancescElies commented 7 months ago

Sadly I can't be 100% sure, in the previous commit I added the following to cargo toml to handle the underscores.

image

Still reading the docs to see if I can test this locally without a release but I didn't find a way to do that yet.

FrancescElies commented 7 months ago

Ok we have a way to "test it" without a release.

With the following command we can see which kind of links he tries to download, in my case now he would find broot_1.35.1_x86_64-pc-windows-gnu.zip

~\src\oss\broot> gh pr checkout 847                                                                                     03/06/2024 11:43:51 AM
~\src\oss\broot> cargo binstall --strategies crate-meta-data --manifest-path Cargo.toml broot -v | rg "package at"      03/06/2024 11:44:32 AM
DEBUG Checking for package at: 'https://github.com/Canop/broot/releases/download/v1.35.1/broot_1.35.1_i686-pc-windows-msvc.zip'
DEBUG Checking for package at: 'https://github.com/Canop/broot/releases/download/v1.35.1/broot_1.35.1_x86_64-pc-windows-gnu.zip'
DEBUG Checking for package at: 'https://github.com/Canop/broot/releases/download/v1.35.1/broot_1.35.1_x86_64-pc-windows-gnullvm.zip'
DEBUG Checking for package at: 'https://github.com/Canop/broot/releases/download/v1.35.1/broot_1.35.1_i686-pc-windows-gnullvm.zip'
DEBUG Checking for package at: 'https://github.com/Canop/broot/releases/download/v1.35.1/broot_1.35.1_i586-pc-windows-gnullvm.zip'
DEBUG Checking for package at: 'https://github.com/Canop/broot/releases/download/v1.35.1/broot_1.35.1_x86_64-pc-windows-msvc.zip'
DEBUG Checking for package at: 'https://github.com/Canop/broot/releases/download/v1.35.1/broot_1.35.1_i586-pc-windows-gnu.zip'
DEBUG Checking for package at: 'https://github.com/Canop/broot/releases/download/v1.35.1/broot_1.35.1_i586-pc-windows-msvc.zip'
DEBUG Checking for package at: 'https://github.com/Canop/broot/releases/download/v1.35.1/broot_1.35.1_i686-pc-windows-gnu.zip'

At some point later on I could do the same test on mac and linux.

FrancescElies commented 7 months ago

Just to be clear: I'm OK with the new files and their naming, I'd just like to keep the old broot_version.zip archive exactly as it was (name and content) because there's some automation based on it

I think I misunderstood your previous comment, the problem if I understand correctly was that I changed the location of that file into the subfolder?

Shall I leave everything around that file untouched and go as much as I can with binstall defaults?

Is this layout ok?

/Users/cesc/src/oss/broot/releases
 └──broot_1.35.1
    ├──broot_1.35.1.zip
    ├──broot_1.35.1_aarch64-unknown-linux-gnu.zip
    ├──broot_1.35.1_aarch64-unknown-linux-musl.zip
    ├──broot_1.35.1_armv7-unknown-linux-gnueabihf.zip
    ├──broot_1.35.1_armv7-unknown-linux-musleabi.zip
    ├──broot_1.35.1_x86_64-linux.zip
    ├──broot_1.35.1_x86_64-pc-windows-gnu.zip
    ├──broot_1.35.1_x86_64-unknown-linux-gnu.zip
    └──broot_1.35.1_x86_64-unknown-linux-musl.zip
Canop commented 7 months ago

I'm OK with this file location. And the new files may be named with - instead of _, that's not a problem.

What I'd need is the content of broot_<version>.zip to be the same than before, that is this specific archive should unzip to something like this: image

Other archives should just be as near as possible from the bininstall standard.

I'd also need the build folder to stay the same (i.e. without the broot- prefix). So the right approach IMO would be to keep the old process and add, as a second operation (might be a second script called by release.sh ), build the new archives.

FrancescElies commented 7 months ago

Alright with the latest commit we have

~/src/oss/broot: tree releases/                                            03/06/24 14:19:04 PM
/Users/cesc/src/oss/broot/releases
 └──broot_1.35.1
    ├──broot-aarch64-unknown-linux-gnu-v1.35.1.zip
    ├──broot-aarch64-unknown-linux-musl-v1.35.1.zip
    ├──broot-armv7-unknown-linux-gnueabihf-v1.35.1.zip
    ├──broot-armv7-unknown-linux-musleabi-v1.35.1.zip
    ├──broot-x86_64-linux-v1.35.1.zip
    ├──broot-x86_64-pc-windows-gnu-v1.35.1.zip
    ├──broot-x86_64-unknown-linux-gnu-v1.35.1.zip
    ├──broot-x86_64-unknown-linux-musl-v1.35.1.zip
    └──broot_1.35.1.zip
FrancescElies commented 7 months ago

In linux gnu and musl artifacts are there:

cesc@intel-minipc:~/src/oss/broot$ cargo binstall --strategies crate-meta-data --manifest-path Cargo.toml broot -v | rg "package at" | rg broot-x86_64-unknown-linux-musl-v1.35.1.zip
DEBUG Checking for package at: 'https://github.com/Canop/broot/releases/download/1.35.1/broot-x86_64-unknown-linux-musl-v1.35.1.zip'
DEBUG Checking for package at: 'https://github.com/Canop/broot/releases/download/v1.35.1/broot-x86_64-unknown-linux-musl-v1.35.1.zip'
cesc@intel-minipc:~/src/oss/broot$ cargo binstall --strategies crate-meta-data --manifest-path Cargo.toml broot -v | rg "package at" | rg broot-x86_64-unknown-linux-gnu-v1.35.1.zip
DEBUG Checking for package at: 'https://github.com/Canop/broot/releases/download/1.35.1/broot-x86_64-unknown-linux-gnu-v1.35.1.zip'
DEBUG Checking for package at: 'https://github.com/Canop/broot/releases/download/v1.35.1/broot-x86_64-unknown-linux-gnu-v1.35.1.zip'
Canop commented 7 months ago

It looks perfect. I should merge it soon, then use it at the next release, which should come soon too.

Canop commented 7 months ago

Released: https://github.com/Canop/broot/releases/tag/v1.36.0