"
fi
- # TODO: Take the the below sed-based declare -r filter and integrate it
- # directly into filter-bash-environment.py.
- # 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 "${filtered_vars}" | sed -r \
- -e 's:^declare[[:space:]]+-r[[:space:]]+:declare :' \
- -e 's:^declare[[:space:]]+-([[:alnum:]]*)r([[:alnum:]]*)[[:space:]]+:declare -\1\2 :'
+ "${PORTAGE_BIN_PATH}"/filter-bash-environment.py "${filtered_vars}"
}
# @FUNCTION: preprocess_ebuild_env
var_assign_re = re.compile(r'(^|^declare\s+-\S+\s+|^export\s+)([^=\s]+)=("|\')?.*$')
close_quote_re = re.compile(r'(\\"|"|\')\s*$')
+readonly_re = re.compile(r'^declare\s+-(\S*)r(\S*)\s+')
def compile_egrep_pattern(s):
for k, v in egrep_compat_map.iteritems():
multi_line_quote = quote
multi_line_quote_filter = filter_this
if not filter_this:
+ readonly_match = readonly_re.match(line)
+ if readonly_match is not None:
+ declare_opts = ""
+ for i in (1, 2):
+ group = readonly_match.group(i)
+ if group is not None:
+ declare_opts += group
+ if declare_opts:
+ line = "declare -%s %s" % \
+ (declare_opts, line[readonly_match.end():])
+ else:
+ line = "declare " + line[readonly_match.end():]
file_out.write(line)
continue
if here_doc_delim is not None: