Adding Github Action to keep CMake generated file lists up to date (#10243)
parent
2c7b0470ba
commit
445a49480c
7 changed files with 29 additions and 87 deletions
@ -0,0 +1,24 @@ |
|||||||
|
name: Generated CMake File Lists |
||||||
|
|
||||||
|
on: |
||||||
|
- push |
||||||
|
- pull_request |
||||||
|
|
||||||
|
jobs: |
||||||
|
cmake: |
||||||
|
runs-on: ubuntu-latest |
||||||
|
|
||||||
|
strategy: |
||||||
|
fail-fast: false # Don't cancel all jobs if one fails. |
||||||
|
|
||||||
|
steps: |
||||||
|
- uses: actions/checkout@v2 |
||||||
|
- name: Set up Bazel read-only caching |
||||||
|
run: echo "BAZEL_CACHE_AUTH=--remote_upload_local_results=false" >> $GITHUB_ENV |
||||||
|
- name: Generate CMake files |
||||||
|
run: cd ${{ github.workspace }} && bazel build //pkg:gen_src_file_lists --test_output=errors $BAZEL_CACHE $BAZEL_CACHE_AUTH |
||||||
|
- name: Compare to Golden file |
||||||
|
run: diff -du bazel-bin/pkg/src_file_lists.cmake src/file_lists.cmake |
||||||
|
- name: Report |
||||||
|
run: echo "::error file=cmake/update_file_lists.sh::CMake files are stale, please run cmake/update_file_lists.sh" |
||||||
|
if: failure() |
@ -1,62 +0,0 @@ |
|||||||
#!/bin/bash |
|
||||||
|
|
||||||
# This script verifies that BUILD files and cmake files are in sync with src/Makefile.am |
|
||||||
|
|
||||||
set -eo pipefail |
|
||||||
|
|
||||||
if [ "$(uname)" != "Linux" ]; then |
|
||||||
echo "build_files_updated_unittest only supported on Linux. Skipping..." |
|
||||||
exit 0 |
|
||||||
fi |
|
||||||
|
|
||||||
# Keep in sync with files needed by update_file_lists.sh |
|
||||||
generated_files=( |
|
||||||
"BUILD" |
|
||||||
"cmake/extract_includes.bat.in" |
|
||||||
"cmake/libprotobuf-lite.cmake" |
|
||||||
"cmake/libprotobuf.cmake" |
|
||||||
"cmake/libprotoc.cmake" |
|
||||||
"cmake/tests.cmake" |
|
||||||
"src/Makefile.am" |
|
||||||
) |
|
||||||
|
|
||||||
# If we're running in Bazel, use the Bazel-provided temp-dir. |
|
||||||
if [ -n "${TEST_TMPDIR}" ]; then |
|
||||||
# Env-var TEST_TMPDIR is set, assume that this is Bazel. |
|
||||||
# Bazel may have opinions whether we are allowed to delete TEST_TMPDIR. |
|
||||||
test_root="${TEST_TMPDIR}/build_files_updated_unittest" |
|
||||||
mkdir "${test_root}" |
|
||||||
else |
|
||||||
# Seems like we're not executed by Bazel. |
|
||||||
test_root=$(mktemp -d) |
|
||||||
fi |
|
||||||
|
|
||||||
# From now on, fail if there are any unbound variables. |
|
||||||
set -u |
|
||||||
|
|
||||||
# Remove artifacts after test is finished. |
|
||||||
function cleanup { |
|
||||||
rm -rf "${test_root}" |
|
||||||
} |
|
||||||
trap cleanup EXIT |
|
||||||
|
|
||||||
# Create golden dir and add snapshot of current state. |
|
||||||
golden_dir="${test_root}/golden" |
|
||||||
mkdir -p "${golden_dir}/cmake" "${golden_dir}/src" |
|
||||||
for file in ${generated_files[@]}; do |
|
||||||
cp "${file}" "${golden_dir}/${file}" |
|
||||||
done |
|
||||||
|
|
||||||
# Create test dir, copy current state into it, and execute update script. |
|
||||||
test_dir="${test_root}/test" |
|
||||||
cp -R "${golden_dir}" "${test_dir}" |
|
||||||
|
|
||||||
cp "update_file_lists.sh" "${test_dir}/update_file_lists.sh" |
|
||||||
chmod +x "${test_dir}/update_file_lists.sh" |
|
||||||
cd "${test_root}/test" |
|
||||||
bash "${test_dir}/update_file_lists.sh" |
|
||||||
|
|
||||||
# Test whether there are any differences |
|
||||||
for file in ${generated_files[@]}; do |
|
||||||
diff -du "${golden_dir}/${file}" "${test_dir}/${file}" |
|
||||||
done |
|
@ -1,6 +1,6 @@ |
|||||||
#!/bin/bash -u |
#!/bin/bash -u |
||||||
|
|
||||||
# This script generates file lists from Bazel, e.g., for cmake. |
# This script generates file lists from Bazel for CMake. |
||||||
|
|
||||||
set -e |
set -e |
||||||
|
|
Loading…
Reference in new issue