Skip to content

Commit

Permalink
dev-qt/qt-creator: add 14.0.1
Browse files Browse the repository at this point in the history
Signed-off-by: Ionen Wolkens <[email protected]>
  • Loading branch information
ionenwks committed Aug 7, 2024
1 parent cfcfa11 commit 94a28fb
Show file tree
Hide file tree
Showing 2 changed files with 269 additions and 0 deletions.
1 change: 1 addition & 0 deletions dev-qt/qt-creator/Manifest
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
268 changes: 268 additions & 0 deletions dev-qt/qt-creator/qt-creator-14.0.1.ebuild
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
}

0 comments on commit 94a28fb

Please sign in to comment.