#arch-linux #aur #cargo-toml #cargo #cargo-subcommand #package-manager #subcommand

bin+lib cargo-aur

Prepare Rust projects to be released on the Arch Linux User Repository

14 stable releases

1.7.1 Mar 18, 2024
1.6.0 Oct 2, 2023
1.5.0 Apr 21, 2022
1.4.1 Sep 7, 2021
1.0.3 Jul 18, 2020

#102 in Cargo plugins

Download history 14/week @ 2023-12-31 20/week @ 2024-02-18 22/week @ 2024-02-25 159/week @ 2024-03-03 35/week @ 2024-03-10 186/week @ 2024-03-17 16/week @ 2024-03-24 42/week @ 2024-03-31

246 downloads per month

MIT license

22KB
433 lines

cargo-aur

Build AUR version

cargo-aur is a new subcommand for cargo that produces a release tarball and PKGBUILD file for a Rust project, so that it can be released on the Arch Linux User Repository (AUR).

No extra configuration is necessary. As long as your Cargo.toml has the usual fields, a PKGBUILD will be generated with all the necessary sections filled out.

Installation

Guess what? cargo-aur itself is on the AUR! Install it with an AUR-compatible package manager like aura:

sudo aura -A cargo-aur-bin

...or via cargo:

cargo install cargo-aur

Usage

Basics

Navigate to a Rust project, and run:

cargo aur

This will produce a foobar-1.2.3-x86_64.tar.gz tarball and a PKGBUILD within target/cargo-aur.

If you wish, you can now run makepkg to ensure that your package actually builds.

> makepkg
==> Making package: cargo-aur-bin 1.0.0-1 (Wed 10 Jun 2020 08:23:46 PM PDT)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
... etc ...
==> Finished making: cargo-aur-bin 1.0.0-1 (Wed 10 Jun 2020 08:23:47 PM PDT)

Notice that the built package itself is postfixed with -bin, which follows the AUR standard.

At this point, it is up to you to:

  1. Create an official Release on Github/Gitlab, attaching the original binary tarball that cargo aur produced.
  2. Copy the PKGBUILD to a git repo that tracks releases of your package.
  3. Run makepkg --printsrcinfo > .SRCINFO.
  4. Commit both files and push to the AUR.

Some of these steps may be automated in cargo aur at a later date if there is sufficient demand.

Custom Binary Names

If you specify a [[bin]] section in your Cargo.toml and set the name field, this will be used as the binary name to install within the PKGBUILD.

depends and optdepends

If your package requires other Arch packages at runtime, you can specify these within your Cargo.toml like this:

[package.metadata.aur]
depends = ["nachos", "pizza"]
optdepends = ["sushi", "ramen"]

And these settings will be copied to your PKGBUILD.

Including Additional Files

The files list can be used to designated initial files to be copied the user's filesystem. So this:

[package.metadata.aur]
files = [["path/to/local/foo.txt", "/usr/local/share/your-app/foo.txt"]]

will result in this:

package() {
    install -Dm755 your-app -t "$pkgdir/usr/bin"
    install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
    install -Dm644 "path/to/local/foo.txt" "$pkgdir/usr/local/share/your-app/foo.txt"
}

Static Binaries

Run with --musl to produce a release binary that is statically linked via MUSL.

> cargo aur --musl
> cd target/x86_64-unknown-linux-musl/release/
> ldd <your-binary>
    not a dynamic executable

Dependencies

~0.7–11MB
~85K SLoC