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
+}

Reply via email to