Skip to content
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

Feature request: Support non-binary AUR package using crates.io as source #28

Open
nick42d opened this issue Aug 3, 2024 · 5 comments · May be fixed by #30
Open

Feature request: Support non-binary AUR package using crates.io as source #28

nick42d opened this issue Aug 3, 2024 · 5 comments · May be fixed by #30

Comments

@nick42d
Copy link

nick42d commented Aug 3, 2024

G'day,

Thanks for the crate!

I was wondering if you'd be open to the option of supporting crates.io as a source (e.g https://wiki.archlinux.org/title/Rust_package_guidelines#Source). In this case, I wouldn't need a binary build, I'd just be using cargo-aur to generate the PKGBUILD.

Let me know your thoughts on this, I'd be happy to have a go at contributing.

@fosskers
Copy link
Owner

fosskers commented Aug 3, 2024

This is a good idea. Let's move forward with it.

The current default is to produce a -bin package after compiling everything, so we'd either have to:

  • Add a new flag to do what you're suggesting
  • Change the default behaviour to do what you're suggesting, and have the -bin behaviour behind a flag (a breaking change).
  • Completely overhaul the CLI to give no preference to one style or the other (e.g. cargo aur bin, cargo aur ?) (also a breaking change)

@nick42d
Copy link
Author

nick42d commented Aug 3, 2024

I see what you mean about the commands. I see no need to change the existing defaults from what you've set, am happy for this to be a new flag. In terms of an overhall, this could also be a good opportunity to upgrade to clap from gumdrop. Guessing this is possible without a breaking change to the flags.

@fosskers
Copy link
Owner

fosskers commented Aug 4, 2024

Now then: what should the new flag be callled? Off the top of my head:

  • --plain
  • --source
  • --from-crate
  • --no-bin

@nick42d
Copy link
Author

nick42d commented Aug 5, 2024

Took some time to think about this. Combining the two suggestions of --source and --no-bin, we could do;

New flag --source [SourceType] where [SourceType] is project or crates-io. (Default: project = current behaviour)

  • This flag would determine where the source code is sourced from.

New flag --no-bin. (Default: false = current behaviour)

  • This flag prevents binary build and creates a PKGBUILD that builds from a tarball.

This would allow two new combination --source crates-io which would pull the crates.io version and build it into a binary, --source project --no-bin which would publish based off a github/gitlab tarball. This would also allow for different --source options in future e.g url if we are hosting somewhere other than github/gitlab.

I also wanted to note that to calculate the checksums for the crates.io build, we'll need to actually download the crate. Do you have a preference on how this is implemented, we could use curl, makepkg itself but it's a bit awkward since it needs a pkgbuild first, or a rust library like libcurl or reqwest.

@fosskers
Copy link
Owner

fosskers commented Aug 6, 2024

These are good suggestions. Let's move forward with both of them.

I also wanted to note that to calculate the checksums for the crates.io build, we'll need to actually download the crate. Do you have a preference on how this is implemented

Let's be a good Unix tool and just call curl (or wget) via Rust's Command type. That will minimize Rust dependencies within cargo-aur itself.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants