• [gentoo-dev] [PATCH 2/3] dev-lang/rust{,-bin}: Add 1.54.0 (3/3)

    From kangie@gentoo.org@21:1/5 to All on Mon Nov 25 04:40:01 2024
    [continued from previous message]

    + ewarn "Alternatively llvm-strip can be used, it supports stripping any target"
    + ewarn "define STRIP=\"llvm-strip\" to use it (experimental)"
    + ewarn
    + fi
    + done
    + fi # I_KNOW_WHAT_I_AM_DOING_CROSS
    +
    + einfo "Rust configured with the following flags:"
    + echo
    + echo RUSTFLAGS="${RUSTFLAGS:-}"
    + echo RUSTFLAGS_BOOTSTRAP="${RUSTFLAGS_BOOTSTRAP:-}"
    + echo RUSTFLAGS_NOT_BOOTSTRAP="${RUSTFLAGS_NOT_BOOTSTRAP:-}"
    + env | grep "CARGO_TARGET_.*_RUSTFLAGS="
    + cat "${S}"/config.env || die
    + echo
    + einfo "config.toml contents:"
    + cat "${S}"/config.toml || die
    + echo
    +}
    +
    +src_compile() {
    + # we need \n IFS to have config.env with spaces loaded properly. #734018
    + (
    + IFS=$'\n'
    + env $(cat "${S}"/config.env) RUST_BACKTRACE=1\
    + "${EPYTHON}" ./x.py build -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
    + )
    +}
    +
    +src_test() {
    + # https://rustc-dev-guide.rust-lang.org/tests/intro.html
    +
    + # those are basic and codegen tests.
    + local tests=(
    + assembly
    + codegen
    + codegen-units
    + compile-fail
    + incremental
    + mir-opt
    + pretty
    + run-make
    + )
    +
    + # fragile/expensive/less important tests
    + # or tests that require extra builds
    + # TODO: instead of skipping, just make some nonfatal.
    + if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then
    + tests+=(
    + rustdoc
    + rustdoc-js
    + rustdoc-js-std
    + rustdoc-ui
    + run-make-fulldeps
    + ui
    + ui-fulldeps
    + )
    + fi
    +
    + local i failed=()
    + einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}"
    + for i in "${tests[@]}"; do
    + local t="src/test/${i}"
    + einfo "rust_src_test: running ${t}"
    + if ! (
    + IFS=$'\n'
    + env $(cat "${S}"/config.env) RUST_BACKTRACE=1 \ + "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \
    + -j$(makeopts_jobs) --no-doc --no-fail-fast "${t}"
    + )
    + then
    + failed+=( "${t}" )
    + eerror "rust_src_test: ${t} failed"
    + fi
    + done
    +
    + if [[ ${#failed[@]} -ne 0 ]]; then
    + eerror "rust_src_test: failure summary: ${failed[@]}"
    + die "aborting due to test failures"
    + fi
    +}
    +
    +src_install() {
    + (
    + IFS=$'\n'
    + env $(cat "${S}"/config.env) DESTDIR="${D}" \
    + "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
    + )
    +
    + # bug #689562, #689160
    + rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die
    + rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die
    +
    + local symlinks=(
    + cargo
    + rls
    + rust-gdb
    + rust-gdbgui
    + rust-lldb
    + rustc
    + rustdoc
    + )
    +
    + use clippy && symlinks+=( clippy-driver cargo-clippy )
    + use miri && symlinks+=( miri cargo-miri )
    + use rustfmt && symlinks+=( rustfmt cargo-fmt )
    +
    + einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}"
    + local i
    + for i in "${symlinks[@]}"; do
    + # we need realpath on /usr/bin/* symlink return version-appended binary path.
    + # so /usr/bin/rustc should point to /usr/lib/rust/<ver>/bin/rustc-<ver>
    + # need to fix eselect-rust to remove this hack.
    + local ver_i="${i}-${PV}"
    + if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then
    + einfo "Installing ${i} symlink"
    + ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die
    + else
    + ewarn "${i} symlink requested, but source file not found"
    + ewarn "please report this"
    + fi
    + dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}"
    + done
    +
    + # symlinks to switch components to active rust in eselect
    + dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}"
    + dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}"
    + dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}"
    + dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}"
    + dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}"
    +
    + newenvd - "50${P}" <<-_EOF_
    + LDPATH="${EPREFIX}/usr/lib/rust/lib-${PV}"
    + MANPATH="${EPREFIX}/usr/lib/rust/man-${PV}"
    + $(use amd64 && usex elibc_musl 'CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-C target-feature=-crt-static"' '')
    + $(use arm64 && usex elibc_musl 'CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-C target-feature=-crt-static"' '')
    + _EOF_
    +
    + rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die
    + rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die
    +
    + # note: eselect-rust adds EROOT to all paths below
    + cat <<-_EOF_ > "${T}/provider-${P}"
    + /usr/bin/cargo
    + /usr/bin/rls
    + /usr/bin/rust-gdb
    + /usr/bin/rust-gdbgui
    + /usr/bin/rust-lldb
    + /usr/bin/rustdoc
    + /usr/lib/rust/lib
    + /usr/lib/rust/libexec
    + /usr/lib/rust/man
    + /usr/lib/rustlib
    + /usr/share/doc/rust
    + _EOF_
    +
    + if use clippy; then
    + echo /usr/bin/clippy-driver >> "${T}/provider-${P}"
    + echo /usr/bin/cargo-clippy >> "${T}/provider-${P}"
    + fi
    + if use miri; then
    + echo /usr/bin/miri >> "${T}/provider-${P}"
    + echo /usr/bin/cargo-miri >> "${T}/provider-${P}"
    + fi
    + if use rustfmt; then
    + echo /usr/bin/rustfmt >> "${T}/provider-${P}"
    + echo /usr/bin/cargo-fmt >> "${T}/provider-${P}"
    + fi
    +
    + insinto /etc/env.d/rust
    + doins "${T}/provider-${P}"
    +}
    +
    +pkg_postinst() {
    + eselect rust update
    +
    + if has_version dev-debug/gdb || has_version dev-util/lldb; then
    + elog "Rust installs a helper script for calling GDB and LLDB," + elog "for your convenience it is installed under /usr/bin/rust-{gdb,lldb}-${PV}."
    + fi
    +
    + if has_version app-editors/emacs; then
    + elog "install app-emacs/rust-mode to get emacs support for rust."
    + fi
    +
    + if has_version app-editors/gvim || has_version app-editors/vim; then
    + elog "install app-vim/rust-vim to get vim support for rust."
    + fi
    +}
    +
    +pkg_postrm() {
    + eselect rust cleanup
    +}
    diff --git a/eclass/cargo.eclass b/eclass/cargo.eclass
    index a49ef818a351..2677031246f6 100644
    --- a/eclass/cargo.eclass
    +++ b/eclass/cargo.eclass
    @@ -315,7 +315,7 @@ cargo_crate_uris() {
    # @FUNCTION: _cargo_gen_override_paths_config
    # @INTERNAL
    # @DESCRIPTION:
    -# Generate the TOML content for overriding crates using the package manager. +# Generate the TOML content for overriding crates globally using the package manager.
    # This is called from within cargo_gen_config to insert the appropriate snippet
    # into the generated config.toml. Does not support git crates.
    _cargo_gen_override_paths_config() {
    diff --git a/eclass/rust.eclass b/eclass/rust.eclass
    index 450911ba2ea0..e2d950833bc3 100644
    --- a/eclass/rust.eclass
    +++ b/eclass/rust.eclass
    @@ -75,6 +75,7 @@ declare -A -g -r _RUST_LLVM_MAP=(
    ["1.75.0"]=17
    ["1.74.1"]=17
    ["1.71.1"]=16
    + ["1.54.0"]=12
    )

    # @ECLASS_VARIABLE: _RUST_SLOTS_ORDERED
    @@ -92,6 +93,7 @@ declare -a -g -r _RUST_SLOTS_ORDERED=(
    "1.75.0"
    "1.74.1"
    "1.71.1"
    + "1.54.0"
    )

    # == control variables ==
    --
    2.47.0

    --- SoupGate-Win32 v1.