@@ -28,6 +28,21 @@ preload_tools=(
2828 " bin/sby-gui"
2929)
3030
31+ resolve_bindir=$( cat << EOT
32+ # Find this script's location, resolving any symlinks along the way.
33+ # https://stackoverflow.com/a/246128
34+ source=\$ {BASH_SOURCE[0]}
35+ while [ -L "\$ source" ]; do # resolve \$ source until the file is no longer a symlink
36+ release_bindir=\$ ( cd -P "\$ ( dirname "\$ source" )" >/dev/null 2>&1 && pwd )
37+ source=\$ (readlink "\$ source")
38+ # if \$ source was a relative symlink, we need to resolve it relative to the path
39+ # where the symlink file was located
40+ [[ \$ source != /* ]] && source=\$ release_bindir/\$ source
41+ done
42+ release_bindir=\$ ( cd -P "\$ ( dirname "\$ source" )" >/dev/null 2>&1 && pwd )
43+ EOT
44+ )
45+
3146for bindir in bin py2bin py3bin super_prove/bin share/verilator/bin lib/ivl; do
3247 for binfile in $( file $bindir /* | grep ELF | grep dynamically | grep interpreter | cut -f1 -d:) ; do
3348 rel_path=$( realpath --relative-to=$bindir .)
@@ -38,7 +53,7 @@ for bindir in bin py2bin py3bin super_prove/bin share/verilator/bin lib/ivl; do
3853 is_using_fonts=false
3954 cat > $binfile << EOT
4055#!/usr/bin/env bash
41- release_bindir=" \$ (dirname " \$ {BASH_SOURCE[0]}")"
56+ $resolve_bindir
4257release_bindir_abs="\$ (readlink -f "\$ release_bindir")"
4358release_topdir_abs="\$ (readlink -f "\$ release_bindir/$rel_path ")"
4459export PATH="\$ release_bindir_abs:\$ PATH"
@@ -190,7 +205,7 @@ for script in bin/* py3bin/*; do
190205 mv " ${script} " libexec
191206 cat > " ${script} " << EOT
192207#!/usr/bin/env bash
193- release_bindir=" \$ (dirname " \$ {BASH_SOURCE[0]}")"
208+ $resolve_bindir
194209release_bindir_abs="\$ (readlink -f "\$ release_bindir/../bin")"
195210release_topdir_abs="\$ (readlink -f "\$ release_bindir/$rel_path ")"
196211export PATH="\$ release_bindir_abs:\$ PATH"
@@ -264,7 +279,7 @@ if [ -f "bin/yosys-config" ]; then
264279 mv bin/yosys-config bin/yosys-config.orig
265280 cat > bin/yosys-config << EOT
266281#!/usr/bin/env bash
267- release_bindir=" \$ (dirname " \$ {BASH_SOURCE[0]}")"
282+ $resolve_bindir
268283release_bindir_abs="\$ (readlink -f "\$ release_bindir")"
269284release_topdir_abs="\$ (readlink -f "\$ release_bindir/$rel_path ")"
270285EOT
0 commit comments