instructions for static linking
ignore dist dir
readme fix
Gird is a command-line tool for downloading release artifacts. Currently, it supports downloading from GitHub and GitLab releases, and there’s room to expand it to other, similar sources.
Given an artifact name, user name, and repository name, Gird will locate the most recent release for that repository, find a release artifact with a matching file name, and download it.
For example, to download the current rqlite release for linux on amd64, we can do the following:
$ gird linux-amd64 -e musl github rqlite rqlite
In that example, linux-amd64
is telling gird that we want a release
file which contains “linux-amd64” in its file name, -e musl
is
telling it that we don’t want the variant that has
“linux-amd64-musl“ in its file name even though it would otherwise
match, github
is telling it that it should source the file from a
GitHub release, the first rqlite
is telling it to look under the
GitHub user called “rqlite” and the second rqlite
is telling it that
we want that user’s repository which is also called “rqlite”.
Gird will look through the current GitHub release for the specified repository, find a matching file (e.g. rqlite-v8.23.0-linux-amd64.tar.gz), and download it.
Gird can also be added to your Cargo.toml and used programmatically in other Rust programs. Each source for downloading release artifacts has its own module within the crate, containing specialized tools for interacting with that source.
If you encounter a bug, feel free to add a ticket to the Gird todo list.
If you would like to discuss Gird or request help, the gird-users mailing list is here for you.
Patches can be submitted via git send-email or git format-patch to ~djarb/gird-patches@lists.sr.ht (a.k.a the gird-patches mailing list). If you’re not familiar with the git send-email command, SourceHut provides a useful tutorial.
You could also clone the repository into your own SourceHut repo, make your changes, commit and push them to your cloned repo, and use the “Prepare a patchset” button on your repo page to send the changes. This is equivalent to GitHub’s pull request workflow.
It can be convenient to statically link programs such as Gird which may be used in bootstrapping a working environment. Rust programs are mostly static by default, but on x86-64 Linux we can go fully static by adding an alias to the .cargo/config.toml file
[alias]
static = ["build", "--release", "--target", "x86_64-unknown-linux-gnu", "--config", "build.rustflags='-C target-feature=+crt-static'"]
which will enable us to compile statically linked release binaries with a simple
cargo static
The same trick works, with appropriate modification of the target identifier, on other CPU architectures and on Windows MSVC targets.