diff options
Diffstat (limited to 'sys-apps/baselayout-prefix/files/baselayout-1.12.5-prefix-chaining.patch')
-rw-r--r-- | sys-apps/baselayout-prefix/files/baselayout-1.12.5-prefix-chaining.patch | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/sys-apps/baselayout-prefix/files/baselayout-1.12.5-prefix-chaining.patch b/sys-apps/baselayout-prefix/files/baselayout-1.12.5-prefix-chaining.patch new file mode 100644 index 000000000000..f17d1bb39363 --- /dev/null +++ b/sys-apps/baselayout-prefix/files/baselayout-1.12.5-prefix-chaining.patch @@ -0,0 +1,83 @@ +diff -ru baselayout-1.12.5.orig/etc/profile baselayout-1.12.5/etc/profile +--- baselayout-1.12.5.orig/etc/profile 2009-03-24 08:18:37.000000000 +0100 ++++ baselayout-1.12.5/etc/profile 2009-03-24 11:50:57.000000000 +0100 +@@ -4,6 +4,40 @@ + # environment for login shells. + # + ++# ++# for prefix-chaining, the very first thing to do is to load ++# the profiles for all chained instances above. ++# ++# TODO: is it safe in any case to shell source make.conf? ++# don't do any recursive expansion here. if the parent can ++# use READONLY_EPREFIX's, it has to have the same profile as ++# we have here, and thus it will source parents before ++# evaluating anything from itself. ++# ++_ro_root=$(. "@GENTOO_PORTAGE_EPREFIX@"/etc/make.conf && echo $READONLY_EPREFIX) ++_ro_deps=${_ro_root#*:} ++_ro_root=${_ro_root%:*} ++if [ -n "${_ro_root}" -a -f "${_ro_root}"/etc/profile ]; then ++ . "${_ro_root}"/etc/profile ++fi ++ ++# ++# With prefix-chaining we want another set of variables that ++# should be retained for all prefixes. for example it is ok ++# to retain PKG_CONFIG_PATH if the parent of the chain can ++# be used to resolve RDEPEND... ++# ++if [[ -n "${_ro_root}" ]]; then ++ _ro_chained_path_vars="PATH MANPATH" ++ ++ [[ ${_ro_deps} == *RDEPEND* ]] && ++ _ro_chained_path_vars="${_ro_chained_path_vars} PKG_CONFIG_PATH" ++ ++ for var in ${_ro_chained_path_vars}; do ++ eval "_ro_backupenv_paths_${var}=\${${var}}" ++ done ++fi ++ + # Load environment settings from profile.env, which is created by + # env-update from the files in /etc/env.d + if [ -e "@GENTOO_PORTAGE_EPREFIX@"/etc/profile.env ] ; then +@@ -21,10 +55,17 @@ + # It is intentional in the following line to use || instead of -o. + # This way the evaluation can be short-circuited and calling whoami is + # avoided. ++# ++# system directories are only appended if this prefix is the last ++# one in a chain of prefixes (or the only prefix in the chain), so ++# that they don't end up in the middle of multiple different prefix ++# paths (profile is recursive now, see above!) + if [ "$EUID" = "0" ] || [ "$USER" = "root" ] ; then +- PATH="@GENTOO_PORTAGE_EPREFIX@/usr/sbin:@GENTOO_PORTAGE_EPREFIX@/usr/bin:@GENTOO_PORTAGE_EPREFIX@/sbin:@GENTOO_PORTAGE_EPREFIX@/bin:${ROOTPATH}:/usr/sbin:/usr/bin:/sbin:/bin" ++ PATH="@GENTOO_PORTAGE_EPREFIX@/usr/sbin:@GENTOO_PORTAGE_EPREFIX@/usr/bin:@GENTOO_PORTAGE_EPREFIX@/sbin:@GENTOO_PORTAGE_EPREFIX@/bin:${ROOTPATH}" ++ [[ -z "${_ro_root}" ]] && PATH="$PATH:/usr/sbin:/usr/bin:/sbin:/bin" + else +- PATH="@GENTOO_PORTAGE_EPREFIX@/usr/bin:@GENTOO_PORTAGE_EPREFIX@/bin:${PATH}:/usr/bin:/bin" ++ PATH="@GENTOO_PORTAGE_EPREFIX@/usr/bin:@GENTOO_PORTAGE_EPREFIX@/bin:${PATH}" ++ [[ -z "${_ro_root}" ]] && PATH="$PATH:/usr/bin:/bin" + fi + export PATH + unset ROOTPATH +@@ -63,3 +104,18 @@ + fi + done + unset sh ++ ++# ++# finally chain the save variables for previous prefixes in the chain. ++# ++if [[ -n "${_ro_chained_path_vars}" ]]; then ++ for var in ${_ro_chained_path_vars}; do ++ eval "export ${var}=\${${var}}:\${_ro_backupenv_paths_${var}}" ++ eval "unset _ro_backupenv_paths_${var}" ++ done ++fi ++ ++unset _ro_root ++unset _ro_deps ++unset _ro_chained_path_vars ++ |