From 3630757803ab2f914ab36bb0285b662b3cff50db Mon Sep 17 00:00:00 2001 From: David Marchand Date: Fri, 5 Apr 2019 10:17:47 +0200 Subject: [PATCH] devtools: accept experimental symbol promotion 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 Acked-by: Neil Horman --- devtools/check-symbol-change.sh | 44 ++++++++++++++++++++------------- 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/devtools/check-symbol-change.sh b/devtools/check-symbol-change.sh index 020da7ed03..40eb953221 100755 --- a/devtools/check-symbol-change.sh +++ b/devtools/check-symbol-change.sh @@ -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 -- 2.20.1