commit:     d83b20802b8b432ee79c666c772c60f07ae2424c
Author:     Georgy Yakovlev <gyakovlev <AT> gentoo <DOT> org>
AuthorDate: Sat Sep 24 03:03:59 2022 +0000
Commit:     Georgy Yakovlev <gyakovlev <AT> gentoo <DOT> org>
CommitDate: Sat Sep 24 04:13:19 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=d83b2080

dev-util/rustup: revbump, add rust-analyzer, add unsymlink support

Signed-off-by: Georgy Yakovlev <gyakovlev <AT> gentoo.org>

 dev-util/rustup/files/symlink_rustup.sh            | 63 +++++++++++++++++-----
 ...ustup-1.25.1.ebuild => rustup-1.25.1-r1.ebuild} |  0
 2 files changed, 51 insertions(+), 12 deletions(-)

diff --git a/dev-util/rustup/files/symlink_rustup.sh 
b/dev-util/rustup/files/symlink_rustup.sh
index 743072b8f96c..8ab6608686fc 100644
--- a/dev-util/rustup/files/symlink_rustup.sh
+++ b/dev-util/rustup/files/symlink_rustup.sh
@@ -3,13 +3,13 @@
 set -euo pipefail
 IFS=$'\n\t'
 
-SYMLINK_RUSTUP_VERSION="0.0.3"
-
+SYMLINK_RUSTUP_VERSION="0.0.4"
+binpath="@GENTOO_PORTAGE_EPREFIX@/usr/bin/rustup-init"
 
 : "${CARGO_HOME:=${HOME}/.cargo}"
 : "${RUSTUP_HOME:=${HOME}/.rustup}"
 
-__err_exists="already exists, remove and re-run the script"
+__err_exists="already exists, try using -u|--unsymlink option first"
 
 # dies with optional message
 die() {
@@ -38,23 +38,43 @@ help() {
        echo " ${CARGO_HOME}"
        echo
        echo "Options:"
-       echo "  -a, --apply     Apply changes (required)"
+       echo "  -s, --symlink   Setup rustup symlinks in ${CARGO_HOME}/bin"
        echo "  -C, --nocolor   Disable colored output"
        echo "  -d, --debug     Debug mode (sets -x shell option)"
        echo "  -V, --version   Print version number"
+       echo "  -u, --unsymlink Remove rustup symlinks from ${CARGO_HOME}/bin"
        echo "  -q, --quiet     Quiet mode"
 } # help()
 
 
 symlink_rustup() {
-       local binpath gentoo_rust tool tools=(
-               cargo{,-clippy,-fmt,-miri}
-               clippy-driver
+       local gentoo_rust tool
+       # rustup calls those proxies
+       # src/lib.rs TOOLS
+       local tools=(
+               rustc
+               rustdoc
+               cargo
+               rust-lldb
+               rust-gdb
+               rust-gdbgui
                rls
-               rust{c,doc,fmt,-gdb,-lldb,up}
+               cargo-clippy
+               clippy-driver
+               cargo-miri
        )
 
-       binpath="@GENTOO_PORTAGE_EPREFIX@/usr/bin/rustup-init"
+       # src/lib.rs DUP_TOOLS
+       # those can be installed via cargo and not with rust itself
+       local dup_tools=(
+               rust-analyzer
+               rustfmt
+               cargo-fmt
+       )
+
+       # we need rustup symlink too, so add it to final list
+       tools+=( "${dup_tools[@]}" rustup )
+
        gentoo_rust="$(eselect --brief rust show 2>/dev/null)"
 
        mkdir -p "${CARGO_HOME}/bin" || die
@@ -78,15 +98,32 @@ symlink_rustup() {
        good "rustup selfupdate is disabled, it will be updated by portage"
 } # symlink_rustup()
 
+unsymlink_rustup() {
+       local symlinks
+       IFS= mapfile -d '' symlinks < <(find -L "${CARGO_HOME}/bin" \
+               -samefile "${binpath}" -print0 )
+       if [[ "${symlinks-}" ]]; then
+               rm -v "${symlinks[@]}" || die
+       else
+               die "already clean"
+       fi
+}
 
 main(){
        [[ "$EUID" -eq 0 ]] && die "Running as root is not supported"
        local me
        me="$(basename "${BASH_SOURCE[${#BASH_SOURCE[@]} - 1]}")"
+
+       local symlink=no
+       local unsymlink=no
+
        while [[ ${#} -gt 0 ]]; do
                case ${1} in
-                       -a|--apply)
-                               APPLY=true
+                       -s|--symlink)
+                               symlink=yes
+                               ;;
+                       -u|--unsymlink)
+                               unsymlink=yes
                                ;;
                        -h|--help)
                                help
@@ -112,8 +149,10 @@ main(){
                esac
                shift
        done
-       if [[ ${APPLY:-false} == true ]]; then
+       if [[ ${symlink} == yes ]]; then
                symlink_rustup
+       elif [[ ${unsymlink} == yes ]]; then
+               unsymlink_rustup
        else
                help
        fi

diff --git a/dev-util/rustup/rustup-1.25.1.ebuild 
b/dev-util/rustup/rustup-1.25.1-r1.ebuild
similarity index 100%
rename from dev-util/rustup/rustup-1.25.1.ebuild
rename to dev-util/rustup/rustup-1.25.1-r1.ebuild

Reply via email to