From 9ed5254293ef548b32bf22383b69f97773fe470f Mon Sep 17 00:00:00 2001 From: Stenzek Date: Fri, 7 Nov 2025 15:34:37 +1000 Subject: [PATCH] Deps: Patch Linguist to build without Qt Quick Quick/Declarative takes way too long to build on the CI, and insane amounts of disk space. --- .../deps/build-dependencies-linux-cross.sh | 26 +- scripts/deps/build-dependencies-linux.sh | 26 +- scripts/deps/build-dependencies-mac.sh | 1 + .../deps/build-dependencies-windows-arm64.bat | 5 +- .../deps/build-dependencies-windows-x64.bat | 5 +- scripts/deps/qttools-disable-clang.patch | 20 ++ .../deps/qttools-linguist-without-quick.patch | 238 ++++++++++++++++++ 7 files changed, 269 insertions(+), 52 deletions(-) create mode 100644 scripts/deps/qttools-disable-clang.patch create mode 100644 scripts/deps/qttools-linguist-without-quick.patch diff --git a/scripts/deps/build-dependencies-linux-cross.sh b/scripts/deps/build-dependencies-linux-cross.sh index 79be2e39f..21ccc3811 100755 --- a/scripts/deps/build-dependencies-linux-cross.sh +++ b/scripts/deps/build-dependencies-linux-cross.sh @@ -366,30 +366,8 @@ echo "Installing Qt Tools..." rm -fr "qttools-everywhere-src-$QT" tar xf "qttools-everywhere-src-$QT.tar.xz" cd "qttools-everywhere-src-$QT" - -# Force disable clang scanning, it gets very confused. -patch -u configure.cmake <setWidget(m_sourceAndFormView); + m_uiFormPreviewView = new UiFormPreviewView(0, m_dataModel); +- m_qmlFormPreviewView = new QmlFormPreviewView(m_dataModel); + m_sourceCodeView = new SourceCodeView(0); + m_sourceAndFormView->addWidget(m_sourceCodeView); + m_sourceAndFormView->addWidget(m_uiFormPreviewView); +- m_sourceAndFormView->addWidget(m_qmlFormPreviewView); + + // Set up errors dock widget + m_errorsDock = new QDockWidget(this); +@@ -693,7 +685,6 @@ void MainWindow::modelCountChanged() + m_ui.actionFindPrev->setEnabled(false); + + m_uiFormPreviewView->setSourceContext(-1, 0); +- m_qmlFormPreviewView->setSourceContext(-1, 0); + } + + struct OpenedFile { +@@ -1673,9 +1664,6 @@ void MainWindow::translationChanged(const MultiDataIndex &index) + MessageItem *m = m_dataModel->messageItem(index); + if (hasUiFormPreview(m->fileName())) + m_uiFormPreviewView->setSourceContext(index.model(), m); +- else if (hasQmlFormPreview(m->fileName(), m_ui.actionQmlPreview->isChecked())) +- if (!m_qmlFormPreviewView->setSourceContext(index.model(), m)) +- m_ui.actionQmlPreview->setChecked(false); + } + + // This and the following function operate directly on the messageitem, +@@ -1691,10 +1679,6 @@ void MainWindow::updateTranslation(const QStringList &translations) + m->setTranslations(translations); + if (!m->fileName().isEmpty() && hasUiFormPreview(m->fileName())) + m_uiFormPreviewView->setSourceContext(m_currentIndex.model(), m); +- else if (!m->fileName().isEmpty() +- && hasQmlFormPreview(m->fileName(), m_ui.actionQmlPreview->isChecked())) +- if (!m_qmlFormPreviewView->setSourceContext(m_currentIndex.model(), m)) +- m_ui.actionQmlPreview->setChecked(false); + updateDanger(m_currentIndex, true); + + if (m->isFinished()) +@@ -2099,7 +2083,6 @@ void MainWindow::setupMenuBar() + connect(m_ui.actionDisplayGuesses, &QAction::triggered, + m_phraseView, &PhraseView::toggleGuessing); + connect(m_ui.actionStatistics, &QAction::triggered, this, &MainWindow::showStatistics); +- connect(m_ui.actionQmlPreview, &QAction::triggered, this, &MainWindow::toggleQmlPreview); + connect(m_ui.actionVisualizeWhitespace, &QAction::triggered, + this, &MainWindow::toggleVisualizeWhitespace); + connect(m_ui.actionIncreaseZoom, &QAction::triggered, +@@ -2209,11 +2192,7 @@ void MainWindow::updateSourceView(int model, MessageItem *item) + if (hasUiFormPreview(item->fileName())) { + m_sourceAndFormView->setCurrentWidget(m_uiFormPreviewView); + m_uiFormPreviewView->setSourceContext(model, item); +- } else if (hasQmlFormPreview(item->fileName(), m_ui.actionQmlPreview->isChecked()) +- && m_qmlFormPreviewView->setSourceContext(model, item)) { +- m_sourceAndFormView->setCurrentWidget(m_qmlFormPreviewView); + } else { +- m_ui.actionQmlPreview->setChecked(false); + m_sourceAndFormView->setCurrentWidget(m_sourceCodeView); + QDir dir = QFileInfo(m_dataModel->srcFileName(model)).dir(); + QString fileName = QDir::cleanPath(dir.absoluteFilePath(item->fileName())); +@@ -2754,14 +2733,6 @@ void MainWindow::showStatistics() + updateStatistics(); + } + +-void MainWindow::toggleQmlPreview() +-{ +- if (m_ui.actionQmlPreview->isChecked()) +- m_sourceAndFormView->setCurrentWidget(m_qmlFormPreviewView); +- else +- m_sourceAndFormView->setCurrentWidget(m_sourceCodeView); +-} +- + void MainWindow::toggleVisualizeWhitespace() + { + m_messageEditor->setVisualizeWhitespace(m_ui.actionVisualizeWhitespace->isChecked()); +--- a/src/linguist/linguist/mainwindow.h ++++ b/src/linguist/linguist/mainwindow.h +@@ -37,7 +37,6 @@ class BatchTranslationDialog; + class ErrorsView; + class FocusWatcher; + class UiFormPreviewView; +-class QmlFormPreviewView; + class MessageEditor; + class PhraseView; + class SourceCodeView; +@@ -130,7 +129,6 @@ private slots: + FindDialog::FindOptions options, int statusFilter); + void revalidate(); + void showStatistics(); +- void toggleQmlPreview(); + void toggleVisualizeWhitespace(); + void onWhatsThis(); + void updatePhraseDicts(); +@@ -196,7 +194,6 @@ private: + QStackedWidget *m_sourceAndFormView; + SourceCodeView *m_sourceCodeView; + UiFormPreviewView *m_uiFormPreviewView; +- QmlFormPreviewView *m_qmlFormPreviewView; + ErrorsView *m_errorsView; + QLabel *m_progressLabel; + QLabel *m_modifiedLabel; +--- a/src/linguist/linguist/mainwindow.ui ++++ b/src/linguist/linguist/mainwindow.ui +@@ -97,7 +97,6 @@ + + + +- + + + +@@ -646,26 +645,6 @@ + QAction::NoRole + + +- +- +- true +- +- +- true +- +- +- &QML preview +- +- +- Displays a preview of QML documents. +- +- +- +- +- +- QAction::NoRole +- +- + + + &Manual