diff options
-rw-r--r-- | config/setup/Kconfig | 8 | ||||
-rw-r--r-- | scripts/lib/ptxd_make_xpkg_pkg.sh | 13 |
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 && |