forked from gentoo/gentoo
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Signed-off-by: Ionen Wolkens <[email protected]>
- Loading branch information
Showing
2 changed files
with
269 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,3 @@ | ||
DIST qt-creator-opensource-src-13.0.2.tar.xz 51881672 BLAKE2B 88a5f3b88f444fda59e61c098fe5d4324a6bafb9e552c261d1b5337fb4fe3ecbe59411aaf1c5d77a8d688f8248dd10d28f63c326c53b763912a1085c93963c2a SHA512 0b065dfb5eed95d1c50c39b49ea555f49b323d150e001001ae7ce50ad2cc4c47a8476def6397c8b7c3e26750442afb9df7a93a0ebece79dc84a879a3552da2ac | ||
DIST qt-creator-opensource-src-14.0.0.tar.xz 52488544 BLAKE2B 8ac32b41d9791a6a94c38edf6878aae7acf4520b362f043d38e0b6097a45bbea0368953b0038e64ae32697389921bab701d1daeee787fb30206c6496374b41db SHA512 75a0b2cd3e89f0c98710e43354d75d593d441b845475d5345b5784378054edd8b426bf7cf4b326ce9a56c1a2b8a2f136254f77525441528ff32c2c4a6fb441cc | ||
DIST qt-creator-opensource-src-14.0.1.tar.xz 52495220 BLAKE2B a93111abdc39550c18c8ecae9bbb8c645a06be373b179bca47dac4b9e9907c9a7d9c8b13a6cc834c656cd7d7e5a849a6512f8b48055ecc8ea32a0f56f6439176 SHA512 5ceacce80cd5cdef99606ca371134e5e8a5897b67ff1a52d202449e74e817bce22ee31b029b6f8643e19700742ddd8e616a48f005aae0720f200c3b03f8eab9a |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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.5.4: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,widgets,xml] | ||
>=dev-qt/qtdeclarative-${QT_PV}= | ||
clang? ( | ||
$(llvm_gen_dep ' | ||
sys-devel/clang:${LLVM_SLOT}= | ||
sys-devel/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} | ||
) | ||
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_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_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) | ||
|
||
# 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: | ||
- 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 | ||
} |