Bug #296870 - Allow locale related LANG and LC_* variables to persist between
authorZac Medico <zmedico@gentoo.org>
Wed, 16 Dec 2009 10:01:10 +0000 (10:01 -0000)
committerZac Medico <zmedico@gentoo.org>
Wed, 16 Dec 2009 10:01:10 +0000 (10:01 -0000)
ebuild phases, and only filter them for binary and installed packages.

svn path=/main/trunk/; revision=15096

bin/ebuild.sh
bin/isolated-functions.sh

index b3cb9ca9f6fcc04355cb8ea8cd8e402ae06f5ae7..0485cd33112fa652459c57f193d6ee918f2a150d 100755 (executable)
@@ -1632,6 +1632,12 @@ PORTAGE_MUTABLE_FILTERED_VARS="AA HOSTNAME"
 # phase. However, if FEATURES exist inside environment.bz2 then they
 # should be overridden by current settings.
 #
+# --filter-locale causes locale related variables such as LANG and LC_*
+# variables to be filtered. These variables should persist between phases,
+# in case they are modified by the ebuild. However, the current user
+# settings should be used when loading the environment from a binary or
+# installed package.
+#
 # ---allow-extra-vars causes some extra vars to be allowd through, such
 # as ${PORTAGE_SAVED_READONLY_VARS} and ${PORTAGE_MUTABLE_FILTERED_VARS}.
 #
@@ -1671,6 +1677,11 @@ filter_readonly_variables() {
        if hasq --filter-features $* ; then
                filtered_vars="${filtered_vars} FEATURES"
        fi
+       if hasq --filter-locale $* ; then
+               filtered_vars+=" LANG LC_ALL LC_COLLATE
+                       LC_CTYPE LC_MESSAGES LC_MONETARY
+                       LC_NUMERIC LC_PAPER LC_TIME"
+       fi
        if ! hasq --allow-extra-vars $* ; then
                filtered_vars="
                        ${filtered_vars}
@@ -1696,7 +1707,7 @@ preprocess_ebuild_env() {
                # environment may contain stale SANDBOX_{DENY,PREDICT,READ,WRITE}
                # and FEATURES variables that should be filtered out. Between
                # phases, these variables are normally preserved.
-               filter_opts="--filter-sandbox --filter-features ${filter_opts}"
+               filter_opts+=" --filter-sandbox --filter-features --filter-locale"
        fi
        filter_readonly_variables ${filter_opts} < "${T}"/environment \
                > "${T}"/environment.filtered || return $?
index 29432488901ff428c36690d1a094a3547e322a0c..893ce57ba0fb4b01fb42767cfc2b00eac220738f 100755 (executable)
@@ -506,11 +506,6 @@ save_ebuild_env() {
                unset ECHANGELOG_USER GPG_AGENT_INFO \
                SSH_AGENT_PID SSH_AUTH_SOCK STY WINDOW XAUTHORITY
 
-               # localization settings
-               unset LANG LC_COLLATE LC_CTYPE LC_MESSAGES \
-                       LC_MONETARY LC_NUMERIC LC_TIME LC_PAPER \
-                       LC_ALL
-
                # CCACHE and DISTCC config
                unset ${!CCACHE_*} ${!DISTCC_*}