| #!/bin/sh | |
| ############################################################################### | |
| # | |
| # Check liblzma.map for certain types of errors | |
| # | |
| # Author: Lasse Collin | |
| # | |
| # This file has been put into the public domain. | |
| # You can do whatever you want with this file. | |
| # | |
| ############################################################################### | |
| LC_ALL=C | |
| export LC_ALL | |
| STATUS=0 | |
| cd "$(dirname "$0")" | |
| # Get the list of symbols that aren't defined in liblzma.map. | |
| SYMS=$(sed -n 's/^extern LZMA_API([^)]*) \([a-z0-9_]*\)(.*$/\1;/p' \ | |
| api/lzma/*.h \ | |
| | sort \ | |
| | grep -Fve "$(sed '/[{}:*]/d;/^$/d;s/^ //' liblzma.map)") | |
| # Check that there are no old alpha or beta versions listed. | |
| VER=$(cd ../.. && sh build-aux/version.sh) | |
| NAMES= | |
| case $VER in | |
| *alpha | *beta) | |
| NAMES=$(sed -n 's/^.*XZ_\([^ ]*\)\(alpha\|beta\) .*$/\1\2/p' \ | |
| liblzma.map | grep -Fv "$VER") | |
| ;; | |
| esac | |
| # Check for duplicate lines. It can catch missing dependencies. | |
| DUPS=$(sort liblzma.map | sed '/^$/d;/^global:$/d' | uniq -d) | |
| # Print error messages if needed. | |
| if test -n "$SYMS$NAMES$DUPS"; then | |
| echo | |
| echo 'validate_map.sh found problems from liblzma.map:' | |
| echo | |
| if test -n "$SYMS"; then | |
| echo 'liblzma.map lacks the following symbols:' | |
| echo "$SYMS" | |
| echo | |
| fi | |
| if test -n "$NAMES"; then | |
| echo 'Obsolete alpha or beta version names:' | |
| echo "$NAMES" | |
| echo | |
| fi | |
| if test -n "$DUPS"; then | |
| echo 'Duplicate lines:' | |
| echo "$DUPS" | |
| echo | |
| fi | |
| STATUS=1 | |
| fi | |
| # Exit status is 1 if problems were found, 0 otherwise. | |
| exit "$STATUS" |