vppapigen: api crc checker

crcchecker is a tool for enforcement of the binary API.

1. Production APIs should never change.
2. An API can be deprecated across three release cycles.
   Release 1: API is marked as deprecated.
   option deprecated="vyy.mm";
   option replaced_by="new_api_2";
   Release 2: both old and new APIs are supported
   Release 3: the deprecated API is deleted.
3. APIs that are experimental / not released are not checked.
   An API message can be individually marked as in progress, by:
   option status="in_progress";
   In the API definition.

The definition of a "production API" is if the major version in the API file is > 0.

extras/scripts/crcchecker.py --check-patchset # returns -1 if backwards incompatible
extras/scripts/crcchecker.py --dump-manifest
extras/scripts/crcchecker.py --git-revision v20.01 <files>
extras/scripts/crcchecker.py -- diff <oldfile> <newfile>

This patch integrates the tool in "make checkstyle-api".
A future patch is required to integrate the tool in the verify job.
I.e. this patch does not enable enforcement through Jenkins.

Change-Id: I5f13c0976d8a12a58131b3e270f2dc9c00dc7d8c
Type: feature
Signed-off-by: Ole Troan <ot@cisco.com>
This commit is contained in:
Ole Troan
2020-05-05 12:23:47 +02:00
committed by Andrew Yourtchenko
parent aa55a926fe
commit 5c318c70d0
5 changed files with 415 additions and 23 deletions

View File

@@ -227,6 +227,7 @@ help:
@echo " checkstyle - check coding style"
@echo " checkstyle-commit - check commit message format"
@echo " checkstyle-test - check test framework coding style"
@echo " checkstyle-api - check api for incompatible changes"
@echo " fixstyle - fix coding style"
@echo " doxygen - (re)generate documentation"
@echo " bootstrap-doxygen - setup Doxygen dependencies"
@@ -677,6 +678,10 @@ checkstyle-all: checkstyle-commit checkstyle checkstyle-test
fixstyle:
@build-root/scripts/checkstyle.sh --fix
.PHONY: checkstyle-api
checkstyle-api:
@extras/scripts/crcchecker.py --check-patch
# necessary because Bug 1696324 - Update to python3.6 breaks PyYAML dependencies
# Status: CLOSED CANTFIX
# https://bugzilla.redhat.com/show_bug.cgi?id=1696324