Giter Club home page Giter Club logo

gentoo-rust's Introduction

Rust overlay

Build Status Gentoo discord server

Update

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.

User's guide

Adding the overlay

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.

Packages

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 sources
  • dev-lang/rust-bin Binary packaged Rust compiler
  • dev-util/cargo Cargo rust package manager and build tool
  • dev-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.

Rust compiler implementations

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.

dev-lang/rust

  • doc install documentation
  • system-llvm use system LLVM (will decrease compilation time)

dev-lang/rust-bin

  • cargo-bundled install bundled Cargo
  • doc install documentation

Developer's guide

Contributing

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).

Communication

Slotting

Currently we have these slots for dev-lang/rust:

  • stable -- stable release
  • git -- 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 release
  • beta -- beta version
  • nightly -- 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.

Eselect-rust

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

Environment

You need to set MANPATH and LDPATH appropriately. See existing ebuilds.

Testing

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 propagation to the tree

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

gentoo-rust's People

Contributors

arnidagur avatar cardoe avatar cnd avatar dr-terrible avatar egeskow avatar funkill avatar gentoo90 avatar geovex avatar gibix avatar i2tsuki avatar jauhien avatar milkey-mouse avatar necrose99 avatar nexion avatar ngg avatar o01eg avatar omasanori avatar orumin avatar perfect7gentleman avatar rkjnsn avatar slabity avatar stefantalpalaru avatar stefson avatar suhr avatar trofi avatar vaartis avatar vonavi avatar williamh avatar wthrowe avatar zetok avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.