summaryrefslogtreecommitdiff
path: root/dev-qt/qt-creator
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2023-09-12 04:40:07 +0100
committerV3n3RiX <venerix@koprulu.sector>2023-09-12 04:40:07 +0100
commit5d5e56d92268c2b9b6ccc38eeaa3516ce9b1e8fd (patch)
tree587e467a631661f0e4786a584d79db3a9eeab5d7 /dev-qt/qt-creator
parentf8399e5cf87087ab3b9f8b1ed2955c0bd5469a9b (diff)
gentoo auto-resync : 12:09:2023 - 04:40:07
Diffstat (limited to 'dev-qt/qt-creator')
-rw-r--r--dev-qt/qt-creator/Manifest8
-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-11.0.2-musl-no-malloc-trim.patch10
-rw-r--r--dev-qt/qt-creator/files/qt-creator-11.0.2-qt653.patch26
-rw-r--r--dev-qt/qt-creator/metadata.xml7
-rw-r--r--dev-qt/qt-creator/qt-creator-11.0.2.ebuild260
-rw-r--r--dev-qt/qt-creator/qt-creator-9999.ebuild250
7 files changed, 605 insertions, 3 deletions
diff --git a/dev-qt/qt-creator/Manifest b/dev-qt/qt-creator/Manifest
index 91d82048bbc2..429f04d5acf1 100644
--- a/dev-qt/qt-creator/Manifest
+++ b/dev-qt/qt-creator/Manifest
@@ -1,3 +1,9 @@
+AUX qt-creator-11.0.2-musl-no-execinfo.patch 1305 BLAKE2B 14fba3e72188403cf457de46c50960bb69336023e74173a2a67c0e3101cbf8367cc0d0a31118efdaf715a184e558b6f2277fe8025035de482f6913e139660792 SHA512 707d09268cff8981d1baf7fa08c48a2c02edf044a7a76594d545a2a020616090c8b61851dff8d8a8350c024b39be932c9f7bc266e01b87680c7982759b1d96c4
+AUX qt-creator-11.0.2-musl-no-malloc-trim.patch 400 BLAKE2B 6933d466e1c93cb71a97dade2f5cc1a1d9aecc4b376a4ccfe5b16bd7b7485f4d8230b00d93b21c8420e74094369f47d84dcb655c22f1327ba69a2b313aeff5b8 SHA512 c0a31f61723964fabdbd3e4256689a6712de5c0dc12a4e0989f1867588fd18a4f6535f30290949f3d3f982b9bb0b454d0b9b81781e3900d859fc40ac5bec1068
+AUX qt-creator-11.0.2-qt653.patch 960 BLAKE2B 5b8e9b5c52df8c9f49af7d627a0af1d01cd41f67aac4ca59a29bda4708893544bc16c15579ef331d4f53859b65d1e50a5b8ef956b0a2de87961d6990a5aa1fe9 SHA512 8cfb2b96373b94c4eff8b83f18b8964d3c2a41b44620a0c694db978ed6042e0b521706c889f59e885bb737e56d1a9be068f5b17bc5267b8ec66cf14fab1c06a0
+DIST qt-creator-opensource-src-11.0.2.tar.xz 49828532 BLAKE2B 6028b71e1a7bf5ab953caa6223a2694e625449ab9e0eaa6e0dd8b34c0d64a9a5cea7b06d4aa98015d91defad04bc945db8528f87f5bddc70ba185ca32bb7ee8b SHA512 db123274e0652982f33db60b8f81610f0787357cdc7318ea2bbe105343ff905462c38e29a68f864c48bda51fee6f17859074c172f77dd2379ecc2e7028f5fcd5
DIST qt-creator-opensource-src-8.0.2.tar.xz 48874868 BLAKE2B 53f491441ba28f9420c76cd4adfdcb7c7ef432d756fc5bf64a507c2cd1022b35700418a7b35b7119d97f9947b5dac2a8acc56b600c3e75001f80565f1619c072 SHA512 59ff62e6592fd33ff74aeab13dd33f3817ba132fb98f8a87ea818e1e52b4af0dc292e362085733665f0867d67ff867794755b2f02067897a9fb1c14023c6fb23
+EBUILD qt-creator-11.0.2.ebuild 7082 BLAKE2B c6bf7423f2a13749e1226126daaee9953147c96be56c866c14d722968f7100e9c577080e7d9910abce37f0f7332602865d7b6725c4b572dfd40298de95d21355 SHA512 c922b5cf2601b4cc20c0aa4637891bf1704480b73a470ff27ace4a5cb9aad287b3d19f7a5543a48ecb959535937090bb621d8e421076147b219f99825924fe64
EBUILD qt-creator-8.0.2.ebuild 13562 BLAKE2B ed5898ff39becb8496538fcd0017e54e6fd7c0559351705a664250fefd399cefd622e27cca2e91b43cefa48819d543d809721ee3985466aa1327cd1644ee846f SHA512 4a2727479f76fa872ab6fe66ca629d72c613697ee2e2ad305d489b720e1c2a29675ca9f4a72fed3a02830dbc18f575aa480a1c540ca0eee9c63cfe1fb48386e4
-MISC metadata.xml 3889 BLAKE2B fe54d506e96703f88697dcb61747b6ce358644a98c83e8449f65d8a2bcacedf11a39066b40de85309b4739cbd7856b1af4d5a2aa7827ad376021f97998976db2 SHA512 cc5bdbd7eb15a65803873296866805c8eaec9f8cc2bb003eda49d7493928cbf9edbe1a281bb421d696928d30c3c0060bf6c6e174ea27d7c51a7dfecf66433b6f
+EBUILD qt-creator-9999.ebuild 6736 BLAKE2B 0c826cded161cada3d906cfbc442e7dedb2fdc7e85c46c2a5fad29f694f49a5f06a90180f0648a74026d7b5a5f0e889df79167becafdfae77ad07ed700067654 SHA512 1d4db42565ff957c9f10385fdc3d51c3313e442afc89b3710838c55f819c3fd4e5f96a409170d7d57ac3fcb7218968a00e71464409ef541fe1067286d720fa8f
+MISC metadata.xml 4229 BLAKE2B 4e71551f13819064fc008037070a36bba83a153e13ee602265ca86f4b7df5d6a53889c91072818ef741196053191c4cfc83abb3d877f49f2ccdfeff82f0dbe92 SHA512 1ddefd8379001e7e5cbac83b900ab7cf25d710e938e610ef715457d251a921b27ba6583f6f19fdb3af5c67c0ecbc334b19a3bb75e2ed46a4a6c582ec7cd09876
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-11.0.2-musl-no-malloc-trim.patch b/dev-qt/qt-creator/files/qt-creator-11.0.2-musl-no-malloc-trim.patch
new file mode 100644
index 000000000000..d4936882d4d2
--- /dev/null
+++ b/dev-qt/qt-creator/files/qt-creator-11.0.2-musl-no-malloc-trim.patch
@@ -0,0 +1,10 @@
+malloc_trim() is unavailable with musl
+--- a/src/plugins/coreplugin/mainwindow.cpp
++++ b/src/plugins/coreplugin/mainwindow.cpp
+@@ -222,5 +222,5 @@
+ m_trimTimer.setInterval(60000);
+ // 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); });
+ #endif
diff --git a/dev-qt/qt-creator/files/qt-creator-11.0.2-qt653.patch b/dev-qt/qt-creator/files/qt-creator-11.0.2-qt653.patch
new file mode 100644
index 000000000000..1ad23a207d9b
--- /dev/null
+++ b/dev-qt/qt-creator/files/qt-creator-11.0.2-qt653.patch
@@ -0,0 +1,26 @@
+Uses private parts of the QtQuick3D api which added a namespace in:
+https://github.com/qt/qtquick3d/commit/2b139225745a94ab4fa7e30f28cd0207469ee68e
+--- a/src/tools/qml2puppet/qml2puppet/editor3d/generalhelper.cpp
++++ b/src/tools/qml2puppet/qml2puppet/editor3d/generalhelper.cpp
+@@ -803,5 +803,9 @@
+ const QMatrix4x4 sceneTransform = parent->sceneTransform() * localTransform;
+
++#if (QT_VERSION >= QT_VERSION_CHECK(6, 5, 3))
++ return QSSGUtils::mat44::getPosition(sceneTransform);
++#else
+ return mat44::getPosition(sceneTransform);
++#endif
+ }
+
+--- a/src/tools/qml2puppet/qml2puppet/editor3d/mousearea3d.cpp
++++ b/src/tools/qml2puppet/qml2puppet/editor3d/mousearea3d.cpp
+@@ -738,5 +738,9 @@
+ const QMatrix4x4 sceneTransform = parent->sceneTransform() * localTransform;
+
++#if (QT_VERSION >= QT_VERSION_CHECK(6, 5, 3))
++ return QSSGUtils::mat44::getPosition(sceneTransform);
++#else
+ return mat44::getPosition(sceneTransform);
++#endif
+ }
+
diff --git a/dev-qt/qt-creator/metadata.xml b/dev-qt/qt-creator/metadata.xml
index dc11e329b879..8a364df28048 100644
--- a/dev-qt/qt-creator/metadata.xml
+++ b/dev-qt/qt-creator/metadata.xml
@@ -27,7 +27,7 @@
<flag name="designer">Enable designer for QtWidgets-based UIs</flag>
<flag name="docker">Build plugin for Docker support</flag>
<flag name="glsl">Build the GLSL editor plugin</flag>
- <flag name="help">Enable the integrated documentation viewer</flag>
+ <flag name="help">Enable the integrated <pkg>dev-qt/qt-docs</pkg> viewer (also needed for examples)</flag>
<flag name="imageviewer">Build plugin to open and view image files</flag>
<flag name="incredibuild">Enable integration with Incredibuild</flag>
<flag name="lsp">Add support for the Language Server Protocol (LSP)</flag>
@@ -49,12 +49,15 @@
<flag name="serialterminal">Build the 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="qmldesigner">Build QmlDesigner and related plugins (Insight, StudioWelcome)</flag>
+ <flag name="tracing">Build plugins requiring tracing capabilities (CtfVisualizer, PerfProfiler, QmlProfiler)</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="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-11.0.2.ebuild b/dev-qt/qt-creator/qt-creator-11.0.2.ebuild
new file mode 100644
index 000000000000..2d43880f115f
--- /dev/null
+++ b/dev-qt/qt-creator/qt-creator-11.0.2.ebuild
@@ -0,0 +1,260 @@
+# Copyright 2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..12} )
+inherit cmake flag-o-matic llvm 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 qmldesigner serialterminal
+ +svg test +tracing webengine
+"
+RESTRICT="!test? ( test )"
+
+# 17+ may be usable, but there are many fixes for 17 in next version
+LLVM_MAX_SLOT=16
+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,gui,network,widgets,xml]
+ >=dev-qt/qtdeclarative-${QT_PV}=
+ clang? (
+ dev-cpp/yaml-cpp:=
+ <sys-devel/clang-$((LLVM_MAX_SLOT+1)):=
+ )
+ designer? ( >=dev-qt/qttools-${QT_PV}[designer] )
+ help? (
+ >=dev-qt/qttools-${QT_PV}[assistant]
+ webengine? ( >=dev-qt/qtwebengine-${QT_PV} )
+ )
+ 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] )
+"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-11.0.2-musl-no-execinfo.patch
+ "${FILESDIR}"/${PN}-11.0.2-musl-no-malloc-trim.patch
+ "${FILESDIR}"/${PN}-11.0.2-qt653.patch
+)
+
+pkg_setup() {
+ python-any-r1_pkg_setup
+ use clang && llvm_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
+}
+
+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
+ -DEXTERNAL_XXD=no
+ ')
+
+ -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
+ )
+
+ cmake_src_configure
+}
+
+src_test() {
+ local -x QT_QPA_PLATFORM=offscreen
+
+ local CMAKE_SKIP_TESTS=(
+ # unknown why these fails, but seems fixed in live
+ tst_tracing_timelineitemsrenderpass
+ tst_tracing_timelinenotesrenderpass
+ tst_tracing_timelineselectionrenderpass
+ # fails when built with clang, but also seems fixed in live
+ tst_process
+ # 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-util/cmake)
+- MesonProjectManager (dev-util/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-util/valgrind)
+
+Core:
+- Help (USE=help + dev-qt/qt-docs:6 with USE=\"examples qch\")
+
+Device Support:
+- Android (dev-util/android-sdk-update-manager)
+
+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)
+- 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-9999.ebuild b/dev-qt/qt-creator/qt-creator-9999.ebuild
new file mode 100644
index 000000000000..e3eb16aa2c02
--- /dev/null
+++ b/dev-qt/qt-creator/qt-creator-9999.ebuild
@@ -0,0 +1,250 @@
+# Copyright 2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..12} )
+inherit cmake flag-o-matic llvm 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 qmldesigner serialterminal
+ +svg test +tracing webengine
+"
+RESTRICT="!test? ( test )"
+
+LLVM_MAX_SLOT=17
+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,gui,network,widgets,xml]
+ >=dev-qt/qtdeclarative-${QT_PV}=
+ clang? (
+ dev-cpp/yaml-cpp:=
+ <sys-devel/clang-$((LLVM_MAX_SLOT+1)):=
+ )
+ designer? ( >=dev-qt/qttools-${QT_PV}[designer] )
+ help? (
+ >=dev-qt/qttools-${QT_PV}[assistant]
+ webengine? ( >=dev-qt/qtwebengine-${QT_PV} )
+ )
+ 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] )
+"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-11.0.2-musl-no-execinfo.patch
+ "${FILESDIR}"/${PN}-11.0.2-musl-no-malloc-trim.patch
+ "${FILESDIR}"/${PN}-11.0.2-qt653.patch
+)
+
+pkg_setup() {
+ python-any-r1_pkg_setup
+ use clang && llvm_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
+}
+
+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
+ )
+
+ 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-util/cmake)
+- MesonProjectManager (dev-util/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-util/valgrind)
+
+Core:
+- Help (USE=help + dev-qt/qt-docs:6 with USE=\"examples qch\")
+
+Device Support:
+- Android (dev-util/android-sdk-update-manager)
+
+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)
+- 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
+}