diff options
Diffstat (limited to 'dev-qt/qt-creator')
-rw-r--r-- | dev-qt/qt-creator/Manifest | 5 | ||||
-rw-r--r-- | dev-qt/qt-creator/files/qt-creator-11.0.2-musl-no-execinfo.patch | 47 | ||||
-rw-r--r-- | dev-qt/qt-creator/files/qt-creator-12.0.0-musl-no-malloc-trim.patch | 8 | ||||
-rw-r--r-- | dev-qt/qt-creator/files/qt-creator-13.0.0-qt671.patch | 29 | ||||
-rw-r--r-- | dev-qt/qt-creator/metadata.xml | 49 | ||||
-rw-r--r-- | dev-qt/qt-creator/qt-creator-13.0.0.ebuild | 269 | ||||
-rw-r--r-- | dev-qt/qt-creator/qt-creator-13.0.1.ebuild | 268 | ||||
-rw-r--r-- | dev-qt/qt-creator/qt-creator-4.10.1.ebuild | 201 | ||||
-rw-r--r-- | dev-qt/qt-creator/qt-creator-4.12.0.ebuild | 204 | ||||
-rw-r--r-- | dev-qt/qt-creator/qt-creator-4.8.2.ebuild | 192 | ||||
-rw-r--r-- | dev-qt/qt-creator/qt-creator-9999.ebuild | 392 |
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 } |