.gitattributes normalises everything through `* text=auto` and pins *.diff to LF, but the qtbase patches under Telegram/build/patches_extra are *.patch and were left out. On a Windows checkout they arrive with CRLF, and prepare.py applies them to freshly cloned Qt sources that are LF, so git apply cannot match its own context: error: patch failed: src/widgets/kernel/qwidgetrepaintmanager.cpp:1042 error: src/widgets/kernel/qwidgetrepaintmanager.cpp: patch does not apply The Qt stage prints that error and still reports success, because the failing git apply sits inside a for loop whose exit code the generated batch does not propagate. The result is a stage marked complete with Qt neither patched, built, nor installed, and the failure only surfaces much later as "Neither Qt6 nor Qt5 is found" when configuring Telegram itself. CI never hit this: it restores a Libraries cache built back when the patch still applied, so the Qt stage never reruns there. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
13 lines
533 B
Text
13 lines
533 B
Text
# Set the default behavior, in case people don't have core.autocrlf set.
|
|
* text=auto
|
|
|
|
# Ensure diffs have LF endings. This covers *.patch too: the qtbase patches under
|
|
# Telegram/build/patches_extra are applied by prepare.py to freshly cloned Qt sources,
|
|
# which are LF. Checked out with CRLF under `* text=auto`, they stop matching their
|
|
# own context and git apply fails with "patch does not apply".
|
|
*.diff text eol=lf
|
|
*.patch text eol=lf
|
|
*.bat text eol=crlf
|
|
|
|
# Ensure lottie animations are treated as binary files
|
|
*.lottie binary
|