| # Script to test a directory listing. We use this to verify that the list of | |
| # files installed by "make install" or "cmake --install" matches what we expect. | |
| set -e | |
| # Ensure stable ordering of `sort` output | |
| LANG=C | |
| LC_ALL=C | |
| export LANG LC_ALL | |
| if [ "$1" = "" -o "$2" = "" ] ; then | |
| echo "Usage: $0 <dir> <manifest name> [<build type>]" >&2 | |
| exit 1 | |
| fi | |
| input_dir="$1" | |
| expected_manifest="$2" | |
| build_type="${3:-release}" | |
| actual_file=`basename $expected_manifest`.actual | |
| expected_file=`basename $expected_manifest`.expected | |
| sed=sed | |
| # Helper for Solaris | |
| if [ -f /usr/bin/gsed ] ; then | |
| sed=/usr/bin/gsed | |
| fi | |
| find "$input_dir" -print | \ | |
| sort | \ | |
| xargs -n1 -- ls -l -d -n | \ | |
| $sed -E -e 's/ {2,}/ /g' | \ | |
| cut -d' ' -f '1,9-' \ | |
| > "$actual_file" | |
| # The CMake install is a bit annoying now. Its installed files are actually | |
| # dependent on the build type. So, if the build type is not "release", we need | |
| # to modify the expected manifest to match the actual one. | |
| cat "$expected_manifest" | \ | |
| $sed -E -e "s/pcre2-targets-release.cmake/pcre2-targets-$build_type.cmake/" \ | |
| > "$expected_file" | |
| if ! diff -u "$expected_file" "$actual_file"; then | |
| echo "Installed files differ from expected" | |
| echo "===Actual===" | |
| cat "$actual_file" | |
| echo "===End===" | |
| exit 1 | |
| fi | |
| echo "Installed files match expected" | |
| rm -f "$actual_file" "$expected_file" | |