From ec11388b3342a2b22eae22fd13ff4997b103d155 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Micha=C5=82=20G=C3=B3rny?= Date: Sun, 4 Dec 2022 07:39:41 +0100 Subject: [PATCH] [libc++] Rename __tuple to __tuple_dir to avoid file collision Rename the `__tuple` directory in libc++ headers to `__tuple_dir` to avoid file collision when installing. Historically, `__tuple` has been a file and it has been replaced by a directory in 2d52c6bfae801b016dd3627b8c0e7c4a99405549. Replacing a regular file with a directory (or more importantly, the other way around when downgrading) is not universally supported. Since this is an internal header, its actual name should not matter, so just rename it to avoid problems. Differential Revision: https://reviews.llvm.org/D139270 --- libcxx/include/CMakeLists.txt | 16 ++++++++-------- libcxx/include/__functional/hash.h | 2 +- libcxx/include/__fwd/get.h | 2 +- libcxx/include/__memory/compressed_pair.h | 2 +- libcxx/include/__ranges/subrange.h | 4 ++-- libcxx/include/{__tuple => __tuple_dir}/apply_cv.h | 0 .../include/{__tuple => __tuple_dir}/make_tuple_types.h | 10 +++++----- libcxx/include/{__tuple => __tuple_dir}/sfinae_helpers.h | 10 +++++----- libcxx/include/{__tuple => __tuple_dir}/tuple_element.h | 4 ++-- libcxx/include/{__tuple => __tuple_dir}/tuple_indices.h | 0 libcxx/include/{__tuple => __tuple_dir}/tuple_like.h | 2 +- libcxx/include/{__tuple => __tuple_dir}/tuple_size.h | 2 +- libcxx/include/{__tuple => __tuple_dir}/tuple_types.h | 0 libcxx/include/__utility/pair.h | 8 ++++---- libcxx/include/array | 6 +++--- libcxx/include/libcxx.imp | 2 +- libcxx/include/module.modulemap.in | 16 ++++++++-------- libcxx/include/optional | 2 +- libcxx/include/ranges | 4 ++-- libcxx/include/utility | 4 ++-- libcxx/test/libcxx/private_headers.verify.cpp | 16 ++++++++-------- libcxx/utils/generate_iwyu_mapping.py | 4 +++- 22 files changed, 59 insertions(+), 57 deletions(-) rename libcxx/include/{__tuple => __tuple_dir}/apply_cv.h (100%) rename libcxx/include/{__tuple => __tuple_dir}/make_tuple_types.h (93%) rename libcxx/include/{__tuple => __tuple_dir}/sfinae_helpers.h (97%) rename libcxx/include/{__tuple => __tuple_dir}/tuple_element.h (97%) rename libcxx/include/{__tuple => __tuple_dir}/tuple_indices.h (100%) rename libcxx/include/{__tuple => __tuple_dir}/tuple_like.h (97%) rename libcxx/include/{__tuple => __tuple_dir}/tuple_size.h (98%) rename libcxx/include/{__tuple => __tuple_dir}/tuple_types.h (100%) diff --git a/libcxx/include/CMakeLists.txt b/libcxx/include/CMakeLists.txt index 62fa8d9..ea1e23a 100644 --- a/libcxx/include/CMakeLists.txt +++ b/libcxx/include/CMakeLists.txt @@ -540,14 +540,14 @@ set(files __thread/timed_backoff_policy.h __threading_support __tree - __tuple/apply_cv.h - __tuple/make_tuple_types.h - __tuple/sfinae_helpers.h - __tuple/tuple_element.h - __tuple/tuple_indices.h - __tuple/tuple_like.h - __tuple/tuple_size.h - __tuple/tuple_types.h + __tuple_dir/apply_cv.h + __tuple_dir/make_tuple_types.h + __tuple_dir/sfinae_helpers.h + __tuple_dir/tuple_element.h + __tuple_dir/tuple_indices.h + __tuple_dir/tuple_like.h + __tuple_dir/tuple_size.h + __tuple_dir/tuple_types.h __type_traits/add_const.h __type_traits/add_cv.h __type_traits/add_lvalue_reference.h diff --git a/libcxx/include/__functional/hash.h b/libcxx/include/__functional/hash.h index 041730d..64412fc 100644 --- a/libcxx/include/__functional/hash.h +++ b/libcxx/include/__functional/hash.h @@ -12,7 +12,7 @@ #include <__config> #include <__functional/unary_function.h> #include <__fwd/hash.h> -#include <__tuple/sfinae_helpers.h> +#include <__tuple_dir/sfinae_helpers.h> #include <__utility/forward.h> #include <__utility/move.h> #include <__utility/pair.h> diff --git a/libcxx/include/__fwd/get.h b/libcxx/include/__fwd/get.h index 8162403..98758eb 100644 --- a/libcxx/include/__fwd/get.h +++ b/libcxx/include/__fwd/get.h @@ -13,7 +13,7 @@ #include <__fwd/array.h> #include <__fwd/pair.h> #include <__fwd/tuple.h> -#include <__tuple/tuple_element.h> +#include <__tuple_dir/tuple_element.h> #include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) diff --git a/libcxx/include/__memory/compressed_pair.h b/libcxx/include/__memory/compressed_pair.h index 9dd42f8..6f747e7 100644 --- a/libcxx/include/__memory/compressed_pair.h +++ b/libcxx/include/__memory/compressed_pair.h @@ -13,7 +13,7 @@ #include <__config> #include <__fwd/get.h> #include <__fwd/tuple.h> -#include <__tuple/tuple_indices.h> +#include <__tuple_dir/tuple_indices.h> #include <__type_traits/dependent_type.h> #include <__utility/forward.h> #include <__utility/move.h> diff --git a/libcxx/include/__ranges/subrange.h b/libcxx/include/__ranges/subrange.h index 3efcd96..55689fe 100644 --- a/libcxx/include/__ranges/subrange.h +++ b/libcxx/include/__ranges/subrange.h @@ -28,8 +28,8 @@ #include <__ranges/enable_borrowed_range.h> #include <__ranges/size.h> #include <__ranges/view_interface.h> -#include <__tuple/tuple_element.h> -#include <__tuple/tuple_size.h> +#include <__tuple_dir/tuple_element.h> +#include <__tuple_dir/tuple_size.h> #include <__utility/move.h> #include diff --git a/libcxx/include/__tuple/apply_cv.h b/libcxx/include/__tuple_dir/apply_cv.h similarity index 100% rename from libcxx/include/__tuple/apply_cv.h rename to libcxx/include/__tuple_dir/apply_cv.h diff --git a/libcxx/include/__tuple/make_tuple_types.h b/libcxx/include/__tuple_dir/make_tuple_types.h similarity index 93% rename from libcxx/include/__tuple/make_tuple_types.h rename to libcxx/include/__tuple_dir/make_tuple_types.h index 38e2547..913ff9b 100644 --- a/libcxx/include/__tuple/make_tuple_types.h +++ b/libcxx/include/__tuple_dir/make_tuple_types.h @@ -12,11 +12,11 @@ #include <__config> #include <__fwd/array.h> #include <__fwd/tuple.h> -#include <__tuple/apply_cv.h> -#include <__tuple/tuple_element.h> -#include <__tuple/tuple_indices.h> -#include <__tuple/tuple_size.h> -#include <__tuple/tuple_types.h> +#include <__tuple_dir/apply_cv.h> +#include <__tuple_dir/tuple_element.h> +#include <__tuple_dir/tuple_indices.h> +#include <__tuple_dir/tuple_size.h> +#include <__tuple_dir/tuple_types.h> #include <__type_traits/remove_cv.h> #include <__type_traits/remove_reference.h> #include diff --git a/libcxx/include/__tuple/sfinae_helpers.h b/libcxx/include/__tuple_dir/sfinae_helpers.h similarity index 97% rename from libcxx/include/__tuple/sfinae_helpers.h rename to libcxx/include/__tuple_dir/sfinae_helpers.h index ef39670..fde5341 100644 --- a/libcxx/include/__tuple/sfinae_helpers.h +++ b/libcxx/include/__tuple_dir/sfinae_helpers.h @@ -11,11 +11,11 @@ #include <__config> #include <__fwd/tuple.h> -#include <__tuple/make_tuple_types.h> -#include <__tuple/tuple_element.h> -#include <__tuple/tuple_like.h> -#include <__tuple/tuple_size.h> -#include <__tuple/tuple_types.h> +#include <__tuple_dir/make_tuple_types.h> +#include <__tuple_dir/tuple_element.h> +#include <__tuple_dir/tuple_like.h> +#include <__tuple_dir/tuple_size.h> +#include <__tuple_dir/tuple_types.h> #include <__type_traits/enable_if.h> #include <__type_traits/integral_constant.h> #include <__type_traits/is_assignable.h> diff --git a/libcxx/include/__tuple/tuple_element.h b/libcxx/include/__tuple_dir/tuple_element.h similarity index 97% rename from libcxx/include/__tuple/tuple_element.h rename to libcxx/include/__tuple_dir/tuple_element.h index d30b2c1..06f49bf 100644 --- a/libcxx/include/__tuple/tuple_element.h +++ b/libcxx/include/__tuple_dir/tuple_element.h @@ -10,8 +10,8 @@ #define _LIBCPP___TUPLE_TUPLE_ELEMENT_H #include <__config> -#include <__tuple/tuple_indices.h> -#include <__tuple/tuple_types.h> +#include <__tuple_dir/tuple_indices.h> +#include <__tuple_dir/tuple_types.h> #include <__type_traits/add_const.h> #include <__type_traits/add_cv.h> #include <__type_traits/add_volatile.h> diff --git a/libcxx/include/__tuple/tuple_indices.h b/libcxx/include/__tuple_dir/tuple_indices.h similarity index 100% rename from libcxx/include/__tuple/tuple_indices.h rename to libcxx/include/__tuple_dir/tuple_indices.h diff --git a/libcxx/include/__tuple/tuple_like.h b/libcxx/include/__tuple_dir/tuple_like.h similarity index 97% rename from libcxx/include/__tuple/tuple_like.h rename to libcxx/include/__tuple_dir/tuple_like.h index 3b59691..3272877 100644 --- a/libcxx/include/__tuple/tuple_like.h +++ b/libcxx/include/__tuple_dir/tuple_like.h @@ -13,7 +13,7 @@ #include <__fwd/array.h> #include <__fwd/pair.h> #include <__fwd/tuple.h> -#include <__tuple/tuple_types.h> +#include <__tuple_dir/tuple_types.h> #include <__type_traits/integral_constant.h> #include diff --git a/libcxx/include/__tuple/tuple_size.h b/libcxx/include/__tuple_dir/tuple_size.h similarity index 98% rename from libcxx/include/__tuple/tuple_size.h rename to libcxx/include/__tuple_dir/tuple_size.h index 26f9d97..d551b22 100644 --- a/libcxx/include/__tuple/tuple_size.h +++ b/libcxx/include/__tuple_dir/tuple_size.h @@ -11,7 +11,7 @@ #include <__config> #include <__fwd/tuple.h> -#include <__tuple/tuple_types.h> +#include <__tuple_dir/tuple_types.h> #include <__type_traits/is_const.h> #include <__type_traits/is_volatile.h> #include diff --git a/libcxx/include/__tuple/tuple_types.h b/libcxx/include/__tuple_dir/tuple_types.h similarity index 100% rename from libcxx/include/__tuple/tuple_types.h rename to libcxx/include/__tuple_dir/tuple_types.h diff --git a/libcxx/include/__utility/pair.h b/libcxx/include/__utility/pair.h index d928689..e183298 100644 --- a/libcxx/include/__utility/pair.h +++ b/libcxx/include/__utility/pair.h @@ -15,10 +15,10 @@ #include <__functional/unwrap_ref.h> #include <__fwd/get.h> #include <__fwd/tuple.h> -#include <__tuple/sfinae_helpers.h> -#include <__tuple/tuple_element.h> -#include <__tuple/tuple_indices.h> -#include <__tuple/tuple_size.h> +#include <__tuple_dir/sfinae_helpers.h> +#include <__tuple_dir/tuple_element.h> +#include <__tuple_dir/tuple_indices.h> +#include <__tuple_dir/tuple_size.h> #include <__type_traits/is_implicitly_default_constructible.h> #include <__utility/forward.h> #include <__utility/move.h> diff --git a/libcxx/include/array b/libcxx/include/array index cb1a6d1..068a6bd 100644 --- a/libcxx/include/array +++ b/libcxx/include/array @@ -115,7 +115,7 @@ template const T&& get(const array&&) noexce #include <__assert> // all public C++ headers provide the assertion handler #include <__config> #include <__iterator/reverse_iterator.h> -#include <__tuple/sfinae_helpers.h> +#include <__tuple_dir/sfinae_helpers.h> #include <__utility/integer_sequence.h> #include <__utility/move.h> #include <__utility/unreachable.h> @@ -137,8 +137,8 @@ template const T&& get(const array&&) noexce #include // [tuple.helper] -#include <__tuple/tuple_element.h> -#include <__tuple/tuple_size.h> +#include <__tuple_dir/tuple_element.h> +#include <__tuple_dir/tuple_size.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header diff --git a/libcxx/include/libcxx.imp b/libcxx/include/libcxx.imp index b2a018e..2c591b7 100644 --- a/libcxx/include/libcxx.imp +++ b/libcxx/include/libcxx.imp @@ -39,7 +39,7 @@ { include: [ "@<__string/.*>", "private", "", "public" ] }, { include: [ "@<__support/.*>", "private", "", "public" ] }, { include: [ "@<__thread/.*>", "private", "", "public" ] }, - { include: [ "@<__tuple/.*>", "private", "", "public" ] }, + { include: [ "@<__tuple_dir/.*>", "private", "", "public" ] }, { include: [ "@<__type_traits/.*>", "private", "", "public" ] }, { include: [ "@<__utility/.*>", "private", "", "public" ] }, { include: [ "@<__variant/.*>", "private", "", "public" ] }, diff --git a/libcxx/include/module.modulemap.in b/libcxx/include/module.modulemap.in index 2a2064c..c0473a4 100644 --- a/libcxx/include/module.modulemap.in +++ b/libcxx/include/module.modulemap.in @@ -1342,16 +1342,16 @@ module std [system] { header "tuple" export * - module apply_cv { private header "__tuple/apply_cv.h" } + module apply_cv { private header "__tuple_dir/apply_cv.h" } module get_fwd { private header "__fwd/get.h" } - module make_tuple_types { private header "__tuple/make_tuple_types.h" } - module sfinae_helpers { private header "__tuple/sfinae_helpers.h" } - module tuple_element { private header "__tuple/tuple_element.h" } + module make_tuple_types { private header "__tuple_dir/make_tuple_types.h" } + module sfinae_helpers { private header "__tuple_dir/sfinae_helpers.h" } + module tuple_element { private header "__tuple_dir/tuple_element.h" } module tuple_fwd { private header "__fwd/tuple.h" } - module tuple_indices { private header "__tuple/tuple_indices.h" } - module tuple_like { private header "__tuple/tuple_like.h" } - module tuple_size { private header "__tuple/tuple_size.h" } - module tuple_types { private header "__tuple/tuple_types.h" } + module tuple_indices { private header "__tuple_dir/tuple_indices.h" } + module tuple_like { private header "__tuple_dir/tuple_like.h" } + module tuple_size { private header "__tuple_dir/tuple_size.h" } + module tuple_types { private header "__tuple_dir/tuple_types.h" } } module type_traits { header "type_traits" diff --git a/libcxx/include/optional b/libcxx/include/optional index 1061a0f..a7a887a 100644 --- a/libcxx/include/optional +++ b/libcxx/include/optional @@ -166,7 +166,7 @@ template #include <__functional/invoke.h> #include <__functional/unary_function.h> #include <__memory/construct_at.h> -#include <__tuple/sfinae_helpers.h> +#include <__tuple_dir/sfinae_helpers.h> #include <__utility/forward.h> #include <__utility/in_place.h> #include <__utility/move.h> diff --git a/libcxx/include/ranges b/libcxx/include/ranges index 643853e..5928efa 100644 --- a/libcxx/include/ranges +++ b/libcxx/include/ranges @@ -352,8 +352,8 @@ namespace std { #include // [tuple.helper] -#include <__tuple/tuple_element.h> -#include <__tuple/tuple_size.h> +#include <__tuple_dir/tuple_element.h> +#include <__tuple_dir/tuple_size.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header diff --git a/libcxx/include/utility b/libcxx/include/utility index ac6c18b..3cc7ce5 100644 --- a/libcxx/include/utility +++ b/libcxx/include/utility @@ -267,8 +267,8 @@ template #include // [tuple.helper] -#include <__tuple/tuple_element.h> -#include <__tuple/tuple_size.h> +#include <__tuple_dir/tuple_element.h> +#include <__tuple_dir/tuple_size.h> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header diff --git a/libcxx/test/libcxx/private_headers.verify.cpp b/libcxx/test/libcxx/private_headers.verify.cpp index 23186a9..6ecc220 100644 --- a/libcxx/test/libcxx/private_headers.verify.cpp +++ b/libcxx/test/libcxx/private_headers.verify.cpp @@ -553,14 +553,14 @@ END-SCRIPT #include <__string/extern_template_lists.h> // expected-error@*:* {{use of private header from outside its module: '__string/extern_template_lists.h'}} #include <__thread/poll_with_backoff.h> // expected-error@*:* {{use of private header from outside its module: '__thread/poll_with_backoff.h'}} #include <__thread/timed_backoff_policy.h> // expected-error@*:* {{use of private header from outside its module: '__thread/timed_backoff_policy.h'}} -#include <__tuple/apply_cv.h> // expected-error@*:* {{use of private header from outside its module: '__tuple/apply_cv.h'}} -#include <__tuple/make_tuple_types.h> // expected-error@*:* {{use of private header from outside its module: '__tuple/make_tuple_types.h'}} -#include <__tuple/sfinae_helpers.h> // expected-error@*:* {{use of private header from outside its module: '__tuple/sfinae_helpers.h'}} -#include <__tuple/tuple_element.h> // expected-error@*:* {{use of private header from outside its module: '__tuple/tuple_element.h'}} -#include <__tuple/tuple_indices.h> // expected-error@*:* {{use of private header from outside its module: '__tuple/tuple_indices.h'}} -#include <__tuple/tuple_like.h> // expected-error@*:* {{use of private header from outside its module: '__tuple/tuple_like.h'}} -#include <__tuple/tuple_size.h> // expected-error@*:* {{use of private header from outside its module: '__tuple/tuple_size.h'}} -#include <__tuple/tuple_types.h> // expected-error@*:* {{use of private header from outside its module: '__tuple/tuple_types.h'}} +#include <__tuple_dir/apply_cv.h> // expected-error@*:* {{use of private header from outside its module: '__tuple_dir/apply_cv.h'}} +#include <__tuple_dir/make_tuple_types.h> // expected-error@*:* {{use of private header from outside its module: '__tuple_dir/make_tuple_types.h'}} +#include <__tuple_dir/sfinae_helpers.h> // expected-error@*:* {{use of private header from outside its module: '__tuple_dir/sfinae_helpers.h'}} +#include <__tuple_dir/tuple_element.h> // expected-error@*:* {{use of private header from outside its module: '__tuple_dir/tuple_element.h'}} +#include <__tuple_dir/tuple_indices.h> // expected-error@*:* {{use of private header from outside its module: '__tuple_dir/tuple_indices.h'}} +#include <__tuple_dir/tuple_like.h> // expected-error@*:* {{use of private header from outside its module: '__tuple_dir/tuple_like.h'}} +#include <__tuple_dir/tuple_size.h> // expected-error@*:* {{use of private header from outside its module: '__tuple_dir/tuple_size.h'}} +#include <__tuple_dir/tuple_types.h> // expected-error@*:* {{use of private header from outside its module: '__tuple_dir/tuple_types.h'}} #include <__type_traits/add_const.h> // expected-error@*:* {{use of private header from outside its module: '__type_traits/add_const.h'}} #include <__type_traits/add_cv.h> // expected-error@*:* {{use of private header from outside its module: '__type_traits/add_cv.h'}} #include <__type_traits/add_lvalue_reference.h> // expected-error@*:* {{use of private header from outside its module: '__type_traits/add_lvalue_reference.h'}} diff --git a/libcxx/utils/generate_iwyu_mapping.py b/libcxx/utils/generate_iwyu_mapping.py index 615c6e3..1e0242b 100644 --- a/libcxx/utils/generate_iwyu_mapping.py +++ b/libcxx/utils/generate_iwyu_mapping.py @@ -30,8 +30,10 @@ def generate_map(include): c_headers.append(i.name) result = [] + temporary_mappings = {'__tuple_dir': 'tuple'} for i in detail_directories: - result.append(f'{generate(f"@<{i}/.*>", i[2:])},') + public_header = temporary_mappings.get(i, i.lstrip('_')) + result.append(f'{generate(f"@<{i}/.*>", public_header)},') for i in detail_files: public = [] -- 2.7.4