cb424d7448
verify-patch-sanity.py validates every active recipe .patch has internally- consistent hunk line counts — catching the 'malformed patch at line N' failure at commit/CI/preflight time instead of hours into a cook. This cycle hit that class three times (qtwaylandscanner, sddm, xwayland), each only discovered when cookbook tried to apply the patch. Running it across the repo found 29 latent malformed patches (validated against GNU patch: e.g. relibc/P3-sysv-ipc reproduces 'malformed patch at line 22'). They were harmless only because they sit in vendored recipes (baked, not re- applied) — but would fail on any version-bump re-derivation. --fix recounts the hunk headers (body untouched) and repaired all 29. Wired into build-preflight.sh (Phase 1.0D) and redbear-ci.yml, with a unit test (test-patch-sanity.sh). Skips archived/legacy trees and unvalidatable formats (empty placeholders, bare-@@ git hunks).
60 lines
1.8 KiB
ReStructuredText
60 lines
1.8 KiB
ReStructuredText
=======================
|
|
LLVM Common CMake Utils
|
|
=======================
|
|
|
|
What goes here
|
|
--------------
|
|
|
|
These are CMake modules to be shared between LLVM projects strictly at build
|
|
time. In other words, they must not be included from an installed CMake module,
|
|
such as the ``Add*.cmake`` ones. Modules that are reachable from installed
|
|
modules should instead go in ``${project}/cmake/modules`` of the most upstream
|
|
project that uses them.
|
|
|
|
The advantage of not putting these modules in an existing location like
|
|
``llvm/cmake/modules`` is two-fold:
|
|
|
|
- Since they are not installed, we don't have to worry about any out-of-tree
|
|
downstream usage, and thus there is no need for stability.
|
|
|
|
- Since they are available as part of the source at build-time, we don't have
|
|
to do the usual stand-alone vs combined-build dances, avoiding much
|
|
complexity.
|
|
|
|
How to use
|
|
----------
|
|
|
|
For tools, please do:
|
|
|
|
.. code-block:: cmake
|
|
|
|
if(NOT DEFINED LLVM_COMMON_CMAKE_UTILS)
|
|
set(LLVM_COMMON_CMAKE_UTILS ${CMAKE_CURRENT_SOURCE_DIR}/../cmake)
|
|
endif()
|
|
|
|
# Add path for custom modules.
|
|
list(INSERT CMAKE_MODULE_PATH 0
|
|
# project-specific module dirs first
|
|
"${LLVM_COMMON_CMAKE_UTILS}/Modules"
|
|
)
|
|
|
|
Notes:
|
|
|
|
- The ``if(NOT DEFINED ...)`` guard is there because in combined builds, LLVM
|
|
will set this variable. This is useful for legacy builds where projects are
|
|
found in ``llvm/tools`` instead.
|
|
|
|
- ``INSERT ... 0`` ensures these new entries are prepended to the front of the
|
|
module path, so nothing might shadow them by mistake.
|
|
|
|
For runtime libs, we skip the ``if(NOT DEFINED`` part:
|
|
|
|
.. code-block:: cmake
|
|
|
|
set(LLVM_COMMON_CMAKE_UTILS ${CMAKE_CURRENT_SOURCE_DIR}/../cmake)
|
|
|
|
... # same as before
|
|
|
|
If ``llvm/tools`` legacy-style combined builds are deprecated, we should then
|
|
skip it everywhere, bringing the tools and runtimes boilerplate back in line.
|