Open3

Rustのcrate aws-lc-sys/aws-lc-sysビルドエラー時の対応

yunayuna

aws-lc-sysとは?

Rustのcrateに、aws-lc-rs というものがある。
https://github.com/aws/aws-lc-rs

この中に含まれるモジュール群に、aws-lc-sys がある。

Rustのtls実装である"rustls" が、ver0.23から、
依存していたcryptoモジュールが、今まで使われていたringの代わりにaws-lc-rsに変更になった。
https://github.com/rustls/rustls/releases/tag/v%2F0.23.0

aws-lc-rsのビルド時の注意は?

上記rustlsのリリースノートにも記載があるように、

すべてのプラットフォームの cmake や Windows の nasm などのビルド時ツールの要件に影響を与えることに注意してください。

ということ。

公式にビルド要件が記載されているので、プラットフォーム別に必要な対応をしておく
https://aws.github.io/aws-lc-rs/requirements/index.html

Linuxの場合

https://aws.github.io/aws-lc-rs/requirements/linux.html

C/C++ Compiler、CMake、LLVM (When building with bindgen feature)を入れておく。

yunayuna

Debianにて

上記対応をしても、Linuxでエラーが出ているので調査

$ cargo build --release --target x86_64-unknown-linux-musl

error: failed to run custom build command for `aws-lc-sys v0.13.2`

Caused by:
  process didn't exit successfully: `/home/xxxxxxxxxxxx/Project/cert_manager_client/target/release/build/aws-lc-sys-63a2f4015b27b4a7/build-script-main` (exit status: 101)
  --- stdout
  cargo:rustc-cfg=use_bindgen_generated

  --- stderr
  thread 'main' panicked at /home/xxxxxxxxxxxx/.cargo/registry/src/index.crates.io-6f17d22bba15001f/aws-lc-sys-0.13.2/builder/main.rs:286:5:
  aws-lc-sys build failed. Please enable the 'bindgen' feature on aws-lc-rs or aws-lc-sys
  stack backtrace:
     0: rust_begin_unwind
               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/panicking.rs:647:5
     1: core::panicking::panic_fmt
               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/core/src/panicking.rs:72:14
     2: build_script_main::main
               at ./builder/main.rs:286:5
     3: core::ops::function::FnOnce::call_once
               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/core/src/ops/function.rs:250:5
  note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
warning: build failed, waiting for other jobs to finish...

crateをupdateしたら、cargo buildで治った

cargo update

※ cargo zigbuildだと別のエラーで引っかかったので・・・動作確認できず。。。

$ cargo zigbuild --release --target x86_64-unknown-linux-musl
error: failed to run custom build command for `psm v0.1.21`
yunayuna

Windowsにて

visual studio2022、cmakeをインストールしていても以下のエラーが出た

CMake Error at CMakeLists.txt:6 (project):
Generator
  Visual Studio 17 2022
could not find any instance of Visual Studio.

chatGPTに聞いてみると、

とのこと。
visual studioのインストーラを立ち上げ、
最新のc++デスクトップ環境などを再度インストールしてみる

→再起動してビルドしたが、エラー解消せず。

今度は、エラーメッセージにNASMが入ってないとのメッセージが。

    CMake Error at aws-lc/crypto/CMakeLists.txt:72 (enable_language):
    No CMAKE_ASM_NASM_COMPILER could be found.

windowsの最新WASMインストーラをここからダウンロードしてインストール
https://www.nasm.us/pub/nasm/releasebuilds/2.16.03/win64/

環境変数PATHに、nasm.exeのインストールフォルダを追加
→解決しました。