commit:     7ac58a21d2fd6e66852c7ae2e6c09f3b836b73a1
Author:     David Michael <fedora.dm0 <AT> gmail <DOT> com>
AuthorDate: Fri May 14 14:16:57 2021 +0000
Commit:     Georgy Yakovlev <gyakovlev <AT> gentoo <DOT> org>
CommitDate: Sat Jul  3 07:48:56 2021 +0000
URL:        https://gitweb.gentoo.org/proj/eselect-rust.git/commit/?id=7ac58a21

Stop using absolute symlinks

Prefixing everything with ${EROOT} produces invalid paths on the
target system.  All of the symlinks point to files in the same
directory, so there is no reason to specify directories at all.

Bug: https://bugs.gentoo.org/790305
Signed-off-by: David Michael <fedora.dm0 <AT> gmail.com>
Signed-off-by: Georgy Yakovlev <gyakovlev <AT> gentoo.org>

 README.md       | 4 ----
 rust.eselect.in | 8 ++++----
 2 files changed, 4 insertions(+), 8 deletions(-)

diff --git a/README.md b/README.md
index 6ae99cf..ac3a34d 100644
--- a/README.md
+++ b/README.md
@@ -75,7 +75,3 @@ then `/etc/env.d/rust/provider-TARGET` should contain:
 ```
 
 Note, that `/usr/bin/rustc` should not be listed, as it is always managed by 
eselect.
-
-### Notes
-
-**eselect-rust** automatically prepends every path with `${EROOT}` variable.

diff --git a/rust.eselect.in b/rust.eselect.in
index c3ee046..7ab845b 100644
--- a/rust.eselect.in
+++ b/rust.eselect.in
@@ -1,4 +1,4 @@
-# Copyright 1999-2020 Gentoo Authors
+# Copyright 1999-2021 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 DESCRIPTION="Manage the Rust compiler versions"
@@ -157,7 +157,7 @@ set_symlink() {
 
        remove_symlink "${dest}"
 
-       if [[ -e ${source} ]]; then
+       if [[ -e ${dest%/*}/${source} ]]; then
                mkdir -p "$(dirname ${dest})" || die -q "directory creation 
failed for $(dirname ${dest})"
                ln -s "${source}" "${dest}" || die -q "${dest} symlink setting 
failed"
        else
@@ -197,11 +197,11 @@ set_version() {
 
        unset_version
 
-       set_symlink "${BIN_DIR}/rustc-${target_postfix}" "${BIN_DIR}/rustc"
+       set_symlink "rustc-${target_postfix}" "${BIN_DIR}/rustc"
 
        local symlinks=( $(get_symlinks ${target}) )
        for i in "${symlinks[@]}"; do
-               set_symlink "${EROOT%/}${i}-${target_postfix}" "${EROOT%/}${i}"
+               set_symlink "${i##*/}-${target_postfix}" "${EROOT%/}${i}"
        done
 
        cp "${ENV_D_PATH}/rust/provider-${target}" \

Reply via email to