Add patch to fix Clang plugin build

This commit is contained in:
Rodrigo Bezerra
2019-04-02 19:48:09 -03:00
parent 6caadc6625
commit 38a0ccfda2
3 changed files with 87 additions and 27 deletions

View File

@@ -1,19 +1,21 @@
pkgbase = qtcreator-git pkgbase = qtcreator-git
pkgdesc = Lightweight, cross-platform integrated development environment pkgdesc = Lightweight, cross-platform integrated development environment
pkgver = v4.5.0.r629.ge1ad7a1784 pkgver = v4.9.0.rc1.r328.ged87b74a59
pkgrel = 1 pkgrel = 1
url = https://www.qt.io/ide/ url = https://www.qt.io
arch = i686
arch = x86_64 arch = x86_64
license = GPL license = LGPL
makedepends = git makedepends = git
makedepends = llvm makedepends = llvm
makedepends = mesa makedepends = mesa
makedepends = python
depends = clang depends = clang
depends = qt5-declarative depends = clazy
depends = qt5-quickcontrols
depends = qt5-quickcontrols2
depends = qt5-script depends = qt5-script
depends = qt5-svg
depends = qt5-tools depends = qt5-tools
depends = qt5-webengine
optdepends = bzr: bazaar support optdepends = bzr: bazaar support
optdepends = cmake: cmake project support optdepends = cmake: cmake project support
optdepends = cvs: cvs support optdepends = cvs: cvs support
@@ -33,8 +35,10 @@ pkgbase = qtcreator-git
options = docs options = docs
source = git+https://code.qt.io/qt-creator/qt-creator.git source = git+https://code.qt.io/qt-creator/qt-creator.git
source = git+https://code.qt.io/qbs/qbs.git source = git+https://code.qt.io/qbs/qbs.git
md5sums = SKIP source = qtcreator-clang-plugins.patch
md5sums = SKIP sha256sums = SKIP
sha256sums = SKIP
sha256sums = 955e2ec0de1ea0fd2994d04dfb9a04e74513e4f3fe189e76dd4a256fd9c864eb
pkgname = qtcreator-git pkgname = qtcreator-git

View File

@@ -8,15 +8,15 @@
# Contributor: Tobias Hunger <tobias dot hunger at gmail dot com> # Contributor: Tobias Hunger <tobias dot hunger at gmail dot com>
pkgname=qtcreator-git pkgname=qtcreator-git
pkgver=v4.5.0.r629.ge1ad7a1784 pkgver=v4.9.0.rc1.r328.ged87b74a59
pkgrel=1 pkgrel=1
pkgdesc='Lightweight, cross-platform integrated development environment' pkgdesc='Lightweight, cross-platform integrated development environment'
arch=('i686' 'x86_64') arch=('x86_64')
url='https://www.qt.io/ide/' url='https://www.qt.io'
license=('GPL') license=(LGPL)
depends=('clang' 'qt5-declarative' 'qt5-script' 'qt5-svg' 'qt5-tools') depends=(clang clazy qt5-quickcontrols qt5-quickcontrols2 qt5-script qt5-tools qt5-webengine)
makedepends=('git' 'llvm' 'mesa') makedepends=(git llvm mesa python)
options=('docs') options=(docs)
optdepends=('bzr: bazaar support' optdepends=('bzr: bazaar support'
'cmake: cmake project support' 'cmake: cmake project support'
'cvs: cvs support' 'cvs: cvs support'
@@ -29,35 +29,44 @@ optdepends=('bzr: bazaar support'
'subversion: subversion support' 'subversion: subversion support'
'valgrind: analyze support' 'valgrind: analyze support'
'x11-ssh-askpass: ssh support') 'x11-ssh-askpass: ssh support')
provides=('qtcreator' 'qbs') provides=(qtcreator qbs)
conflicts=('qtcreator' 'qbs') conflicts=(qtcreator qbs)
source=('git+https://code.qt.io/qt-creator/qt-creator.git' source=('git+https://code.qt.io/qt-creator/qt-creator.git'
'git+https://code.qt.io/qbs/qbs.git') 'git+https://code.qt.io/qbs/qbs.git'
md5sums=('SKIP' 'qtcreator-clang-plugins.patch')
'SKIP') sha256sums=('SKIP'
'SKIP'
'955e2ec0de1ea0fd2994d04dfb9a04e74513e4f3fe189e76dd4a256fd9c864eb')
pkgver() { pkgver() {
cd qt-creator cd qt-creator
git describe --long | sed -r 's/([^-]*-g)/r\1/;s/-/./g' git describe --long | sed -r 's/([^-]*-g)/r\1/;s/-/./g'
} }
prepare() { prepare() {
[[ -d build ]] && rm -r build mkdir -p build
mkdir build
cd qt-creator
# fix hardcoded libexec path # fix hardcoded libexec path
sed -e 's|libexec\/qtcreator|lib\/qtcreator|g' -i qt-creator/qtcreator.pri sed -e 's|libexec\/qtcreator|lib\/qtcreator|g' -i qtcreator.pri
# Load analyzer plugins on demand, since upstream clang doesn't link to all plugins
# see http://code.qt.io/cgit/clang/clang.git/commit/?id=7f349701d3ea0c47be3a43e265699dddd3fd55cf
# and https://bugs.archlinux.org/task/59492
patch -p1 -i ../qtcreator-clang-plugins.patch
# Do *NOT* use system Qbs: qt creator master is *NOT* compatible with any released Qbs! # Do *NOT* use system Qbs: qt creator master is *NOT* compatible with any released Qbs!
( cd qt-creator/src/shared && rm -rf qbs && ln -s ../../../qbs qbs ) ( cd src/shared && rm -rf qbs && ln -s ../../../qbs qbs )
} }
build() { build() {
cd build cd build
QTC_FORCE_CLANG_LIBTOOLING=1 \ qmake LLVM_INSTALL_DIR=/usr CONFIG+=journald QMAKE_CFLAGS_ISYSTEM=-I \
qmake LLVM_INSTALL_DIR=/usr CONFIG+=journald QMAKE_CFLAGS_ISYSTEM=-I \ "${srcdir}/qt-creator/qtcreator.pro"
"$srcdir"/qt-creator/qtcreator.pro
make make
make docs make docs
} }

View File

@@ -0,0 +1,47 @@
diff --git a/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp b/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp
index 706c5101a3..0f7af62dba 100644
--- a/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp
+++ b/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp
@@ -511,6 +511,7 @@ private:
if (tidyMode == Mode::Disabled)
return;
+ m_options.append(CppTools::XclangArgs({"-load", "libclangTidyPlugin.so"}));
m_options.append(CppTools::XclangArgs({"-add-plugin", "clang-tidy"}));
if (tidyMode == Mode::File)
@@ -526,8 +527,8 @@ private:
if (checks.isEmpty())
return;
- m_options.append(CppTools::XclangArgs({"-add-plugin",
- "clang-lazy",
+ m_options.append(CppTools::XclangArgs({"-load", "ClazyPlugin.so",
+ "-add-plugin", "clazy",
"-plugin-arg-clang-lazy",
"enable-all-fixits",
"-plugin-arg-clang-lazy",
diff --git a/src/plugins/clangtools/clangtidyclazyrunner.cpp b/src/plugins/clangtools/clangtidyclazyrunner.cpp
index a580704243..42c4319240 100644
--- a/src/plugins/clangtools/clangtidyclazyrunner.cpp
+++ b/src/plugins/clangtools/clangtidyclazyrunner.cpp
@@ -76,6 +76,7 @@ QStringList ClangTidyClazyRunner::constructCommandLineArguments(const QStringLis
const ClangDiagnosticConfig::TidyMode tidyMode = m_diagnosticConfig.clangTidyMode();
if (tidyMode != ClangDiagnosticConfig::TidyMode::Disabled) {
+ arguments << XclangArgs({"-load", "libclangTidyPlugin.so"});
arguments << XclangArgs({"-add-plugin", "clang-tidy"});
if (tidyMode != ClangDiagnosticConfig::TidyMode::File) {
const QString tidyChecks = m_diagnosticConfig.clangTidyChecks();
@@ -85,8 +86,9 @@ QStringList ClangTidyClazyRunner::constructCommandLineArguments(const QStringLis
const QString clazyChecks = m_diagnosticConfig.clazyChecks();
if (!clazyChecks.isEmpty()) {
- arguments << XclangArgs({"-add-plugin",
- "clang-lazy",
+ arguments << XclangArgs({"-load", "ClazyPlugin.so",
+ "-add-plugin",
+ "clazy",
"-plugin-arg-clang-lazy",
"enable-all-fixits",
"-plugin-arg-clang-lazy",