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).
75 lines
3.0 KiB
ReStructuredText
75 lines
3.0 KiB
ReStructuredText
Integrated Distributed ThinLTO (DTLTO)
|
|
======================================
|
|
|
|
Integrated Distributed ThinLTO (DTLTO) enables the distribution of backend
|
|
ThinLTO compilations via external distribution systems, such as Incredibuild,
|
|
during the traditional link step.
|
|
|
|
The implementation is documented here: https://llvm.org/docs/DTLTO.html.
|
|
|
|
Currently, DTLTO is only supported in ELF and COFF LLD.
|
|
|
|
ELF LLD
|
|
-------
|
|
|
|
The command-line interface is as follows:
|
|
|
|
- ``--thinlto-distributor=<path>``
|
|
Specifies the file to execute as the distributor process. If specified,
|
|
ThinLTO backend compilations will be distributed.
|
|
|
|
- ``--thinlto-remote-compiler=<path>``
|
|
Specifies the path to the compiler that the distributor process will use for
|
|
backend compilations. The compiler invoked must match the version of LLD.
|
|
|
|
- ``--thinlto-distributor-arg=<arg>``
|
|
Specifies ``<arg>`` on the command line when invoking the distributor.
|
|
Can be specified multiple times.
|
|
|
|
- ``--thinlto-remote-compiler-arg=<arg>``
|
|
Appends ``<arg>`` to the remote compiler's command line.
|
|
Can be specified multiple times.
|
|
|
|
Options that introduce extra input/output files may cause miscompilation if
|
|
the distribution system does not automatically handle pushing/fetching them to
|
|
remote nodes. In such cases, configure the distributor - possibly using
|
|
``--thinlto-distributor-arg=`` - to manage these dependencies. See the
|
|
distributor documentation for details.
|
|
|
|
Some LLD LTO options (e.g., ``--lto-sample-profile=<file>``) are supported.
|
|
Currently, other options are silently accepted but do not have the intended
|
|
effect. Support for such options will be expanded in the future.
|
|
|
|
COFF LLD
|
|
--------
|
|
|
|
The command-line interface is as follows:
|
|
|
|
- ``/thinlto-distributor:<path>``
|
|
Specifies the file to execute as the distributor process. If specified,
|
|
ThinLTO backend compilations will be distributed.
|
|
|
|
- ``/thinlto-remote-compiler:<path>``
|
|
Specifies the path to the compiler that the distributor process will use for
|
|
backend compilations. The compiler invoked must match the version of LLD.
|
|
|
|
- ``/thinlto-distributor-arg:<arg>``
|
|
Specifies ``<arg>`` on the command line when invoking the distributor.
|
|
Can be specified multiple times.
|
|
|
|
- ``/thinlto-remote-compiler-arg:<arg>``
|
|
Appends ``<arg>`` to the remote compiler's command line.
|
|
Can be specified multiple times.
|
|
|
|
Options that introduce extra input/output files may cause miscompilation if
|
|
the distribution system does not automatically handle pushing/fetching them to
|
|
remote nodes. In such cases, configure the distributor - possibly using
|
|
``/thinlto-distributor-arg:`` - to manage these dependencies. See the
|
|
distributor documentation for details.
|
|
|
|
Some LLD LTO options (e.g., ``/lto-sample-profile:<file>``) are supported.
|
|
Currently, other options are silently accepted but do not have the intended
|
|
effect. Support for such options could be expanded in the future.
|
|
|
|
Currently, there is no DTLTO command line interface supplied for ``clang-cl``,
|
|
as users are expected to invoke LLD directly. |