From ca8e2d8381a8d1496c4c57c29a412c5d325bd806 Mon Sep 17 00:00:00 2001 From: Keeyou Date: Tue, 23 Jul 2024 10:01:56 +0800 Subject: [PATCH] cmake: use TARGET_OBJECTS to import object library - test load system ca on linux/openwrt/alpine --- .cirrus.yml | 2 +- .github/workflows/releases-android-binary.yml | 5 ++-- .github/workflows/releases-linux-binary.yml | 6 +++- .github/workflows/releases-openwrt-binary.yml | 9 ++++-- .github/workflows/releases-rpm.yml | 2 +- CMakeLists.txt | 29 +++++++++---------- src/net/asio_ssl_test.cpp | 5 ++-- 7 files changed, 32 insertions(+), 26 deletions(-) diff --git a/.cirrus.yml b/.cirrus.yml index 14a5bfa68..49d876f58 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -20,7 +20,7 @@ freebsd_task: pkginstall_script: - pkg update -f - - pkg install -y cmake ninja pkgconf perl5 go llvm17-lite git + - pkg install -y cmake ninja pkgconf perl5 go llvm17-lite git ca_root_nss submodules_script: # unshallow must come first otherwise submodule may be get unshallowed - git fetch --tags --unshallow diff --git a/.github/workflows/releases-android-binary.yml b/.github/workflows/releases-android-binary.yml index e50d3912d..89d2453f2 100644 --- a/.github/workflows/releases-android-binary.yml +++ b/.github/workflows/releases-android-binary.yml @@ -221,10 +221,9 @@ jobs: - name: Run tests (non x86, under qemu emulation) if: ${{ matrix.arch != 'x86' && matrix.arch != 'x64' }} run: | - # required by leveldb unittests - mkdir -p $SYSROOT/data/local/tmp + # TMPDIR is required by leveldb unittests qemu-${{ matrix.qemu_suffix }}-static -L $SYSROOT \ - -E TMPDIR=$SYSROOT/data/local/tmp \ + -E TMPDIR=$PWD/build-android${{ matrix.apilevel }}-${{ matrix.arch }} \ $PWD/build-android${{ matrix.apilevel }}-${{ matrix.arch }}/yass_test - name: Upload dist tarball (including debuginfo) if: ${{ github.event_name == 'release' }} diff --git a/.github/workflows/releases-linux-binary.yml b/.github/workflows/releases-linux-binary.yml index a6b7e792a..702124a2d 100644 --- a/.github/workflows/releases-linux-binary.yml +++ b/.github/workflows/releases-linux-binary.yml @@ -182,11 +182,13 @@ jobs: - name: Run tests (i386 and amd64) if: ${{ matrix.arch == 'i386' || matrix.arch == 'amd64' }} run: | - mkdir -p $SDK_ROOT/etc $SDK_ROOT/dev $SDK_ROOT/proc $SDK_ROOT/tmp + rm -rf $SDK_ROOT/tmp + mkdir -p $SDK_ROOT/etc/ssl/certs $SDK_ROOT/dev $SDK_ROOT/proc $SDK_ROOT/tmp $SDK_ROOT/build touch $SDK_ROOT/etc/resolv.conf bwrap --die-with-parent --bind $SDK_ROOT / \ --ro-bind /sys /sys \ --ro-bind /etc/resolv.conf /etc/resolv.conf \ + --ro-bind /etc/ssl/certs /etc/ssl/certs \ --proc /proc --dev /dev \ --unshare-all --share-net \ --bind $PWD/build-linux-${{ matrix.arch }} /tmp \ @@ -194,7 +196,9 @@ jobs: - name: Run tests (non x86, under qemu emulation) if: ${{ matrix.arch != 'i386' && matrix.arch != 'amd64' }} run: | + # TMPDIR is required by leveldb unittests qemu-${{ matrix.qemu_suffix }}-static -L $SDK_ROOT \ + -E TMPDIR=$PWD/build-linux-${{ matrix.arch }} \ $PWD/build-linux-${{ matrix.arch }}/yass_test \ --no_exec_proc_tests - name: Upload dist tarball (including debuginfo) diff --git a/.github/workflows/releases-openwrt-binary.yml b/.github/workflows/releases-openwrt-binary.yml index 0e0dcd64e..ac419845a 100644 --- a/.github/workflows/releases-openwrt-binary.yml +++ b/.github/workflows/releases-openwrt-binary.yml @@ -188,9 +188,10 @@ jobs: - name: Run tests (x86 and x86_64) if: ${{ matrix.arch_name == 'x86' || matrix.arch_name == 'x86_64' }} run: | - mkdir -p ${{ env.SDK_ROOT }}/etc/ssl/certs ${{ env.SDK_ROOT }}/dev ${{ env.SDK_ROOT }}/proc ${{ env.SDK_ROOT }}/tmp - touch ${{ env.SDK_ROOT }}/etc/resolv.conf - bwrap --die-with-parent --ro-bind ${{ env.SDK_ROOT }} / \ + rm -rf $SDK_ROOT/tmp + mkdir -p $SDK_ROOT/etc/ssl/certs $SDK_ROOT/dev $SDK_ROOT/proc $SDK_ROOT/tmp + touch $SDK_ROOT/etc/resolv.conf + bwrap --die-with-parent --ro-bind $SDK_ROOT / \ --ro-bind /etc/resolv.conf /etc/resolv.conf \ --ro-bind /etc/ssl/certs /etc/ssl/certs \ --proc /proc --dev /dev \ @@ -200,7 +201,9 @@ jobs: - name: Run tests (non x86, under qemu emulation) if: ${{ matrix.arch_name != 'x86' && matrix.arch_name != 'x86_64' }} run: | + # TMPDIR is required by leveldb unittests qemu-${{ matrix.qemu_suffix }}-static -L $SDK_ROOT \ + -E TMPDIR=$PWD/build-linux-openwrt-${{ matrix.arch }} \ $PWD/build-linux-openwrt-${{ matrix.arch }}/yass_test \ --no_exec_proc_tests - name: Upload dist tarball (including debuginfo) diff --git a/.github/workflows/releases-rpm.yml b/.github/workflows/releases-rpm.yml index 58cf76981..f8f2f6fa0 100644 --- a/.github/workflows/releases-rpm.yml +++ b/.github/workflows/releases-rpm.yml @@ -251,7 +251,7 @@ jobs: ./tools/build --variant gui --arch ${{ matrix.arch }} --system linux --subsystem musl --sysroot "${{ env.SDK_ROOT }}" -build-test --cmake-build-type MinSizeRel -nc - name: Run tests run: | - bwrap --die-with-parent --bind "${{ env.SDK_ROOT }}" / \ + bwrap --die-with-parent --bind "$SDK_ROOT" / \ --ro-bind /sys /sys \ --ro-bind /etc/resolv.conf /etc/resolv.conf \ --proc /proc --dev /dev \ diff --git a/CMakeLists.txt b/CMakeLists.txt index 1749eb685..ae767e473 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3079,11 +3079,12 @@ if (USE_BUILTIN_CA_BUNDLE_CRT) endif() add_library(asio_ca_bundle_crt OBJECT ${ASIO_CA_BUNDLE_CRT_SRC}) - target_compile_definitions(asio_ca_bundle_crt PUBLIC HAVE_BUILTIN_CA_BUNDLE_CRT=1) target_include_directories(asio_ca_bundle_crt PRIVATE third_party/ca-certificates) list(APPEND YASS_APP_FEATURES "ca-certificates 20240203.3.98") - target_link_libraries(asio PUBLIC asio_ca_bundle_crt) + # macro used in yass_test + target_compile_definitions(asio PUBLIC HAVE_BUILTIN_CA_BUNDLE_CRT=1) + target_sources(asio PRIVATE $) endif() # @@ -3127,7 +3128,7 @@ endif() add_library(asio_supplementary_ca_bundle_crt OBJECT ${ASIO_SUPPLEMENARY_CA_BUNDLE_CRT_SRC}) target_include_directories(asio_supplementary_ca_bundle_crt PRIVATE third_party/ca-certificates) -target_link_libraries(asio PRIVATE asio_supplementary_ca_bundle_crt) +target_sources(asio PRIVATE $) set(SUPPORT_LIBS asio ${SUPPORT_LIBS}) @@ -4226,6 +4227,7 @@ target_link_libraries(yass_cli_lib PUBLIC yass_net) if (CLI) add_executable(yass_cli src/cli/cli.cpp + $ ) minject_patch_exetuable(yass_cli) if (USE_LTO_CMAKE) @@ -4251,10 +4253,7 @@ if (CLI) target_include_directories(yass_cli PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src) - target_link_libraries(yass_cli PUBLIC - yass_cli_nogui_lib - yass_net - ) + target_link_libraries(yass_cli PUBLIC yass_net) if (NOT CMAKE_SKIP_INSTALL_RULES AND NOT WIN32 AND NOT IOS) install(TARGETS yass_cli RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) @@ -4286,6 +4285,7 @@ target_link_libraries(yass_server_lib PUBLIC yass_net) if (SERVER) add_executable(yass_server src/server/server.cpp + $ ) minject_patch_exetuable(yass_server) if (USE_LTO_CMAKE) @@ -4311,10 +4311,7 @@ if (SERVER) target_include_directories(yass_server PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src) - target_link_libraries(yass_server PUBLIC - yass_server_lib - yass_net - ) + target_link_libraries(yass_server PUBLIC yass_net) if (NOT CMAKE_SKIP_INSTALL_RULES AND NOT WIN32 AND NOT IOS) install(TARGETS yass_server RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) @@ -4988,6 +4985,8 @@ if (BUILD_TESTS) src/net/dns_message_test.cpp src/net/doh_resolver_test.cpp src/net/dot_resolver_test.cpp + $ + $ ) if (IOS) @@ -5022,8 +5021,7 @@ if (BUILD_TESTS) ${CMAKE_CURRENT_SOURCE_DIR}/src/server ) target_link_libraries(yass_test PUBLIC - yass_cli_nogui_lib - yass_server_lib + yass_net yass_gtest ) if (WIN32) @@ -5132,6 +5130,8 @@ endif() if (BUILD_BENCHMARKS) set(yass_benchmark_SOURCE src/ss_benchmark.cpp + $ + $ ) if (IOS) enable_testing() @@ -5166,8 +5166,7 @@ if (BUILD_BENCHMARKS) ${CMAKE_CURRENT_SOURCE_DIR}/src/server ) target_link_libraries(yass_benchmark PUBLIC - yass_cli_nogui_lib - yass_server_lib + yass_net benchmark::benchmark ) if (WIN32) diff --git a/src/net/asio_ssl_test.cpp b/src/net/asio_ssl_test.cpp index 2fc66c342..6eed9e26a 100644 --- a/src/net/asio_ssl_test.cpp +++ b/src/net/asio_ssl_test.cpp @@ -39,10 +39,11 @@ TEST(SSL_TEST, LoadSystemCa) { } else { GTEST_SKIP() << "skipped as system version is too low"; } -#elif BUILDFLAG(IS_MAC) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_OHOS) || !defined(HAVE_BUILTIN_CA_BUNDLE_CRT) +#elif BUILDFLAG(IS_MAC) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_OHOS) || BUILDFLAG(IS_FREEBSD) || \ + BUILDFLAG(IS_LINUX) || !defined(HAVE_BUILTIN_CA_BUNDLE_CRT) ASSERT_NE(result, 0); #else - // we don't test on openwrt + // we don't test on iOS GTEST_SKIP() << "skipped as system is not supported"; #endif }