commit: 96837e4d39ffa0a8da392fa0039b80c72e56c234 Author: Jimi Huotari <chiitoo <AT> gentoo <DOT> org> AuthorDate: Wed May 25 22:40:57 2022 +0000 Commit: Sam James <sam <AT> gentoo <DOT> org> CommitDate: Tue Aug 2 21:49:46 2022 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=96837e4d
dev-qt/qtbase: new package Version 6.3.1 qtbase in non-split form. Bug: https://bugs.gentoo.org/838970 Package-Manager: Portage-3.0.30, Repoman-3.0.3 Signed-off-by: Jimi Huotari <chiitoo <AT> gentoo.org> Signed-off-by: Sam James <sam <AT> gentoo.org> dev-qt/qtbase/Manifest | 1 + dev-qt/qtbase/metadata.xml | 38 ++++++++ dev-qt/qtbase/qtbase-6.3.1.ebuild | 178 ++++++++++++++++++++++++++++++++++++++ eclass/qt6-build.eclass | 161 ++++++++++++++++++++++++++++++++++ 4 files changed, 378 insertions(+) diff --git a/dev-qt/qtbase/Manifest b/dev-qt/qtbase/Manifest new file mode 100644 index 000000000000..7501b9d04ca4 --- /dev/null +++ b/dev-qt/qtbase/Manifest @@ -0,0 +1 @@ +DIST qtbase-everywhere-src-6.3.1.tar.xz 47118260 BLAKE2B b8b819330011033275d9532219bf09cce3ef1e7d8e50945b1cdeceddf3742c1ee4a1bba9d4340f1f6b48fd59659920c3652abf21bbd8b4bbed0c635a3caafb0c SHA512 5c4304dc1f5fa80201b61c9c8dbf4c3449506a243ea1f87e336dc3641a37b9d40c2aa4a93190cc69ddde0f349c74e327c35de5f46de888ddfd49616903e8a7b5 diff --git a/dev-qt/qtbase/metadata.xml b/dev-qt/qtbase/metadata.xml new file mode 100644 index 000000000000..809758b7ae0e --- /dev/null +++ b/dev-qt/qtbase/metadata.xml @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="project"> + <email>[email protected]</email> + <name>Gentoo Qt Project</name> + </maintainer> + <use> + <flag name="brotli">Enable support for Brotli decompression</flag> + <flag name="concurrent">Build Qt6Concurrent module</flag> + <flag name="dbus">Build Qt6DBus module</flag> + <flag name="egl">Enable EGL integration</flag> + <flag name="eglfs">Build the EGL Full Screen/Single Surface platform plugin</flag> + <flag name="evdev">Enable support for input devices via evdev</flag> + <flag name="gssapi">Enable support for GSSAPI (<pkg>virtual/krb5</pkg>)</flag> + <flag name="gtk">Build the GTK platform theme plugin</flag> + <flag name="gui">Build Qt6Gui module</flag> + <flag name="libinput">Enable support for input devices via <pkg>dev-libs/libinput</pkg></flag> + <flag name="libproxy">Use <pkg>net-libs/libproxy</pkg> for automatic HTTP/SOCKS proxy configuration</flag> + <flag name="network">Build Qt6Network module</flag> + <flag name="sql">Build Qt6Sql module</flag> + <flag name="systemd">Enable native journald logging support</flag> + <flag name="tslib">Enable support for touchscreen devices via <pkg>x11-libs/tslib</pkg></flag> + <flag name="tuio">Build plugin to receive touch events over the TUIO protocol</flag> + <flag name="vulkan">Enable support for Vulkan</flag> + <flag name="widgets">Build Qt6Widgets module</flag> + <flag name="X">Build the XCB platform plugin and enable X11 integration</flag> + </use> + <upstream> + <bugs-to>https://bugreports.qt.io/</bugs-to> + <doc>https://doc.qt.io/</doc> + </upstream> + <slots> + <subslots> + Must only be used by packages that are known to use private parts of the Qt API. + </subslots> + </slots> +</pkgmetadata> diff --git a/dev-qt/qtbase/qtbase-6.3.1.ebuild b/dev-qt/qtbase/qtbase-6.3.1.ebuild new file mode 100644 index 000000000000..36931e0ea933 --- /dev/null +++ b/dev-qt/qtbase/qtbase-6.3.1.ebuild @@ -0,0 +1,178 @@ +# Copyright 2021-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit qt6-build + +DESCRIPTION="Cross-platform application development framework" + +if [[ ${QT6_BUILD_TYPE} == release ]]; then + KEYWORDS="~amd64" +fi + +# Qt Modules +# TODO: Restore/patch xml flag support (seems fixed in 6.9999). +IUSE="+concurrent +dbus +gui +network +sql opengl +widgets zstd" +REQUIRED_USE=" + opengl? ( gui ) + widgets? ( gui ) + X? ( || ( evdev libinput ) ) +" + +QTGUI_IUSE="accessibility egl eglfs evdev gles2-only +jpeg +libinput tslib tuio vulkan +X" +QTNETWORK_IUSE="brotli gssapi libproxy sctp +ssl vnc" +QTSQL_IUSE="freetds mysql oci8 odbc postgres +sqlite" +IUSE+=" ${QTGUI_IUSE} ${QTNETWORK_IUSE} ${QTSQL_IUSE} cups gtk icu systemd +udev" +# QtPrintSupport = QtGui + QtWidgets enabled. +# ibus = xkbcommon + dbus, and xkbcommon needs either libinput or X +REQUIRED_USE+=" + $(printf '%s? ( gui ) ' ${QTGUI_IUSE//+/}) + $(printf '%s? ( network ) ' ${QTNETWORK_IUSE//+/}) + $(printf '%s? ( sql ) ' ${QTSQL_IUSE//+/}) + accessibility? ( dbus X ) + cups? ( gui widgets ) + eglfs? ( egl ) + gtk? ( widgets ) + gui? ( || ( eglfs X ) || ( libinput X ) ) + libinput? ( udev ) + sql? ( || ( freetds mysql oci8 odbc postgres sqlite ) ) + vnc? ( gui ) + X? ( gles2-only? ( egl ) ) +" + +# TODO: +# qtimageformats: mng not done yet, qtimageformats.git upstream commit 9443239c +# qtnetwork: connman, networkmanager +DEPEND=" + app-crypt/libb2 + dev-libs/double-conversion:= + dev-libs/glib:2 + dev-libs/libpcre2:=[pcre16,unicode] + dev-util/gtk-update-icon-cache + media-libs/fontconfig + >=media-libs/freetype-2.6.1:2 + >=media-libs/harfbuzz-1.6.0:= + media-libs/tiff:0 + >=sys-apps/dbus-1.4.20 + sys-libs/zlib:= + brotli? ( app-arch/brotli:= ) + evdev? ( sys-libs/mtdev ) + freetds? ( dev-db/freetds ) + gles2-only? ( media-libs/libglvnd ) + !gles2-only? ( media-libs/libglvnd[X] ) + gssapi? ( virtual/krb5 ) + gtk? ( + x11-libs/gtk+:3 + x11-libs/libX11 + x11-libs/pango + ) + gui? ( media-libs/libpng:0= ) + icu? ( dev-libs/icu:= ) + !icu? ( virtual/libiconv ) + jpeg? ( media-libs/libjpeg-turbo:= ) + libinput? ( + dev-libs/libinput:= + >=x11-libs/libxkbcommon-0.5.0 + ) + libproxy? ( net-libs/libproxy ) + mysql? ( dev-db/mysql-connector-c:= ) + oci8? ( dev-db/oracle-instantclient:=[sdk] ) + odbc? ( dev-db/unixODBC ) + postgres? ( dev-db/postgresql:* ) + sctp? ( kernel_linux? ( net-misc/lksctp-tools ) ) + sqlite? ( dev-db/sqlite:3 ) + ssl? ( dev-libs/openssl:= ) + systemd? ( sys-apps/systemd:= ) + tslib? ( >=x11-libs/tslib-1.21 ) + udev? ( virtual/libudev:= ) + vulkan? ( dev-util/vulkan-headers ) + X? ( + x11-libs/libdrm + x11-libs/libICE + x11-libs/libSM + x11-libs/libX11 + >=x11-libs/libxcb-1.12:=[xkb] + >=x11-libs/libxkbcommon-0.5.0[X] + x11-libs/xcb-util-image + x11-libs/xcb-util-keysyms + x11-libs/xcb-util-renderutil + x11-libs/xcb-util-wm + ) + zstd? ( app-arch/zstd:= ) +" +RDEPEND="${DEPEND}" + +src_configure() { + local mycmakeargs=( + -DINSTALL_BINDIR=${QT6_BINDIR} + -DINSTALL_INCLUDEDIR=${QT6_HEADERDIR} + -DINSTALL_LIBDIR=${QT6_LIBDIR} + -DINSTALL_ARCHDATADIR=${QT6_ARCHDATADIR} + -DINSTALL_PLUGINSDIR=${QT6_PLUGINDIR} + -DINSTALL_LIBEXECDIR=${QT6_LIBEXECDIR} + -DINSTALL_QMLDIR=${QT6_QMLDIR} + -DINSTALL_DATADIR=${QT6_DATADIR} + -DINSTALL_DOCDIR=${QT6_DOCDIR} + -DINSTALL_TRANSLATIONSDIR=${QT6_TRANSLATIONDIR} + -DINSTALL_SYSCONFDIR=${QT6_SYSCONFDIR} + -DINSTALL_MKSPECSDIR=${QT6_ARCHDATADIR}/mkspecs + -DINSTALL_EXAMPLESDIR=${QT6_EXAMPLESDIR} + -DQT_FEATURE_androiddeployqt=OFF + $(qt_feature concurrent) + $(qt_feature dbus) + $(qt_feature gui) + $(qt_feature gui testlib) + $(qt_feature icu) + $(qt_feature network) + $(qt_feature sql) + $(qt_feature systemd journald) + $(qt_feature udev libudev) + $(qt_feature zstd) + ) + use gui && mycmakeargs+=( + $(qt_feature accessibility accessibility_atspi_bridge) + $(qt_feature egl) + $(qt_feature eglfs eglfs_egldevice) + $(qt_feature eglfs eglfs_gbm) + $(qt_feature evdev) + $(qt_feature evdev mtdev) + -DQT_FEATURE_gif=ON + $(qt_feature jpeg) + $(qt_feature opengl) + $(qt_feature gles2-only opengles2) + $(qt_feature libinput) + $(qt_feature tslib) + $(qt_feature tuio tuiotouch) + $(qt_feature vulkan) + $(qt_feature widgets) + $(qt_feature X xcb) + $(qt_feature X xcb_xlib) + ) + use widgets && mycmakeargs+=( + $(qt_feature cups) + $(qt_feature gtk gtk3) + ) + if use libinput || use X; then + mycmakeargs+=( -DQT_FEATURE_xkbcommon=ON ) + fi + use network && mycmakeargs+=( + $(qt_feature brotli) + $(qt_feature gssapi) + $(qt_feature libproxy) + $(qt_feature sctp) + $(qt_feature ssl openssl) + $(qt_feature vnc) + ) + use sql && mycmakeargs+=( + $(qt_feature freetds sql_tds) + $(qt_feature mysql sql_mysql) + $(qt_feature oci8 sql_oci) + $(qt_feature odbc sql_odbc) + $(qt_feature postgres sql_psql) + $(qt_feature sqlite sql_sqlite) + $(qt_feature sqlite system_sqlite) + ) + + qt6-build_src_configure +} diff --git a/eclass/qt6-build.eclass b/eclass/qt6-build.eclass new file mode 100644 index 000000000000..139fb03e17f4 --- /dev/null +++ b/eclass/qt6-build.eclass @@ -0,0 +1,161 @@ +# Copyright 2021-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +# @ECLASS: qt6-build.eclass +# @MAINTAINER: +# [email protected] +# @SUPPORTED_EAPIS: 8 +# @BLURB: Eclass for Qt6 split ebuilds. +# @DESCRIPTION: +# This eclass contains various functions that are used when building Qt6. +# Requires EAPI 8. + +if [[ ${CATEGORY} != dev-qt ]]; then + die "qt6-build.eclass is only to be used for building Qt 6" +fi + +case ${EAPI} in + 8) : ;; + *) die "qt6-build.eclass: unsupported EAPI=${EAPI:-0}" ;; +esac + +# @ECLASS-VARIABLE: QT6_MODULE +# @PRE_INHERIT +# @DESCRIPTION: +# The upstream name of the module this package belongs to. Used for +# SRC_URI and EGIT_REPO_URI. Must be set before inheriting the eclass. +: ${QT6_MODULE:=${PN}} + +# @ECLASS-VARIABLE: VIRTUALX_REQUIRED +# @DESCRIPTION: +# For proper description see virtualx.eclass man page. +# Here we redefine default value to be manual, if your package needs virtualx +# for tests you should proceed with setting VIRTUALX_REQUIRED=test. +: ${VIRTUALX_REQUIRED:=manual} + +inherit cmake virtualx + +HOMEPAGE="https://www.qt.io/" +LICENSE="|| ( GPL-2 GPL-3 LGPL-3 ) FDL-1.3" +SLOT=6/$(ver_cut 1-2) + +QT6_MINOR_VERSION=$(ver_cut 2) +readonly QT6_MINOR_VERSION + +case ${PV} in + 6.9999) + # git dev branch + QT6_BUILD_TYPE="live" + EGIT_BRANCH="dev" + ;; + 6.?.9999|6.??.9999) + # git stable branch + QT6_BUILD_TYPE="live" + EGIT_BRANCH=${PV%.9999} + ;; + *_alpha*|*_beta*|*_rc*) + # development release + QT6_BUILD_TYPE="release" + MY_P=${QT6_MODULE}-everywhere-src-${PV/_/-} + SRC_URI="https://download.qt.io/development_releases/qt/${PV%.*}/${PV/_/-}/submodules/${MY_P}.tar.xz" + S=${WORKDIR}/${MY_P} + ;; + *) + # official stable release + QT6_BUILD_TYPE="release" + MY_P=${QT6_MODULE}-everywhere-src-${PV} + SRC_URI="https://download.qt.io/official_releases/qt/${PV%.*}/${PV}/submodules/${MY_P}.tar.xz" + S=${WORKDIR}/${MY_P} + ;; +esac +readonly QT6_BUILD_TYPE + +EGIT_REPO_URI=( + "https://code.qt.io/qt/${QT6_MODULE}.git" + "https://github.com/qt/${QT6_MODULE}.git" +) +[[ ${QT6_BUILD_TYPE} == live ]] && inherit git-r3 + +# @ECLASS-VARIABLE: QT6_BUILD_DIR +# @OUTPUT_VARIABLE +# @DESCRIPTION: +# Build directory for out-of-source builds. +: ${QT6_BUILD_DIR:=${S}_build} + +IUSE="debug test" + +if [[ ${QT6_BUILD_TYPE} == release ]]; then + RESTRICT="test" # bug 457182 +else + RESTRICT="!test? ( test )" +fi + +BDEPEND=" + dev-lang/perl + virtual/pkgconfig +" +# TODO: Tests have not been split from qtbase. +#if [[ ${PN} != qttest ]]; then +# DEPEND+=" test? ( ~dev-qt/qttest-${PV} )" +#fi + +EXPORT_FUNCTIONS src_prepare src_configure + +###### Phase functions ###### + +# @FUNCTION: qt6-build_src_prepare +# @DESCRIPTION: +# Prepares the environment and patches the sources if necessary. +qt6-build_src_prepare() { + qt6_prepare_env + + cmake_src_prepare +} + +# @FUNCTION: qt6-build_src_configure +# @DESCRIPTION: +# Configures sources. +qt6-build_src_configure() { + cmake_src_configure +} + +###### Public helpers ###### + +# @FUNCTION: qt_feature +# @USAGE: <flag> [feature] +# @DESCRIPTION: +# <flag> is the name of a flag in IUSE. +qt_feature() { + [[ $# -ge 1 ]] || die "${FUNCNAME}() requires at least one argument" + echo "-DQT_FEATURE_${2:-$1}=$(usex $1 ON OFF)" +} + +###### Internal functions ###### + +# @FUNCTION: qt6_prepare_env +# @INTERNAL +# @DESCRIPTION: +# Prepares the environment for building Qt. +qt6_prepare_env() { + # setup installation directories + # note: keep paths in sync with qmake-utils.eclass + QT6_PREFIX=${EPREFIX}/usr + QT6_HEADERDIR=${QT6_PREFIX}/include/qt6 + QT6_LIBDIR=${QT6_PREFIX}/$(get_libdir) + QT6_ARCHDATADIR=${QT6_PREFIX}/$(get_libdir)/qt6 + QT6_BINDIR=${QT6_ARCHDATADIR}/bin + QT6_PLUGINDIR=${QT6_ARCHDATADIR}/plugins + QT6_LIBEXECDIR=${QT6_ARCHDATADIR}/libexec + QT6_IMPORTDIR=${QT6_ARCHDATADIR}/imports + QT6_QMLDIR=${QT6_ARCHDATADIR}/qml + QT6_DATADIR=${QT6_PREFIX}/share/qt6 + QT6_DOCDIR=${QT6_PREFIX}/share/qt6-doc + QT6_TRANSLATIONDIR=${QT6_DATADIR}/translations + QT6_EXAMPLESDIR=${QT6_DATADIR}/examples + QT6_TESTSDIR=${QT6_DATADIR}/tests + QT6_SYSCONFDIR=${EPREFIX}/etc/xdg + readonly QT6_PREFIX QT6_HEADERDIR QT6_LIBDIR QT6_ARCHDATADIR \ + QT6_BINDIR QT6_PLUGINDIR QT6_LIBEXECDIR QT6_IMPORTDIR \ + QT6_QMLDIR QT6_DATADIR QT6_DOCDIR QT6_TRANSLATIONDIR \ + QT6_EXAMPLESDIR QT6_TESTSDIR QT6_SYSCONFDIR +}
