From 7035f3b4edf2c3ae32afb45a8ff0e71b5bc26f1e Mon Sep 17 00:00:00 2001 From: Alex Hornby Date: Tue, 19 Sep 2023 20:16:41 +0100 Subject: [PATCH] fix build failure on ubuntu with system packages MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Found that ubuntu 20.04 and 22.04 LTS googletest was too old to build the folly tests, so updated the googletest manifest. Exercise it by regenerating the github actions CI, which also speeds up the CI by not rebuilding boost each time. Test plan: build with system dependencies and without --no-tests ``` ./build/fbcode_builder/getdeps.py --allow-system-packages install-system-deps --recursive folly ./build/fbcode_builder/getdeps.py --allow-system-packages build --src-dir=. folly ``` Before, error ``` FAILED: CMakeFiles/exception_wrapper_test.dir/folly/test/ExceptionWrapperTest.cpp.o /usr/bin/c++ -DBOOST_ALL_NO_LIB -DFOLLY_XLOG_STRIP_PREFIXES=\"/home/alex/local/folly:/home/alex/local/tmp/ubuntu-20.04/fbcode_builder_getdeps-ZhomeZalexZlocalZfollyZbuildZfbcode_builder/build/folly\" -DGFLAGS_IS_A_DLL=0 -D_GNU_SOURCE -D_REENTRANT -I/home/alex/local/folly -I. -isystem /home/alex/local/tmp/ubuntu-20.04/fbcode_builder_getdeps-ZhomeZalexZlocalZfollyZbuildZfbcode_builder/installed/fmt-LkF3PGJrv9IqRFUd-zFENY3ah_TiYc7ZX3G020GUw-I/include -O2 -g -DNDEBUG -g -finput-charset=UTF-8 -fsigned-char -Wall -Wno-deprecated -Wno-deprecated-declarations -Wno-sign-compare -Wno-unused -Wuninitialized -Wunused-label -Wunused-result -Wshadow-compatible-local -Wno-noexcept-type -faligned-new -fopenmp -pthread -std=gnu++17 -MD -MT CMakeFiles/exception_wrapper_test.dir/folly/test/ExceptionWrapperTest.cpp.o -MF CMakeFiles/exception_wrapper_test.dir/folly/test/ExceptionWrapperTest.cpp.o.d -o CMakeFiles/exception_wrapper_test.dir/folly/test/ExceptionWrapperTest.cpp.o -c /home/alex/local/folly/folly/test/ExceptionWrapperTest.cpp In file included from /usr/include/gtest/gtest.h:375, from /usr/include/gmock/internal/gmock-internal-utils.h:47, from /usr/include/gmock/gmock-actions.h:51, from /usr/include/gmock/gmock.h:59, from /home/alex/local/folly/folly/portability/GMock.h:32, from /home/alex/local/folly/folly/test/ExceptionWrapperTest.cpp:23: /home/alex/local/folly/folly/test/ExceptionWrapperTest.cpp: In member function ‘virtual void ExceptionWrapper_throw_test_Test::TestBody()’: /home/alex/local/folly/folly/test/ExceptionWrapperTest.cpp:72:7: error: ‘ThrowsMessage’ was not declared in this scope 72 | ThrowsMessage(StrEq("payload"))); ``` After, tests build Regenerated actions with: ``` ./build/fbcode_builder/getdeps.py --allow-system-packages generate-github-actions --free-up-disk --src-dir=. --os-type=linux --output-dir=.github/workflows folly ``` --- .github/workflows/getdeps_linux.yml | 78 ++++++++++++----------- build/fbcode_builder/manifests/googletest | 4 +- 2 files changed, 43 insertions(+), 39 deletions(-) diff --git a/.github/workflows/getdeps_linux.yml b/.github/workflows/getdeps_linux.yml index 807485d82c8..9b76f839966 100644 --- a/.github/workflows/getdeps_linux.yml +++ b/.github/workflows/getdeps_linux.yml @@ -21,83 +21,87 @@ jobs: run: sudo rm -rf /usr/local/lib/android - name: Show disk space after freeing up run: df -h + - name: Update system package info + run: sudo apt-get update + - name: Install system deps + run: sudo python3 build/fbcode_builder/getdeps.py --allow-system-packages install-system-deps --recursive folly - name: Fetch boost - run: python3 build/fbcode_builder/getdeps.py fetch --no-tests boost + run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests boost - name: Fetch ninja - run: python3 build/fbcode_builder/getdeps.py fetch --no-tests ninja + run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests ninja - name: Fetch cmake - run: python3 build/fbcode_builder/getdeps.py fetch --no-tests cmake + run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests cmake - name: Fetch double-conversion - run: python3 build/fbcode_builder/getdeps.py fetch --no-tests double-conversion + run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests double-conversion - name: Fetch fmt - run: python3 build/fbcode_builder/getdeps.py fetch --no-tests fmt + run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests fmt - name: Fetch gflags - run: python3 build/fbcode_builder/getdeps.py fetch --no-tests gflags + run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests gflags - name: Fetch glog - run: python3 build/fbcode_builder/getdeps.py fetch --no-tests glog + run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests glog - name: Fetch googletest - run: python3 build/fbcode_builder/getdeps.py fetch --no-tests googletest + run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests googletest - name: Fetch libevent - run: python3 build/fbcode_builder/getdeps.py fetch --no-tests libevent + run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests libevent - name: Fetch lz4 - run: python3 build/fbcode_builder/getdeps.py fetch --no-tests lz4 + run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests lz4 - name: Fetch snappy - run: python3 build/fbcode_builder/getdeps.py fetch --no-tests snappy + run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests snappy - name: Fetch zstd - run: python3 build/fbcode_builder/getdeps.py fetch --no-tests zstd + run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests zstd - name: Fetch autoconf - run: python3 build/fbcode_builder/getdeps.py fetch --no-tests autoconf + run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests autoconf - name: Fetch automake - run: python3 build/fbcode_builder/getdeps.py fetch --no-tests automake + run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests automake - name: Fetch libtool - run: python3 build/fbcode_builder/getdeps.py fetch --no-tests libtool + run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests libtool - name: Fetch libsodium - run: python3 build/fbcode_builder/getdeps.py fetch --no-tests libsodium + run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests libsodium - name: Fetch xz - run: python3 build/fbcode_builder/getdeps.py fetch --no-tests xz + run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests xz - name: Build boost - run: python3 build/fbcode_builder/getdeps.py build --free-up-disk --no-tests boost + run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests boost - name: Build ninja - run: python3 build/fbcode_builder/getdeps.py build --free-up-disk --no-tests ninja + run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests ninja - name: Build cmake - run: python3 build/fbcode_builder/getdeps.py build --free-up-disk --no-tests cmake + run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests cmake - name: Build double-conversion - run: python3 build/fbcode_builder/getdeps.py build --free-up-disk --no-tests double-conversion + run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests double-conversion - name: Build fmt - run: python3 build/fbcode_builder/getdeps.py build --free-up-disk --no-tests fmt + run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests fmt - name: Build gflags - run: python3 build/fbcode_builder/getdeps.py build --free-up-disk --no-tests gflags + run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests gflags - name: Build glog - run: python3 build/fbcode_builder/getdeps.py build --free-up-disk --no-tests glog + run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests glog - name: Build googletest - run: python3 build/fbcode_builder/getdeps.py build --free-up-disk --no-tests googletest + run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests googletest - name: Build libevent - run: python3 build/fbcode_builder/getdeps.py build --free-up-disk --no-tests libevent + run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests libevent - name: Build lz4 - run: python3 build/fbcode_builder/getdeps.py build --free-up-disk --no-tests lz4 + run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests lz4 - name: Build snappy - run: python3 build/fbcode_builder/getdeps.py build --free-up-disk --no-tests snappy + run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests snappy - name: Build zstd - run: python3 build/fbcode_builder/getdeps.py build --free-up-disk --no-tests zstd + run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests zstd - name: Build autoconf - run: python3 build/fbcode_builder/getdeps.py build --free-up-disk --no-tests autoconf + run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests autoconf - name: Build automake - run: python3 build/fbcode_builder/getdeps.py build --free-up-disk --no-tests automake + run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests automake - name: Build libtool - run: python3 build/fbcode_builder/getdeps.py build --free-up-disk --no-tests libtool + run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests libtool - name: Build libsodium - run: python3 build/fbcode_builder/getdeps.py build --free-up-disk --no-tests libsodium + run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests libsodium - name: Build xz - run: python3 build/fbcode_builder/getdeps.py build --free-up-disk --no-tests xz + run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests xz - name: Build folly - run: python3 build/fbcode_builder/getdeps.py build --src-dir=. folly --project-install-prefix folly:/usr/local + run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --src-dir=. folly --project-install-prefix folly:/usr/local - name: Copy artifacts - run: python3 build/fbcode_builder/getdeps.py fixup-dyn-deps --strip --src-dir=. folly _artifacts/linux --project-install-prefix folly:/usr/local --final-install-prefix /usr/local + run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fixup-dyn-deps --strip --src-dir=. folly _artifacts/linux --project-install-prefix folly:/usr/local --final-install-prefix /usr/local - uses: actions/upload-artifact@v2 with: name: folly path: _artifacts - name: Test folly - run: python3 build/fbcode_builder/getdeps.py test --src-dir=. folly --project-install-prefix folly:/usr/local + run: python3 build/fbcode_builder/getdeps.py --allow-system-packages test --src-dir=. folly --project-install-prefix folly:/usr/local - name: Show disk space at end run: df -h diff --git a/build/fbcode_builder/manifests/googletest b/build/fbcode_builder/manifests/googletest index 134b36ee534..67cf81133d1 100644 --- a/build/fbcode_builder/manifests/googletest +++ b/build/fbcode_builder/manifests/googletest @@ -17,7 +17,7 @@ gtest_force_shared_crt=ON [cmake.defines.os=windows] BUILD_SHARED_LIBS=ON -# 18.04 googletest is too old -[debs.not(all(distro=ubuntu,distro_vers="18.04"))] +# packaged LTS googletest is too old +[debs.not(all(distro=ubuntu,any(distro_vers="18.04",distro_vers="20.04",distro_vers="22.04")))] libgtest-dev libgmock-dev