Como corrigir Rust falha ao executar comando de build customizado para `ethercat-sys v0.3.1`

Problema

Ao tentar instalar o crate ethercat ou o ethercat-sys, você encontra o seguinte problema:

ethercat-sys-build-error.txt
error: failed to run custom build command for `ethercat-sys v0.3.1`

Caused by:
  process didn't exit successfully: `/home/uli/Nextcloud/Experimental/RS402/target/debug/build/ethercat-sys-c6763acfbe4bdda5/build-script-build` (exit status: 101)
  --- stderr

  thread 'main' panicked at /home/uli/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ethercat-sys-0.3.1/build.rs:8:46:
  Please set the ETHERCAT_PATH env var to the location of a checkout of the Ethercat master after running configure: NotPresent
  note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

Solução

O crate ethercat-sys, que é uma dependência do crate ethercat, requer a localização de um checkout local do repositório master EtherCAT para construir suas bindings nativas.

Para resolver este problema, simplesmente clone o repositório master EtherCAT e defina a variável de ambiente ETHERCAT_PATH para apontar para a localização deste checkout. Como o crate ethercat-sys precisa do config.h, apenas clonar o repositório não é suficiente; você também precisa compilar o master EtherCAT.

clone-ethercat.sh
git clone https://gitlab.com/etherlab.org/ethercat.git ~/.etherlab-ethercat
cd ~/.etherlab-ethercat
./bootstrap
./configure
make -j8

Agora você pode definir a variável de ambiente ETHERCAT_PATH. Você pode fazer isso temporariamente na sua sessão de terminal, mas recomendo fazer permanentemente adicionando ao seu arquivo de configuração do shell (por exemplo, ~/.bashrc ou ~/.zshrc).

set-ethercat-path.sh
export ETHERCAT_PATH="$HOME/.etherlab-ethercat"

Com a variável de ambiente ETHERCAT_PATH definida, você agora deve conseguir compilar seu projeto Rust que depende do crate ethercat sem encontrar o erro anterior. Lembre-se de recarregar sua configuração do shell usando source ~/.bashrc ou similar, ou reiniciar sua sessão de terminal para aplicar as mudanças, se você colocou o comando export no seu arquivo de configuração do shell.

build-rust-project.sh
cargo build

Check out similar posts by category: Rust, EtherCAT