summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--config/setup/Kconfig8
-rw-r--r--scripts/lib/ptxd_make_xpkg_pkg.sh13
2 files changed, 17 insertions, 4 deletions
diff --git a/config/setup/Kconfig b/config/setup/Kconfig
index 036ae1d91..e40e86080 100644
--- a/config/setup/Kconfig
+++ b/config/setup/Kconfig
@@ -296,6 +296,14 @@ config SETUP_PATCHIN_GIT
_NOTE_: this is an experimental feature
+config SETUP_NFS_REL_SYMLINK
+ bool "make absolute symlinks relative on nfsroot"
+ help
+ With this option enabled, ptxdist converts any absolute
+ symlink into a relative symlink when installing it to
+ ${PLATFORMDIR}/root{,-debug}. This makes it easier to check
+ for broken links.
+ The link installed into the image remains absolute.
config SETUP_HOST_CC
prompt "host CC"
diff --git a/scripts/lib/ptxd_make_xpkg_pkg.sh b/scripts/lib/ptxd_make_xpkg_pkg.sh
index 78fec97c6..38c0a40fe 100644
--- a/scripts/lib/ptxd_make_xpkg_pkg.sh
+++ b/scripts/lib/ptxd_make_xpkg_pkg.sh
@@ -238,7 +238,7 @@ ptxd_install_ln() {
local usr="${3:-0}"
local grp="${4:-0}"
local -a dirs ndirs pdirs sdirs
- local mod_nfs mod_rw
+ local mod_nfs mod_rw rel
echo "\
install link:
@@ -249,15 +249,20 @@ install link:
ptxd_install_setup &&
case "${src}" in
- /*) echo "Error: absolute link detected, please fix!"
- return 1
+ /*)
+ if [ "${PTXCONF_SETUP_NFS_REL_SYMLINK}" = "y" ]; then
+ rel="$(dirname "${dst}" | sed -e 's,/[^/]*,/..,g' -e 's,^/,,')"
+ fi
;;
*) ;;
esac &&
rm -f "${dirs[@]/%/${dst}}" &&
install -d "${dirs[@]/%/$(dirname "${dst}")}" &&
- for d in "${dirs[@]/%/${dst}}"; do
+ for d in "${ndirs[@]/%/${dst}}"; do
+ ln -s "${rel}${src}" "${d}" || return
+ done &&
+ for d in "${pdirs[@]/%/${dst}}"; do
ln -s "${src}" "${d}" || return
done &&