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 |
||||
|
||||
# This script generates file lists from Bazel, e.g., for cmake. |
||||
# This script generates file lists from Bazel for CMake. |
||||
|
||||
set -e |
||||
|
Loading…
Reference in new issue