Add dev-qt from an older version of the gentoo repo

Qt5 has been removed, we restore it since we still use it.
This commit is contained in:
2026-07-03 09:45:00 +02:00
parent 2247967dd3
commit 4f3d3fadc5
236 changed files with 7665 additions and 0 deletions

View File

@ -0,0 +1,4 @@
DIST qt-creator-opensource-src-16.0.1-vendor.tar.xz 509768 BLAKE2B 83080182a275e8238b5dfbeb4049670fbfd6fb1373d36c9b402d3addde806fff87a459cb80f6ce9cf84e26dd68af218ac9eb34e2687a38f99a8123b3cd53110e SHA512 222e2e7dc40b63f78a05bd48d8276f089c990b3374cf1090ebeb87e06f8fd37470b67aa11a41a850a12627126f7dd5acb0c565ccedca1c99ee0c69d1580b7e36
DIST qt-creator-opensource-src-16.0.1.tar.xz 53538384 BLAKE2B 93085ecb846c3c500915a256dee5557483cd7f850e0756e2d31ea86b3355ea86ba6e25da81e48b3237e278303d338ca2c61950fcecb24c453cdcdee4d0f29e6d SHA512 f3056e06b214b3a49dd928ca5a40c0387954e0391a7f7debc9cad4fa2eedc62c17728a9bb5c1447ac08a70e8fe545e62e57b16ea600397b0b95ecaaa4065a4c7
DIST qt-creator-opensource-src-16.0.2-vendor.tar.xz 510160 BLAKE2B 1b44ba3e443369db893e19dcd154f3750df925cbeb2336952f2f1aa45020241b5a4e0544c6882652fc224632e070ed35894c0fb5d677d05494be6e71193e28ae SHA512 fabf1bd5bfd0e32f8e770d896ec5af0718def5e784242b80cf6ec82a099e15c02425d72949ef50ebd4b618044cedf69f4666d5ef635536b3d182b7764ab7706a
DIST qt-creator-opensource-src-16.0.2.tar.xz 53539340 BLAKE2B 1ffbaa12aa4ed3ed02672555f2cde7effb510863e3f11658fdb7d1c46aa116e19ec09a70eaf864cf0db05a5c79f533fbf3f5451c38cae740fb8c172bbc362288 SHA512 44b5f1a97af7cb841321637a793350051e88bd09f228123e2e5f4a0fcbe6d56ac703158a652d4a5de3da5a22cb108c638bfe2cc9bd0b1814534be7579697229d

View File

@ -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); });

View File

@ -0,0 +1,26 @@
execinfo is unavailable with musl (unless opt 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/libs/designercore/exceptions/exception.cpp
+++ b/src/plugins/qmldesigner/libs/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>

View File

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="project">
<email>qt@gentoo.org</email>
<name>Gentoo Qt Project</name>
</maintainer>
<use>
<flag name="clang">Build clang-based plugins for C/C++ development (code model, formatting, static analysis)</flag>
<flag name="cmdbridge-server">Build the cmdbridge server using <pkg>dev-lang/go</pkg></flag>
<flag name="designer">Enable designer for QtWidgets-based UIs</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 for tracing requiring extra dependencies (AppStatisticsMonitor, CtfVisualizer, PerfProfiler, QmlProfiler)</flag>
<flag name="webengine">
Allow using <pkg>dev-qt/qtwebengine</pkg> for
better USE=help display, and for Design Viewer
Connector support with USE=qmldesigner
</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>

View File

@ -0,0 +1,307 @@
# Copyright 2023-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
LLVM_COMPAT=( {15..20} )
LLVM_OPTIONAL=1
PYTHON_COMPAT=( python3_{11..13} )
inherit cmake edo flag-o-matic go-env llvm-r2 multiprocessing
inherit 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
cmdbridge-server? ( https://dev.gentoo.org/~ionen/distfiles/${QTC_P}-vendor.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"
LICENSE+=" BSD MIT" # go
SLOT="0"
IUSE="
+clang cmdbridge-server designer doc +help keyring plugin-dev
qmldesigner serialterminal +svg test +tracing webengine
"
REQUIRED_USE="clang? ( ${LLVM_REQUIRED_USE} )"
RESTRICT="!test? ( test )"
QT_PV=6.7.3:6
# := is used where Qt's private APIs are used for safety
COMMON_DEPEND="
dev-cpp/yaml-cpp:=
>=dev-qt/qt5compat-${QT_PV}
>=dev-qt/qtbase-${QT_PV}=[concurrent,dbus,gui,network,ssl,widgets,xml]
>=dev-qt/qtdeclarative-${QT_PV}=
sys-libs/zlib:=
clang? (
$(llvm_gen_dep '
llvm-core/clang:${LLVM_SLOT}=
llvm-core/llvm:${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}
>=dev-qt/qtwebsockets-${QT_PV}
webengine? ( >=dev-qt/qtwebengine-${QT_PV} )
)
serialterminal? ( >=dev-qt/qtserialport-${QT_PV} )
svg? ( >=dev-qt/qtsvg-${QT_PV} )
tracing? (
app-arch/zstd:=
dev-libs/elfutils
>=dev-qt/qtcharts-${QT_PV}
>=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}"
# intentionally skipping := on go (unlike go-module.eclass) given not
# worth a massive rebuild every time for the minor go usage
BDEPEND="
${PYTHON_DEPS}
>=dev-qt/qttools-${QT_PV}[linguist]
cmdbridge-server? ( >=dev-lang/go-1.21.7 )
doc? ( >=dev-qt/qttools-${QT_PV}[qdoc,qtattributionsscanner] )
"
PATCHES=(
"${FILESDIR}"/${PN}-16.0.0-musl-no-execinfo.patch
"${FILESDIR}"/${PN}-12.0.0-musl-no-malloc-trim.patch
)
QA_FLAGS_IGNORED="usr/libexec/qtcreator/cmdbridge-.*" # written in Go
src_unpack() {
if [[ ${PV} == 9999 ]]; then
git-r3_src_unpack
if use cmdbridge-server; then
cd -- "${S}"/src/libs/gocmdbridge/server || die
edo go mod vendor
fi
else
default
fi
}
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
# avoid stripping for Go, use sed to avoid rebases as may be there forever
sed -i 's/-s -w //' src/libs/gocmdbridge/server/CMakeLists.txt || die
# avoid building manual tests (aka not ran) for nothing (bug #950010)
sed -i '/add_subdirectory(manual)/d' tests/CMakeLists.txt || 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() {
use clang && llvm_chost_setup
if use cmdbridge-server; then
go-env_set_compile_environment
export GOFLAGS="-p=$(makeopts_jobs) -v -x -buildvcs=false -buildmode=pie"
fi
# -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_DEVELOPER_DOCS=$(usex doc)
-DBUILD_DOCS_BY_DEFAULT=$(usex doc)
-DBUILD_WITH_PCH=no
-DWITH_DOCS=$(usex doc)
-DWITH_TESTS=$(usex test)
# sticking to bundled for now until it switches to KF6's
-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_APPSTATISTICSMONITOR=$(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)
# help shouldn't use with the above, but qmldesigner is automagic
$(use help || use qmldesigner &&
cmake_use_find_package webengine Qt6WebEngineWidgets)
-DBUILD_PLUGIN_SERIALTERMINAL=$(usex serialterminal)
-DENABLE_SVG_SUPPORT=$(usex svg)
$(usev !cmdbridge-server -DGO_BIN=GO_BIN-NOTFOUND) #945925
-DWITH_QMLDESIGNER=$(usex qmldesigner)
# meant to be in sync with qtbase[journald], but think(?) not worth
# handling given qt-creator can use QT_FORCE_STDERR_LOGGING=1 nowadays
-Djournald=no
# 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_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:
- AppStatisticsMonitor (USE=tracing)
- 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
}

View File

@ -0,0 +1,307 @@
# Copyright 2023-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
LLVM_COMPAT=( {15..20} )
LLVM_OPTIONAL=1
PYTHON_COMPAT=( python3_{11..13} )
inherit cmake edo flag-o-matic go-env llvm-r2 multiprocessing
inherit 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
cmdbridge-server? ( https://dev.gentoo.org/~ionen/distfiles/${QTC_P}-vendor.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"
LICENSE+=" BSD MIT" # go
SLOT="0"
IUSE="
+clang cmdbridge-server designer doc +help keyring plugin-dev
qmldesigner serialterminal +svg test +tracing webengine
"
REQUIRED_USE="clang? ( ${LLVM_REQUIRED_USE} )"
RESTRICT="!test? ( test )"
QT_PV=6.7.3:6
# := is used where Qt's private APIs are used for safety
COMMON_DEPEND="
dev-cpp/yaml-cpp:=
>=dev-qt/qt5compat-${QT_PV}
>=dev-qt/qtbase-${QT_PV}=[concurrent,dbus,gui,network,ssl,widgets,xml]
>=dev-qt/qtdeclarative-${QT_PV}=
sys-libs/zlib:=
clang? (
$(llvm_gen_dep '
llvm-core/clang:${LLVM_SLOT}=
llvm-core/llvm:${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}
>=dev-qt/qtwebsockets-${QT_PV}
webengine? ( >=dev-qt/qtwebengine-${QT_PV} )
)
serialterminal? ( >=dev-qt/qtserialport-${QT_PV} )
svg? ( >=dev-qt/qtsvg-${QT_PV} )
tracing? (
app-arch/zstd:=
dev-libs/elfutils
>=dev-qt/qtcharts-${QT_PV}
>=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}"
# intentionally skipping := on go (unlike go-module.eclass) given not
# worth a massive rebuild every time for the minor go usage
BDEPEND="
${PYTHON_DEPS}
>=dev-qt/qttools-${QT_PV}[linguist]
cmdbridge-server? ( >=dev-lang/go-1.21.7 )
doc? ( >=dev-qt/qttools-${QT_PV}[qdoc,qtattributionsscanner] )
"
PATCHES=(
"${FILESDIR}"/${PN}-16.0.0-musl-no-execinfo.patch
"${FILESDIR}"/${PN}-12.0.0-musl-no-malloc-trim.patch
)
QA_FLAGS_IGNORED="usr/libexec/qtcreator/cmdbridge-.*" # written in Go
src_unpack() {
if [[ ${PV} == 9999 ]]; then
git-r3_src_unpack
if use cmdbridge-server; then
cd -- "${S}"/src/libs/gocmdbridge/server || die
edo go mod vendor
fi
else
default
fi
}
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
# avoid stripping for Go, use sed to avoid rebases as may be there forever
sed -i 's/-s -w //' src/libs/gocmdbridge/server/CMakeLists.txt || die
# avoid building manual tests (aka not ran) for nothing (bug #950010)
sed -i '/add_subdirectory(manual)/d' tests/CMakeLists.txt || 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() {
use clang && llvm_chost_setup
if use cmdbridge-server; then
go-env_set_compile_environment
export GOFLAGS="-p=$(makeopts_jobs) -v -x -buildvcs=false -buildmode=pie"
fi
# -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_DEVELOPER_DOCS=$(usex doc)
-DBUILD_DOCS_BY_DEFAULT=$(usex doc)
-DBUILD_WITH_PCH=no
-DWITH_DOCS=$(usex doc)
-DWITH_TESTS=$(usex test)
# sticking to bundled for now until it switches to KF6's
-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_APPSTATISTICSMONITOR=$(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)
# help shouldn't use with the above, but qmldesigner is automagic
$(use help || use qmldesigner &&
cmake_use_find_package webengine Qt6WebEngineWidgets)
-DBUILD_PLUGIN_SERIALTERMINAL=$(usex serialterminal)
-DENABLE_SVG_SUPPORT=$(usex svg)
$(usev !cmdbridge-server -DGO_BIN=GO_BIN-NOTFOUND) #945925
-DWITH_QMLDESIGNER=$(usex qmldesigner)
# meant to be in sync with qtbase[journald], but think(?) not worth
# handling given qt-creator can use QT_FORCE_STDERR_LOGGING=1 nowadays
-Djournald=no
# 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_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:
- AppStatisticsMonitor (USE=tracing)
- 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
}

View File

@ -0,0 +1,281 @@
# Copyright 2023-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
LLVM_COMPAT=( {16..22} )
LLVM_OPTIONAL=1
PYTHON_COMPAT=( python3_{11..14} )
inherit cmake flag-o-matic llvm-r2 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.7.3:6
# := is used where Qt's private APIs are used for safety
COMMON_DEPEND="
app-arch/libarchive:=
dev-cpp/yaml-cpp:=
>=dev-qt/qtbase-${QT_PV}=[concurrent,dbus,gui,network,ssl,widgets,xml]
>=dev-qt/qtdeclarative-${QT_PV}=
clang? (
$(llvm_gen_dep '
llvm-core/clang:${LLVM_SLOT}=
llvm-core/llvm:${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}
>=dev-qt/qtwebsockets-${QT_PV}
webengine? ( >=dev-qt/qtwebengine-${QT_PV} )
)
serialterminal? ( >=dev-qt/qtserialport-${QT_PV} )
svg? ( >=dev-qt/qtsvg-${QT_PV} )
tracing? (
app-arch/zstd:=
dev-libs/elfutils
>=dev-qt/qtcharts-${QT_PV}
>=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}-16.0.0-musl-no-execinfo.patch
"${FILESDIR}"/${PN}-12.0.0-musl-no-malloc-trim.patch
)
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
# avoid building manual tests (aka not ran) for nothing (bug #950010)
sed -i '/add_subdirectory(manual)/d' tests/CMakeLists.txt || 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() {
use clang && llvm_chost_setup
# -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_DEVELOPER_DOCS=$(usex doc)
-DBUILD_DOCS_BY_DEFAULT=$(usex doc)
-DBUILD_WITH_PCH=no
-DWITH_DOCS=$(usex doc)
-DWITH_TESTS=$(usex test)
# sticking to bundled for now until it switches to KF6's
-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_APPSTATISTICSMONITOR=$(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)
# TODO?: unbundle litehtml, but support for latest releases
# tend to lag behind and bundled may work out better for now
-DBUILD_LIBRARY_QLITEHTML=$(usex help $(usex !webengine))
# help shouldn't use with the above, but qmldesigner is automagic
$(use help || use qmldesigner &&
cmake_use_find_package webengine Qt6WebEngineWidgets)
-DBUILD_PLUGIN_SERIALTERMINAL=$(usex serialterminal)
-DENABLE_SVG_SUPPORT=$(usex svg)
-DWITH_QMLDESIGNER=$(usex qmldesigner)
# cmdbridge-server is a hardly used maintenance burden (bug #967488)
-DBUILD_EXECUTABLE_CMDBRIDGE=no
# meant to be in sync with qtbase[journald], but think(?) not worth
# handling given qt-creator can use QT_FORCE_STDERR_LOGGING=1 nowadays
-Djournald=no
# 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=(
# broke since 17.0.0 and hasn't really been looked into yet,
# does not seem to cause visible problems so skipping for now
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_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:
- AppStatisticsMonitor (USE=tracing)
- 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
}

View File

@ -0,0 +1,281 @@
# Copyright 2023-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
LLVM_COMPAT=( {16..22} )
LLVM_OPTIONAL=1
PYTHON_COMPAT=( python3_{11..14} )
inherit cmake flag-o-matic llvm-r2 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.7.3:6
# := is used where Qt's private APIs are used for safety
COMMON_DEPEND="
app-arch/libarchive:=
dev-cpp/yaml-cpp:=
>=dev-qt/qtbase-${QT_PV}=[concurrent,dbus,gui,network,ssl,widgets,xml]
>=dev-qt/qtdeclarative-${QT_PV}=
clang? (
$(llvm_gen_dep '
llvm-core/clang:${LLVM_SLOT}=
llvm-core/llvm:${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}
>=dev-qt/qtwebsockets-${QT_PV}
webengine? ( >=dev-qt/qtwebengine-${QT_PV} )
)
serialterminal? ( >=dev-qt/qtserialport-${QT_PV} )
svg? ( >=dev-qt/qtsvg-${QT_PV} )
tracing? (
app-arch/zstd:=
dev-libs/elfutils
>=dev-qt/qtcharts-${QT_PV}
>=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}-16.0.0-musl-no-execinfo.patch
"${FILESDIR}"/${PN}-12.0.0-musl-no-malloc-trim.patch
)
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
# avoid building manual tests (aka not ran) for nothing (bug #950010)
sed -i '/add_subdirectory(manual)/d' tests/CMakeLists.txt || 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() {
use clang && llvm_chost_setup
# -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_DEVELOPER_DOCS=$(usex doc)
-DBUILD_DOCS_BY_DEFAULT=$(usex doc)
-DBUILD_WITH_PCH=no
-DWITH_DOCS=$(usex doc)
-DWITH_TESTS=$(usex test)
# sticking to bundled for now until it switches to KF6's
-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_APPSTATISTICSMONITOR=$(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)
# TODO?: unbundle litehtml, but support for latest releases
# tend to lag behind and bundled may work out better for now
-DBUILD_LIBRARY_QLITEHTML=$(usex help $(usex !webengine))
# help shouldn't use with the above, but qmldesigner is automagic
$(use help || use qmldesigner &&
cmake_use_find_package webengine Qt6WebEngineWidgets)
-DBUILD_PLUGIN_SERIALTERMINAL=$(usex serialterminal)
-DENABLE_SVG_SUPPORT=$(usex svg)
-DWITH_QMLDESIGNER=$(usex qmldesigner)
# cmdbridge-server is a hardly used maintenance burden (bug #967488)
-DBUILD_EXECUTABLE_CMDBRIDGE=no
# meant to be in sync with qtbase[journald], but think(?) not worth
# handling given qt-creator can use QT_FORCE_STDERR_LOGGING=1 nowadays
-Djournald=no
# 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=(
# broke since 17.0.0 and hasn't really been looked into yet,
# does not seem to cause visible problems so skipping for now
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_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:
- AppStatisticsMonitor (USE=tracing)
- 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
}

View File

@ -0,0 +1,281 @@
# Copyright 2023-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
LLVM_COMPAT=( {16..22} )
LLVM_OPTIONAL=1
PYTHON_COMPAT=( python3_{11..14} )
inherit cmake flag-o-matic llvm-r2 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.7.3:6
# := is used where Qt's private APIs are used for safety
COMMON_DEPEND="
app-arch/libarchive:=
dev-cpp/yaml-cpp:=
>=dev-qt/qtbase-${QT_PV}=[concurrent,dbus,gui,network,ssl,widgets,xml]
>=dev-qt/qtdeclarative-${QT_PV}=
clang? (
$(llvm_gen_dep '
llvm-core/clang:${LLVM_SLOT}=
llvm-core/llvm:${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}
>=dev-qt/qtwebsockets-${QT_PV}
webengine? ( >=dev-qt/qtwebengine-${QT_PV} )
)
serialterminal? ( >=dev-qt/qtserialport-${QT_PV} )
svg? ( >=dev-qt/qtsvg-${QT_PV} )
tracing? (
app-arch/zstd:=
dev-libs/elfutils
>=dev-qt/qtcharts-${QT_PV}
>=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}-16.0.0-musl-no-execinfo.patch
"${FILESDIR}"/${PN}-12.0.0-musl-no-malloc-trim.patch
)
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
# avoid building manual tests (aka not ran) for nothing (bug #950010)
cmake_comment_add_subdirectory -f tests/CMakeLists.txt manual
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() {
use clang && llvm_chost_setup
# -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_DEVELOPER_DOCS=$(usex doc)
-DBUILD_DOCS_BY_DEFAULT=$(usex doc)
-DBUILD_WITH_PCH=no
-DWITH_DOCS=$(usex doc)
-DWITH_TESTS=$(usex test)
# sticking to bundled for now until it switches to KF6's
-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_APPSTATISTICSMONITOR=$(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)
# TODO?: unbundle litehtml, but support for latest releases
# tend to lag behind and bundled may work out better for now
-DBUILD_LIBRARY_QLITEHTML=$(usex help $(usex !webengine))
# help shouldn't use with the above, but qmldesigner is automagic
$(use help || use qmldesigner &&
cmake_use_find_package webengine Qt6WebEngineWidgets)
-DBUILD_PLUGIN_SERIALTERMINAL=$(usex serialterminal)
-DENABLE_SVG_SUPPORT=$(usex svg)
-DWITH_QMLDESIGNER=$(usex qmldesigner)
# cmdbridge-server is a hardly used maintenance burden (bug #967488)
-DBUILD_EXECUTABLE_CMDBRIDGE=no
# meant to be in sync with qtbase[journald], but think(?) not worth
# handling given qt-creator can use QT_FORCE_STDERR_LOGGING=1 nowadays
-Djournald=no
# 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=(
# broke since 17.0.0 and hasn't really been looked into yet,
# does not seem to cause visible problems so skipping for now
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_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:
- AppStatisticsMonitor (USE=tracing)
- 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
}

View File

@ -0,0 +1,308 @@
# Copyright 2023-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
LLVM_COMPAT=( {15..20} )
LLVM_OPTIONAL=1
PYTHON_COMPAT=( python3_{11..13} )
inherit cmake edo flag-o-matic go-env llvm-r2 multiprocessing
inherit 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
cmdbridge-server? ( https://dev.gentoo.org/~ionen/distfiles/${QTC_P}-vendor.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"
LICENSE+=" BSD MIT" # go
SLOT="0"
IUSE="
+clang cmdbridge-server designer doc +help keyring plugin-dev
qmldesigner serialterminal +svg test +tracing webengine
"
REQUIRED_USE="clang? ( ${LLVM_REQUIRED_USE} )"
RESTRICT="!test? ( test )"
QT_PV=6.7.3:6
# := is used where Qt's private APIs are used for safety
COMMON_DEPEND="
app-arch/libarchive:=
dev-cpp/yaml-cpp:=
>=dev-qt/qt5compat-${QT_PV}
>=dev-qt/qtbase-${QT_PV}=[concurrent,dbus,gui,network,ssl,widgets,xml]
>=dev-qt/qtdeclarative-${QT_PV}=
sys-libs/zlib:=
clang? (
$(llvm_gen_dep '
llvm-core/clang:${LLVM_SLOT}=
llvm-core/llvm:${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}
>=dev-qt/qtwebsockets-${QT_PV}
webengine? ( >=dev-qt/qtwebengine-${QT_PV} )
)
serialterminal? ( >=dev-qt/qtserialport-${QT_PV} )
svg? ( >=dev-qt/qtsvg-${QT_PV} )
tracing? (
app-arch/zstd:=
dev-libs/elfutils
>=dev-qt/qtcharts-${QT_PV}
>=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}"
# intentionally skipping := on go (unlike go-module.eclass) given not
# worth a massive rebuild every time for the minor go usage
BDEPEND="
${PYTHON_DEPS}
>=dev-qt/qttools-${QT_PV}[linguist]
cmdbridge-server? ( >=dev-lang/go-1.21.7 )
doc? ( >=dev-qt/qttools-${QT_PV}[qdoc,qtattributionsscanner] )
"
PATCHES=(
"${FILESDIR}"/${PN}-16.0.0-musl-no-execinfo.patch
"${FILESDIR}"/${PN}-12.0.0-musl-no-malloc-trim.patch
)
QA_FLAGS_IGNORED="usr/libexec/qtcreator/cmdbridge-.*" # written in Go
src_unpack() {
if [[ ${PV} == 9999 ]]; then
git-r3_src_unpack
if use cmdbridge-server; then
cd -- "${S}"/src/libs/gocmdbridge/server || die
edo go mod vendor
fi
else
default
fi
}
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
# avoid stripping for Go, use sed to avoid rebases as may be there forever
sed -i 's/-s -w //' src/libs/gocmdbridge/server/CMakeLists.txt || die
# avoid building manual tests (aka not ran) for nothing (bug #950010)
sed -i '/add_subdirectory(manual)/d' tests/CMakeLists.txt || 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() {
use clang && llvm_chost_setup
if use cmdbridge-server; then
go-env_set_compile_environment
export GOFLAGS="-p=$(makeopts_jobs) -v -x -buildvcs=false -buildmode=pie"
fi
# -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_DEVELOPER_DOCS=$(usex doc)
-DBUILD_DOCS_BY_DEFAULT=$(usex doc)
-DBUILD_WITH_PCH=no
-DWITH_DOCS=$(usex doc)
-DWITH_TESTS=$(usex test)
# sticking to bundled for now until it switches to KF6's
-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_APPSTATISTICSMONITOR=$(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)
# help shouldn't use with the above, but qmldesigner is automagic
$(use help || use qmldesigner &&
cmake_use_find_package webengine Qt6WebEngineWidgets)
-DBUILD_PLUGIN_SERIALTERMINAL=$(usex serialterminal)
-DENABLE_SVG_SUPPORT=$(usex svg)
$(usev !cmdbridge-server -DGO_BIN=GO_BIN-NOTFOUND) #945925
-DWITH_QMLDESIGNER=$(usex qmldesigner)
# meant to be in sync with qtbase[journald], but think(?) not worth
# handling given qt-creator can use QT_FORCE_STDERR_LOGGING=1 nowadays
-Djournald=no
# 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_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:
- AppStatisticsMonitor (USE=tracing)
- 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
}