[libc++] Improve the format ignorelist generation.
authorMark de Wever <koraq@xs4all.nl>
Wed, 15 Feb 2023 18:50:55 +0000 (19:50 +0100)
committerMark de Wever <koraq@xs4all.nl>
Fri, 17 Feb 2023 17:01:57 +0000 (18:01 +0100)
Several improvements
- Only add files that we actually want to format.
- Sort according to a fixed locale.

Some drive-by fixes
- Rename a text file, this avoids a filter exception.
- Adds a some missing source files extensions.
- Removes unused extensions hh, hxx, cc, and cxx from clang-format.

Reviewed By: philnik, #libc

Differential Revision: https://reviews.llvm.org/D144126

libcxx/src/support/solaris/README.txt [moved from libcxx/src/support/solaris/README with 100% similarity]
libcxx/utils/ci/run-buildbot
libcxx/utils/data/ignore_format.txt
libcxx/utils/generate_ignore_format.sh

index 0b79798..d7292ce 100755 (executable)
@@ -187,7 +187,7 @@ check-format)
     fi
     ${GIT_CLANG_FORMAT} \
         --diff \
-        --extensions ',h,hh,hpp,hxx,c,cc,cxx,cpp' HEAD~1 \
+        --extensions ',h,hpp,c,cpp,inc,ipp' HEAD~1 \
         -- $(find libcxx/{benchmarks,include,src}/ -type f | grep -vf libcxx/utils/data/ignore_format.txt) \
         | tee ${BUILD_DIR}/clang-format.patch
     # Check if the diff is empty, fail otherwise.
index 49c2d4b..a3da9d5 100644 (file)
@@ -1,4 +1,3 @@
-libcxx/benchmarks/CMakeLists.txt
 libcxx/benchmarks/CartesianBenchmarks.h
 libcxx/benchmarks/ContainerBenchmarks.h
 libcxx/benchmarks/GenerateInput.h
@@ -29,8 +28,6 @@ libcxx/benchmarks/formatter_int.bench.cpp
 libcxx/benchmarks/format_to.bench.cpp
 libcxx/benchmarks/format_to_n.bench.cpp
 libcxx/benchmarks/function.bench.cpp
-libcxx/benchmarks/lit.cfg.py
-libcxx/benchmarks/lit.site.cfg.py.in
 libcxx/benchmarks/map.bench.cpp
 libcxx/benchmarks/ordered_set.bench.cpp
 libcxx/benchmarks/random.bench.cpp
@@ -38,7 +35,6 @@ libcxx/benchmarks/string.bench.cpp
 libcxx/benchmarks/stringstream.bench.cpp
 libcxx/benchmarks/unordered_set_operations.bench.cpp
 libcxx/benchmarks/vector_operations.bench.cpp
-libcxx/include/CMakeLists.txt
 libcxx/include/__algorithm/binary_search.h
 libcxx/include/__algorithm/clamp.h
 libcxx/include/__algorithm/comp.h
@@ -312,7 +308,6 @@ libcxx/include/__concepts/swappable.h
 libcxx/include/__concepts/totally_ordered.h
 libcxx/include/condition_variable
 libcxx/include/__config
-libcxx/include/__config_site.in
 libcxx/include/__coroutine/coroutine_handle.h
 libcxx/include/__coroutine/coroutine_traits.h
 libcxx/include/__coroutine/noop_coroutine_handle.h
@@ -470,7 +465,6 @@ libcxx/include/__iterator/sortable.h
 libcxx/include/__iterator/unreachable_sentinel.h
 libcxx/include/__iterator/wrap_iter.h
 libcxx/include/latch
-libcxx/include/libcxx.imp
 libcxx/include/limits
 libcxx/include/limits.h
 libcxx/include/list
@@ -506,7 +500,6 @@ libcxx/include/__memory/temp_value.h
 libcxx/include/__memory/uninitialized_algorithms.h
 libcxx/include/__memory/unique_ptr.h
 libcxx/include/__memory/uses_allocator.h
-libcxx/include/module.modulemap.in
 libcxx/include/mutex
 libcxx/include/__mutex_base
 libcxx/include/new
@@ -789,7 +782,6 @@ libcxx/include/vector
 libcxx/include/__verbose_abort
 libcxx/include/wchar.h
 libcxx/include/wctype.h
-libcxx/src/CMakeLists.txt
 libcxx/src/any.cpp
 libcxx/src/atomic.cpp
 libcxx/src/barrier.cpp
index 7df8245..c07b76d 100755 (executable)
@@ -7,11 +7,22 @@ if [ -z "${CLANG_FORMAT}" ]; then
 fi
 
 rm libcxx/utils/data/ignore_format.txt
-for file in $(find libcxx/{benchmarks,include,src}/ -type f); do
+# This uses the same matches as the check-format CI step.
+#
+# Since it's hard to match empty extensions the following
+# method is used, remove all files with an extension, then
+# add the list of extensions that should be formatted.
+for file in $(find libcxx/{benchmarks,include,src}/ -type f -not -name '*.*' -or \( \
+        -name "*.h" -or -name "*.hpp" -or \
+        -name "*.c" -or -name "*.cpp" -or \
+        -name "*.inc" -or -name "*.ipp" \
+        \) ); do
+
   ${CLANG_FORMAT} --Werror --dry-run ${file} >& /dev/null
   if [ $? != 0 ]; then
     echo ${file} >> libcxx/utils/data/ignore_format.txt
   fi
 done
 
-sort libcxx/utils/data/ignore_format.txt -d -o libcxx/utils/data/ignore_format.txt
+# Force sorting not to depend on the system's locale.
+LC_ALL=C sort libcxx/utils/data/ignore_format.txt -d -o libcxx/utils/data/ignore_format.txt