GitHub - esp-rs/espup: Tool for installing and maintaining Espressif Rust ecosystem. (original) (raw)

espup

Crates.io MSRV Continuous Integration Security audit Matrix

rustup for esp-rs

espup is a tool for installing and maintaining the required toolchains for developing applications in Rust for Espressif SoC's.

To better understand what espup installs, see the installation chapter of The Rust on ESP Book

Requirements

Before running or installing espup, make sure that rustup is installed.

Linux systems also require the following packages:

sudo zypper install -y gcc ninja make  

Installation

cargo install espup --locked

It's also possible to use cargo-binstall or to directly download the pre-compiled release binaries.

Commands to install pre-compiled release binaries

Quickstart

See Usage section for more details.

Environment Variables Setup

After installing the toolchain, on Unix systems, you need to source a file that will export the environment variables. This file is generated by espup and is located in your home directory by default. There are different ways to source the file:

Important

On Windows, environment variables are automatically injected into your system and don't need to be sourced.

Usage

Usage: espup <COMMAND>

Commands:
  completions  Generate completions for the given shell
  install      Installs Espressif Rust ecosystem
  uninstall    Uninstalls Espressif Rust ecosystem
  update       Updates Xtensa Rust toolchain
  help         Print this message or the help of the given subcommand(s)

Options:
  -h, --help     Print help
  -V, --version  Print version

Completions Subcommand

For detailed instructions on how to enable tab completion, see Enable tab completion for Bash, Fish, Zsh, or PowerShell section.

Usage: espup completions [OPTIONS] <SHELL>

Arguments:
  <SHELL>  Shell to generate completions for [possible values: bash, elvish, fish, powershell, zsh]

Options:
  -l, --log-level <LOG_LEVEL>  Verbosity level of the logs [default: info] [possible values: debug, info, warn, error]
  -h, --help                   Print help

Install Subcommand

Note

Xtensa Rust destination path

Installation paths can be modified by setting the environment variables CARGO_HOME and RUSTUP_HOME before running the install command. By default, toolchains will be installed under <rustup_home>/toolchains/esp, although this can be changed using the -a/--name option.

Usage: espup install [OPTIONS]

Options:
  -d, --default-host <DEFAULT_HOST>
          Target triple of the host

          [possible values: x86_64-unknown-linux-gnu, aarch64-unknown-linux-gnu, x86_64-pc-windows-msvc, x86_64-pc-windows-gnu, x86_64-apple-darwin, aarch64-apple-darwin]

-r, --esp-riscv-gcc
          Install Espressif RISC-V toolchain built with croostool-ng

          Only install this if you don't want to use the systems RISC-V toolchain

  -f, --export-file <EXPORT_FILE>
          Relative or full path for the export file that will be generated. If no path is provided, the file will be generated under home directory (https://docs.rs/dirs/latest/dirs/fn.home_dir.html)

          [env: ESPUP_EXPORT_FILE=]

  -e, --extended-llvm
          Extends the LLVM installation.

          This will install the whole LLVM instead of only installing the libs.

  -l, --log-level <LOG_LEVEL>
          Verbosity level of the logs

          [default: info]
          [possible values: debug, info, warn, error]

  -a, --name <NAME>
          Xtensa Rust toolchain name

          [default: esp]

  -b, --stable-version <STABLE_VERSION>
          Stable Rust toolchain version.

          Note that only RISC-V targets use stable Rust channel.

          [default: stable]

  -k, --skip-version-parse
          Skips parsing Xtensa Rust version

  -s, --std
          Only install toolchains required for STD applications.

          With this option, espup will skip GCC installation (it will be handled by esp-idf-sys), hence you won't be able to build no_std applications.

  -t, --targets <TARGETS>
          Comma or space separated list of targets [esp32,esp32c2,esp32c3,esp32c6,esp32h2,esp32s2,esp32s3,esp32p4,all]

          [default: all]

  -v, --toolchain-version <TOOLCHAIN_VERSION>
          Xtensa Rust toolchain version

  -h, --help
          Print help (see a summary with '-h')

Uninstall Subcommand

Usage: espup uninstall [OPTIONS]

Options:
  -l, --log-level <LOG_LEVEL>  Verbosity level of the logs [default: info] [possible values: debug, info, warn, error]
  -a, --name <NAME>            Xtensa Rust toolchain name [default: esp]
  -h, --help                   Print help

Update Subcommand

Usage: espup update [OPTIONS]

Options:
  -d, --default-host <DEFAULT_HOST>
          Target triple of the host

          [possible values: x86_64-unknown-linux-gnu, aarch64-unknown-linux-gnu, x86_64-pc-windows-msvc, x86_64-pc-windows-gnu, x86_64-apple-darwin, aarch64-apple-darwin]

  -f, --export-file <EXPORT_FILE>
          Relative or full path for the export file that will be generated. If no path is provided, the file will be generated under home directory (https://docs.rs/dirs/latest/dirs/fn.home_dir.html)

          [env: ESPUP_EXPORT_FILE=]

  -e, --extended-llvm
          Extends the LLVM installation.

          This will install the whole LLVM instead of only installing the libs.

  -l, --log-level <LOG_LEVEL>
          Verbosity level of the logs

          [default: info]
          [possible values: debug, info, warn, error]

  -a, --name <NAME>
          Xtensa Rust toolchain name

          [default: esp]

  -b, --stable-version <STABLE_VERSION>
          Stable Rust toolchain version.

          Note that only RISC-V targets use stable Rust channel.

          [default: stable]

  -k, --skip-version-parse
          Skips parsing Xtensa Rust version

  -s, --std
          Only install toolchains required for STD applications.

          With this option, espup will skip GCC installation (it will be handled by esp-idf-sys), hence you won't be able to build no_std applications.

  -t, --targets <TARGETS>
          Comma or space separated list of targets [esp32,esp32c2,esp32c3,esp32c6,esp32h2,esp32s2,esp32s3,all]

          [default: all]

  -v, --toolchain-version <TOOLCHAIN_VERSION>
          Xtensa Rust toolchain version

  -h, --help
          Print help (see a summary with '-h')

Enable Tab Completion for Bash, Fish, Zsh, or PowerShell

espup supports generating completion scripts for Bash, Fish, Zsh, and PowerShell. See espup help completions for full details, but the gist is as simple as using one of the following:

Bash

$ espup completions bash > ~/.local/share/bash-completion/completions/espup

Bash (macOS/Homebrew)

$ espup completions bash > $(brew --prefix)/etc/bash_completion.d/espup.bash-completion

Fish

$ mkdir -p ~/.config/fish/completions $ espup completions fish > ~/.config/fish/completions/espup.fish

Zsh

$ espup completions zsh > ~/.zfunc/_espup

PowerShell v5.0+

$ espup completions powershell >> $PROFILE.CurrentUserCurrentHost

or

$ espup completions powershell | Out-String | Invoke-Expression

Note: you may need to restart your shell in order for the changes to take effect.

For zsh, you must then add the following line in your ~/.zshrc beforecompinit:

License

Licensed under either of:

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.