Skip to content

Commit 46b1283

Browse files
committed
Fully resolve symlinks in wrapper scripts
1 parent a9e218f commit 46b1283

File tree

1 file changed

+18
-3
lines changed

1 file changed

+18
-3
lines changed

scripts/package-linux.sh

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,21 @@ if [ -f "${OUTPUT_DIR}${INSTALL_PREFIX}/bin/tabbyadm" ]; then
2222
sed "s|___BRANDING___|${BRANDING}|g" -i ${OUTPUT_DIR}${INSTALL_PREFIX}/bin/tabbyadm
2323
fi
2424

25+
resolve_bindir=$(cat << EOT
26+
# Find this script's location, resolving any symlinks along the way.
27+
# https://stackoverflow.com/a/246128
28+
source=\${BASH_SOURCE[0]}
29+
while [ -L "\$source" ]; do # resolve \$source until the file is no longer a symlink
30+
release_bindir=\$( cd -P "\$( dirname "\$source" )" >/dev/null 2>&1 && pwd )
31+
source=\$(readlink "\$source")
32+
# if \$source was a relative symlink, we need to resolve it relative to the path
33+
# where the symlink file was located
34+
[[ \$source != /* ]] && source=\$release_bindir/\$source
35+
done
36+
release_bindir=\$( cd -P "\$( dirname "\$source" )" >/dev/null 2>&1 && pwd )
37+
EOT
38+
)
39+
2540
for bindir in bin py2bin py3bin super_prove/bin share/verilator/bin lib/ivl; do
2641
for binfile in $(file $bindir/* | grep ELF | grep dynamically | grep interpreter | cut -f1 -d:); do
2742
rel_path=$(realpath --relative-to=$bindir .)
@@ -32,7 +47,7 @@ for bindir in bin py2bin py3bin super_prove/bin share/verilator/bin lib/ivl; do
3247
is_using_fonts=false
3348
cat > $binfile << EOT
3449
#!/usr/bin/env bash
35-
release_bindir="\$(dirname "\${BASH_SOURCE[0]}")"
50+
$resolve_bindir
3651
release_bindir_abs="\$(readlink -f "\$release_bindir")"
3752
release_topdir_abs="\$(readlink -f "\$release_bindir/$rel_path")"
3853
export PATH="\$release_bindir_abs:\$PATH"
@@ -165,7 +180,7 @@ for script in bin/* py3bin/*; do
165180
mv "${script}" libexec
166181
cat > "${script}" <<EOT
167182
#!/usr/bin/env bash
168-
release_bindir="\$(dirname "\${BASH_SOURCE[0]}")"
183+
$resolve_bindir
169184
release_bindir_abs="\$(readlink -f "\$release_bindir/../bin")"
170185
release_topdir_abs="\$(readlink -f "\$release_bindir/$rel_path")"
171186
export PATH="\$release_bindir_abs:\$PATH"
@@ -239,7 +254,7 @@ if [ -f "bin/yosys-config" ]; then
239254
mv bin/yosys-config bin/yosys-config.orig
240255
cat > bin/yosys-config << EOT
241256
#!/usr/bin/env bash
242-
release_bindir="\$(dirname "\${BASH_SOURCE[0]}")"
257+
$resolve_bindir
243258
release_bindir_abs="\$(readlink -f "\$release_bindir")"
244259
release_topdir_abs="\$(readlink -f "\$release_bindir/$rel_path")"
245260
EOT

0 commit comments

Comments
 (0)