Re: [PATCH v4] devtools: rework abi checker script
From: Neil Horman <nhorman@tuxdriver.com>
Date: 2017-09-25 11:21:32
On Mon, Sep 25, 2017 at 11:11:20AM +0200, Olivier MATZ wrote:
On Thu, Sep 21, 2017 at 11:40:35AM -0400, Neil Horman wrote:quoted
On Wed, Sep 20, 2017 at 11:12:53AM +0200, Olivier Matz wrote:quoted
The initial version of the script had some limitations: - cannot work on a non-clean workspace - environment variables are not documented - no compilation log in case of failure - return success even it abi is incompatible This patch addresses these issues and rework the code. Signed-off-by: Olivier Matz <redacted> --- v3->v4: - clarify logs on incompatible abi - log when an error returned an error - [really] fix the report path - log the output of make config in the proper file v2->v3: - fix when not launched from dpdk root dir - use "-Og -Wno-error" instead of "-O0" - fix typo in commit log v1->v2: - use /usr/bin/env to find bash (which is required) - fix displayed path to html reports - reword help for -f option devtools/validate-abi.sh | 397 ++++++++++++++++++++++++----------------------- 1 file changed, 205 insertions(+), 192 deletions(-)This looks better, thank you for the iterations. One last note: The abi dumper utility errors out with error code of 12 if a given object has no exported symbols, and I see a few of those. You may want to consider catching that error, logging an appropriate message and skipping the error emit. That can be handled later though, as its a corner case. I'd go with this patch, and then do a incremental improvement laterUnfortunately the error code 12 does not exist on my version of abi-dumper (debian stable, v0.99.16). I'm currently doing this as a workaround: cmd $abidump ${i} -o $dst/${1}/${i}.dump -lver ${1} || true # hack to ignore empty SymbolsInfo section (no public ABI) if grep -q "'SymbolInfo' => {}," $dst/${1}/${i}.dump 2> /dev/null; then log "INFO" "${i} has no public ABI, remove dump file" cmd rm -f $dst/${1}/${i}.dump fi I tested with the latest abi-dumper version, and I indeed see these errors in the logs. It seems we don't go inside the 'if' above with a recent abi-dumper, and the .dump file is not generated. I can add a check to display the same additional log "INFO" "${i} has no public ABI, remove dump file" if abi-dumper returns 12. Something like this: ret=0 cmd $abidump ${i} -o $dst/${1}/${i}.dump -lver ${1} || ret=$? # hack to ignore empty SymbolsInfo section (no public ABI) if [ ${ret} = 12 ]; then log "INFO" "${i} has no public ABI" fi if grep -q "'SymbolInfo' => {}," $dst/${1}/${i}.dump 2> /dev/null; then log "INFO" "${i} has no public ABI, remove dump file" cmd rm -f $dst/${1}/${i}.dump fi
Agreed, that makes sense. Thanks. Neil
Olivier