devtools: accept experimental symbol promotion
authorDavid Marchand <david.marchand@redhat.com>
Fri, 5 Apr 2019 08:17:47 +0000 (10:17 +0200)
committerThomas Monjalon <thomas@monjalon.net>
Mon, 15 Apr 2019 22:12:22 +0000 (00:12 +0200)
Currently, when symbols get promoted from the EXPERIMENTAL section to a
stable ABI section, the script complains they should go to the
EXPERIMENTAL section.

Example:
ERROR: symbol rte_devargs_add is added in the DPDK_19.05 section, but is
expected to be added in the EXPERIMENTAL section of the version map

This is legit.
Moving from a stable ABI to another is also allowed, but must have gone
through the proper process.

Fixes: 4bec48184e33 ("devtools: add checks for ABI symbol addition")
Cc: stable@dpdk.org
Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
devtools/check-symbol-change.sh

index 020da7e..40eb953 100755 (executable)
@@ -105,27 +105,37 @@ 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 [ $? -ne 0 ] && [ "$secname" != 'EXPERIMENTAL' ]
                        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 ]
-                               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
-                               fi
+                               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
+
+                       # 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