Overlay has been moved to the new address. No user interaction is needed, layman will handle this automatically. Please, report any issues and make pull requests in the new repo.
This overlay is available through layman.
To use packages from it, add it with
layman -a rust
If you use eix you may need to execute
eix-update
after it.
This overlay contains Rust compiler and Rust related packages and is the primary place for developing of the Rust infrastructure on Gentoo.
As user you may be interested in these packages:
dev-lang/rust
Rust compiler built from sourcesdev-lang/rust-bin
Binary packaged Rust compilerdev-util/cargo
Cargo rust package manager and build tooldev-util/cargo-bin
Binary packaged cargo rust package manager and build tool
There are other useful packages in this overlay, use eix
or whatever else to learn about them.
Different Rust versions can be installed simultaneously on Gentoo. Slots and eselect are used for this purpose. To learn more, see eselect-rust.
Useful USE flags
.
doc
install documentationsystem-llvm
use system LLVM (will decrease compilation time)
cargo-bundled
install bundled Cargodoc
install documentation
Fork this repo and make a pull request. We are happy to merge it.
Please, make sure you've read devmanual.
Commit message should look like
[category/packagename] short decription
Long description
This makes reading history easier. GPG signing your changes is a good idea.
If you have push access to this repo it is a good idea to still create a pull request, so at least one more person have reviewed your code. Exceptions are trivial changes and urgent changes (that fix something completely broken).
- Join #gentoo-rust channel on Freenode
- Open issues here https://github.com/gentoo/gentoo-rust
- Gentoo Discord: https://discord.gg/KEphgqH
Currently we have these slots for dev-lang/rust
:
stable
-- stable releasegit
-- upstream git version
Note, that source packages use a custom postfix for Rust libraries.
This is important, as otherwise simultaneously installed different Rust versions will fail to work.
An example of src_prepare
that sets appropriate postfixes:
src_prepare() {
local postfix="gentoo-${SLOT}"
sed -i -e "s/CFG_FILENAME_EXTRA=.*/CFG_FILENAME_EXTRA=${postfix}/" mk/main.mk || die
}
For dev-lang/rust-bin
slots are:
stable
-- stable releasebeta
-- beta versionnightly
-- nightly version
Note, that cargo-bundled
USE is available only for nightly
and beta
dev-lang/rust-bin
and cargo
binary is not under the eselect control, so nightly
and beta
cannot have cargo-bundled
USE enabled at the same time.
Rust compiler packages use eselect-rust to managed their symlinks. Consult its README for information on how to properly register your package in eselect.
You need to set active Rust version in pkg_postinst
if no one were set before:
eselect rust update --if-unset
You need to unset active Rust version in pkg_postrm
if it were the one you just removed:
eselect rust unset --if-invalid
You need to set MANPATH
and LDPATH
appropriately. See existing ebuilds.
Please, make sure you have checked this before creating pull request:
- you've run
repoman full -d
and it didn't complain about errors - you've emerged ebuild with your changes and it was installed correctly
- you've run the stuff your ebuild installed and it worked for you
- if you have keywords in your ebuild, you have tested it for every ARCH mentioned there
Changes in the packages available in the main Gentoo tree will propagate there after some time (usually one week). At the moment these packages are:
- app-emacs/rust-mode
- app-eselect/eselect-rust
- app-shells/rust-zshcomp
- app-vim/rust-mode
- dev-lang/rust
- dev-lang/rust-bin