commit 99851c0a39fd9c3bec06685031e6f79431553288 Author: Hans F. Nordhaug Date: Tue Feb 23 12:43:19 2021 +0100 Adding Qt Creator 4.13.3 and 4.14.0. Also adding support for llvm / clang 11.0.0. Additional changes: - Added separate clangformat use flag so people without libclangformat-ide can get clang code model support in Qt Creator. - Removed client use flag for gdb as it is no longer supported. PS! Qt Creator 4.14.0 doesn't need the dylib fix anymore, but the ClangFormat patch is still needed and hence the dev-libs/libclangformat-ide package. diff --git a/dev-qt/qt-creator/Manifest b/dev-qt/qt-creator/Manifest index b1eb910..21e8806 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.0.tar.xz 43452172 BLAKE2B 6f37191ba952a42aee40ec38bdcc9f8ce61178b207aa4bb5ae23866229b4511f2cf24af9d086628ecb65b8c10bb6056bf3c2f2b787ff60afafaf12ac4e5ee90d SHA512 7cf74d3f6a25a55cb6b0eca584b41727f8ee467f2901ab27d1f5de40d0d7635c560af87d38e2a17a168ea74755d28928c911aa7d07e1684160dfa7df1c4e27e9 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.0.ebuild 7279 BLAKE2B c6c58bc9e971790e7027e0165d641a66354c238bf70430421512a13e7c4274cf769467c714fd61a148fd24ce125c567257b6b641f2085b64a4f8f1e22f3d295d SHA512 785f76630c190efdcce3b4a7d1f133173988d6a73ae4bae37d3b97910d5d5e83e7ef8604e324706bd533c15793d288790baddc5adaad61c84a126008d539ea2c EBUILD qt-creator-9999.ebuild 7424 BLAKE2B 88b5592ba3003bffbd5a95e120f07bd55dcbd586825aa2bda64c8d6784dcbeb799727082719c9409540daf2540d7c7937573160aadde3e6e435b6f6e053c46fc SHA512 5fe24a20fe577c7cfc9f2839792962c6ebc6969d874a8d88614131e7ba9e657912eb9207c5646d3d0559f7a2abbb979e92a0aa127ccbffefdadf1e61ebe448f5 MISC metadata.xml 3518 BLAKE2B 4153006d68c5a4689e66f39cbaa9762ff1787f88676dc88878e38f5b8376bd28714b78f86449f037eb52cd81b0b91273516e852c34a5460fb0a7081adf0c1e67 SHA512 2cb8d121b8fc6685bcb9fb09c7f39487ba067ba8b5aad8b0f82b0b512290436bcf57b587505f856dd729a1e0bee9f4fc94b5fd28735f255b1cae5ae1e79f44ba 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/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.0.ebuild b/dev-qt/qt-creator/qt-creator-4.14.0.ebuild new file mode 100644 index 0000000..2796e5f --- /dev/null +++ b/dev-qt/qt-creator/qt-creator-4.14.0.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}" && \ + 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 +}