From 2cf2f1b2b6219b606faeade2342c3d2288658ab0 Mon Sep 17 00:00:00 2001 From: Louis Dionne Date: Mon, 17 Jun 2024 20:36:14 -0400 Subject: [libc++] Test suite adjustments on macOS (#95835) This patch makes a few adjustments to the way we run the tests in the Apple configuration on macOS: First, we stop using DYLD_LIBRARY_PATH. Using that environment variable leads to libc++.dylib being replaced by the just-built one for the whole process, and that assumes compatibility between the system-provided dylib and the just-built one. Unfortunately, that is not the case anymore due to typed allocation, which is only available in the system one. Instead, we want to layer the just-built libc++ on top of the system-provided one, which seems to be what happens when we set a rpath instead. Second, add a missing XFAIL for a std::print test that didn't work as expected when building with availability annotations enabled. When we enable these annotations, std::print falls back to a non-unicode and non-terminal output, which breaks the test. --- libcxx/cmake/caches/Apple.cmake | 3 -- libcxx/test/configs/apple-libc++-shared.cfg.in | 35 ---------------------- .../vprint_unicode.pass.cpp | 5 ++++ libcxx/utils/ci/apple-install-libcxx.sh | 6 ++-- .../test/configs/apple-libc++abi-shared.cfg.in | 29 ------------------ 5 files changed, 8 insertions(+), 70 deletions(-) delete mode 100644 libcxx/test/configs/apple-libc++-shared.cfg.in delete mode 100644 libcxxabi/test/configs/apple-libc++abi-shared.cfg.in diff --git a/libcxx/cmake/caches/Apple.cmake b/libcxx/cmake/caches/Apple.cmake index 8768653..1038f1a 100644 --- a/libcxx/cmake/caches/Apple.cmake +++ b/libcxx/cmake/caches/Apple.cmake @@ -15,6 +15,3 @@ set(LIBCXXABI_HERMETIC_STATIC_LIBRARY ON CACHE BOOL "") set(LIBCXXABI_ENABLE_ASSERTIONS OFF CACHE BOOL "") set(LIBCXXABI_ENABLE_FORGIVING_DYNAMIC_CAST ON CACHE BOOL "") set(LIBCXXABI_USE_LLVM_UNWINDER OFF CACHE BOOL "") # libunwind is built separately - -set(LIBCXX_TEST_CONFIG "apple-libc++-shared.cfg.in" CACHE STRING "") -set(LIBCXXABI_TEST_CONFIG "apple-libc++abi-shared.cfg.in" CACHE STRING "") diff --git a/libcxx/test/configs/apple-libc++-shared.cfg.in b/libcxx/test/configs/apple-libc++-shared.cfg.in deleted file mode 100644 index 2d0aee3..0000000 --- a/libcxx/test/configs/apple-libc++-shared.cfg.in +++ /dev/null @@ -1,35 +0,0 @@ -# Testing configuration for Apple's system libc++. -# -# This configuration differs from a normal LLVM shared library configuration in -# that we must use DYLD_LIBRARY_PATH to run the tests against the just-built library, -# since Apple's libc++ has an absolute install_name. -# -# We also don't use a per-target include directory layout, so we have only one -# include directory for the libc++ headers. - -lit_config.load_config(config, '@CMAKE_CURRENT_BINARY_DIR@/cmake-bridge.cfg') - -config.substitutions.append(('%{flags}', - '-isysroot {}'.format('@CMAKE_OSX_SYSROOT@') if '@CMAKE_OSX_SYSROOT@' else '' -)) -config.substitutions.append(('%{compile_flags}', - '-nostdinc++ -I %{include-dir} -I %{libcxx-dir}/test/support' -)) -config.substitutions.append(('%{link_flags}', - '-nostdlib++ -L %{lib-dir} -lc++' -)) -config.substitutions.append(('%{exec}', - '%{executor} --execdir %T --env DYLD_LIBRARY_PATH=%{lib-dir} -- ' -)) - -config.stdlib = 'apple-libc++' - -import os, site -site.addsitedir(os.path.join('@LIBCXX_SOURCE_DIR@', 'utils')) -import libcxx.test.params, libcxx.test.config -libcxx.test.config.configure( - libcxx.test.params.DEFAULT_PARAMETERS, - libcxx.test.features.DEFAULT_FEATURES, - config, - lit_config -) diff --git a/libcxx/test/libcxx/input.output/iostream.format/output.streams/ostream.formatted/ostream.formatted.print/vprint_unicode.pass.cpp b/libcxx/test/libcxx/input.output/iostream.format/output.streams/ostream.formatted/ostream.formatted.print/vprint_unicode.pass.cpp index 5438d31..572c6ca 100644 --- a/libcxx/test/libcxx/input.output/iostream.format/output.streams/ostream.formatted/ostream.formatted.print/vprint_unicode.pass.cpp +++ b/libcxx/test/libcxx/input.output/iostream.format/output.streams/ostream.formatted/ostream.formatted.print/vprint_unicode.pass.cpp @@ -11,6 +11,11 @@ // XFAIL: availability-fp_to_chars-missing +// When std::print is unavailable, we don't rely on an implementation of +// std::__is_terminal and we always assume a non-unicode and non-terminal +// output. +// XFAIL: availability-print-missing + // Clang modules do not work with the definiton of _LIBCPP_TESTING_PRINT_IS_TERMINAL // XFAIL: clang-modules-build // diff --git a/libcxx/utils/ci/apple-install-libcxx.sh b/libcxx/utils/ci/apple-install-libcxx.sh index 15504f5..ddefabe 100755 --- a/libcxx/utils/ci/apple-install-libcxx.sh +++ b/libcxx/utils/ci/apple-install-libcxx.sh @@ -127,9 +127,9 @@ for arch in ${architectures}; do -DCMAKE_OSX_ARCHITECTURES="${arch}" \ -DLIBCXXABI_LIBRARY_VERSION="${version}" \ -DLIBCXX_LIBRARY_VERSION="${version}" \ - -DLIBCXX_TEST_PARAMS="target_triple=${target}" \ - -DLIBCXXABI_TEST_PARAMS="target_triple=${target}" \ - -DLIBUNWIND_TEST_PARAMS="target_triple=${target}" + -DLIBCXX_TEST_PARAMS="target_triple=${target};stdlib=apple-libc++" \ + -DLIBCXXABI_TEST_PARAMS="target_triple=${target};stdlib=apple-libc++" \ + -DLIBUNWIND_TEST_PARAMS="target_triple=${target};stdlib=apple-libc++" if [ "$headers_only" = true ]; then xcrun cmake --build "${build_dir}/${arch}" --target install-cxx-headers install-cxxabi-headers -- -v diff --git a/libcxxabi/test/configs/apple-libc++abi-shared.cfg.in b/libcxxabi/test/configs/apple-libc++abi-shared.cfg.in deleted file mode 100644 index ec0c93b..0000000 --- a/libcxxabi/test/configs/apple-libc++abi-shared.cfg.in +++ /dev/null @@ -1,29 +0,0 @@ -# Testing configuration for Apple's system libc++abi. - -lit_config.load_config(config, '@CMAKE_CURRENT_BINARY_DIR@/cmake-bridge.cfg') - -config.substitutions.append(('%{flags}', - '-isysroot {}'.format('@CMAKE_OSX_SYSROOT@') if '@CMAKE_OSX_SYSROOT@' else '' -)) -config.substitutions.append(('%{compile_flags}', - '-nostdinc++ -I %{include} -I %{cxx-include} -I %{cxx-target-include} %{maybe-include-libunwind} -D_LIBCPP_ENABLE_CXX17_REMOVED_UNEXPECTED_FUNCTIONS ' + - '-I %{libcxx}/test/support -I %{libcxx}/src' -)) -config.substitutions.append(('%{link_flags}', - '-nostdlib++ -L %{lib} -lc++ -lc++abi' -)) -config.substitutions.append(('%{exec}', - '%{executor} --execdir %T --env DYLD_LIBRARY_PATH=%{lib} -- ' -)) - -config.stdlib = 'apple-libc++' - -import os, site -site.addsitedir(os.path.join('@LIBCXXABI_LIBCXX_PATH@', 'utils')) -import libcxx.test.params, libcxx.test.config -libcxx.test.config.configure( - libcxx.test.params.DEFAULT_PARAMETERS, - libcxx.test.features.DEFAULT_FEATURES, - config, - lit_config -) -- cgit v1.1