prefix-dev / rattler-build

rattler-build is a universal package builder for Windows, macOS and Linux
https://prefix-dev.github.io/rattler-build
BSD 3-Clause "New" or "Revised" License
187 stars 38 forks source link

wrong usage of install_name_tool / error when repacking content of `.rustup` #820

Open DerThorsten opened 4 months ago

DerThorsten commented 4 months ago

When experimenting with repacking rust as package installed via rustup I stumbled over some error message in rattler-build which indicates that there might be a bug. This error happens when $PREFIX/.rustup is in the prefix, and I am on apple-silicon. Note that this bug might not be relevant as it probably can be prevented with binary_relocation: false or similar. Yet it might show a potential bug in rattler-build.

the build script is relatively simple and just does:

export RUSTUP_HOME=$PREFIX/.rustup
export CARGO_HOME=$PREFIX/.cargo

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain=1.77.2
rustup default 1.77.2
rustup target add wasm32-unknown-emscripten

here is the relevant part of the output

 │ ╭─ Packaging new files
 │ │ Copying done!
 │ │ Rpath not in prefix or allow-listed: @loader_path/../lib – removing it
 │ │ install_name_tool for "/var/folders/yw/hcd009rd56zdy1_t6tbx4hzc0000gn/T/rust7uUUdG/.rustup/toolchains/1.77.2-aarch64-apple-darwin/lib/libunic_langid_macros_impl-963db6f9aec05cb0.dylib":
 │ │  - changing absolute rpath from "@loader_path/../lib" to "@loader_path/../../../../lib"
 │ │  - add rpath "@loader_path/../lib"
 │ │ × error install_name_tool failed: error: /Users/thorstenbeier/micromamba/envs/emf/bin/install_name_tool: can't specify both "-delete_rpath @loader_path/../lib" and "-add_rpath @loader_path/../lib"
 │ │ × error Usage: /Users/thorstenbeier/micromamba/envs/emf/bin/install_name_tool [-change old new] ... [-rpath old new] ... [-add_rpath new] ... [-delete_rpath old] ... [-id name] input
 │ │
 │ ╰─────────────────── (took 8 seconds)

Here is some more output

 │
 │ ╭─ Running build script
 │ │ + mkdir -p $PREFIX/etc/conda/activate.d
 │ │ + mkdir -p $PREFIX/etc/conda/deactivate.d
 │ │ + cp /Users/thorstenbeier/src/recipes/recipes/recipes/rust/activate-rust.sh $PREFIX/etc/conda/activate.d/activate_z-rust.sh
 │ │ + cp /Users/thorstenbeier/src/recipes/recipes/recipes/rust/deactivate-rust.sh $PREFIX/etc/conda/deactivate.d/deactivate_z-rust.sh
 │ │ + export RUSTUP_HOME=$PREFIX/.rustup
 │ │ + RUSTUP_HOME=$PREFIX/.rustup
 │ │ + export CARGO_HOME=$PREFIX/.cargo
 │ │ + CARGO_HOME=$PREFIX/.cargo
 │ │ + export 'PATH=$PREFIX/.cargo/bin:$BUILD_PREFIX/bin:$PREFIX/bin:/Users/thorstenbeier/micromamba/condabin:/Users/thorstenbeier/bin/:/opt/homebrew/sbin:/opt/homebrew/bin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Lib
 │ │ rary/TeX/texbin:/Users/thorstenbeier/.cargo/bin:/Users/thorstenbeier/src/recipes/output/bld/rattler-build_cryptography_1713781079/build_env/.cargo/bin:/Users/thorstenbeier/src/recipes/output/bld/rattler-build_cryptography_1713777812/build_env/.cargo/bin:/Users/thorstenbeier/src/recipes/output/bld/rattler-build_cryptography_1713777343/build_env/.cargo/bin:/Users/thorstenbeier/src/recipes/output/bld/rattler-build_cryptography_1713777153/build_env/.cargo/bin:/Users/thor
 │ │ stenbeier/src/recipes/output/bld/rattler-build_cryptography_1713777058/host_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/.cargo/bin:/Users/thorstenbeier/src/recipes/output/bld/rattler-build_cryptography_1713776991/host_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac
 │ │ ehold_placehold_placehold_placehold_plac/.cargo/bin:/Users/thorstenbeier/src/recipes/output/bld/rattler-build_cryptography_1713776901/host_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/.cargo/bin:/Users/thorstenbeier/src/recipes/output/bld/rattler-build_cryptography_1713776786/host_env_placehold_placehold_placehold_placehold_placehold_placehold_p
 │ │ lacehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/.cargo/bin:/Users/thorstenbeier/src/recipes/output/bld/rattler-build_cryptography_1713776723/host_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/.cargo/bin:/Users/thorstenbeier/src/recipes/output/bld/rattler-build_cryptography_1713776586/host_en
 │ │ v_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/.cargo/bin:/Users/thorstenbeier/src/recipes/output/bld/rattler-build_cryptography_1713776513/host_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/.cargo/bin:/Users/thorstenbeier/src/r
 │ │ ecipes/output/bld/rattler-build_rust_1713772015/host_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_pl/.cargo/bin:/Users/thorstenbeier/src/recipes/output/bld/rattler-build_rust_1713771659/host_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho
 │ │ ld_placehold_placehold_pl/.cargo/bin:/Users/thorstenbeier/src/recipes/output/bld/rattler-build_rust_1713771422/host_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_pl/.cargo/bin:/Users/thorstenbeier/src/recipes/output/bld/rattler-build_rust_1713771169/host_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac
 │ │ ehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_pl/.cargo/bin:/Users/thorstenbeier/src/recipes/output/bld/rattler-build_rust_1713770996/host_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_pl/.cargo/bin:/Users/thorstenbeier/src/recipes/output/bld/rattler-build_rust_1713770937/host_env_placehold_placehold_p
 │ │ lacehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_pl/.cargo/bin:/Applications/Visual Studio Code.app/Contents/Resources/app/bin:/Applications/sublime.app/Contents/SharedSupport/bin/:/Users/thorstenbeier/.pixi/bin'
 │ │ + PATH='$PREFIX/.cargo/bin:$BUILD_PREFIX/bin:$PREFIX/bin:/Users/thorstenbeier/micromamba/condabin:/Users/thorstenbeier/bin/:/opt/homebrew/sbin:/opt/homebrew/bin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Library/Te
 │ │ X/texbin:/Users/thorstenbeier/.cargo/bin:/Users/thorstenbeier/src/recipes/output/bld/rattler-build_cryptography_1713781079/build_env/.cargo/bin:/Users/thorstenbeier/src/recipes/output/bld/rattler-build_cryptography_1713777812/build_env/.cargo/bin:/Users/thorstenbeier/src/recipes/output/bld/rattler-build_cryptography_1713777343/build_env/.cargo/bin:/Users/thorstenbeier/src/recipes/output/bld/rattler-build_cryptography_1713777153/build_env/.cargo/bin:/Users/thorstenbei
 │ │ er/src/recipes/output/bld/rattler-build_cryptography_1713777058/host_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/.cargo/bin:/Users/thorstenbeier/src/recipes/output/bld/rattler-build_cryptography_1713776991/host_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_p
 │ │ lacehold_placehold_placehold_plac/.cargo/bin:/Users/thorstenbeier/src/recipes/output/bld/rattler-build_cryptography_1713776901/host_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/.cargo/bin:/Users/thorstenbeier/src/recipes/output/bld/rattler-build_cryptography_1713776786/host_env_placehold_placehold_placehold_placehold_placehold_placehold_placehol
 │ │ d_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/.cargo/bin:/Users/thorstenbeier/src/recipes/output/bld/rattler-build_cryptography_1713776723/host_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/.cargo/bin:/Users/thorstenbeier/src/recipes/output/bld/rattler-build_cryptography_1713776586/host_env_place
 │ │ hold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/.cargo/bin:/Users/thorstenbeier/src/recipes/output/bld/rattler-build_cryptography_1713776513/host_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/.cargo/bin:/Users/thorstenbeier/src/recipes/
 │ │ output/bld/rattler-build_rust_1713772015/host_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_pl/.cargo/bin:/Users/thorstenbeier/src/recipes/output/bld/rattler-build_rust_1713771659/host_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac
 │ │ ehold_placehold_pl/.cargo/bin:/Users/thorstenbeier/src/recipes/output/bld/rattler-build_rust_1713771422/host_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_pl/.cargo/bin:/Users/thorstenbeier/src/recipes/output/bld/rattler-build_rust_1713771169/host_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_p
 │ │ lacehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_pl/.cargo/bin:/Users/thorstenbeier/src/recipes/output/bld/rattler-build_rust_1713770996/host_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_pl/.cargo/bin:/Users/thorstenbeier/src/recipes/output/bld/rattler-build_rust_1713770937/host_env_placehold_placehold_placehol
 │ │ d_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_pl/.cargo/bin:/Applications/Visual Studio Code.app/Contents/Resources/app/bin:/Applications/sublime.app/Contents/SharedSupport/bin/:/Users/thorstenbeier/.pixi/bin'
 │ │ + curl --proto =https --tlsv1.2 -sSf https://sh.rustup.rs
 │ │ + sh -s -- -y --default-toolchain=1.77.2
 │ │ info: downloading installer
 │ │ info: profile set to 'default'
 │ │ info: default host triple is aarch64-apple-darwin
 │ │ info: syncing channel updates for '1.77.2-aarch64-apple-darwin'
 │ │ info: latest update on 2024-04-09, rust version 1.77.2 (25ef9e3d8 2024-04-09)
 │ │ info: downloading component 'cargo'
 │ │ info: downloading component 'clippy'
 │ │ info: downloading component 'rust-docs'
 │ │ info: downloading component 'rust-std'
 │ │ info: downloading component 'rustc'
 │ │ info: downloading component 'rustfmt'
 │ │ info: installing component 'cargo'
 │ │ info: installing component 'clippy'
 │ │ info: installing component 'rust-docs'
 │ │ info: installing component 'rust-std'
 │ │ info: installing component 'rustc'
 │ │ info: installing component 'rustfmt'
 │ │ info: default toolchain set to '1.77.2-aarch64-apple-darwin'
 │ │   1.77.2-aarch64-apple-darwin installed - rustc 1.77.2 (25ef9e3d8 2024-04-09)
 │ │ Rust is installed now. Great!
 │ │ To get started you may need to restart your current shell.
 │ │ This would reload your PATH environment variable to include
 │ │ Cargo's bin directory
 │ │ ($PREFIX/.cargo/bin).
 │ │ To configure your current shell, you need to source
 │ │ the corresponding env file under
 │ │ $PREFIX/.cargo.
 │ │ This is usually done by running one of the following (note the leading DOT):
 │ │ .
 │ │ "$PREFIX/.cargo/env"
 │ │ # For sh/bash/zsh/ash/dash/pdksh
 │ │ source
 │ │ "$PREFIX/.cargo/env.fish"
 │ │ # For fish
 │ │ + rustup default 1.77.2
 │ │ info: using existing install for '1.77.2-aarch64-apple-darwin'
 │ │ info: default toolchain set to '1.77.2-aarch64-apple-darwin'
 │ │   1.77.2-aarch64-apple-darwin unchanged - rustc 1.77.2 (25ef9e3d8 2024-04-09)
 │ │ + rustup target add wasm32-unknown-emscripten
 │ │ info: downloading component 'rust-std' for 'wasm32-unknown-emscripten'
 │ │ info: installing component 'rust-std' for 'wasm32-unknown-emscripten'
 │ │
 │ ╰─────────────────── (took 17 seconds)
 │
 │ ╭─ Packaging new files
 │ │ Copying done!
 │ │ Rpath not in prefix or allow-listed: @loader_path/../lib – removing it
 │ │ install_name_tool for "/var/folders/yw/hcd009rd56zdy1_t6tbx4hzc0000gn/T/rust7uUUdG/.rustup/toolchains/1.77.2-aarch64-apple-darwin/lib/libunic_langid_macros_impl-963db6f9aec05cb0.dylib":
 │ │  - changing absolute rpath from "@loader_path/../lib" to "@loader_path/../../../../lib"
 │ │  - add rpath "@loader_path/../lib"
 │ │ × error install_name_tool failed: error: /Users/thorstenbeier/micromamba/envs/emf/bin/install_name_tool: can't specify both "-delete_rpath @loader_path/../lib" and "-add_rpath @loader_path/../lib"
 │ │ × error Usage: /Users/thorstenbeier/micromamba/envs/emf/bin/install_name_tool [-change old new] ... [-rpath old new] ... [-add_rpath new] ... [-delete_rpath old] ... [-id name] input
 │ │
 │ ╰─────────────────── (took 8 seconds)
DerThorsten commented 4 months ago

note that there is other stuff going on and the environment might be semi broken as rustup added various stuff to my zshrc / zsh env. Yet, I think it's still a legit issue with install_name_tool