commit ca9294c681ac051265a53e8c3f14696b3359ad79 Author: Hans F. Nordhaug Date: Thu Feb 25 11:30:37 2021 +0100 Adding Qt Creator 4.13.3 and 4.14.1. Also adding support for llvm / clang 11. Additional changes: - Added separate clangformat use flag so people without libclangformat-ide can get clang code model support in Qt Creator. (Updated clang plugin use flag descriptions.) - Removed client use flag for gdb as it is no longer supported. PS! Qt Creator 4.14.1 doesn't need the dylib fix anymore, but the ClangFormat patch is still needed and hence the dev-libs/libclangformat-ide package (if you want to use the Clang format plugin). diff --git a/dev-qt/qt-creator/Manifest b/dev-qt/qt-creator/Manifest index b1eb910..bea4585 100644 --- a/dev-qt/qt-creator/Manifest +++ b/dev-qt/qt-creator/Manifest @@ -1,6 +1,13 @@ AUX qt-creator-4.12.0-dylib-fix.patch 4022 BLAKE2B ea5d2b4a5daabc76515c1777a5df1738800d5cf79e9b52b60bb0d3d1c923b6d0daeb1f1a7e77f1e707aa7948f2a673f637e1e66bd3aa30f47c19ef89351114c5 SHA512 a81ed8b5616f816bc4ade87c159997f33a55c07417b93cbcbfc29f32fb36060370bf05f85cc94ac64297a7b33cf2852b3be2a8c7b99b58914085acd9dc533808 AUX qt-creator-4.12.0-libclangformat-ide.patch 2463 BLAKE2B a99fc6e1354fde03ddbf60e5115fbec46fc5074353b5512973bb3802bb65d3401a4ac51e41a5d113ffea14faf85b48f334d97f21e210d173b534c6e2fdfec328 SHA512 f08a95d5e0e9201792f5c16e3b2a61e9a54f08a885e214ea237d3e49bad8d2d94a59cbdc35703641a1ed1ee4037f64bf7d6d6bbd4dab11fa153a3ac4ef67e050 +AUX qt-creator-4.13.0-dylib-fix.patch 4014 BLAKE2B 806b350cdc5991296c61ddde5a1bf3e3ec6f065de802835f15ddb39e844100cc133655b377ed673a9cd7dc71b056bc53f6d94c961c67053807827c67cfca5dff SHA512 1bb03ce470d5ea05cecce277ab0338c21690812746bf0b6b5c209dfbe2055e0fe69821cbed38f406473c048c07de240fbe52820a6fa7757a5088ef319e2c678f +AUX qt-creator-4.13.0-libclangformat-ide.patch 3203 BLAKE2B 8126c70fc8d142d43135484aece129c887b1ba3da8ee6b131c743149d8a423963bccf97a90b84f451ae0849db57748fd6ccc1d07fb4f96b6ba6c7b93c5011630 SHA512 4d393690098f6c82c302dba23c149d8082d27550562681a16f6162d43bef807b86c7115c62a14d96581c58edec46afcea91dbcac4aa0b1aa0156ea169f8fa2bc +AUX qt-creator-4.14.0-libclangformat-ide.patch 3155 BLAKE2B cbc0367e3ac6a6ad5e91b2fbaff7d1f7775e2bb0ee99dbc97918d0f744af9fed6d83dc24cfdb59bd78cbf7a1716463e008a342b8df1389d1ab3f2929d8f73bb8 SHA512 e55956f112832f4e119b9cbc6efa72d8ccef2030e1b4f42cd8057fbffc7646ef493540560b1c5a0b70268d38c144ad845ad5412be466513f87094a77280e4569 DIST qt-creator-opensource-src-4.12.3.tar.xz 34351356 BLAKE2B 7f1302df09bae10ebe1882552abd25333788d7185280e9a0c73e7da6fb8b4d929da326e42c500385fba3e044350cd46c2cf2e33e49b0cca2d9c3b4d68693115d SHA512 48cd5839cff724300516f78deba3b1a7199d46d6f9a6a4c662bf2f581db167e4376a9bdd544544071591c4ee43c319c92ffcaf5ebb85412297f4144c3c7db7bf +DIST qt-creator-opensource-src-4.13.3.tar.xz 40132088 BLAKE2B 67b547c006836b303d641b925fb9966aa65bd20fe506bbffbc220332ac3b06fa835fa1bf90490d357670c7272e2766bcd3c471e0425575be5cdcce0419cb31fd SHA512 2923f8dccf1d9a6819d2351f323bb2b364e026a665182039982b4a49403b1d3d4d7321151af28f2fb5d50809ef9e90eae6cbec876869fdbbb375a0d9365c8b8c +DIST qt-creator-opensource-src-4.14.1.tar.xz 44471480 BLAKE2B 37a6427d43a6514418742e6142311fdecb9fe0e47c174c78268b7b85fa55cf9d794d3a95f4c3542be5767c5ddc04cec54f1e9172b8f7b7607c837b9b1464a331 SHA512 09c18776bab2958b8dd7f61fa793964d12ba54f20167277e5cbcabfc040ecc92d3ec8e96eb8e77c1899998a6c82cce6b316cc709738c6262622aa80f0f9989e8 EBUILD qt-creator-4.12.3-r1.ebuild 7155 BLAKE2B 78fbe0ed1cf7497b8dfca2daf319c8eeb611ea7ddd6c1180b6d4cc423cc54d2dd75da4e06901e2a87c452c2837bdc1464e153173e5dc76dcfd0bee385e5a9ae3 SHA512 368d001f344b01ebd64d295c2e78174856ac38c7876830e88e1789a8b85b1f9031b4261820e4d399bf2f8cf9e42f9c4bcf5c4d2b1e47003e604c640e1998d277 +EBUILD qt-creator-4.13.3.ebuild 7324 BLAKE2B ac54b1d67e193462d01589b1f8a625f48a8e4ddb392055169c535b71be08f14fc0ecf7d387821fb42bdd871e5bc3ac5e5acd769252d0bcf505f33c5d000b9633 SHA512 e69679bbde4e4b752ca2823713ca893392f4396031c1f2e3e9cc82efc847e6d6c237900f4e5b8a4888e6d6af2679622f538650f10e2e3ed58533979c7e37e9c9 +EBUILD qt-creator-4.14.1.ebuild 7304 BLAKE2B fae57731cf023bf6ec4a1233e0bec11ac29a436bfbec29382a4d9485007b4cd0e58e44a197be4f653565b23fefbe07931a98539a9389ccc866185e62254ae2e3 SHA512 c63fb8a8d3d9720136b75c9981188c6dedc48a4909dbba9deab7856adc628d872cae9b44ecef8a07cd63dcfc2bb46757a4b26ea705c79609a0f7dad9b8a75023 EBUILD qt-creator-9999.ebuild 7424 BLAKE2B 88b5592ba3003bffbd5a95e120f07bd55dcbd586825aa2bda64c8d6784dcbeb799727082719c9409540daf2540d7c7937573160aadde3e6e435b6f6e053c46fc SHA512 5fe24a20fe577c7cfc9f2839792962c6ebc6969d874a8d88614131e7ba9e657912eb9207c5646d3d0559f7a2abbb979e92a0aa127ccbffefdadf1e61ebe448f5 -MISC metadata.xml 3518 BLAKE2B 4153006d68c5a4689e66f39cbaa9762ff1787f88676dc88878e38f5b8376bd28714b78f86449f037eb52cd81b0b91273516e852c34a5460fb0a7081adf0c1e67 SHA512 2cb8d121b8fc6685bcb9fb09c7f39487ba067ba8b5aad8b0f82b0b512290436bcf57b587505f856dd729a1e0bee9f4fc94b5fd28735f255b1cae5ae1e79f44ba +MISC metadata.xml 3571 BLAKE2B 4e7801389d2012a30e3bdd46b4221611ea3de92892ee0f50ef40747799fb0549928d8153d40e19b862a0cfe6fa81d97af1ea2aebc6fb25d0db8f360eedf3cc99 SHA512 d7332002aa58aeebfe5ab2f59eef6339dcc56ecde3c6166f01462af0d98a776f75953184fed2b3c1355e28ecf5fd243f99bf3820bc5ec17d44b34ba7c710c522 diff --git a/dev-qt/qt-creator/files/qt-creator-4.13.0-dylib-fix.patch b/dev-qt/qt-creator/files/qt-creator-4.13.0-dylib-fix.patch new file mode 100644 index 0000000..163c8a3 --- /dev/null +++ b/dev-qt/qt-creator/files/qt-creator-4.13.0-dylib-fix.patch @@ -0,0 +1,84 @@ +From 1c5faa6dcf16135ee31252d13766d01536a69405 Mon Sep 17 00:00:00 2001 +From: Peter Levine +Date: Tue, 5 May 2020 03:45:35 -0400 +Subject: [PATCH] Fix building against clang configured with + CLANG_LINK_CLANG_DYLIB + +LLVM/Clang upstream only officially supports building shared +components as a single dynamic library (via +LLVM_BUILD_LLVM_DYLIB=ON, CLANG_LINK_CLANG_DYLIB=ON, etc..). +Linux distros like Fedora and Gentoo have followed suit. + +Unfortunately, QT-Creator's src/shared/clang/clang_installation.pri +file assumes clang is built with separate component libraries +and the build fails. + +This change alters the build to check for the existence +of clang component libraries and, if found, link to them, or +otherwise to libclang-cpp. + +Task-number: QTCREATORBUG-23172 +Change-Id: I17df5822d7aeb471227f21f2cf4a71871d6f9b86 +--- + src/shared/clang/clang_installation.pri | 35 +++++++++++++++---------- + 1 file changed, 21 insertions(+), 14 deletions(-) + +diff --git a/src/shared/clang/clang_installation.pri b/src/shared/clang/clang_installation.pri +index 2ef2cb42..24afbed8 100644 +--- a/src/shared/clang/clang_installation.pri ++++ b/src/shared/clang/clang_installation.pri +@@ -206,19 +206,6 @@ isEmpty(LLVM_VERSION) { + } + } + +- isEmpty(QTC_CLANG_BUILDMODE_MISMATCH)|!equals(QTC_CLANG_BUILDMODE_MISMATCH, 1) { +- CLANGFORMAT_MAIN_HEADER = $$LLVM_INCLUDEPATH/clang/Format/Format.h +- exists($$CLANGFORMAT_MAIN_HEADER) { +- CLANGFORMAT_LIBS=-lclangFormat -lclangToolingInclusions -lclangToolingCore -lclangRewrite -lclangLex -lclangBasic +- ALL_CLANG_LIBS=-lclangFormat -lclangToolingInclusions -lclangTooling -lclangToolingCore \ +- -lclangRewrite -lclangIndex -lclangFrontend -lclangParse -lclangSerialization \ +- -lclangSema -lclangEdit -lclangAnalysis -lclangDriver -lclangDynamicASTMatchers \ +- -lclangASTMatchers -lclangAST -lclangLex -lclangBasic +- win32:CLANGFORMAT_LIBS += -lversion +- } +- } +- win32:ALL_CLANG_LIBS += -lversion +- + LIBCLANG_MAIN_HEADER = $$LLVM_INCLUDEPATH/clang-c/Index.h + !exists($$LIBCLANG_MAIN_HEADER) { + $$llvmWarningOrError(\ +@@ -239,10 +226,30 @@ isEmpty(LLVM_VERSION) { + LIBCLANG_LIBS += $${CLANG_LIB} + + isEmpty(QTC_CLANG_BUILDMODE_MISMATCH)|!equals(QTC_CLANG_BUILDMODE_MISMATCH, 1) { ++ CLANGFORMAT_MAIN_HEADER = $$LLVM_INCLUDEPATH/clang/Format/Format.h ++ exists($$CLANGFORMAT_MAIN_HEADER) { ++ exists($${LLVM_LIBDIR}/libclangFormat.so*)|exists($${LLVM_LIBDIR}/libclangFormat.dylib) { ++ CLANGFORMAT_LIBS=-lclangFormat -lclangToolingInclusions -lclangToolingCore -lclangRewrite -lclangLex -lclangBasic ++ ALL_CLANG_LIBS=-lclangFormat -lclangToolingInclusions -lclangTooling -lclangToolingCore \ ++ -lclangRewrite -lclangIndex -lclangFrontend -lclangParse -lclangSerialization \ ++ -lclangSema -lclangEdit -lclangAnalysis -lclangDriver -lclangDynamicASTMatchers \ ++ -lclangASTMatchers -lclangAST -lclangLex -lclangBasic ++ win32:CLANGFORMAT_LIBS += -lversion ++ win32:ALL_CLANG_LIBS += -lversion ++ } else { ++ CLANGFORMAT_LIBS=-lclang-cpp ++ ALL_CLANG_LIBS=-lclang-cpp ++ } ++ } ++ + QTC_ENABLE_CLANG_REFACTORING=$$(QTC_ENABLE_CLANG_REFACTORING) + !isEmpty(QTC_ENABLE_CLANG_REFACTORING) { + !contains(QMAKE_DEFAULT_LIBDIRS, $$LLVM_LIBDIR): LIBTOOLING_LIBS = -L$${LLVM_LIBDIR} +- LIBTOOLING_LIBS += $$CLANGTOOLING_LIBS $$LLVM_STATIC_LIBS ++ exists($${LLVM_LIBDIR}/libclangTooling.so*)|exists($${LLVM_LIBDIR}/libclangTooling.dylib) { ++ LIBTOOLING_LIBS += $$CLANGTOOLING_LIBS $$LLVM_STATIC_LIBS ++ } else { ++ LIBTOOLING_LIBS += -lclang-cpp $$LLVM_STATIC_LIBS ++ } + } + } + +-- +2.26.2 + diff --git a/dev-qt/qt-creator/files/qt-creator-4.13.0-libclangformat-ide.patch b/dev-qt/qt-creator/files/qt-creator-4.13.0-libclangformat-ide.patch new file mode 100644 index 0000000..0fa2909 --- /dev/null +++ b/dev-qt/qt-creator/files/qt-creator-4.13.0-libclangformat-ide.patch @@ -0,0 +1,74 @@ +diff --git a/src/plugins/clangformat/clangformatbaseindenter.h b/src/plugins/clangformat/clangformatbaseindenter.h +index 00dc3e9c..2c1cf48f 100644 +--- a/src/plugins/clangformat/clangformatbaseindenter.h ++++ b/src/plugins/clangformat/clangformatbaseindenter.h +@@ -27,7 +27,7 @@ + + #include + +-#include ++#include + + namespace ClangFormat { + +diff --git a/src/plugins/clangformat/clangformatconfigwidget.cpp b/src/plugins/clangformat/clangformatconfigwidget.cpp +index f1fa2c82..b2e552e9 100644 +--- a/src/plugins/clangformat/clangformatconfigwidget.cpp ++++ b/src/plugins/clangformat/clangformatconfigwidget.cpp +@@ -32,7 +32,7 @@ + #include "ui_clangformatchecks.h" + #include "ui_clangformatconfigwidget.h" + +-#include ++#include + + #include + #include +diff --git a/src/plugins/clangformat/clangformatplugin.cpp b/src/plugins/clangformat/clangformatplugin.cpp +index 9b76a086..840efe1f 100644 +--- a/src/plugins/clangformat/clangformatplugin.cpp ++++ b/src/plugins/clangformat/clangformatplugin.cpp +@@ -56,7 +56,7 @@ + #include + #include + +-#include ++#include + + #include + +diff --git a/src/plugins/clangformat/clangformatutils.h b/src/plugins/clangformat/clangformatutils.h +index 74fd84c9..c455d25f 100644 +--- a/src/plugins/clangformat/clangformatutils.h ++++ b/src/plugins/clangformat/clangformatutils.h +@@ -28,7 +28,7 @@ + #include + #include + +-#include ++#include + + #include + +diff --git a/src/shared/clang/clang_installation.pri b/src/shared/clang/clang_installation.pri +index b1927ca9..2f0b5900 100644 +--- a/src/shared/clang/clang_installation.pri ++++ b/src/shared/clang/clang_installation.pri +@@ -229,7 +229,7 @@ isEmpty(LLVM_VERSION) { + CLANGFORMAT_MAIN_HEADER = $$LLVM_INCLUDEPATH/clang/Format/Format.h + exists($$CLANGFORMAT_MAIN_HEADER) { + exists($${LLVM_LIBDIR}/libclangFormat.so*)|exists($${LLVM_LIBDIR}/libclangFormat.dylib) { +- CLANGFORMAT_LIBS=-lclangFormat -lclangToolingInclusions -lclangToolingCore -lclangRewrite -lclangLex -lclangBasic ++ CLANGFORMAT_LIBS=-lclangFormatIDE -lclangToolingInclusions -lclangToolingCore -lclangRewrite -lclangLex -lclangBasic + ALL_CLANG_LIBS=-lclangFormat -lclangToolingInclusions -lclangTooling -lclangToolingCore \ + -lclangRewrite -lclangIndex -lclangFrontend -lclangParse -lclangSerialization \ + -lclangSema -lclangEdit -lclangAnalysis -lclangDriver -lclangDynamicASTMatchers \ +@@ -237,7 +237,7 @@ isEmpty(LLVM_VERSION) { + win32:CLANGFORMAT_LIBS += -lversion + win32:ALL_CLANG_LIBS += -lversion + } else { +- CLANGFORMAT_LIBS=-lclang-cpp ++ CLANGFORMAT_LIBS=-lclangFormatIDE -lclang-cpp + ALL_CLANG_LIBS=-lclang-cpp + } + } diff --git a/dev-qt/qt-creator/files/qt-creator-4.14.0-libclangformat-ide.patch b/dev-qt/qt-creator/files/qt-creator-4.14.0-libclangformat-ide.patch new file mode 100644 index 0000000..5319a85 --- /dev/null +++ b/dev-qt/qt-creator/files/qt-creator-4.14.0-libclangformat-ide.patch @@ -0,0 +1,73 @@ +diff --git a/src/plugins/clangformat/clangformatbaseindenter.h b/src/plugins/clangformat/clangformatbaseindenter.h +index 00dc3e9c..2c1cf48f 100644 +--- a/src/plugins/clangformat/clangformatbaseindenter.h ++++ b/src/plugins/clangformat/clangformatbaseindenter.h +@@ -27,7 +27,7 @@ + + #include + +-#include ++#include + + namespace ClangFormat { + +diff --git a/src/plugins/clangformat/clangformatconfigwidget.cpp b/src/plugins/clangformat/clangformatconfigwidget.cpp +index f1fa2c82..b2e552e9 100644 +--- a/src/plugins/clangformat/clangformatconfigwidget.cpp ++++ b/src/plugins/clangformat/clangformatconfigwidget.cpp +@@ -32,7 +32,7 @@ + #include "ui_clangformatchecks.h" + #include "ui_clangformatconfigwidget.h" + +-#include ++#include + + #include + #include +diff --git a/src/plugins/clangformat/clangformatplugin.cpp b/src/plugins/clangformat/clangformatplugin.cpp +index 9b76a086..840efe1f 100644 +--- a/src/plugins/clangformat/clangformatplugin.cpp ++++ b/src/plugins/clangformat/clangformatplugin.cpp +@@ -56,7 +56,7 @@ + #include + #include + +-#include ++#include + + #include + +diff --git a/src/plugins/clangformat/clangformatutils.h b/src/plugins/clangformat/clangformatutils.h +index 74fd84c9..c455d25f 100644 +--- a/src/plugins/clangformat/clangformatutils.h ++++ b/src/plugins/clangformat/clangformatutils.h +@@ -28,7 +28,7 @@ + #include + #include + +-#include ++#include + + #include + +diff --git a/src/shared/clang/clang_installation.pri b/src/shared/clang/clang_installation.pri +index 28c2d0d..52a5442 100644 +--- a/src/shared/clang/clang_installation.pri ++++ b/src/shared/clang/clang_installation.pri +@@ -204,14 +204,14 @@ isEmpty(LLVM_VERSION) { + CLANGFORMAT_MAIN_HEADER = $$LLVM_INCLUDEPATH/clang/Format/Format.h + exists($$CLANGFORMAT_MAIN_HEADER) { + exists($$LLVM_LIBDIR/*clangBasic*) { +- CLANGFORMAT_LIBS=-lclangFormat -lclangToolingInclusions -lclangToolingCore -lclangRewrite -lclangLex -lclangBasic ++ CLANGFORMAT_LIBS=-lclangFormatIDE -lclangToolingInclusions -lclangToolingCore -lclangRewrite -lclangLex -lclangBasic + ALL_CLANG_LIBS=-lclangFormat -lclangToolingInclusions -lclangTooling -lclangToolingCore \ + -lclangRewrite -lclangIndex -lclangFrontend -lclangParse -lclangSerialization \ + -lclangSema -lclangEdit -lclangAnalysis -lclangDriver -lclangDynamicASTMatchers \ + -lclangASTMatchers -lclangAST -lclangLex -lclangBasic + win32:CLANGFORMAT_LIBS += -lversion + } else { +- CLANGFORMAT_LIBS = -lclang-cpp ++ CLANGFORMAT_LIBS = -lclangFormatIDE -lclang-cpp + ALL_CLANG_LIBS = -lclang-cpp + } + } diff --git a/dev-qt/qt-creator/metadata.xml b/dev-qt/qt-creator/metadata.xml index f1b1bb3..cd963dd 100644 --- a/dev-qt/qt-creator/metadata.xml +++ b/dev-qt/qt-creator/metadata.xml @@ -17,7 +17,8 @@ Add support for GNU Bazaar version control system (requires manual installation of Bazaar client) Build the beautifier plugin (supports astyle, clang-format, and uncrustify) Build plugin for Boot2Qt devices - Build clang-based plugins (code model, formatting, static analysis) + Build most clang-based plugins (code model, static analysis) + Build clang format plugin Add support for IBM ClearCase version control system (requires manual installation of ClearCase client) Build plugin for CMake-based projects Enable integration with dev-util/cppcheck diff --git a/dev-qt/qt-creator/qt-creator-4.13.3.ebuild b/dev-qt/qt-creator/qt-creator-4.13.3.ebuild new file mode 100644 index 0000000..b7740d6 --- /dev/null +++ b/dev-qt/qt-creator/qt-creator-4.13.3.ebuild @@ -0,0 +1,243 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +LLVM_MAX_SLOT=11 +PLOCALES="cs da de fr ja pl ru sl uk zh-CN zh-TW" + +inherit llvm qmake-utils virtualx xdg + +DESCRIPTION="Lightweight IDE for C++/QML development centering around Qt" +HOMEPAGE="https://doc.qt.io/qtcreator/" +LICENSE="GPL-3" +SLOT="0" + +if [[ ${PV} == *9999 ]]; then + inherit git-r3 + EGIT_REPO_URI="https://code.qt.io/${PN}/${PN}.git" +else + MY_PV=${PV/_/-} + MY_P=${PN}-opensource-src-${MY_PV} + [[ ${MY_PV} == ${PV} ]] && MY_REL=official || MY_REL=development + SRC_URI="https://download.qt.io/${MY_REL}_releases/${PN/-}/$(ver_cut 1-2)/${MY_PV}/${MY_P}.tar.xz" + KEYWORDS="~amd64 ~arm ~x86" + S=${WORKDIR}/${MY_P} +fi + +# TODO: unbundle sqlite + +QTC_PLUGINS=(android +autotest autotools:autotoolsprojectmanager baremetal beautifier boot2qt + '+clang:clangcodemodel|clangpchmanager|clangrefactoring|clangtools' clangformat clearcase + cmake:cmakeprojectmanager cppcheck ctfvisualizer cvs +designer git glsl:glsleditor +help ios + lsp:languageclient mcu:mcusupport mercurial modeling:modeleditor nim perforce perfprofiler python + qbs:qbsprojectmanager +qmldesigner qmlprofiler qnx remotelinux scxml:scxmleditor serialterminal + silversearcher subversion valgrind webassembly winrt) +IUSE="doc systemd test +webengine ${QTC_PLUGINS[@]%:*}" +RESTRICT="!test? ( test )" +REQUIRED_USE=" + boot2qt? ( remotelinux ) + clangformat? ( clang ) + clang? ( test? ( qbs ) ) + mcu? ( cmake ) + python? ( lsp ) + qnx? ( remotelinux ) +" + +# minimum Qt version required +QT_PV="5.12.3:5" + +BDEPEND=" + >=dev-qt/linguist-tools-${QT_PV} + virtual/pkgconfig + doc? ( >=dev-qt/qdoc-${QT_PV} ) +" +CDEPEND=" + >=dev-cpp/yaml-cpp-0.6.2:= + >=dev-qt/qtconcurrent-${QT_PV} + >=dev-qt/qtcore-${QT_PV} + >=dev-qt/qtdeclarative-${QT_PV}[widgets] + >=dev-qt/qtgui-${QT_PV} + >=dev-qt/qtnetwork-${QT_PV}[ssl] + >=dev-qt/qtprintsupport-${QT_PV} + >=dev-qt/qtquickcontrols-${QT_PV} + >=dev-qt/qtscript-${QT_PV} + >=dev-qt/qtsql-${QT_PV}[sqlite] + >=dev-qt/qtsvg-${QT_PV} + >=dev-qt/qtwidgets-${QT_PV} + >=dev-qt/qtx11extras-${QT_PV} + >=dev-qt/qtxml-${QT_PV} + kde-frameworks/syntax-highlighting:5 + clang? ( + || ( + sys-devel/clang:11 + sys-devel/clang:10 + sys-devel/clang:9 + ) + =dev-qt/designer-${QT_PV} ) + help? ( + >=dev-qt/qthelp-${QT_PV} + webengine? ( >=dev-qt/qtwebengine-${QT_PV}[widgets] ) + ) + perfprofiler? ( dev-libs/elfutils ) + qbs? ( >=dev-util/qbs-1.13.1 ) + serialterminal? ( >=dev-qt/qtserialport-${QT_PV} ) + systemd? ( sys-apps/systemd:= ) +" +DEPEND="${CDEPEND} + test? ( + >=dev-qt/qtdeclarative-${QT_PV}[localstorage] + >=dev-qt/qtquickcontrols2-${QT_PV} + >=dev-qt/qttest-${QT_PV} + >=dev-qt/qtxmlpatterns-${QT_PV}[qml] + ) +" +RDEPEND="${CDEPEND} + sys-devel/gdb[python] + autotools? ( sys-devel/autoconf ) + cmake? ( dev-util/cmake ) + cppcheck? ( dev-util/cppcheck ) + cvs? ( dev-vcs/cvs ) + git? ( dev-vcs/git ) + mercurial? ( dev-vcs/mercurial ) + qmldesigner? ( >=dev-qt/qtquicktimeline-${QT_PV} ) + silversearcher? ( sys-apps/the_silver_searcher ) + subversion? ( dev-vcs/subversion ) + valgrind? ( dev-util/valgrind ) +" +# qt translations must also be installed or qt-creator translations won't be loaded +for x in ${PLOCALES}; do + IUSE+=" l10n_${x}" + RDEPEND+=" l10n_${x}? ( >=dev-qt/qttranslations-${QT_PV} )" +done +unset x + +PATCHES=( + "${FILESDIR}"/${PN}-4.13.0-dylib-fix.patch + "${FILESDIR}"/${PN}-4.13.0-libclangformat-ide.patch +) + +llvm_check_deps() { + has_version -d "sys-devel/clang:${LLVM_SLOT}" && \ + has_version -d "dev-libs/libclangformat-ide:${LLVM_SLOT}" +} + +pkg_setup() { + use clang && llvm_pkg_setup +} + +src_prepare() { + default + + # disable unwanted plugins + for plugin in "${QTC_PLUGINS[@]#[+-]}"; do + if ! use ${plugin%:*}; then + einfo "Disabling ${plugin%:*} plugin" + sed -i -re "s/(^\s+|\s*SUBDIRS\s*\+=.*)\<(${plugin#*:})\>(.*)/\1\3/" \ + src/plugins/plugins.pro || die "failed to disable ${plugin%:*} plugin" + fi + done + sed -i -e '/updateinfo/d' src/plugins/plugins.pro || die + + # avoid building unused support libraries and tools + if ! use clang; then + sed -i -e '/clangsupport/d' src/libs/libs.pro || die + sed -i -e '/clang\(\|pchmanager\|refactoring\)backend/d' src/tools/tools.pro || die + fi + if ! use glsl; then + sed -i -e '/glsl/d' src/libs/libs.pro || die + fi + if ! use lsp; then + sed -i -e '/languageserverprotocol/d' src/libs/libs.pro tests/auto/auto.pro || die + fi + if ! use modeling; then + sed -i -e '/modelinglib/d' src/libs/libs.pro || die + fi + if ! use perfprofiler; then + rm -r src/tools/perfparser || die + if ! use ctfvisualizer && ! use qmlprofiler; then + sed -i -e '/tracing/d' src/libs/libs.pro tests/auto/auto.pro || die + fi + fi + if ! use qmldesigner; then + sed -i -e '/qml2puppet/d' src/tools/tools.pro || die + sed -i -e '/qmldesigner/d' tests/auto/qml/qml.pro || die + fi + if ! use valgrind; then + sed -i -e '/valgrindfake/d' src/tools/tools.pro || die + sed -i -e '/valgrind/d' tests/auto/auto.pro || die + fi + + # automagic dep on qtwebengine + if ! use webengine; then + sed -i -e 's/isEmpty(QT\.webenginewidgets\.name)/true/' src/plugins/help/help.pro || die + fi + + # disable broken or unreliable tests + sed -i -e 's/\(manual\|tools\|unit\)//g' tests/tests.pro || die + sed -i -e '/\(dumpers\|namedemangler\)\.pro/d' tests/auto/debugger/debugger.pro || die + sed -i -e '/CONFIG -=/s/$/ testcase/' tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin?/plugin?.pro || die + sed -i -e 's/\//' tests/auto/qml/codemodel/codemodel.pro || die + + # do not install test binaries + sed -i -e '/CONFIG +=/s/$/ no_testcase_installs/' tests/auto/{qttest.pri,json/json.pro} || die + + # fix path to some clang headers + sed -i -e "/^CLANG_RESOURCE_DIR\s*=/s:\$\${LLVM_LIBDIR}:${EPREFIX}/usr/lib:" src/shared/clang/clang_defines.pri || die + + # fix translations + local lang languages= + for lang in ${PLOCALES}; do + use l10n_${lang} && languages+=" ${lang/-/_}" + done + sed -i -e "/^LANGUAGES\s*=/s:=.*:=${languages}:" share/qtcreator/translations/translations.pro || die + + # remove bundled syntax-highlighting + rm -r src/libs/3rdparty/syntax-highlighting || die + + # remove bundled yaml-cpp + rm -r src/libs/3rdparty/yaml-cpp || die + + # remove bundled qbs + rm -r src/shared/qbs || die +} + +src_configure() { + eqmake5 IDE_LIBRARY_BASENAME="$(get_libdir)" \ + IDE_PACKAGE_MODE=1 \ + KSYNTAXHIGHLIGHTING_LIB_DIR="${EPREFIX}/usr/$(get_libdir)" \ + KSYNTAXHIGHLIGHTING_INCLUDE_DIR="${EPREFIX}/usr/include/KF5/KSyntaxHighlighting" \ + $(use clang && echo LLVM_INSTALL_DIR="$(get_llvm_prefix ${LLVM_MAX_SLOT})") \ + $(use qbs && echo QBS_INSTALL_DIR="${EPREFIX}/usr") \ + CONFIG+=qbs_disable_rpath \ + CONFIG+=qbs_enable_project_file_updates \ + $(use systemd && echo CONFIG+=journald) \ + $(use test && echo BUILD_TESTS=1) +} + +src_test() { + cd tests/auto && virtx default +} + +src_install() { + emake INSTALL_ROOT="${ED}/usr" install + + dodoc dist/{changes-*,known-issues} + + # install documentation + if use doc; then + emake docs + # don't use ${PF} or the doc will not be found + insinto /usr/share/doc/qtcreator + doins share/doc/qtcreator/qtcreator{,-dev}.qch + docompress -x /usr/share/doc/qtcreator/qtcreator{,-dev}.qch + fi +} diff --git a/dev-qt/qt-creator/qt-creator-4.14.1.ebuild b/dev-qt/qt-creator/qt-creator-4.14.1.ebuild new file mode 100644 index 0000000..99541ec --- /dev/null +++ b/dev-qt/qt-creator/qt-creator-4.14.1.ebuild @@ -0,0 +1,242 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +LLVM_MAX_SLOT=11 +PLOCALES="cs da de fr ja pl ru sl uk zh-CN zh-TW" + +inherit llvm qmake-utils virtualx xdg + +DESCRIPTION="Lightweight IDE for C++/QML development centering around Qt" +HOMEPAGE="https://doc.qt.io/qtcreator/" +LICENSE="GPL-3" +SLOT="0" + +if [[ ${PV} == *9999 ]]; then + inherit git-r3 + EGIT_REPO_URI="https://code.qt.io/${PN}/${PN}.git" +else + MY_PV=${PV/_/-} + MY_P=${PN}-opensource-src-${MY_PV} + [[ ${MY_PV} == ${PV} ]] && MY_REL=official || MY_REL=development + SRC_URI="https://download.qt.io/${MY_REL}_releases/${PN/-}/$(ver_cut 1-2)/${MY_PV}/${MY_P}.tar.xz" + KEYWORDS="~amd64 ~arm ~x86" + S=${WORKDIR}/${MY_P} +fi + +# TODO: unbundle sqlite + +QTC_PLUGINS=(android +autotest autotools:autotoolsprojectmanager baremetal beautifier boot2qt + '+clang:clangcodemodel|clangpchmanager|clangrefactoring|clangtools' clangformat clearcase + cmake:cmakeprojectmanager cppcheck ctfvisualizer cvs +designer git glsl:glsleditor +help ios + lsp:languageclient mcu:mcusupport mercurial modeling:modeleditor nim perforce perfprofiler python + qbs:qbsprojectmanager +qmldesigner qmlprofiler qnx remotelinux scxml:scxmleditor serialterminal + silversearcher subversion valgrind webassembly winrt) +IUSE="doc systemd test +webengine ${QTC_PLUGINS[@]%:*}" +RESTRICT="!test? ( test )" +REQUIRED_USE=" + boot2qt? ( remotelinux ) + clangformat? ( clang ) + clang? ( test? ( qbs ) ) + mcu? ( cmake ) + python? ( lsp ) + qnx? ( remotelinux ) +" + +# minimum Qt version required +QT_PV="5.14.0:5" + +BDEPEND=" + >=dev-qt/linguist-tools-${QT_PV} + virtual/pkgconfig + doc? ( >=dev-qt/qdoc-${QT_PV} ) +" +CDEPEND=" + >=dev-cpp/yaml-cpp-0.6.2:= + >=dev-qt/qtconcurrent-${QT_PV} + >=dev-qt/qtcore-${QT_PV} + >=dev-qt/qtdeclarative-${QT_PV}[widgets] + >=dev-qt/qtgui-${QT_PV} + >=dev-qt/qtnetwork-${QT_PV}[ssl] + >=dev-qt/qtprintsupport-${QT_PV} + >=dev-qt/qtquickcontrols-${QT_PV} + >=dev-qt/qtscript-${QT_PV} + >=dev-qt/qtsql-${QT_PV}[sqlite] + >=dev-qt/qtsvg-${QT_PV} + >=dev-qt/qtwidgets-${QT_PV} + >=dev-qt/qtx11extras-${QT_PV} + >=dev-qt/qtxml-${QT_PV} + kde-frameworks/syntax-highlighting:5 + clang? ( + || ( + sys-devel/clang:11 + sys-devel/clang:10 + sys-devel/clang:9 + ) + =dev-qt/designer-${QT_PV} ) + help? ( + >=dev-qt/qthelp-${QT_PV} + webengine? ( >=dev-qt/qtwebengine-${QT_PV}[widgets] ) + ) + perfprofiler? ( dev-libs/elfutils ) + qbs? ( >=dev-util/qbs-1.13.1 ) + serialterminal? ( >=dev-qt/qtserialport-${QT_PV} ) + systemd? ( sys-apps/systemd:= ) +" +DEPEND="${CDEPEND} + test? ( + >=dev-qt/qtdeclarative-${QT_PV}[localstorage] + >=dev-qt/qtquickcontrols2-${QT_PV} + >=dev-qt/qttest-${QT_PV} + >=dev-qt/qtxmlpatterns-${QT_PV}[qml] + ) +" +RDEPEND="${CDEPEND} + sys-devel/gdb[python] + autotools? ( sys-devel/autoconf ) + cmake? ( dev-util/cmake ) + cppcheck? ( dev-util/cppcheck ) + cvs? ( dev-vcs/cvs ) + git? ( dev-vcs/git ) + mercurial? ( dev-vcs/mercurial ) + qmldesigner? ( >=dev-qt/qtquicktimeline-${QT_PV} ) + silversearcher? ( sys-apps/the_silver_searcher ) + subversion? ( dev-vcs/subversion ) + valgrind? ( dev-util/valgrind ) +" +# qt translations must also be installed or qt-creator translations won't be loaded +for x in ${PLOCALES}; do + IUSE+=" l10n_${x}" + RDEPEND+=" l10n_${x}? ( >=dev-qt/qttranslations-${QT_PV} )" +done +unset x + +PATCHES=( + "${FILESDIR}"/${PN}-4.14.0-libclangformat-ide.patch +) + +llvm_check_deps() { + has_version -d "sys-devel/clang:${LLVM_SLOT}" && \ + ( ! use clangformat || has_version -d "dev-libs/libclangformat-ide:${LLVM_SLOT}" ) +} + +pkg_setup() { + use clang && llvm_pkg_setup +} + +src_prepare() { + default + + # disable unwanted plugins + for plugin in "${QTC_PLUGINS[@]#[+-]}"; do + if ! use ${plugin%:*}; then + einfo "Disabling ${plugin%:*} plugin" + sed -i -re "s/(^\s+|\s*SUBDIRS\s*\+=.*)\<(${plugin#*:})\>(.*)/\1\3/" \ + src/plugins/plugins.pro || die "failed to disable ${plugin%:*} plugin" + fi + done + sed -i -e '/updateinfo/d' src/plugins/plugins.pro || die + + # avoid building unused support libraries and tools + if ! use clang; then + sed -i -e '/clangsupport/d' src/libs/libs.pro || die + sed -i -e '/clang\(\|pchmanager\|refactoring\)backend/d' src/tools/tools.pro || die + fi + if ! use glsl; then + sed -i -e '/glsl/d' src/libs/libs.pro || die + fi + if ! use lsp; then + sed -i -e '/languageserverprotocol/d' src/libs/libs.pro tests/auto/auto.pro || die + fi + if ! use modeling; then + sed -i -e '/modelinglib/d' src/libs/libs.pro || die + fi + if ! use perfprofiler; then + rm -r src/tools/perfparser || die + if ! use ctfvisualizer && ! use qmlprofiler; then + sed -i -e '/tracing/d' src/libs/libs.pro tests/auto/auto.pro || die + fi + fi + if ! use qmldesigner; then + sed -i -e '/qml2puppet/d' src/tools/tools.pro || die + sed -i -e '/qmldesigner/d' tests/auto/qml/qml.pro || die + fi + if ! use valgrind; then + sed -i -e '/valgrindfake/d' src/tools/tools.pro || die + sed -i -e '/valgrind/d' tests/auto/auto.pro || die + fi + + # automagic dep on qtwebengine + if ! use webengine; then + sed -i -e 's/isEmpty(QT\.webenginewidgets\.name)/true/' src/plugins/help/help.pro || die + fi + + # disable broken or unreliable tests + sed -i -e 's/\(manual\|tools\|unit\)//g' tests/tests.pro || die + sed -i -e '/\(dumpers\|namedemangler\)\.pro/d' tests/auto/debugger/debugger.pro || die + sed -i -e '/CONFIG -=/s/$/ testcase/' tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin?/plugin?.pro || die + sed -i -e 's/\//' tests/auto/qml/codemodel/codemodel.pro || die + + # do not install test binaries + sed -i -e '/CONFIG +=/s/$/ no_testcase_installs/' tests/auto/{qttest.pri,json/json.pro} || die + + # fix path to some clang headers + sed -i -e "/^CLANG_INCLUDE_DIR\s*=/s:\$\${LLVM_LIBDIR}:${EPREFIX}/usr/lib:" src/shared/clang/clang_defines.pri || die + + # fix translations + local lang languages= + for lang in ${PLOCALES}; do + use l10n_${lang} && languages+=" ${lang/-/_}" + done + sed -i -e "/^LANGUAGES\s*=/s:=.*:=${languages}:" share/qtcreator/translations/translations.pro || die + + # remove bundled syntax-highlighting + rm -r src/libs/3rdparty/syntax-highlighting || die + + # remove bundled yaml-cpp + rm -r src/libs/3rdparty/yaml-cpp || die + + # remove bundled qbs + rm -r src/shared/qbs || die +} + +src_configure() { + eqmake5 IDE_LIBRARY_BASENAME="$(get_libdir)" \ + IDE_PACKAGE_MODE=1 \ + KSYNTAXHIGHLIGHTING_LIB_DIR="${EPREFIX}/usr/$(get_libdir)" \ + KSYNTAXHIGHLIGHTING_INCLUDE_DIR="${EPREFIX}/usr/include/KF5/KSyntaxHighlighting" \ + $(use clang && echo LLVM_INSTALL_DIR="$(get_llvm_prefix ${LLVM_MAX_SLOT})") \ + $(use qbs && echo QBS_INSTALL_DIR="${EPREFIX}/usr") \ + CONFIG+=qbs_disable_rpath \ + CONFIG+=qbs_enable_project_file_updates \ + $(use systemd && echo CONFIG+=journald) \ + $(use test && echo BUILD_TESTS=1) +} + +src_test() { + cd tests/auto && virtx default +} + +src_install() { + emake INSTALL_ROOT="${ED}/usr" install + + dodoc dist/{changes-*,known-issues} + + # install documentation + if use doc; then + emake docs + # don't use ${PF} or the doc will not be found + insinto /usr/share/doc/qtcreator + doins share/doc/qtcreator/qtcreator{,-dev}.qch + docompress -x /usr/share/doc/qtcreator/qtcreator{,-dev}.qch + fi +}