Pass a space-separated list of variables into filter-bash-environment.py and
authorZac Medico <zmedico@gentoo.org>
Wed, 5 Mar 2008 23:48:50 +0000 (23:48 -0000)
committerZac Medico <zmedico@gentoo.org>
Wed, 5 Mar 2008 23:48:50 +0000 (23:48 -0000)
generate the final regex on the python side instead of in bash. Also, properly
anchor the regex so that it actually works.

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

bin/ebuild.sh
bin/filter-bash-environment.py

index 3268c9b0e21f3dee1ae2f9d876843f5aeb5f77b9..061e1961ca5be5e1718a8d459f08a483587c9005 100755 (executable)
@@ -1417,7 +1417,7 @@ PORTAGE_MUTABLE_FILTERED_VARS="AA HOSTNAME"
 # builtin command. To avoid this problem, this function filters those
 # variables out and discards them. See bug #190128.
 filter_readonly_variables() {
-       local x filtered_vars var_grep
+       local x filtered_vars
        local readonly_bash_vars="DIRSTACK EUID FUNCNAME GROUPS
                PIPESTATUS PPID SHELLOPTS UID"
        local filtered_sandbox_vars="SANDBOX_ACTIVE SANDBOX_BASHRC
@@ -1445,17 +1445,12 @@ filter_readonly_variables() {
                        ${PORTAGE_MUTABLE_FILTERED_VARS}
                "
        fi
-       set -f
-       for x in ${filtered_vars} ; do
-               var_grep="${var_grep}|${x}"
-       done
-       set +f
-       var_grep=${var_grep:1} # strip the first |
+
        # The sed is to remove the readonly attribute from variables such as those
        # listed in READONLY_EBUILD_METADATA, since having any readonly attributes
        # persisting in the saved environment can be inconvenient when it
        # eventually needs to be reloaded.
-       "${PORTAGE_BIN_PATH}"/filter-bash-environment.py "${var_grep}" | sed -r \
+       "${PORTAGE_BIN_PATH}"/filter-bash-environment.py "${filtered_vars}" | sed -r \
                -e 's:^declare[[:space:]]+-r[[:space:]]+:declare :' \
                -e 's:^declare[[:space:]]+-([[:alnum:]]*)r([[:alnum:]]*)[[:space:]]+:declare -\1\2 :'
 }
index 0a88f710b1e0c8933498e712dd60c4bfe7cbfa22..c5d5da45e4867288304949e5b81a62ff1c238ad9 100755 (executable)
@@ -102,6 +102,7 @@ if __name__ == "__main__":
                parser.error("Missing required PATTERN argument.")
        file_in = sys.stdin
        file_out = sys.stdout
+       var_pattern = "^(%s)$" % "|".join(args[0].split())
        filter_bash_environment(
-               compile_egrep_pattern(args[0]), file_in, file_out)
+               compile_egrep_pattern(var_pattern), file_in, file_out)
        file_out.flush()