# map files are altered, and all section/symbol names
# appearing between a triggering of this rule and the
# next trigger of this rule are associated with this file
- /[-+] a\/.*\.map/ {map=$2; in_map=1}
+ /[-+] [ab]\/.*\.map/ {map=$2; in_map=1; next}
- # Same pattern as above, only it matches on anything that
- # does not end in 'map', indicating we have left the map chunk.
- # When we hit this, turn off the in_map variable, which
- # supresses the subordonate rules below
- /[-+] a\/.*\.[^map]/ {in_map=0}
+ # The previous rule catches all .map files, anything else
+ # indicates we left the map chunk.
+ /[-+] [ab]\// {in_map=0}
# Triggering this rule, which starts a line and ends it
# with a { identifies a versioned section. The section name is
}
+is_stable_section() {
+ [ "$1" != 'EXPERIMENTAL' ] && [ "$1" != 'INTERNAL' ]
+}
+
check_for_rule_violations()
{
local mapdb="$1"
then
# Just inform the user of this occurrence, but
# don't flag it as an error
- echo -n "INFO: symbol $syname is added but "
+ echo -n "INFO: symbol $symname is added but "
echo -n "patch has insuficient context "
echo -n "to determine the section name "
echo -n "please ensure the version is "
oldsecname=$(sed -n \
"s#$mname $symname \(.*\) del#\1#p" "$mapdb")
- # A symbol can not enter a non experimental
- # section directly
- if [ $? -ne 0 ] && [ "$secname" != 'EXPERIMENTAL' ]
+ # A symbol can not enter a stable section directly
+ if [ -z "$oldsecname" ]
then
- echo -n "ERROR: symbol $symname "
- echo -n "is added in the $secname "
- echo -n "section, but is expected to "
- echo -n "be added in the EXPERIMENTAL "
- echo "section of the version map"
- ret=1
- continue
+ if ! is_stable_section $secname
+ then
+ echo -n "INFO: symbol $symname has "
+ echo -n "been added to the "
+ echo -n "$secname section of the "
+ echo "version map"
+ continue
+ else
+ echo -n "ERROR: symbol $symname "
+ echo -n "is added in the $secname "
+ echo -n "section, but is expected to "
+ echo -n "be added in the EXPERIMENTAL "
+ echo "section of the version map"
+ ret=1
+ continue
+ fi
fi
# This symbol is moving inside a section, nothing to do
fi
# This symbol is moving between two sections (the
- # original section is not experimental).
+ # original section is a stable section).
# This can be legit, just warn.
- if [ "$oldsecname" != 'EXPERIMENTAL' ]
+ if is_stable_section $oldsecname
then
echo -n "INFO: symbol $symname is being "
echo -n "moved from $oldsecname to $secname. "
else
if ! grep -q "$mname $symname .* add" "$mapdb" && \
- [ "$secname" != "EXPERIMENTAL" ]
+ is_stable_section $secname
then
- # Just inform users that non-experimenal
+ # Just inform users that stable
# symbols need to go through a deprecation
# process
echo -n "INFO: symbol $symname is being "