summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIonen Wolkens <ionen@gentoo.org>2023-08-24 20:02:27 -0400
committerIonen Wolkens <ionen@gentoo.org>2023-09-05 09:01:08 -0400
commit349d599c0fa3dfc93991ee42f83127a3a28a95a5 (patch)
tree161e526dca6bfae7c0a185adcb22dcd5976ac544 /dev-qt/qtbase
parentdev-qt/qtwayland: make qml optional (qt6) (diff)
downloadgentoo-349d599c0fa3dfc93991ee42f83127a3a28a95a5.tar.gz
gentoo-349d599c0fa3dfc93991ee42f83127a3a28a95a5.tar.bz2
gentoo-349d599c0fa3dfc93991ee42f83127a3a28a95a5.zip
dev-qt/qtbase: refactor use/dependences handling
Lot of changes here give a full review and re-organizing, so unfortunately not going to talk about everything. For IUSE removals: * freetds (disabled): was a no-op, upstream has the subdir commented out with a "TODO" * jpeg (enabled): we already do this for png and IMO should be extended to jpeg as about anyone with USE=gui will have libjpeg-turbo either way and it saves headaches for revdeps * egl (enabled with USE=opengl): same dependency as USE=opengl and if we try to force egl without opengl (like we were despite upstream otherwise auto-disables) this results in a build failure * vnc+tuio (enabled with USE="gui network"): being a USE made more sense in qt5 given needed to depend on qtnetwork Notable REQUIRED_USE changes: * add wayland as an alternative to X and eglfs, eglfs is intended for embedded devices (without a WM) and is not necessary for normal wayland to work (technically this requirement is still not entirely right given other options exists, a postinst to warn when have nothing set could be an alternative) * drop || ( evdev libinput ) as a requirement, normally Qt does not need to handle mouse&keyboard events by itself and this again is for embedded devices (however keeping libinput by default as I believe it may be needed for gamepads and other special devices) Tried to make this bit easier to maintain by making the split between groups clearer, and also removed some options and left them to Qt to set based on others (there is a *lot* that could be passed and it'd be unmaintainable -- can always consider specifics if users need something special though). About options, -DFEATURE_reduce_relocations=ON is notably better removed as it can apparently break things on some arches if forced. wrt bug #899546, libglvnd is now optional (with [X?] too), and this removes gtk-update-icon-cache altegether. Latter is only used by one sub-test (unimportant and auto-skipped if missing), albeit qtgui can use icon cache if *other* packages used this command which means it really belong in their IDEPEND (xdg.eclass does this for EAPI=8). Closes: https://bugs.gentoo.org/899546 Signed-off-by: Ionen Wolkens <ionen@gentoo.org>
Diffstat (limited to 'dev-qt/qtbase')
-rw-r--r--dev-qt/qtbase/metadata.xml2
-rw-r--r--dev-qt/qtbase/qtbase-6.5.2-r1.ebuild (renamed from dev-qt/qtbase/qtbase-6.5.2.ebuild)225
-rw-r--r--dev-qt/qtbase/qtbase-6.5.9999.ebuild225
-rw-r--r--dev-qt/qtbase/qtbase-6.9999.ebuild225
4 files changed, 366 insertions, 311 deletions
diff --git a/dev-qt/qtbase/metadata.xml b/dev-qt/qtbase/metadata.xml
index 01dedc969a1b..573775d954fd 100644
--- a/dev-qt/qtbase/metadata.xml
+++ b/dev-qt/qtbase/metadata.xml
@@ -9,7 +9,6 @@
<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>
@@ -21,7 +20,6 @@
<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="widgets">Build Qt6Widgets module</flag>
<flag name="X">Build the XCB platform plugin and enable X11 integration</flag>
</use>
diff --git a/dev-qt/qtbase/qtbase-6.5.2.ebuild b/dev-qt/qtbase/qtbase-6.5.2-r1.ebuild
index 4bd5f7c95c60..cadf0551b78f 100644
--- a/dev-qt/qtbase/qtbase-6.5.2.ebuild
+++ b/dev-qt/qtbase/qtbase-6.5.2-r1.ebuild
@@ -11,106 +11,119 @@ if [[ ${QT6_BUILD_TYPE} == release ]]; then
KEYWORDS="~amd64"
fi
-# Qt Modules
-IUSE="+concurrent +dbus +gui +network +sql opengl +widgets +xml zstd"
-REQUIRED_USE="
- opengl? ( gui )
- widgets? ( gui )
-"
+declare -A QT6_IUSE=(
+ [global]="+ssl +udev zstd"
+ [core]="icu systemd"
+ [modules]="+concurrent +dbus +gui +network +sql +xml"
+
+ [gui]="
+ +X accessibility eglfs evdev gles2-only +libinput
+ opengl tslib vulkan +widgets
+ "
+ [network]="brotli gssapi libproxy sctp"
+ [sql]="mysql oci8 odbc postgres +sqlite"
+ [widgets]="cups gtk"
-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 wayland"
-# QtPrintSupport = QtGui + QtWidgets enabled.
-# ibus = xkbcommon + dbus, and xkbcommon needs either X or libinput
-REQUIRED_USE+="
+ [optfeature]="wayland" #864509
+)
+IUSE="${QT6_IUSE[*]}"
+REQUIRED_USE="
$(
- printf '%s? ( gui ) ' ${QTGUI_IUSE//+/}
- printf '%s? ( network ) ' ${QTNETWORK_IUSE//+/}
- printf '%s? ( sql ) ' ${QTSQL_IUSE//+/}
- )
- X? (
- || ( evdev libinput )
- gles2-only? ( egl )
+ printf '%s? ( gui ) ' ${QT6_IUSE[gui]//+/}
+ printf '%s? ( network ) ' ${QT6_IUSE[network]//+/}
+ printf '%s? ( sql ) ' ${QT6_IUSE[sql]//+/}
+ printf '%s? ( gui widgets ) ' ${QT6_IUSE[widgets]//+/}
)
accessibility? ( X dbus )
- cups? ( gui widgets )
- eglfs? ( egl )
- gtk? ( widgets )
- gui? ( || ( X eglfs ) || ( X libinput ) )
+ eglfs? ( opengl )
+ gui? ( || ( X eglfs wayland ) )
libinput? ( udev )
- sql? ( || ( freetds mysql oci8 odbc postgres sqlite ) )
+ sql? ( || ( ${QT6_IUSE[sql]//+/} ) )
test? (
- gui jpeg icu
+ gui icu
sql? ( sqlite )
)
- vnc? ( gui )
"
-# TODO:
-# qtimageformats: mng not done yet, qtimageformats.git upstream commit 9443239c
-# qtnetwork: connman, networkmanager
+# groups:
+# - global (configure.cmake)
+# - qtcore (src/corelib/configure.cmake)
+# - qtgui (src/gui/configure.cmake)
+# - qtnetwork (src/network/configure.cmake)
+# - qtprintsupport (src/printsupport/configure.cmake) [gui+widgets]
+# - qtsql (src/plugins/sqldrivers/configure.cmake)
RDEPEND="
+ sys-libs/zlib:=
+ ssl? ( dev-libs/openssl:= )
+ udev? ( virtual/libudev:= )
+ zstd? ( app-arch/zstd:= )
+
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:=
- >=sys-apps/dbus-1.4.20
- sys-libs/zlib:=
- X? (
+ dev-libs/libpcre2:=[pcre16,unicode(+)]
+ icu? ( dev-libs/icu:= )
+ systemd? ( sys-apps/systemd:= )
+
+ dbus? ( sys-apps/dbus )
+ gui? (
+ media-libs/fontconfig
+ media-libs/freetype:2
+ media-libs/harfbuzz:=
+ media-libs/libjpeg-turbo:=
+ media-libs/libpng:=
x11-libs/libdrm
- x11-libs/libICE
- x11-libs/libSM
- x11-libs/libX11
- >=x11-libs/libxcb-1.12:=
- >=x11-libs/libxkbcommon-0.5.0[X]
- x11-libs/xcb-util-cursor
- x11-libs/xcb-util-image
- x11-libs/xcb-util-keysyms
- x11-libs/xcb-util-renderutil
- x11-libs/xcb-util-wm
+ x11-libs/libxkbcommon[X?]
+ X? (
+ x11-libs/libICE
+ x11-libs/libSM
+ x11-libs/libX11
+ x11-libs/libxcb:=
+ x11-libs/xcb-util-cursor
+ x11-libs/xcb-util-image
+ x11-libs/xcb-util-keysyms
+ x11-libs/xcb-util-renderutil
+ x11-libs/xcb-util-wm
+ )
+ accessibility? ( app-accessibility/at-spi2-core:2 )
+ eglfs? ( media-libs/mesa[gbm(+)] )
+ evdev? ( sys-libs/mtdev )
+ libinput? ( dev-libs/libinput:= )
+ opengl? ( media-libs/libglvnd[X?] )
+ tslib? ( x11-libs/tslib )
+ widgets? (
+ cups? ( net-print/cups )
+ gtk? (
+ x11-libs/gdk-pixbuf:2
+ x11-libs/gtk+:3
+ x11-libs/pango
+ )
+ )
)
- 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
+ network? (
+ brotli? ( app-arch/brotli:= )
+ gssapi? ( virtual/krb5 )
+ libproxy? ( net-libs/libproxy )
)
- gui? ( media-libs/libpng:= )
- icu? ( dev-libs/icu:= )
- !icu? ( virtual/libiconv )
- jpeg? ( media-libs/libjpeg-turbo:= )
- libinput? (
- dev-libs/libinput:=
- >=x11-libs/libxkbcommon-0.5.0
+ sql? (
+ mysql? ( dev-db/mysql-connector-c:= )
+ oci8? ( dev-db/oracle-instantclient:=[sdk] )
+ odbc? ( dev-db/unixODBC )
+ postgres? ( dev-db/postgresql:* )
+ sqlite? ( dev-db/sqlite:3 )
)
- 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 )
- zstd? ( app-arch/zstd:= )
"
-DEPEND="${RDEPEND}"
-PDEPEND="wayland? ( =dev-qt/qtwayland-${PV}*:6 )" #864509
+DEPEND="
+ ${RDEPEND}
+ X? ( x11-base/xorg-proto )
+ gui? (
+ vulkan? ( dev-util/vulkan-headers )
+ )
+ network? (
+ sctp? ( net-misc/lksctp-tools )
+ )
+"
+PDEPEND="wayland? ( =dev-qt/qtwayland-${PV}*:6 )"
PATCHES=(
"${FILESDIR}"/${P}-CVE-2023-38197.patch
@@ -142,57 +155,62 @@ src_configure() {
-DINSTALL_QMLDIR="${QT6_QMLDIR}"
-DINSTALL_SYSCONFDIR="${QT6_SYSCONFDIR}"
-DINSTALL_TRANSLATIONSDIR="${QT6_TRANSLATIONDIR}"
+
+ -DQT_FEATURE_precompile_header=OFF
+ $(qt_feature ssl openssl)
+ $(qt_feature ssl openssl_linked)
+ $(qt_feature udev libudev)
+ $(qt_feature zstd)
+
+ # qtcore
+ $(qt_feature icu)
+ $(qt_feature systemd journald)
+
+ # tools
-DQT_FEATURE_androiddeployqt=OFF
+
+ # modules
$(qt_feature concurrent)
$(qt_feature dbus)
$(qt_feature gui)
- $(qt_feature gui testlib)
- $(qt_feature icu)
+ $(qt_feature gui testlib) # shared w/ gui
$(qt_feature network)
$(qt_feature sql)
- $(qt_feature systemd journald)
- $(qt_feature udev libudev)
$(qt_feature xml)
- $(qt_feature zstd)
)
+
use gui && mycmakeargs+=(
$(qt_feature X xcb)
- $(qt_feature X xcb_xlib)
+ $(qt_feature X system_xcb_xinput)
+ $(qt_feature X xkbcommon_x11)
+ $(cmake_use_find_package X X11) # needed for truly no automagic
$(qt_feature accessibility accessibility_atspi_bridge)
- $(qt_feature egl)
- $(qt_feature egl xcb_egl_plugin)
- $(qt_feature eglfs eglfs_egldevice)
- $(qt_feature eglfs eglfs_gbm)
+ $(qt_feature eglfs)
$(qt_feature evdev)
$(qt_feature evdev mtdev)
- -DQT_FEATURE_gif=ON
$(qt_feature gles2-only opengles2)
- $(qt_feature jpeg)
$(qt_feature libinput)
$(qt_feature opengl)
$(qt_feature tslib)
- $(qt_feature tuio tuiotouch)
$(qt_feature vulkan)
$(qt_feature widgets)
- )
- use widgets && mycmakeargs+=(
- $(qt_feature cups)
+ -DQT_FEATURE_system_textmarkdownreader=OFF # TODO?: package md4c
+ ) && use widgets && mycmakeargs+=(
+ $(qt_feature cups) # qtprintsupport is enabled w/ gui+widgets
$(qt_feature gtk gtk3)
)
- if use X || use libinput; 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)
$(usev test -DQT_SKIP_DOCKER_COMPOSE=ON)
)
+
use sql && mycmakeargs+=(
- $(qt_feature freetds sql_tds)
+ -DQT_FEATURE_sql_db2=OFF # unpackaged
+ -DQT_FEATURE_sql_ibase=OFF # unpackaged
$(qt_feature mysql sql_mysql)
$(qt_feature oci8 sql_oci)
$(usev oci8 -DOracle_ROOT="${ESYSROOT}"/usr/$(get_libdir)/oracle/client)
@@ -200,6 +218,7 @@ src_configure() {
$(qt_feature postgres sql_psql)
$(qt_feature sqlite sql_sqlite)
$(qt_feature sqlite system_sqlite)
+ -DQT_FEATURE_sql_tds=OFF # currently a no-op in CMakeLists.txt
)
qt6-build_src_configure
diff --git a/dev-qt/qtbase/qtbase-6.5.9999.ebuild b/dev-qt/qtbase/qtbase-6.5.9999.ebuild
index 94a8d5840093..4f0ba7ab377b 100644
--- a/dev-qt/qtbase/qtbase-6.5.9999.ebuild
+++ b/dev-qt/qtbase/qtbase-6.5.9999.ebuild
@@ -11,106 +11,119 @@ if [[ ${QT6_BUILD_TYPE} == release ]]; then
KEYWORDS="~amd64"
fi
-# Qt Modules
-IUSE="+concurrent +dbus +gui +network +sql opengl +widgets +xml zstd"
-REQUIRED_USE="
- opengl? ( gui )
- widgets? ( gui )
-"
+declare -A QT6_IUSE=(
+ [global]="+ssl +udev zstd"
+ [core]="icu systemd"
+ [modules]="+concurrent +dbus +gui +network +sql +xml"
+
+ [gui]="
+ +X accessibility eglfs evdev gles2-only +libinput
+ opengl tslib vulkan +widgets
+ "
+ [network]="brotli gssapi libproxy sctp"
+ [sql]="mysql oci8 odbc postgres +sqlite"
+ [widgets]="cups gtk"
-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 wayland"
-# QtPrintSupport = QtGui + QtWidgets enabled.
-# ibus = xkbcommon + dbus, and xkbcommon needs either X or libinput
-REQUIRED_USE+="
+ [optfeature]="wayland" #864509
+)
+IUSE="${QT6_IUSE[*]}"
+REQUIRED_USE="
$(
- printf '%s? ( gui ) ' ${QTGUI_IUSE//+/}
- printf '%s? ( network ) ' ${QTNETWORK_IUSE//+/}
- printf '%s? ( sql ) ' ${QTSQL_IUSE//+/}
- )
- X? (
- || ( evdev libinput )
- gles2-only? ( egl )
+ printf '%s? ( gui ) ' ${QT6_IUSE[gui]//+/}
+ printf '%s? ( network ) ' ${QT6_IUSE[network]//+/}
+ printf '%s? ( sql ) ' ${QT6_IUSE[sql]//+/}
+ printf '%s? ( gui widgets ) ' ${QT6_IUSE[widgets]//+/}
)
accessibility? ( X dbus )
- cups? ( gui widgets )
- eglfs? ( egl )
- gtk? ( widgets )
- gui? ( || ( X eglfs ) || ( X libinput ) )
+ eglfs? ( opengl )
+ gui? ( || ( X eglfs wayland ) )
libinput? ( udev )
- sql? ( || ( freetds mysql oci8 odbc postgres sqlite ) )
+ sql? ( || ( ${QT6_IUSE[sql]//+/} ) )
test? (
- gui jpeg icu
+ gui icu
sql? ( sqlite )
)
- vnc? ( gui )
"
-# TODO:
-# qtimageformats: mng not done yet, qtimageformats.git upstream commit 9443239c
-# qtnetwork: connman, networkmanager
+# groups:
+# - global (configure.cmake)
+# - qtcore (src/corelib/configure.cmake)
+# - qtgui (src/gui/configure.cmake)
+# - qtnetwork (src/network/configure.cmake)
+# - qtprintsupport (src/printsupport/configure.cmake) [gui+widgets]
+# - qtsql (src/plugins/sqldrivers/configure.cmake)
RDEPEND="
+ sys-libs/zlib:=
+ ssl? ( dev-libs/openssl:= )
+ udev? ( virtual/libudev:= )
+ zstd? ( app-arch/zstd:= )
+
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:=
- >=sys-apps/dbus-1.4.20
- sys-libs/zlib:=
- X? (
+ dev-libs/libpcre2:=[pcre16,unicode(+)]
+ icu? ( dev-libs/icu:= )
+ systemd? ( sys-apps/systemd:= )
+
+ dbus? ( sys-apps/dbus )
+ gui? (
+ media-libs/fontconfig
+ media-libs/freetype:2
+ media-libs/harfbuzz:=
+ media-libs/libjpeg-turbo:=
+ media-libs/libpng:=
x11-libs/libdrm
- x11-libs/libICE
- x11-libs/libSM
- x11-libs/libX11
- >=x11-libs/libxcb-1.12:=
- >=x11-libs/libxkbcommon-0.5.0[X]
- x11-libs/xcb-util-cursor
- x11-libs/xcb-util-image
- x11-libs/xcb-util-keysyms
- x11-libs/xcb-util-renderutil
- x11-libs/xcb-util-wm
+ x11-libs/libxkbcommon[X?]
+ X? (
+ x11-libs/libICE
+ x11-libs/libSM
+ x11-libs/libX11
+ x11-libs/libxcb:=
+ x11-libs/xcb-util-cursor
+ x11-libs/xcb-util-image
+ x11-libs/xcb-util-keysyms
+ x11-libs/xcb-util-renderutil
+ x11-libs/xcb-util-wm
+ )
+ accessibility? ( app-accessibility/at-spi2-core:2 )
+ eglfs? ( media-libs/mesa[gbm(+)] )
+ evdev? ( sys-libs/mtdev )
+ libinput? ( dev-libs/libinput:= )
+ opengl? ( media-libs/libglvnd[X?] )
+ tslib? ( x11-libs/tslib )
+ widgets? (
+ cups? ( net-print/cups )
+ gtk? (
+ x11-libs/gdk-pixbuf:2
+ x11-libs/gtk+:3
+ x11-libs/pango
+ )
+ )
)
- 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
+ network? (
+ brotli? ( app-arch/brotli:= )
+ gssapi? ( virtual/krb5 )
+ libproxy? ( net-libs/libproxy )
)
- gui? ( media-libs/libpng:= )
- icu? ( dev-libs/icu:= )
- !icu? ( virtual/libiconv )
- jpeg? ( media-libs/libjpeg-turbo:= )
- libinput? (
- dev-libs/libinput:=
- >=x11-libs/libxkbcommon-0.5.0
+ sql? (
+ mysql? ( dev-db/mysql-connector-c:= )
+ oci8? ( dev-db/oracle-instantclient:=[sdk] )
+ odbc? ( dev-db/unixODBC )
+ postgres? ( dev-db/postgresql:* )
+ sqlite? ( dev-db/sqlite:3 )
)
- 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 )
- zstd? ( app-arch/zstd:= )
"
-DEPEND="${RDEPEND}"
-PDEPEND="wayland? ( =dev-qt/qtwayland-${PV}*:6 )" #864509
+DEPEND="
+ ${RDEPEND}
+ X? ( x11-base/xorg-proto )
+ gui? (
+ vulkan? ( dev-util/vulkan-headers )
+ )
+ network? (
+ sctp? ( net-misc/lksctp-tools )
+ )
+"
+PDEPEND="wayland? ( =dev-qt/qtwayland-${PV}*:6 )"
src_prepare() {
qt6-build_src_prepare
@@ -137,57 +150,62 @@ src_configure() {
-DINSTALL_QMLDIR="${QT6_QMLDIR}"
-DINSTALL_SYSCONFDIR="${QT6_SYSCONFDIR}"
-DINSTALL_TRANSLATIONSDIR="${QT6_TRANSLATIONDIR}"
+
+ -DQT_FEATURE_precompile_header=OFF
+ $(qt_feature ssl openssl)
+ $(qt_feature ssl openssl_linked)
+ $(qt_feature udev libudev)
+ $(qt_feature zstd)
+
+ # qtcore
+ $(qt_feature icu)
+ $(qt_feature systemd journald)
+
+ # tools
-DQT_FEATURE_androiddeployqt=OFF
+
+ # modules
$(qt_feature concurrent)
$(qt_feature dbus)
$(qt_feature gui)
- $(qt_feature gui testlib)
- $(qt_feature icu)
+ $(qt_feature gui testlib) # shared w/ gui
$(qt_feature network)
$(qt_feature sql)
- $(qt_feature systemd journald)
- $(qt_feature udev libudev)
$(qt_feature xml)
- $(qt_feature zstd)
)
+
use gui && mycmakeargs+=(
$(qt_feature X xcb)
- $(qt_feature X xcb_xlib)
+ $(qt_feature X system_xcb_xinput)
+ $(qt_feature X xkbcommon_x11)
+ $(cmake_use_find_package X X11) # needed for truly no automagic
$(qt_feature accessibility accessibility_atspi_bridge)
- $(qt_feature egl)
- $(qt_feature egl xcb_egl_plugin)
- $(qt_feature eglfs eglfs_egldevice)
- $(qt_feature eglfs eglfs_gbm)
+ $(qt_feature eglfs)
$(qt_feature evdev)
$(qt_feature evdev mtdev)
- -DQT_FEATURE_gif=ON
$(qt_feature gles2-only opengles2)
- $(qt_feature jpeg)
$(qt_feature libinput)
$(qt_feature opengl)
$(qt_feature tslib)
- $(qt_feature tuio tuiotouch)
$(qt_feature vulkan)
$(qt_feature widgets)
- )
- use widgets && mycmakeargs+=(
- $(qt_feature cups)
+ -DQT_FEATURE_system_textmarkdownreader=OFF # TODO?: package md4c
+ ) && use widgets && mycmakeargs+=(
+ $(qt_feature cups) # qtprintsupport is enabled w/ gui+widgets
$(qt_feature gtk gtk3)
)
- if use X || use libinput; 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)
$(usev test -DQT_SKIP_DOCKER_COMPOSE=ON)
)
+
use sql && mycmakeargs+=(
- $(qt_feature freetds sql_tds)
+ -DQT_FEATURE_sql_db2=OFF # unpackaged
+ -DQT_FEATURE_sql_ibase=OFF # unpackaged
$(qt_feature mysql sql_mysql)
$(qt_feature oci8 sql_oci)
$(usev oci8 -DOracle_ROOT="${ESYSROOT}"/usr/$(get_libdir)/oracle/client)
@@ -195,6 +213,7 @@ src_configure() {
$(qt_feature postgres sql_psql)
$(qt_feature sqlite sql_sqlite)
$(qt_feature sqlite system_sqlite)
+ -DQT_FEATURE_sql_tds=OFF # currently a no-op in CMakeLists.txt
)
qt6-build_src_configure
diff --git a/dev-qt/qtbase/qtbase-6.9999.ebuild b/dev-qt/qtbase/qtbase-6.9999.ebuild
index 94a8d5840093..4f0ba7ab377b 100644
--- a/dev-qt/qtbase/qtbase-6.9999.ebuild
+++ b/dev-qt/qtbase/qtbase-6.9999.ebuild
@@ -11,106 +11,119 @@ if [[ ${QT6_BUILD_TYPE} == release ]]; then
KEYWORDS="~amd64"
fi
-# Qt Modules
-IUSE="+concurrent +dbus +gui +network +sql opengl +widgets +xml zstd"
-REQUIRED_USE="
- opengl? ( gui )
- widgets? ( gui )
-"
+declare -A QT6_IUSE=(
+ [global]="+ssl +udev zstd"
+ [core]="icu systemd"
+ [modules]="+concurrent +dbus +gui +network +sql +xml"
+
+ [gui]="
+ +X accessibility eglfs evdev gles2-only +libinput
+ opengl tslib vulkan +widgets
+ "
+ [network]="brotli gssapi libproxy sctp"
+ [sql]="mysql oci8 odbc postgres +sqlite"
+ [widgets]="cups gtk"
-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 wayland"
-# QtPrintSupport = QtGui + QtWidgets enabled.
-# ibus = xkbcommon + dbus, and xkbcommon needs either X or libinput
-REQUIRED_USE+="
+ [optfeature]="wayland" #864509
+)
+IUSE="${QT6_IUSE[*]}"
+REQUIRED_USE="
$(
- printf '%s? ( gui ) ' ${QTGUI_IUSE//+/}
- printf '%s? ( network ) ' ${QTNETWORK_IUSE//+/}
- printf '%s? ( sql ) ' ${QTSQL_IUSE//+/}
- )
- X? (
- || ( evdev libinput )
- gles2-only? ( egl )
+ printf '%s? ( gui ) ' ${QT6_IUSE[gui]//+/}
+ printf '%s? ( network ) ' ${QT6_IUSE[network]//+/}
+ printf '%s? ( sql ) ' ${QT6_IUSE[sql]//+/}
+ printf '%s? ( gui widgets ) ' ${QT6_IUSE[widgets]//+/}
)
accessibility? ( X dbus )
- cups? ( gui widgets )
- eglfs? ( egl )
- gtk? ( widgets )
- gui? ( || ( X eglfs ) || ( X libinput ) )
+ eglfs? ( opengl )
+ gui? ( || ( X eglfs wayland ) )
libinput? ( udev )
- sql? ( || ( freetds mysql oci8 odbc postgres sqlite ) )
+ sql? ( || ( ${QT6_IUSE[sql]//+/} ) )
test? (
- gui jpeg icu
+ gui icu
sql? ( sqlite )
)
- vnc? ( gui )
"
-# TODO:
-# qtimageformats: mng not done yet, qtimageformats.git upstream commit 9443239c
-# qtnetwork: connman, networkmanager
+# groups:
+# - global (configure.cmake)
+# - qtcore (src/corelib/configure.cmake)
+# - qtgui (src/gui/configure.cmake)
+# - qtnetwork (src/network/configure.cmake)
+# - qtprintsupport (src/printsupport/configure.cmake) [gui+widgets]
+# - qtsql (src/plugins/sqldrivers/configure.cmake)
RDEPEND="
+ sys-libs/zlib:=
+ ssl? ( dev-libs/openssl:= )
+ udev? ( virtual/libudev:= )
+ zstd? ( app-arch/zstd:= )
+
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:=
- >=sys-apps/dbus-1.4.20
- sys-libs/zlib:=
- X? (
+ dev-libs/libpcre2:=[pcre16,unicode(+)]
+ icu? ( dev-libs/icu:= )
+ systemd? ( sys-apps/systemd:= )
+
+ dbus? ( sys-apps/dbus )
+ gui? (
+ media-libs/fontconfig
+ media-libs/freetype:2
+ media-libs/harfbuzz:=
+ media-libs/libjpeg-turbo:=
+ media-libs/libpng:=
x11-libs/libdrm
- x11-libs/libICE
- x11-libs/libSM
- x11-libs/libX11
- >=x11-libs/libxcb-1.12:=
- >=x11-libs/libxkbcommon-0.5.0[X]
- x11-libs/xcb-util-cursor
- x11-libs/xcb-util-image
- x11-libs/xcb-util-keysyms
- x11-libs/xcb-util-renderutil
- x11-libs/xcb-util-wm
+ x11-libs/libxkbcommon[X?]
+ X? (
+ x11-libs/libICE
+ x11-libs/libSM
+ x11-libs/libX11
+ x11-libs/libxcb:=
+ x11-libs/xcb-util-cursor
+ x11-libs/xcb-util-image
+ x11-libs/xcb-util-keysyms
+ x11-libs/xcb-util-renderutil
+ x11-libs/xcb-util-wm
+ )
+ accessibility? ( app-accessibility/at-spi2-core:2 )
+ eglfs? ( media-libs/mesa[gbm(+)] )
+ evdev? ( sys-libs/mtdev )
+ libinput? ( dev-libs/libinput:= )
+ opengl? ( media-libs/libglvnd[X?] )
+ tslib? ( x11-libs/tslib )
+ widgets? (
+ cups? ( net-print/cups )
+ gtk? (
+ x11-libs/gdk-pixbuf:2
+ x11-libs/gtk+:3
+ x11-libs/pango
+ )
+ )
)
- 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
+ network? (
+ brotli? ( app-arch/brotli:= )
+ gssapi? ( virtual/krb5 )
+ libproxy? ( net-libs/libproxy )
)
- gui? ( media-libs/libpng:= )
- icu? ( dev-libs/icu:= )
- !icu? ( virtual/libiconv )
- jpeg? ( media-libs/libjpeg-turbo:= )
- libinput? (
- dev-libs/libinput:=
- >=x11-libs/libxkbcommon-0.5.0
+ sql? (
+ mysql? ( dev-db/mysql-connector-c:= )
+ oci8? ( dev-db/oracle-instantclient:=[sdk] )
+ odbc? ( dev-db/unixODBC )
+ postgres? ( dev-db/postgresql:* )
+ sqlite? ( dev-db/sqlite:3 )
)
- 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 )
- zstd? ( app-arch/zstd:= )
"
-DEPEND="${RDEPEND}"
-PDEPEND="wayland? ( =dev-qt/qtwayland-${PV}*:6 )" #864509
+DEPEND="
+ ${RDEPEND}
+ X? ( x11-base/xorg-proto )
+ gui? (
+ vulkan? ( dev-util/vulkan-headers )
+ )
+ network? (
+ sctp? ( net-misc/lksctp-tools )
+ )
+"
+PDEPEND="wayland? ( =dev-qt/qtwayland-${PV}*:6 )"
src_prepare() {
qt6-build_src_prepare
@@ -137,57 +150,62 @@ src_configure() {
-DINSTALL_QMLDIR="${QT6_QMLDIR}"
-DINSTALL_SYSCONFDIR="${QT6_SYSCONFDIR}"
-DINSTALL_TRANSLATIONSDIR="${QT6_TRANSLATIONDIR}"
+
+ -DQT_FEATURE_precompile_header=OFF
+ $(qt_feature ssl openssl)
+ $(qt_feature ssl openssl_linked)
+ $(qt_feature udev libudev)
+ $(qt_feature zstd)
+
+ # qtcore
+ $(qt_feature icu)
+ $(qt_feature systemd journald)
+
+ # tools
-DQT_FEATURE_androiddeployqt=OFF
+
+ # modules
$(qt_feature concurrent)
$(qt_feature dbus)
$(qt_feature gui)
- $(qt_feature gui testlib)
- $(qt_feature icu)
+ $(qt_feature gui testlib) # shared w/ gui
$(qt_feature network)
$(qt_feature sql)
- $(qt_feature systemd journald)
- $(qt_feature udev libudev)
$(qt_feature xml)
- $(qt_feature zstd)
)
+
use gui && mycmakeargs+=(
$(qt_feature X xcb)
- $(qt_feature X xcb_xlib)
+ $(qt_feature X system_xcb_xinput)
+ $(qt_feature X xkbcommon_x11)
+ $(cmake_use_find_package X X11) # needed for truly no automagic
$(qt_feature accessibility accessibility_atspi_bridge)
- $(qt_feature egl)
- $(qt_feature egl xcb_egl_plugin)
- $(qt_feature eglfs eglfs_egldevice)
- $(qt_feature eglfs eglfs_gbm)
+ $(qt_feature eglfs)
$(qt_feature evdev)
$(qt_feature evdev mtdev)
- -DQT_FEATURE_gif=ON
$(qt_feature gles2-only opengles2)
- $(qt_feature jpeg)
$(qt_feature libinput)
$(qt_feature opengl)
$(qt_feature tslib)
- $(qt_feature tuio tuiotouch)
$(qt_feature vulkan)
$(qt_feature widgets)
- )
- use widgets && mycmakeargs+=(
- $(qt_feature cups)
+ -DQT_FEATURE_system_textmarkdownreader=OFF # TODO?: package md4c
+ ) && use widgets && mycmakeargs+=(
+ $(qt_feature cups) # qtprintsupport is enabled w/ gui+widgets
$(qt_feature gtk gtk3)
)
- if use X || use libinput; 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)
$(usev test -DQT_SKIP_DOCKER_COMPOSE=ON)
)
+
use sql && mycmakeargs+=(
- $(qt_feature freetds sql_tds)
+ -DQT_FEATURE_sql_db2=OFF # unpackaged
+ -DQT_FEATURE_sql_ibase=OFF # unpackaged
$(qt_feature mysql sql_mysql)
$(qt_feature oci8 sql_oci)
$(usev oci8 -DOracle_ROOT="${ESYSROOT}"/usr/$(get_libdir)/oracle/client)
@@ -195,6 +213,7 @@ src_configure() {
$(qt_feature postgres sql_psql)
$(qt_feature sqlite sql_sqlite)
$(qt_feature sqlite system_sqlite)
+ -DQT_FEATURE_sql_tds=OFF # currently a no-op in CMakeLists.txt
)
qt6-build_src_configure