summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'dev-qt/qt-creator')
-rw-r--r--dev-qt/qt-creator/Manifest5
-rw-r--r--dev-qt/qt-creator/files/qt-creator-11.0.2-musl-no-execinfo.patch47
-rw-r--r--dev-qt/qt-creator/files/qt-creator-12.0.0-musl-no-malloc-trim.patch8
-rw-r--r--dev-qt/qt-creator/files/qt-creator-13.0.0-qt671.patch29
-rw-r--r--dev-qt/qt-creator/metadata.xml49
-rw-r--r--dev-qt/qt-creator/qt-creator-13.0.0.ebuild269
-rw-r--r--dev-qt/qt-creator/qt-creator-13.0.1.ebuild268
-rw-r--r--dev-qt/qt-creator/qt-creator-4.10.1.ebuild201
-rw-r--r--dev-qt/qt-creator/qt-creator-4.12.0.ebuild204
-rw-r--r--dev-qt/qt-creator/qt-creator-4.8.2.ebuild192
-rw-r--r--dev-qt/qt-creator/qt-creator-9999.ebuild392
11 files changed, 860 insertions, 804 deletions
diff --git a/dev-qt/qt-creator/Manifest b/dev-qt/qt-creator/Manifest
index d75868258072..93d4e63c470d 100644
--- a/dev-qt/qt-creator/Manifest
+++ b/dev-qt/qt-creator/Manifest
@@ -1,3 +1,2 @@
-DIST qt-creator-opensource-src-4.10.1.tar.xz 26299716 BLAKE2B a72e05fc80cb4065851e5849f49c6ec8e35b08916e928a9fea856ba30710220d8632f4a1ffaf1d1d5e2cae8e9121ab188b8f9ed672f9c8695c9e572ae609397c SHA512 ec0ac4d37e4195e906b100405869cb8e6dff618b8862d8ab620e30e034553eb944de6e4a92478ab2e67b86bd4c3e9cff6fd6051411893be36387d7821d712ce3
-DIST qt-creator-opensource-src-4.12.0.tar.xz 32575196 BLAKE2B 193e10a790f35944473c2177ba84e6e15d00effc769b4d63a51a217e4da93a4d6ca0061976d0def31c625a73d49b0adcb40e551d02a70ab7225b40f441d9b6b6 SHA512 9c35ebf095c2874b89af54b06fd190976a27f7e753a23e47db3b26947bdba64e4fe7774ae8b252867cf7f6f0c86b35d773a4012cae6d4aaa9101d7a31973f215
-DIST qt-creator-opensource-src-4.8.2.tar.xz 24600872 BLAKE2B c686ea4f0ab981cba98319d8d7dd8eee9fd967d17e80f2602e8416145bddcbd7cae928d06a950914d677c9b2e82ed855812e66d64ce7cc998742357284f41865 SHA512 9900a82b1298a1cc74b33eab6a1063ed77e11f3150b8f82a72b7703b88f979e5a332efee9a622554df5238b44470e99a061b6c70f0d8cdfc352a07ce51a4c450
+DIST qt-creator-opensource-src-13.0.0.tar.xz 52032860 BLAKE2B 63f1fbb5209c77b9fc9df9385e94808d7ea040de4af6305c16ac4ad540771ebc78b55d0552182fa30d80326da3989a96ee8a0cce218541e418b7f355e9542786 SHA512 26fea156becc136fb55702a65c29dad825fd3fa60d8e19d8d142ab6518dc8e40fbddfe70d79d2b71f14f76c8a1d9bca34fb65e565702e67c9276aec9758bf345
+DIST qt-creator-opensource-src-13.0.1.tar.xz 51891908 BLAKE2B ab4701be5328fccc91e885a6a331ba8c4f53cb7d9a723f03f30ad01d03281d16b1f49cd6027ad9873cd94ecf6555978df9eba14bfcbfa8e4c36d304b8b106d5a SHA512 8af971d86a958b6a04da0bec78f5706d8ecf8c14621a5f9c83b415409288a0eccfecc237534288414cea5e620758d8daa104620c42fcaac718e9713e8c29afa4
diff --git a/dev-qt/qt-creator/files/qt-creator-11.0.2-musl-no-execinfo.patch b/dev-qt/qt-creator/files/qt-creator-11.0.2-musl-no-execinfo.patch
new file mode 100644
index 000000000000..b36cfef2d4e7
--- /dev/null
+++ b/dev-qt/qt-creator/files/qt-creator-11.0.2-musl-no-execinfo.patch
@@ -0,0 +1,47 @@
+execinfo is unavailable with musl (unless opted to package+use libexecinfo)
+--- a/src/libs/utils/qtcassert.cpp
++++ b/src/libs/utils/qtcassert.cpp
+@@ -9,5 +9,5 @@
+ #include <QTime>
+
+-#if defined(Q_OS_UNIX)
++#if defined(Q_OS_UNIX) && defined(__GLIBC__)
+ #include <stdio.h>
+ #include <signal.h>
+@@ -30,5 +30,5 @@
+ if (maxdepth < 0 || maxdepth > ArraySize)
+ maxdepth = ArraySize;
+-#if defined(Q_OS_UNIX)
++#if defined(Q_OS_UNIX) && defined(__GLIBC__)
+ void *bt[ArraySize] = {nullptr};
+ int size = backtrace(bt, maxdepth);
+--- a/src/plugins/qmldesigner/designercore/exceptions/exception.cpp
++++ b/src/plugins/qmldesigner/designercore/exceptions/exception.cpp
+@@ -4,5 +4,5 @@
+ #include "exception.h"
+
+-#ifdef Q_OS_LINUX
++#if defined(Q_OS_LINUX) && defined(__GLIBC__)
+ #include <execinfo.h>
+ #include <cxxabi.h>
+@@ -31,5 +31,5 @@
+ namespace QmlDesigner {
+
+-#ifdef Q_OS_LINUX
++#if defined(Q_OS_LINUX) && defined(__GLIBC__)
+ const char* demangle(const char* name)
+ {
+@@ -76,5 +76,5 @@
+ }
+
+-#ifdef Q_OS_LINUX
++#if defined(Q_OS_LINUX) && defined(__GLIBC__)
+ static QString getBackTrace()
+ {
+@@ -114,5 +114,5 @@
+ , m_file(QString::fromUtf8(file))
+ , m_description(description)
+- #ifdef Q_OS_LINUX
++ #if defined(Q_OS_LINUX) && defined(__GLIBC__)
+ , m_backTrace(getBackTrace())
+ #endif
diff --git a/dev-qt/qt-creator/files/qt-creator-12.0.0-musl-no-malloc-trim.patch b/dev-qt/qt-creator/files/qt-creator-12.0.0-musl-no-malloc-trim.patch
new file mode 100644
index 000000000000..b22f20425129
--- /dev/null
+++ b/dev-qt/qt-creator/files/qt-creator-12.0.0-musl-no-malloc-trim.patch
@@ -0,0 +1,8 @@
+malloc_trim() is unavailable with musl
+--- a/src/plugins/coreplugin/icore.cpp
++++ b/src/plugins/coreplugin/icore.cpp
+@@ -1276,3 +1276,3 @@
+ // glibc may not actually free memory in free().
+-#ifdef Q_OS_LINUX
++#if defined(Q_OS_LINUX) && defined(__GLIBC__)
+ connect(&m_trimTimer, &QTimer::timeout, this, [] { malloc_trim(0); });
diff --git a/dev-qt/qt-creator/files/qt-creator-13.0.0-qt671.patch b/dev-qt/qt-creator/files/qt-creator-13.0.0-qt671.patch
new file mode 100644
index 000000000000..986f328fa8eb
--- /dev/null
+++ b/dev-qt/qt-creator/files/qt-creator-13.0.0-qt671.patch
@@ -0,0 +1,29 @@
+Building with Qt6.7.1 needs [1] and a part of [2]+[3]. [2] was intended
+to fix building with Qt6.8 but turned out part of it was needed for 6.7.1
+and this was adjusted in [3]. [2] does not apply cleanly so only taking
+the bit needed given 6.8 can wait for a proper release.
+
+[1] https://github.com/qt-creator/qt-creator/commit/041727fb2
+[2] https://github.com/qt-creator/qt-creator/commit/6babc022d
+[3] https://github.com/qt-creator/qt-creator/commit/fcf2d2064
+--- a/src/libs/utils/fsengine/fsengine_impl.h
++++ b/src/libs/utils/fsengine/fsengine_impl.h
+@@ -52,4 +52,7 @@
+ uint ownerId(FileOwner) const override;
+ QString owner(FileOwner) const override;
++ #if QT_VERSION >= QT_VERSION_CHECK(6, 7, 1)
++ using FileTime = QFile::FileTime;
++ #endif
+ bool setFileTime(const QDateTime &newDate, FileTime time) override;
+ QDateTime fileTime(FileTime time) const override;
+--- a/src/plugins/languageclient/languageclientutils.cpp
++++ b/src/plugins/languageclient/languageclientutils.cpp
+@@ -236,6 +236,6 @@
+ Client *client = LanguageClientManager::clientForDocument(textEditor->textDocument());
+
+- ClientExtras *extras = widget->findChild<ClientExtras *>(clientExtrasName,
+- Qt::FindDirectChildrenOnly);
++ ClientExtras *extras = dynamic_cast<ClientExtras *>(
++ widget->findChild<QObject *>(clientExtrasName, Qt::FindDirectChildrenOnly));
+ if (!extras) {
+ if (!client)
diff --git a/dev-qt/qt-creator/metadata.xml b/dev-qt/qt-creator/metadata.xml
index 91079b87e4e8..581b84c86cb1 100644
--- a/dev-qt/qt-creator/metadata.xml
+++ b/dev-qt/qt-creator/metadata.xml
@@ -1,54 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
- <maintainer type="person">
- <email>pesa@gentoo.org</email>
- <name>Davide Pesavento</name>
- </maintainer>
<maintainer type="project">
<email>qt@gentoo.org</email>
<name>Gentoo Qt Project</name>
</maintainer>
<use>
- <flag name="android">Build plugin for Android devices</flag>
- <flag name="autotest">Enable integration with popular unit testing frameworks (QtTest, Google Test, Boost.Test)</flag>
- <flag name="autotools">Enable autotools project manager plugin</flag>
- <flag name="baremetal">Build plugin for bare metal devices</flag>
- <flag name="beautifier">Build the beautifier plugin (supports astyle, clang-format, and uncrustify)</flag>
- <flag name="boot2qt">Build plugin for Boot2Qt devices</flag>
- <flag name="clang">Build clang-based plugins (code model, formatting, refactoring, static analysis)</flag>
- <flag name="clearcase">Add support for IBM ClearCase version control system (requires manual installation of ClearCase client)</flag>
- <flag name="cmake">Enable cmake project manager plugin</flag>
- <flag name="cppcheck">Enable integration with <pkg>dev-util/cppcheck</pkg></flag>
- <flag name="ctfvisualizer">Build the Chrome Trace Format visualizer plugin</flag>
+ <flag name="clang">Build clang-based plugins for C/C++ development (code model, formatting, static analysis)</flag>
<flag name="designer">Enable designer for QtWidgets-based UIs</flag>
- <flag name="glsl">Enable GLSL editor</flag>
- <flag name="help">Enable the integrated documentation viewer</flag>
- <flag name="ios">Build plugin for Apple iOS devices</flag>
- <flag name="lsp">Add support for the Language Server Protocol (LSP)</flag>
- <flag name="mcu">Build plugin for MCU devices</flag>
- <flag name="mercurial">Add support for <pkg>dev-vcs/mercurial</pkg> version control system</flag>
- <flag name="modeling">Enable graphical model editor</flag>
- <flag name="nim">Build plugin for Nim language support</flag>
- <flag name="perforce">Add support for Perforce version control system (requires manual installation of Perforce client)</flag>
- <flag name="perfprofiler">Build the Linux Perf-based profiler plugin</flag>
- <flag name="python">Build plugin for Python language support</flag>
- <flag name="qbs">Enable QBS project manager plugin</flag>
- <flag name="qmldesigner">Enable designer for QML/QtQuick-based UIs</flag>
- <flag name="qmlprofiler">Build the QML profiler plugin</flag>
- <flag name="qnx">Build plugin for QNX devices</flag>
- <flag name="remotelinux">Add support for deployment and execution on a remote Linux host</flag>
- <flag name="scxml">Enable graphical SCXML editor</flag>
- <flag name="serialterminal">Build serial terminal plugin</flag>
- <flag name="silversearcher">Enable integration with <pkg>sys-apps/the_silver_searcher</pkg></flag>
- <flag name="systemd">Add support for retrieving application output from journald</flag>
- <flag name="valgrind">Enable integration with <pkg>dev-util/valgrind</pkg></flag>
- <flag name="webassembly">Build WebAssembly plugin</flag>
- <flag name="webengine">Use <pkg>dev-qt/qtwebengine</pkg> to view documentation</flag>
- <flag name="winrt">Build plugin for WinRT devices</flag>
+ <flag name="help">Enable the integrated <pkg>dev-qt/qt-docs</pkg> viewer (also needed for examples)</flag>
+ <flag name="plugin-dev">Install the 'Devel' component needed to build external Qt Creator plugins</flag>
+ <flag name="qmldesigner">Build QmlDesigner and related plugins (Insight, StudioWelcome)</flag>
+ <flag name="serialterminal">Build the serial terminal plugin</flag>
+ <flag name="tracing">Build plugins requiring tracing capabilities (CtfVisualizer, PerfProfiler, QmlProfiler)</flag>
+ <flag name="webengine">Use <pkg>dev-qt/qtwebengine</pkg> with the help USE rather than bundled litehtml</flag>
</use>
<upstream>
<bugs-to>https://bugreports.qt.io/</bugs-to>
<doc>https://doc.qt.io/qtcreator/</doc>
+ <remote-id type="github">qt-creator/qt-creator</remote-id>
</upstream>
</pkgmetadata>
diff --git a/dev-qt/qt-creator/qt-creator-13.0.0.ebuild b/dev-qt/qt-creator/qt-creator-13.0.0.ebuild
new file mode 100644
index 000000000000..12edbaa8754c
--- /dev/null
+++ b/dev-qt/qt-creator/qt-creator-13.0.0.ebuild
@@ -0,0 +1,269 @@
+# Copyright 2023-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+LLVM_COMPAT=( {15..18} )
+LLVM_OPTIONAL=1
+PYTHON_COMPAT=( python3_{10..12} )
+inherit cmake flag-o-matic llvm-r1 python-any-r1 readme.gentoo-r1 xdg
+
+if [[ ${PV} == 9999 ]]; then
+ inherit git-r3
+ EGIT_REPO_URI=(
+ "https://code.qt.io/qt-creator/qt-creator.git"
+ "https://github.com/qt-creator/qt-creator.git"
+ )
+ EGIT_SUBMODULES=(
+ perfparser
+ src/libs/qlitehtml
+ src/libs/qlitehtml/src/3rdparty/litehtml
+ )
+else
+ QTC_PV=${PV/_/-}
+ QTC_P=${PN}-opensource-src-${QTC_PV}
+ [[ ${QTC_PV} == ${PV} ]] && QTC_REL=official || QTC_REL=development
+ SRC_URI="https://download.qt.io/${QTC_REL}_releases/qtcreator/$(ver_cut 1-2)/${PV/_/-}/${QTC_P}.tar.xz"
+ S=${WORKDIR}/${QTC_P}
+ KEYWORDS="amd64"
+fi
+
+DESCRIPTION="Lightweight IDE for C++/QML development centering around Qt"
+HOMEPAGE="https://www.qt.io/product/development-tools"
+
+LICENSE="GPL-3"
+SLOT="0"
+IUSE="
+ +clang designer doc +help keyring plugin-dev qmldesigner
+ serialterminal +svg test +tracing webengine
+"
+REQUIRED_USE="clang? ( ${LLVM_REQUIRED_USE} )"
+RESTRICT="!test? ( test )"
+
+QT_PV=6.2.0:6 # IDE_QT_VERSION_MIN
+
+# := is used where Qt's private APIs are used for safety
+COMMON_DEPEND="
+ >=dev-qt/qt5compat-${QT_PV}
+ >=dev-qt/qtbase-${QT_PV}=[concurrent,dbus,gui,network,widgets,xml]
+ >=dev-qt/qtdeclarative-${QT_PV}=
+ clang? (
+ dev-cpp/yaml-cpp:=
+ $(llvm_gen_dep 'sys-devel/clang:${LLVM_SLOT}=')
+ )
+ designer? ( >=dev-qt/qttools-${QT_PV}[designer] )
+ help? (
+ >=dev-qt/qttools-${QT_PV}[assistant]
+ webengine? ( >=dev-qt/qtwebengine-${QT_PV} )
+ )
+ keyring? (
+ app-crypt/libsecret
+ dev-libs/glib:2
+ )
+ qmldesigner? (
+ >=dev-qt/qtquick3d-${QT_PV}=
+ >=dev-qt/qtsvg-${QT_PV}
+ )
+ serialterminal? ( >=dev-qt/qtserialport-${QT_PV} )
+ svg? ( >=dev-qt/qtsvg-${QT_PV} )
+ tracing? (
+ app-arch/zstd:=
+ dev-libs/elfutils
+ >=dev-qt/qtshadertools-${QT_PV}
+ )
+"
+# qtimageformats for .webp in examples, semi-optfeature but useful in general
+RDEPEND="
+ ${COMMON_DEPEND}
+ help? ( >=dev-qt/qtimageformats-${QT_PV} )
+ qmldesigner? ( >=dev-qt/qtquicktimeline-${QT_PV} )
+"
+DEPEND="${COMMON_DEPEND}"
+BDEPEND="
+ ${PYTHON_DEPS}
+ >=dev-qt/qttools-${QT_PV}[linguist]
+ doc? ( >=dev-qt/qttools-${QT_PV}[qdoc,qtattributionsscanner] )
+"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-11.0.2-musl-no-execinfo.patch
+ "${FILESDIR}"/${PN}-12.0.0-musl-no-malloc-trim.patch
+ "${FILESDIR}"/${P}-qt671.patch
+)
+
+pkg_setup() {
+ python-any-r1_pkg_setup
+ use clang && llvm-r1_pkg_setup
+}
+
+src_prepare() {
+ cmake_src_prepare
+
+ # needed for finding docs at runtime in PF
+ sed -e "/_IDE_DOC_PATH/s/qtcreator/${PF}/" \
+ -i cmake/QtCreatorAPIInternal.cmake || die
+
+ if use plugin-dev; then #928423
+ # cmake --install --component integrates poorly with the cmake
+ # eclass and the install targets are otherwise missing, so strip
+ # out EXCLUDE_FROM_ALL until figure out a better solution
+ find . \( -name CMakeLists.txt -o -name '*.cmake' \) -exec sed -i -zE \
+ 's/COMPONENT[[:space:]]+Devel[[:space:]]+EXCLUDE_FROM_ALL//g' {} + || die
+ fi
+}
+
+src_configure() {
+ # -Werror=lto-type-mismatch issues, needs looking into
+ filter-lto
+
+ # temporary workaround for musl-1.2.4 (bug #903611), this ideally
+ # needs fixing in qtbase as *64 usage comes from its headers' macros
+ use elibc_musl && append-lfs-flags
+
+ local mycmakeargs=(
+ -DBUILD_WITH_PCH=no
+ -DWITH_DOCS=$(usex doc)
+ -DBUILD_DEVELOPER_DOCS=$(usex doc)
+ -DWITH_TESTS=$(usex test)
+
+ # TODO?: try to unbundle with =no when syntax-highlighting:6 exists
+ -DBUILD_LIBRARY_KSYNTAXHIGHLIGHTING=yes
+
+ # Much can be optional, but do not want to flood users (or maintainers)
+ # with too many flags. Not to mention that many plugins are merely
+ # wrappers around still optional tools (e.g. cvs) and any unwanted
+ # plugins can be disabled at runtime. So optional flags are limited
+ # to plugins with additional build-time dependencies.
+ -DBUILD_LIBRARY_TRACING=$(usex tracing) # qml+perfprofiler,ctfvisual
+ -DBUILD_EXECUTABLE_PERFPARSER=$(usex tracing)
+
+ -DBUILD_PLUGIN_CLANGCODEMODEL=$(usex clang)
+ -DBUILD_PLUGIN_CLANGFORMAT=$(usex clang)
+ -DBUILD_PLUGIN_CLANGTOOLS=$(usex clang)
+ -DCLANGTOOLING_LINK_CLANG_DYLIB=yes
+
+ -DBUILD_PLUGIN_DESIGNER=$(usex designer)
+
+ -DBUILD_PLUGIN_HELP=$(usex help)
+ -DBUILD_HELPVIEWERBACKEND_QTWEBENGINE=$(usex webengine)
+ -DBUILD_LIBRARY_QLITEHTML=$(usex help $(usex !webengine))
+ # TODO?: package litehtml, but support for latest releases seem
+ # to lag behind and bundled may work out better for now
+ # https://bugreports.qt.io/browse/QTCREATORBUG-29169
+ $(use help && usev !webengine -DCMAKE_DISABLE_FIND_PACKAGE_litehtml=yes)
+
+ -DBUILD_PLUGIN_SERIALTERMINAL=$(usex serialterminal)
+
+ -DENABLE_SVG_SUPPORT=$(usex svg)
+
+ -DWITH_QMLDESIGNER=$(usex qmldesigner)
+
+ -Djournald=no # not really useful unless match qtbase (needs systemd)
+
+ # not packaged, but allow using if found
+ #-DCMAKE_DISABLE_FIND_PACKAGE_LibDDemangle=yes
+ #-DCMAKE_DISABLE_FIND_PACKAGE_LibRustcDemangle=yes
+
+ # for bundled qtkeychain (no switch to unbundle right now)
+ # reminder: if ever unbundled/optional, qtbase[dbus] can be removed
+ -DLIBSECRET_SUPPORT=$(usex keyring)
+ )
+
+ cmake_src_configure
+}
+
+src_test() {
+ local -x QT_QPA_PLATFORM=offscreen
+
+ local CMAKE_SKIP_TESTS=(
+ # skipping same tests+label as upstream's CI by default
+ # `grep ctest .github/workflows/build_cmake.yml`
+ tst_perfdata
+ )
+
+ cmake_src_test --label-exclude exclude_from_precheck
+}
+
+src_compile() {
+ cmake_src_compile
+
+ use doc && cmake_build {qch,html}_docs
+}
+
+src_install() {
+ cmake_src_install
+
+ if use doc; then
+ dodoc -r "${BUILD_DIR}"/doc/html
+ dodoc "${BUILD_DIR}"/share/doc/${PF}/qtcreator{,-dev}.qch
+ docompress -x /usr/share/doc/${PF}/qtcreator{,-dev}.qch
+ fi
+
+ local DISABLE_AUTOFORMATTING=yes
+ local DOC_CONTENTS="\
+Some plugins (if used) may need optional extra dependencies/USE.
+
+This list provides associations with Gentoo's packages (if exists)
+ordered as in Qt Creator's Help -> About Plugins (not exhaustive).
+
+dev-qt/qt-docs:6 with USE=\"examples qch\" is notably recommended, or
+else the example tab will be empty alongside missing documentation.
+
+Build Systems:
+- CMakeProjectManager (dev-build/cmake)
+- MesonProjectManager (dev-build/meson)
+- QbsProjectManager (dev-util/qbs)
+
+C++:
+- Beautifier (dev-util/astyle and/or dev-util/uncrustify)
+- ClangCodeModel (USE=clang, dev-util/clazy to understand Qt semantics)
+- ClangFormat (USE=clang)
+
+Code Analyzer:
+- ClangTools (USE=clang)
+- Cppcheck (dev-util/cppcheck)
+- CtfVisualizer (USE=tracing)
+- PerfProfiler (USE=tracing)
+- Valgrind (dev-debug/valgrind)
+
+Core:
+- Help (USE=help + dev-qt/qt-docs:6 with USE=\"examples qch\")
+
+Device Support:
+- Android (virtual/jdk, will also want the unpackaged Qt for Android)
+
+Other Languages:
+- Nim (dev-lang/nim)
+- Python (dev-lang/python)
+
+Qt Creator:
+- Designer (USE=designer)
+
+Qt Quick:
+- Insight (USE=qmldesigner)
+- QmlDesigner (USE=qmldesigner)
+- QmlProfiler (USE=tracing)
+
+Utilities:
+- Autotest (dev-cpp/catch, dev-cpp/gtest, or dev-libs/boost if used)
+- Conan (dev-util/conan)
+- Docker (app-containers/docker)
+- Haskell (dev-lang/ghc)
+- ScreenRecorder (media-video/ffmpeg)
+- SerialTerminal (USE=serialterminal)
+- SilverSearcher (sys-apps/the_silver_searcher)
+- StudioWelcome (USE=qmldesigner)
+
+Version Control:
+- CVS (dev-vcs/cvs)
+- Fossil (dev-vcs/fossil)
+- Git (dev-vcs/git)
+- Mercurial (dev-vcs/mercurial)
+- Subversion (dev-vcs/subversion)"
+ readme.gentoo_create_doc
+}
+
+pkg_postinst() {
+ xdg_pkg_postinst
+ readme.gentoo_print_elog
+}
diff --git a/dev-qt/qt-creator/qt-creator-13.0.1.ebuild b/dev-qt/qt-creator/qt-creator-13.0.1.ebuild
new file mode 100644
index 000000000000..036aa1705257
--- /dev/null
+++ b/dev-qt/qt-creator/qt-creator-13.0.1.ebuild
@@ -0,0 +1,268 @@
+# Copyright 2023-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+LLVM_COMPAT=( {15..18} )
+LLVM_OPTIONAL=1
+PYTHON_COMPAT=( python3_{10..13} )
+inherit cmake flag-o-matic llvm-r1 python-any-r1 readme.gentoo-r1 xdg
+
+if [[ ${PV} == 9999 ]]; then
+ inherit git-r3
+ EGIT_REPO_URI=(
+ "https://code.qt.io/qt-creator/qt-creator.git"
+ "https://github.com/qt-creator/qt-creator.git"
+ )
+ EGIT_SUBMODULES=(
+ perfparser
+ src/libs/qlitehtml
+ src/libs/qlitehtml/src/3rdparty/litehtml
+ )
+else
+ QTC_PV=${PV/_/-}
+ QTC_P=${PN}-opensource-src-${QTC_PV}
+ [[ ${QTC_PV} == ${PV} ]] && QTC_REL=official || QTC_REL=development
+ SRC_URI="https://download.qt.io/${QTC_REL}_releases/qtcreator/$(ver_cut 1-2)/${PV/_/-}/${QTC_P}.tar.xz"
+ S=${WORKDIR}/${QTC_P}
+ KEYWORDS="amd64"
+fi
+
+DESCRIPTION="Lightweight IDE for C++/QML development centering around Qt"
+HOMEPAGE="https://www.qt.io/product/development-tools"
+
+LICENSE="GPL-3"
+SLOT="0"
+IUSE="
+ +clang designer doc +help keyring plugin-dev qmldesigner
+ serialterminal +svg test +tracing webengine
+"
+REQUIRED_USE="clang? ( ${LLVM_REQUIRED_USE} )"
+RESTRICT="!test? ( test )"
+
+QT_PV=6.2.0:6 # IDE_QT_VERSION_MIN
+
+# := is used where Qt's private APIs are used for safety
+COMMON_DEPEND="
+ >=dev-qt/qt5compat-${QT_PV}
+ >=dev-qt/qtbase-${QT_PV}=[concurrent,dbus,gui,network,widgets,xml]
+ >=dev-qt/qtdeclarative-${QT_PV}=
+ clang? (
+ dev-cpp/yaml-cpp:=
+ $(llvm_gen_dep 'sys-devel/clang:${LLVM_SLOT}=')
+ )
+ designer? ( >=dev-qt/qttools-${QT_PV}[designer] )
+ help? (
+ >=dev-qt/qttools-${QT_PV}[assistant]
+ webengine? ( >=dev-qt/qtwebengine-${QT_PV} )
+ )
+ keyring? (
+ app-crypt/libsecret
+ dev-libs/glib:2
+ )
+ qmldesigner? (
+ >=dev-qt/qtquick3d-${QT_PV}=
+ >=dev-qt/qtsvg-${QT_PV}
+ )
+ serialterminal? ( >=dev-qt/qtserialport-${QT_PV} )
+ svg? ( >=dev-qt/qtsvg-${QT_PV} )
+ tracing? (
+ app-arch/zstd:=
+ dev-libs/elfutils
+ >=dev-qt/qtshadertools-${QT_PV}
+ )
+"
+# qtimageformats for .webp in examples, semi-optfeature but useful in general
+RDEPEND="
+ ${COMMON_DEPEND}
+ help? ( >=dev-qt/qtimageformats-${QT_PV} )
+ qmldesigner? ( >=dev-qt/qtquicktimeline-${QT_PV} )
+"
+DEPEND="${COMMON_DEPEND}"
+BDEPEND="
+ ${PYTHON_DEPS}
+ >=dev-qt/qttools-${QT_PV}[linguist]
+ doc? ( >=dev-qt/qttools-${QT_PV}[qdoc,qtattributionsscanner] )
+"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-11.0.2-musl-no-execinfo.patch
+ "${FILESDIR}"/${PN}-12.0.0-musl-no-malloc-trim.patch
+)
+
+pkg_setup() {
+ python-any-r1_pkg_setup
+ use clang && llvm-r1_pkg_setup
+}
+
+src_prepare() {
+ cmake_src_prepare
+
+ # needed for finding docs at runtime in PF
+ sed -e "/_IDE_DOC_PATH/s/qtcreator/${PF}/" \
+ -i cmake/QtCreatorAPIInternal.cmake || die
+
+ if use plugin-dev; then #928423
+ # cmake --install --component integrates poorly with the cmake
+ # eclass and the install targets are otherwise missing, so strip
+ # out EXCLUDE_FROM_ALL until figure out a better solution
+ find . \( -name CMakeLists.txt -o -name '*.cmake' \) -exec sed -i -zE \
+ 's/COMPONENT[[:space:]]+Devel[[:space:]]+EXCLUDE_FROM_ALL//g' {} + || die
+ fi
+}
+
+src_configure() {
+ # -Werror=lto-type-mismatch issues, needs looking into
+ filter-lto
+
+ # temporary workaround for musl-1.2.4 (bug #903611), this ideally
+ # needs fixing in qtbase as *64 usage comes from its headers' macros
+ use elibc_musl && append-lfs-flags
+
+ local mycmakeargs=(
+ -DBUILD_WITH_PCH=no
+ -DWITH_DOCS=$(usex doc)
+ -DBUILD_DEVELOPER_DOCS=$(usex doc)
+ -DWITH_TESTS=$(usex test)
+
+ # TODO?: try to unbundle with =no when syntax-highlighting:6 exists
+ -DBUILD_LIBRARY_KSYNTAXHIGHLIGHTING=yes
+
+ # Much can be optional, but do not want to flood users (or maintainers)
+ # with too many flags. Not to mention that many plugins are merely
+ # wrappers around still optional tools (e.g. cvs) and any unwanted
+ # plugins can be disabled at runtime. So optional flags are limited
+ # to plugins with additional build-time dependencies.
+ -DBUILD_LIBRARY_TRACING=$(usex tracing) # qml+perfprofiler,ctfvisual
+ -DBUILD_EXECUTABLE_PERFPARSER=$(usex tracing)
+
+ -DBUILD_PLUGIN_CLANGCODEMODEL=$(usex clang)
+ -DBUILD_PLUGIN_CLANGFORMAT=$(usex clang)
+ -DBUILD_PLUGIN_CLANGTOOLS=$(usex clang)
+ -DCLANGTOOLING_LINK_CLANG_DYLIB=yes
+
+ -DBUILD_PLUGIN_DESIGNER=$(usex designer)
+
+ -DBUILD_PLUGIN_HELP=$(usex help)
+ -DBUILD_HELPVIEWERBACKEND_QTWEBENGINE=$(usex webengine)
+ -DBUILD_LIBRARY_QLITEHTML=$(usex help $(usex !webengine))
+ # TODO?: package litehtml, but support for latest releases seem
+ # to lag behind and bundled may work out better for now
+ # https://bugreports.qt.io/browse/QTCREATORBUG-29169
+ $(use help && usev !webengine -DCMAKE_DISABLE_FIND_PACKAGE_litehtml=yes)
+
+ -DBUILD_PLUGIN_SERIALTERMINAL=$(usex serialterminal)
+
+ -DENABLE_SVG_SUPPORT=$(usex svg)
+
+ -DWITH_QMLDESIGNER=$(usex qmldesigner)
+
+ -Djournald=no # not really useful unless match qtbase (needs systemd)
+
+ # not packaged, but allow using if found
+ #-DCMAKE_DISABLE_FIND_PACKAGE_LibDDemangle=yes
+ #-DCMAKE_DISABLE_FIND_PACKAGE_LibRustcDemangle=yes
+
+ # for bundled qtkeychain (no switch to unbundle right now)
+ # reminder: if ever unbundled/optional, qtbase[dbus] can be removed
+ -DLIBSECRET_SUPPORT=$(usex keyring)
+ )
+
+ cmake_src_configure
+}
+
+src_test() {
+ local -x QT_QPA_PLATFORM=offscreen
+
+ local CMAKE_SKIP_TESTS=(
+ # skipping same tests+label as upstream's CI by default
+ # `grep ctest .github/workflows/build_cmake.yml`
+ tst_perfdata
+ )
+
+ cmake_src_test --label-exclude exclude_from_precheck
+}
+
+src_compile() {
+ cmake_src_compile
+
+ use doc && cmake_build {qch,html}_docs
+}
+
+src_install() {
+ cmake_src_install
+
+ if use doc; then
+ dodoc -r "${BUILD_DIR}"/doc/html
+ dodoc "${BUILD_DIR}"/share/doc/${PF}/qtcreator{,-dev}.qch
+ docompress -x /usr/share/doc/${PF}/qtcreator{,-dev}.qch
+ fi
+
+ local DISABLE_AUTOFORMATTING=yes
+ local DOC_CONTENTS="\
+Some plugins (if used) may need optional extra dependencies/USE.
+
+This list provides associations with Gentoo's packages (if exists)
+ordered as in Qt Creator's Help -> About Plugins (not exhaustive).
+
+dev-qt/qt-docs:6 with USE=\"examples qch\" is notably recommended, or
+else the example tab will be empty alongside missing documentation.
+
+Build Systems:
+- CMakeProjectManager (dev-build/cmake)
+- MesonProjectManager (dev-build/meson)
+- QbsProjectManager (dev-util/qbs)
+
+C++:
+- Beautifier (dev-util/astyle and/or dev-util/uncrustify)
+- ClangCodeModel (USE=clang, dev-util/clazy to understand Qt semantics)
+- ClangFormat (USE=clang)
+
+Code Analyzer:
+- ClangTools (USE=clang)
+- Cppcheck (dev-util/cppcheck)
+- CtfVisualizer (USE=tracing)
+- PerfProfiler (USE=tracing)
+- Valgrind (dev-debug/valgrind)
+
+Core:
+- Help (USE=help + dev-qt/qt-docs:6 with USE=\"examples qch\")
+
+Device Support:
+- Android (virtual/jdk, will also want the unpackaged Qt for Android)
+
+Other Languages:
+- Nim (dev-lang/nim)
+- Python (dev-lang/python)
+
+Qt Creator:
+- Designer (USE=designer)
+
+Qt Quick:
+- Insight (USE=qmldesigner)
+- QmlDesigner (USE=qmldesigner)
+- QmlProfiler (USE=tracing)
+
+Utilities:
+- Autotest (dev-cpp/catch, dev-cpp/gtest, or dev-libs/boost if used)
+- Conan (dev-util/conan)
+- Docker (app-containers/docker)
+- Haskell (dev-lang/ghc)
+- ScreenRecorder (media-video/ffmpeg)
+- SerialTerminal (USE=serialterminal)
+- SilverSearcher (sys-apps/the_silver_searcher)
+- StudioWelcome (USE=qmldesigner)
+
+Version Control:
+- CVS (dev-vcs/cvs)
+- Fossil (dev-vcs/fossil)
+- Git (dev-vcs/git)
+- Mercurial (dev-vcs/mercurial)
+- Subversion (dev-vcs/subversion)"
+ readme.gentoo_create_doc
+}
+
+pkg_postinst() {
+ xdg_pkg_postinst
+ readme.gentoo_print_elog
+}
diff --git a/dev-qt/qt-creator/qt-creator-4.10.1.ebuild b/dev-qt/qt-creator/qt-creator-4.10.1.ebuild
deleted file mode 100644
index dbf469667697..000000000000
--- a/dev-qt/qt-creator/qt-creator-4.10.1.ebuild
+++ /dev/null
@@ -1,201 +0,0 @@
-# Copyright 1999-2020 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-LLVM_MAX_SLOT=8
-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 and KSyntaxHighlighting
-
-QTC_PLUGINS=(android +autotest baremetal beautifier
- '+clang:clangcodemodel|clangformat|clangpchmanager|clangrefactoring|clangtools' clearcase
- cmake:cmakeprojectmanager cppcheck cvs +designer git glsl:glsleditor +help ios lsp:languageclient
- mercurial modeling:modeleditor nim perforce perfprofiler python:pythoneditor qbs:qbsprojectmanager
- +qmldesigner qmlprofiler qnx remotelinux scxml:scxmleditor serialterminal silversearcher subversion
- valgrind winrt)
-IUSE="doc systemd test +webengine ${QTC_PLUGINS[@]%:*}"
-RESTRICT="!test? ( test )"
-REQUIRED_USE="
- clang? ( test? ( qbs ) )
- qnx? ( remotelinux )
-"
-
-# minimum Qt version required
-QT_PV="5.12.3:5"
-
-CDEPEND="
- >=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}
- clang? ( sys-devel/clang:8= )
- designer? ( >=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}
- >=dev-qt/linguist-tools-${QT_PV}
- virtual/pkgconfig
- doc? ( >=dev-qt/qdoc-${QT_PV} )
- 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[client,python]
- cmake? ( dev-util/cmake )
- cppcheck? ( dev-util/cppcheck )
- cvs? ( dev-vcs/cvs )
- git? ( dev-vcs/git )
- mercurial? ( dev-vcs/mercurial )
- 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
-
-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 -rf src/tools/perfparser || die
- if ! 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/\<check\>//' 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 qbs
- rm -rf src/shared/qbs || die
-}
-
-src_configure() {
- eqmake5 IDE_LIBRARY_BASENAME="$(get_libdir)" \
- IDE_PACKAGE_MODE=1 \
- $(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.12.0.ebuild b/dev-qt/qt-creator/qt-creator-4.12.0.ebuild
deleted file mode 100644
index a4ca520e9938..000000000000
--- a/dev-qt/qt-creator/qt-creator-4.12.0.ebuild
+++ /dev/null
@@ -1,204 +0,0 @@
-# Copyright 1999-2020 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-LLVM_MAX_SLOT=9
-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 and KSyntaxHighlighting
-
-QTC_PLUGINS=(android +autotest baremetal beautifier boot2qt
- '+clang:clangcodemodel|clangformat|clangpchmanager|clangrefactoring|clangtools' clearcase
- cmake:cmakeprojectmanager cppcheck ctfvisualizer cvs +designer git glsl:glsleditor +help ios +lsp:languageclient
- mercurial modeling:modeleditor nim perforce perfprofiler python qbs:qbsprojectmanager
- +qmldesigner qmlprofiler qnx remotelinux scxml:scxmleditor serialterminal silversearcher subversion
- valgrind winrt)
-IUSE="doc systemd test +webengine ${QTC_PLUGINS[@]%:*}"
-RESTRICT="!test? ( test )"
-REQUIRED_USE="
- clang? ( test? ( qbs ) )
- qnx? ( remotelinux )
- boot2qt? ( remotelinux )
- python? ( lsp )
-"
-
-# minimum Qt version required
-QT_PV="5.12.3:5"
-
-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}
- clang? ( >=sys-devel/clang-9.0.1:= )
- designer? ( >=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}
- >=dev-qt/linguist-tools-${QT_PV}
- virtual/pkgconfig
- doc? ( >=dev-qt/qdoc-${QT_PV} )
- 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[client,python]
- cmake? ( dev-util/cmake )
- cppcheck? ( dev-util/cppcheck )
- cvs? ( dev-vcs/cvs )
- git? ( dev-vcs/git )
- mercurial? ( dev-vcs/mercurial )
- 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
-
-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 -rf src/tools/perfparser || die
- if ! use qmlprofiler && ! use ctfvisualizer; 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/\<check\>//' 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 qbs
- rm -rf src/shared/qbs || die
-}
-
-src_configure() {
- eqmake5 IDE_LIBRARY_BASENAME="$(get_libdir)" \
- IDE_PACKAGE_MODE=1 \
- $(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.8.2.ebuild b/dev-qt/qt-creator/qt-creator-4.8.2.ebuild
deleted file mode 100644
index 9494b2fc37c3..000000000000
--- a/dev-qt/qt-creator/qt-creator-4.8.2.ebuild
+++ /dev/null
@@ -1,192 +0,0 @@
-# Copyright 1999-2020 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-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/-}/${PV%.*}/${MY_PV}/${MY_P}.tar.xz"
- KEYWORDS="amd64 ~arm ~x86"
- S=${WORKDIR}/${MY_P}
-fi
-
-# TODO: unbundle sqlite
-
-QTC_PLUGINS=('android:android|qmakeandroidsupport' autotools:autotoolsprojectmanager baremetal
- '+clang:clangcodemodel|clangformat|clangtools' clearcase cmake:cmakeprojectmanager cppcheck
- cvs +designer git glsl:glsleditor +help ios lsp:languageclient mercurial modeling:modeleditor
- nim perforce python:pythoneditor qbs:qbsprojectmanager qnx scxml:scxmleditor serialterminal
- silversearcher subversion valgrind winrt)
-IUSE="doc systemd test +webengine ${QTC_PLUGINS[@]%:*}"
-RESTRICT="!test? ( test )"
-
-# minimum Qt version required
-QT_PV="5.9.0:5"
-
-CDEPEND="
- =dev-libs/botan-2.9*:2=[-bindist]
- >=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}
- clang? ( >=sys-devel/clang-6:= )
- designer? ( >=dev-qt/designer-${QT_PV} )
- help? (
- >=dev-qt/qthelp-${QT_PV}
- webengine? ( >=dev-qt/qtwebengine-${QT_PV}[widgets] )
- )
- qbs? ( ~dev-util/qbs-1.12.2 )
- serialterminal? ( >=dev-qt/qtserialport-${QT_PV} )
- systemd? ( sys-apps/systemd:= )
-"
-DEPEND="${CDEPEND}
- >=dev-qt/linguist-tools-${QT_PV}
- virtual/pkgconfig
- doc? ( >=dev-qt/qdoc-${QT_PV} )
- test? (
- >=dev-qt/qtdeclarative-${QT_PV}[localstorage]
- || (
- >=dev-qt/qtxmlpatterns-5.12.1-r1:5[qml(+)]
- <dev-qt/qtdeclarative-5.12.0[xml]
- )
- >=dev-qt/qtquickcontrols2-${QT_PV}
- >=dev-qt/qttest-${QT_PV}
- )
-"
-RDEPEND="${CDEPEND}
- sys-devel/gdb[client,python]
- autotools? ( sys-devel/autoconf )
- cmake? ( dev-util/cmake[server(+)] )
- cppcheck? ( dev-util/cppcheck )
- cvs? ( dev-vcs/cvs )
- git? ( dev-vcs/git )
- mercurial? ( dev-vcs/mercurial )
- 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
-
-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+|SUBDIRS\s*\+=\s*)(${plugin#*:})\>/d" \
- 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 '/SUBDIRS += clangbackend/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 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
-
- # 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 botan
- rm -rf src/libs/3rdparty/botan || die
-
- # remove bundled qbs
- rm -rf src/shared/qbs || die
-}
-
-src_configure() {
- eqmake5 IDE_LIBRARY_BASENAME="$(get_libdir)" \
- IDE_PACKAGE_MODE=1 \
- $(use clang && echo LLVM_INSTALL_DIR="$(get_llvm_prefix)") \
- $(use qbs && echo QBS_INSTALL_DIR="${EPREFIX}/usr") \
- CONFIG+=qbs_disable_rpath \
- CONFIG+=qbs_enable_project_file_updates \
- CONFIG+=use_system_botan \
- $(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-9999.ebuild b/dev-qt/qt-creator/qt-creator-9999.ebuild
index c6649849153f..68c8cfe8e35c 100644
--- a/dev-qt/qt-creator/qt-creator-9999.ebuild
+++ b/dev-qt/qt-creator/qt-creator-9999.ebuild
@@ -1,204 +1,268 @@
-# Copyright 1999-2020 Gentoo Authors
+# Copyright 2023-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
-EAPI=7
-LLVM_MAX_SLOT=8
-PLOCALES="cs da de fr ja pl ru sl uk zh-CN zh-TW"
+EAPI=8
-inherit llvm qmake-utils virtualx xdg
+LLVM_COMPAT=( {15..18} )
+LLVM_OPTIONAL=1
+PYTHON_COMPAT=( python3_{10..13} )
+inherit cmake flag-o-matic llvm-r1 python-any-r1 readme.gentoo-r1 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
+if [[ ${PV} == 9999 ]]; then
inherit git-r3
- EGIT_REPO_URI="https://code.qt.io/${PN}/${PN}.git"
+ EGIT_REPO_URI=(
+ "https://code.qt.io/qt-creator/qt-creator.git"
+ "https://github.com/qt-creator/qt-creator.git"
+ )
+ EGIT_SUBMODULES=(
+ perfparser
+ src/libs/qlitehtml
+ src/libs/qlitehtml/src/3rdparty/litehtml
+ )
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}
+ QTC_PV=${PV/_/-}
+ QTC_P=${PN}-opensource-src-${QTC_PV}
+ [[ ${QTC_PV} == ${PV} ]] && QTC_REL=official || QTC_REL=development
+ SRC_URI="https://download.qt.io/${QTC_REL}_releases/qtcreator/$(ver_cut 1-2)/${PV/_/-}/${QTC_P}.tar.xz"
+ S=${WORKDIR}/${QTC_P}
+ KEYWORDS="~amd64"
fi
-# TODO: unbundle sqlite, yaml-cpp, and KSyntaxHighlighting
+DESCRIPTION="Lightweight IDE for C++/QML development centering around Qt"
+HOMEPAGE="https://www.qt.io/product/development-tools"
-QTC_PLUGINS=(android +autotest baremetal beautifier boot2qt
- '+clang:clangcodemodel|clangformat|clangpchmanager|clangrefactoring|clangtools' 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 )
- clang? ( test? ( qbs ) )
- mcu? ( cmake )
- python? ( lsp )
- qnx? ( remotelinux )
+LICENSE="GPL-3"
+SLOT="0"
+IUSE="
+ +clang designer doc +help keyring plugin-dev qmldesigner
+ serialterminal +svg test +tracing webengine
"
+REQUIRED_USE="clang? ( ${LLVM_REQUIRED_USE} )"
+RESTRICT="!test? ( test )"
+
+QT_PV=6.2.0:6 # IDE_QT_VERSION_MIN
-# minimum Qt version required
-QT_PV="5.12.3:5"
-
-CDEPEND="
- >=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}
- clang? ( sys-devel/clang:8= )
- designer? ( >=dev-qt/designer-${QT_PV} )
+# := is used where Qt's private APIs are used for safety
+COMMON_DEPEND="
+ >=dev-qt/qt5compat-${QT_PV}
+ >=dev-qt/qtbase-${QT_PV}=[concurrent,dbus,gui,network,widgets,xml]
+ >=dev-qt/qtdeclarative-${QT_PV}=
+ clang? (
+ dev-cpp/yaml-cpp:=
+ $(llvm_gen_dep 'sys-devel/clang:${LLVM_SLOT}=')
+ )
+ designer? ( >=dev-qt/qttools-${QT_PV}[designer] )
help? (
- >=dev-qt/qthelp-${QT_PV}
- webengine? ( >=dev-qt/qtwebengine-${QT_PV}[widgets] )
+ >=dev-qt/qttools-${QT_PV}[assistant]
+ webengine? ( >=dev-qt/qtwebengine-${QT_PV} )
+ )
+ keyring? (
+ app-crypt/libsecret
+ dev-libs/glib:2
+ )
+ qmldesigner? (
+ >=dev-qt/qtquick3d-${QT_PV}=
+ >=dev-qt/qtsvg-${QT_PV}
)
- perfprofiler? ( dev-libs/elfutils )
- qbs? ( >=dev-util/qbs-1.13.1 )
serialterminal? ( >=dev-qt/qtserialport-${QT_PV} )
- systemd? ( sys-apps/systemd:= )
-"
-DEPEND="${CDEPEND}
- >=dev-qt/linguist-tools-${QT_PV}
- virtual/pkgconfig
- doc? ( >=dev-qt/qdoc-${QT_PV} )
- test? (
- >=dev-qt/qtdeclarative-${QT_PV}[localstorage]
- >=dev-qt/qtquickcontrols2-${QT_PV}
- >=dev-qt/qttest-${QT_PV}
- >=dev-qt/qtxmlpatterns-${QT_PV}[qml]
+ svg? ( >=dev-qt/qtsvg-${QT_PV} )
+ tracing? (
+ app-arch/zstd:=
+ dev-libs/elfutils
+ >=dev-qt/qtshadertools-${QT_PV}
)
"
-RDEPEND="${CDEPEND}
- sys-devel/gdb[client,python]
- cmake? ( dev-util/cmake )
- cppcheck? ( dev-util/cppcheck )
- cvs? ( dev-vcs/cvs )
- git? ( dev-vcs/git )
- mercurial? ( dev-vcs/mercurial )
- silversearcher? ( sys-apps/the_silver_searcher )
- subversion? ( dev-vcs/subversion )
- valgrind? ( dev-util/valgrind )
+# qtimageformats for .webp in examples, semi-optfeature but useful in general
+RDEPEND="
+ ${COMMON_DEPEND}
+ help? ( >=dev-qt/qtimageformats-${QT_PV} )
+ qmldesigner? ( >=dev-qt/qtquicktimeline-${QT_PV} )
"
-# 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
+DEPEND="${COMMON_DEPEND}"
+BDEPEND="
+ ${PYTHON_DEPS}
+ >=dev-qt/qttools-${QT_PV}[linguist]
+ doc? ( >=dev-qt/qttools-${QT_PV}[qdoc,qtattributionsscanner] )
+"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-11.0.2-musl-no-execinfo.patch
+ "${FILESDIR}"/${PN}-12.0.0-musl-no-malloc-trim.patch
+)
pkg_setup() {
- use clang && llvm_pkg_setup
+ python-any-r1_pkg_setup
+ use clang && llvm-r1_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 -rf 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
+ cmake_src_prepare
+
+ # needed for finding docs at runtime in PF
+ sed -e "/_IDE_DOC_PATH/s/qtcreator/${PF}/" \
+ -i cmake/QtCreatorAPIInternal.cmake || die
- # automagic dep on qtwebengine
- if ! use webengine; then
- sed -i -e 's/isEmpty(QT\.webenginewidgets\.name)/true/' src/plugins/help/help.pro || die
+ if use plugin-dev; then #928423
+ # cmake --install --component integrates poorly with the cmake
+ # eclass and the install targets are otherwise missing, so strip
+ # out EXCLUDE_FROM_ALL until figure out a better solution
+ find . \( -name CMakeLists.txt -o -name '*.cmake' \) -exec sed -i -zE \
+ 's/COMPONENT[[:space:]]+Devel[[:space:]]+EXCLUDE_FROM_ALL//g' {} + || 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/\<check\>//' tests/auto/qml/codemodel/codemodel.pro || die
+src_configure() {
+ # -Werror=lto-type-mismatch issues, needs looking into
+ filter-lto
- # do not install test binaries
- sed -i -e '/CONFIG +=/s/$/ no_testcase_installs/' tests/auto/{qttest.pri,json/json.pro} || die
+ # temporary workaround for musl-1.2.4 (bug #903611), this ideally
+ # needs fixing in qtbase as *64 usage comes from its headers' macros
+ use elibc_musl && append-lfs-flags
- # 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
+ local mycmakeargs=(
+ -DBUILD_WITH_PCH=no
+ -DWITH_DOCS=$(usex doc)
+ -DBUILD_DEVELOPER_DOCS=$(usex doc)
+ -DWITH_TESTS=$(usex test)
- # 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
+ # TODO?: try to unbundle with =no when syntax-highlighting:6 exists
+ -DBUILD_LIBRARY_KSYNTAXHIGHLIGHTING=yes
- # remove bundled qbs
- rm -rf src/shared/qbs || die
-}
+ # Much can be optional, but do not want to flood users (or maintainers)
+ # with too many flags. Not to mention that many plugins are merely
+ # wrappers around still optional tools (e.g. cvs) and any unwanted
+ # plugins can be disabled at runtime. So optional flags are limited
+ # to plugins with additional build-time dependencies.
+ -DBUILD_LIBRARY_TRACING=$(usex tracing) # qml+perfprofiler,ctfvisual
+ -DBUILD_EXECUTABLE_PERFPARSER=$(usex tracing)
-src_configure() {
- eqmake5 IDE_LIBRARY_BASENAME="$(get_libdir)" \
- IDE_PACKAGE_MODE=1 \
- $(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)
+ -DBUILD_PLUGIN_CLANGCODEMODEL=$(usex clang)
+ -DBUILD_PLUGIN_CLANGFORMAT=$(usex clang)
+ -DBUILD_PLUGIN_CLANGTOOLS=$(usex clang)
+ -DCLANGTOOLING_LINK_CLANG_DYLIB=yes
+
+ -DBUILD_PLUGIN_DESIGNER=$(usex designer)
+
+ -DBUILD_PLUGIN_HELP=$(usex help)
+ -DBUILD_HELPVIEWERBACKEND_QTWEBENGINE=$(usex webengine)
+ -DBUILD_LIBRARY_QLITEHTML=$(usex help $(usex !webengine))
+ # TODO?: package litehtml, but support for latest releases seem
+ # to lag behind and bundled may work out better for now
+ # https://bugreports.qt.io/browse/QTCREATORBUG-29169
+ $(use help && usev !webengine -DCMAKE_DISABLE_FIND_PACKAGE_litehtml=yes)
+
+ -DBUILD_PLUGIN_SERIALTERMINAL=$(usex serialterminal)
+
+ -DENABLE_SVG_SUPPORT=$(usex svg)
+
+ -DWITH_QMLDESIGNER=$(usex qmldesigner)
+
+ -Djournald=no # not really useful unless match qtbase (needs systemd)
+
+ # not packaged, but allow using if found
+ #-DCMAKE_DISABLE_FIND_PACKAGE_LibDDemangle=yes
+ #-DCMAKE_DISABLE_FIND_PACKAGE_LibRustcDemangle=yes
+
+ # for bundled qtkeychain (no switch to unbundle right now)
+ # reminder: if ever unbundled/optional, qtbase[dbus] can be removed
+ -DLIBSECRET_SUPPORT=$(usex keyring)
+ )
+
+ cmake_src_configure
}
src_test() {
- cd tests/auto && virtx default
+ local -x QT_QPA_PLATFORM=offscreen
+
+ local CMAKE_SKIP_TESTS=(
+ # skipping same tests+label as upstream's CI by default
+ # `grep ctest .github/workflows/build_cmake.yml`
+ tst_perfdata
+ )
+
+ cmake_src_test --label-exclude exclude_from_precheck
}
-src_install() {
- emake INSTALL_ROOT="${ED}/usr" install
+src_compile() {
+ cmake_src_compile
+
+ use doc && cmake_build {qch,html}_docs
+}
- dodoc dist/{changes-*,known-issues}
+src_install() {
+ cmake_src_install
- # 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
+ dodoc -r "${BUILD_DIR}"/doc/html
+ dodoc "${BUILD_DIR}"/share/doc/${PF}/qtcreator{,-dev}.qch
+ docompress -x /usr/share/doc/${PF}/qtcreator{,-dev}.qch
fi
+
+ local DISABLE_AUTOFORMATTING=yes
+ local DOC_CONTENTS="\
+Some plugins (if used) may need optional extra dependencies/USE.
+
+This list provides associations with Gentoo's packages (if exists)
+ordered as in Qt Creator's Help -> About Plugins (not exhaustive).
+
+dev-qt/qt-docs:6 with USE=\"examples qch\" is notably recommended, or
+else the example tab will be empty alongside missing documentation.
+
+Build Systems:
+- CMakeProjectManager (dev-build/cmake)
+- MesonProjectManager (dev-build/meson)
+- QbsProjectManager (dev-util/qbs)
+
+C++:
+- Beautifier (dev-util/astyle and/or dev-util/uncrustify)
+- ClangCodeModel (USE=clang, dev-util/clazy to understand Qt semantics)
+- ClangFormat (USE=clang)
+
+Code Analyzer:
+- ClangTools (USE=clang)
+- Cppcheck (dev-util/cppcheck)
+- CtfVisualizer (USE=tracing)
+- PerfProfiler (USE=tracing)
+- Valgrind (dev-debug/valgrind)
+
+Core:
+- Help (USE=help + dev-qt/qt-docs:6 with USE=\"examples qch\")
+
+Device Support:
+- Android (virtual/jdk, will also want the unpackaged Qt for Android)
+
+Other Languages:
+- Nim (dev-lang/nim)
+- Python (dev-lang/python)
+
+Qt Creator:
+- Designer (USE=designer)
+
+Qt Quick:
+- Insight (USE=qmldesigner)
+- QmlDesigner (USE=qmldesigner)
+- QmlProfiler (USE=tracing)
+
+Utilities:
+- Autotest (dev-cpp/catch, dev-cpp/gtest, or dev-libs/boost if used)
+- Conan (dev-util/conan)
+- Docker (app-containers/docker)
+- Haskell (dev-lang/ghc)
+- ScreenRecorder (media-video/ffmpeg)
+- SerialTerminal (USE=serialterminal)
+- SilverSearcher (sys-apps/the_silver_searcher)
+- StudioWelcome (USE=qmldesigner)
+
+Version Control:
+- CVS (dev-vcs/cvs)
+- Fossil (dev-vcs/fossil)
+- Git (dev-vcs/git)
+- Mercurial (dev-vcs/mercurial)
+- Subversion (dev-vcs/subversion)"
+ readme.gentoo_create_doc
+}
+
+pkg_postinst() {
+ xdg_pkg_postinst
+ readme.gentoo_print_elog
}