# Copyright 2021-2023 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 inherit flag-o-matic qt6-build toolchain-funcs DESCRIPTION="Cross-platform application development framework" if [[ ${QT6_BUILD_TYPE} == release ]]; then KEYWORDS="amd64 ~arm ~arm64 ~hppa ~loong ~x86" fi declare -A QT6_IUSE=( [global]="+ssl +udev zstd" [core]="icu" [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" [optfeature]="nls wayland" #810802,864509 ) IUSE="${QT6_IUSE[*]}" REQUIRED_USE=" $( 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 ) eglfs? ( opengl ) gles2-only? ( opengl ) gui? ( || ( X eglfs wayland ) ) libinput? ( udev ) sql? ( || ( ${QT6_IUSE[sql]//+/} ) ) test? ( icu sql? ( sqlite ) ) " # 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(+)] icu? ( dev-libs/icu:= ) 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/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? ( gles2-only? ( media-libs/libglvnd ) !gles2-only? ( 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 ) ) ) network? ( brotli? ( app-arch/brotli:= ) gssapi? ( virtual/krb5 ) libproxy? ( net-libs/libproxy ) ) 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 ) ) " DEPEND=" ${RDEPEND} #endif $(printf '__%s__ ' "${cpuflags[@]^^}") EOF assert ) # do nothing and leave to qtbase if no macros expanded (test failed?) if [[ \ ${intrins[*]} == *\ [^_\ ]* ]]; then local -i i for ((i=0; i<${#cpufeats[@]}; i++)); do [[ ${intrins[i]} == __* ]] && mycmakeargs+=( -DQT_FEATURE_${cpufeats[i]}=OFF ) done mycmakeargs+=( -DTEST_x86intrin=ON ) fi fi qt6-build_src_configure } src_test() { local -x TZ=UTC local -x LC_TIME=C local CMAKE_SKIP_TESTS=( # broken with out-of-source + if qtbase is not already installed tst_moc tst_qmake # needs x11/opengl, we *could* run these but tend to be flaky # when opengl rendering is involved (even if software-only) tst_qopengl{,config,widget,window} tst_qgraphicsview tst_qx11info # fails with network sandbox tst_qdnslookup # typical to lack SCTP support on non-generic kernels tst_qsctpsocket # these can be flaky depending on the environment/toolchain tst_qlogging # backtrace log test can easily vary tst_q{,raw}font # affected by available fonts / settings (bug #914737) tst_qstorageinfo # checks mounted filesystems # flaky due to using different test framework and fails with USE=-gui tst_selftests # known failing when using clang+glibc+stdc++, needs looking into tst_qthread # partially failing on x86 chroots and seemingly(?) harmless (dev-qt # revdeps tests pass), skip globally to avoid keywording flakiness tst_json tst_qcolorspace tst_qdoublevalidator tst_qglobal tst_qglyphrun tst_qvectornd tst_rcc # similarly, but on armv7 and potentially others (bug #914028) tst_qlineedit tst_qpainter # likewise, known failing at least on BE arches (bug #914033,914371) tst_qimagereader tst_qimagewriter tst_qpluginloader # partially broken on llvm-musl, needs looking into but skip to have # a baseline for regressions (rest of dev-qt still passes with musl) $(usev elibc_musl ' tst_qfiledialog2 tst_qicoimageformat tst_qimagereader tst_qimage ') # fails due to hppa's NaN handling, needs looking into (bug #914371) $(usev hppa ' tst_qcborvalue tst_qnumeric ') # note: for linux, upstream only really runs+maintains tests for amd64 # https://doc.qt.io/qt-6/supported-platforms.html ) qt6-build_src_test } src_install() { qt6-build_src_install if use test; then local delete_bins=( # need a better way to handle this clientserver copier crashingServer desktopsettingsaware_helper echo fileWriterProcess modal_helper nospace 'one space' paster qcommandlineparser_test_helper qfileopeneventexternal socketprocess syslocaleapp tst_qhashseed_helper 'two space s' write-read-write ) local delete=( # sigh "${D}${QT6_BINDIR}"/test* "${delete_bins[@]/#/${D}${QT6_BINDIR}/}" ) # using -f given not tracking which tests may be skipped or not rm -rf -- "${delete[@]}" || die fi }