[libcxx-commits] [PATCH] D139147: [libc++][Android] Enable libc++ testing on Android

Ryan Prichard via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Sun Jun 11 23:34:52 PDT 2023


rprichard updated this revision to Diff 530401.
rprichard added a comment.
Herald added a subscriber: arphaman.

Rebase the commit.

Redo a lot of the CI and emulator handling. Expand the testing from a
single NDK emulator-based test to two different emulator images:

- Android L x86 (32-bit)
- Android T x86-64

Add another lit feature, android-device-api=${API} that can be used
to XFAIL tests that only fail on old devices. This is common because
the oldest supported OS (L) is from 2014, and a lot has changed since
then w.r.t. Bionic and SELinux config, for example.

Remove ci/android-set-user.sh and simplify Docker user management.
Split the existing Dockerfile into Dockerfile.base to use as the base
for a new vendor/android/Dockerfile.

Add the two emulator configs to buildkite-pipeline.yml and run-buildbot.
Add XFAIL and UNSUPPORTED to tests such that the two CI configs should
pass cleanly. (There are a few more tests that will fail on configs
that aren't being tested, e.g. NAN string to long double conversion
is broken only on old __LP64__ devices, but that config isn't added in
this patch.)


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D139147/new/

https://reviews.llvm.org/D139147

Files:
  libcxx/CMakeLists.txt
  libcxx/cmake/caches/AndroidNDK.cmake
  libcxx/docs/TestingLibcxx.rst
  libcxx/docs/index.rst
  libcxx/lib/abi/i686-none-linux-android21.libcxxabi.v1.stable.exceptions.nonew.abilist
  libcxx/lib/abi/x86_64-none-linux-android21.libcxxabi.v1.stable.exceptions.nonew.abilist
  libcxx/test/configs/llvm-libc++-android.cfg.in
  libcxx/test/libcxx/experimental/fexperimental-library.compile.pass.cpp
  libcxx/test/libcxx/gdb/gdb_pretty_printer_test.sh.cpp
  libcxx/test/libcxx/modules_include.gen.py
  libcxx/test/std/atomics/atomics.lockfree/isalwayslockfree.pass.cpp
  libcxx/test/std/atomics/stdatomic.h.syn/types.compile.pass.cpp
  libcxx/test/std/input.output/file.streams/fstreams/filebuf.members/close.pass.cpp
  libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/file_size.pass.cpp
  libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/file_type_obs.pass.cpp
  libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/hard_link_count.pass.cpp
  libcxx/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/increment.pass.cpp
  libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.copy/copy.pass.cpp
  libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.copy_file/copy_file.pass.cpp
  libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.create_hard_link/create_hard_link.pass.cpp
  libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.equivalent/equivalent.pass.cpp
  libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.hard_lk_ct/hard_link_count.pass.cpp
  libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_empty/is_empty.pass.cpp
  libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.permissions/permissions.pass.cpp
  libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.status/status.pass.cpp
  libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.symlink_status/symlink_status.pass.cpp
  libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.temp_dir_path/temp_directory_path.pass.cpp
  libcxx/test/std/input.output/iostream.format/ext.manip/get_money.pass.cpp
  libcxx/test/std/input.output/iostream.format/ext.manip/put_money.pass.cpp
  libcxx/test/std/input.output/string.streams/stringstream/stringstream.members/gcount.pass.cpp
  libcxx/test/std/language.support/support.srcloc/general.pass.cpp
  libcxx/test/std/localization/locale.categories/category.collate/locale.collate.byname/compare.pass.cpp
  libcxx/test/std/localization/locale.categories/category.collate/locale.collate.byname/transform.pass.cpp
  libcxx/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/is_1.pass.cpp
  libcxx/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/is_many.pass.cpp
  libcxx/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/scan_is.pass.cpp
  libcxx/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/scan_not.pass.cpp
  libcxx/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/tolower_1.pass.cpp
  libcxx/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/tolower_many.pass.cpp
  libcxx/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/toupper_1.pass.cpp
  libcxx/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/toupper_many.pass.cpp
  libcxx/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_en_US.pass.cpp
  libcxx/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_string_en_US.pass.cpp
  libcxx/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_en_US.pass.cpp
  libcxx/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_string_en_US.pass.cpp
  libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_long_double.pass.cpp
  libcxx/test/std/re/re.traits/translate_nocase.pass.cpp
  libcxx/test/std/utilities/expected/expected.expected/assign/assign.U.pass.cpp
  libcxx/test/std/utilities/expected/expected.expected/assign/assign.copy.pass.cpp
  libcxx/test/std/utilities/expected/expected.expected/assign/assign.move.pass.cpp
  libcxx/test/std/utilities/expected/expected.expected/assign/assign.unexpected.copy.pass.cpp
  libcxx/test/std/utilities/expected/expected.expected/assign/assign.unexpected.move.pass.cpp
  libcxx/test/std/utilities/expected/expected.expected/assign/emplace.pass.cpp
  libcxx/test/std/utilities/expected/expected.expected/ctor/ctor.inplace_init_list.pass.cpp
  libcxx/test/std/utilities/expected/expected.expected/ctor/ctor.unexpect_init_list.pass.cpp
  libcxx/test/std/utilities/expected/expected.expected/dtor.pass.cpp
  libcxx/test/std/utilities/expected/expected.expected/swap/free.swap.pass.cpp
  libcxx/test/std/utilities/expected/expected.void/assign/assign.copy.pass.cpp
  libcxx/test/std/utilities/expected/expected.void/assign/assign.move.pass.cpp
  libcxx/test/std/utilities/expected/expected.void/assign/assign.unexpected.copy.pass.cpp
  libcxx/test/std/utilities/expected/expected.void/assign/assign.unexpected.move.pass.cpp
  libcxx/test/std/utilities/expected/expected.void/assign/emplace.pass.cpp
  libcxx/test/std/utilities/expected/expected.void/ctor/ctor.unexpect_init_list.pass.cpp
  libcxx/test/std/utilities/expected/expected.void/dtor.pass.cpp
  libcxx/test/std/utilities/expected/expected.void/swap/free.swap.pass.cpp
  libcxx/test/std/utilities/expected/expected.void/swap/member.swap.pass.cpp
  libcxx/test/std/utilities/format/format.functions/locale-specific_form.pass.cpp
  libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/ctad.static.compile.pass.cpp
  libcxx/test/support/filesystem_test_helper.h
  libcxx/utils/adb_run.py
  libcxx/utils/ci/BOT_OWNERS.txt
  libcxx/utils/ci/Dockerfile
  libcxx/utils/ci/Dockerfile.base
  libcxx/utils/ci/buildkite-pipeline.yml
  libcxx/utils/ci/run-buildbot
  libcxx/utils/ci/vendor/android/Dockerfile
  libcxx/utils/ci/vendor/android/emulator-functions.sh
  libcxx/utils/ci/vendor/android/nsjail.sh
  libcxx/utils/ci/vendor/android/run-buildbot-container
  libcxx/utils/ci/vendor/android/run-emulator.sh
  libcxx/utils/libcxx/test/android.py
  libcxx/utils/libcxx/test/features.py
  libcxx/utils/semaphore_tool.py
  libcxxabi/test/configs/llvm-libc++abi-android.cfg.in
  libcxxabi/test/test_demangle.pass.cpp



More information about the libcxx-commits mailing list