devtools: split meson build helper
[dpdk.git] / devtools / check-symbol-change.sh
index 020da7e..c5434f3 100755 (executable)
@@ -97,7 +97,7 @@ check_for_rule_violations()
                        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 "
@@ -105,27 +105,52 @@ check_for_rule_violations()
                                continue
                        fi
 
-                       if [ "$secname" != "EXPERIMENTAL" ]
+                       oldsecname=$(sed -n \
+                       "s#$mname $symname \(.*\) del#\1#p" "$mapdb")
+
+                       # A symbol can not enter a non experimental
+                       # section directly
+                       if [ -z "$oldsecname" ]
                        then
-                               # Symbols that are getting added in a section
-                               # other than the experimental section
-                               # to be moving from an already supported
-                               # section or its a violation
-                               grep -q \
-                               "$mname $symname [^EXPERIMENTAL] del" "$mapdb"
-                               if [ $? -ne 0 ]
+                               if [ "$secname" = 'EXPERIMENTAL' ]
                                then
+                                       echo -n "INFO: symbol $symname has "
+                                       echo -n "been added to the "
+                                       echo -n "EXPERIMENTAL 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
+                       if [ "$oldsecname" = "$secname" ]
+                       then
+                               continue
+                       fi
+
+                       # This symbol is moving between two sections (the
+                       # original section is not experimental).
+                       # This can be legit, just warn.
+                       if [ "$oldsecname" != 'EXPERIMENTAL' ]
+                       then
+                               echo -n "INFO: symbol $symname is being "
+                               echo -n "moved from $oldsecname to $secname. "
+                               echo -n "Ensure that it has gone through the "
+                               echo "deprecation process"
+                               continue
+                       fi
                else
 
-                       if [ "$secname" != "EXPERIMENTAL" ]
+                       if ! grep -q "$mname $symname .* add" "$mapdb" && \
+                          [ "$secname" != "EXPERIMENTAL" ]
                        then
                                # Just inform users that non-experimenal
                                # symbols need to go through a deprecation