# qt6/cfg - "Build" settings for package #--------------------------------------------------------------------- [technotes] 1. The source tarball used by this package has been renamed. #--------------------------------------------------------------------- 2. This package installs a copy of "qt6". This is the distro's pri- mary copy of "qt6". #--------------------------------------------------------------------- 3. Warning: "qt6" is a monster in terms of build-time resources re- quired: * 10 GB or more of free disk space may be needed in the "build" directory tree used. * A minimum of 4 CPU cores is probably needed [threads don't count for this number]. * Depending on the degree of build-time parallelism used, RAM needed may be on the order of 10 GB to 20 GB or more. * Swap space should probably be turned on. * Build-time parallelism should probably be limited to one job per CPU core -- or less -- or the box used may lock up. #--------------------------------------------------------------------- 4. "qt6*" packages can be difficult to build and/or update. On a machine that overheats, so that you need to slow down the proces- sors, builds can take half a day. More significantly, getting new releases of "qt6*" to build at all can take days of debugging. Better still, "qt6*" hates "libressl", 32-bit compiles, and "gcc" up- dates. #--------------------------------------------------------------------- 5. Recommendations are as follows [in addition to the hardware notes included further up]: 5.1. Never update to a release of Qt6 that hasn't been out in the wild for 6 months or longer. 5.2. Subsequent to Qt6 updates, rebuild all of the packages under "*_qt/*" from "qt6" on. Then rebuild "goldendict" and other "qt6" packages. Subsequently, confirm that the packages still work. If problems occur at any step of the way, revert everything that you changed. 5.3. Never update packages with "qt3" or "qt4" in their names. #--------------------------------------------------------------------- 6. Warning: Updates to "pulseaudio" may necessitate updates or patch- es to "qt*" and vice versa. #--------------------------------------------------------------------- 7. This distro's copy of "qt6" requires that "xorgbase" be built with a particular patch which changes the typedefs used for "GLintptr" and "GLsizeiptr". The patch in question is included in this distro's "xorgbase" source resource tree. ---------------------------------------------------------------------- 8. The configure-time switch "-no-exceptions" shouldn't be used for this package as it may break "shiboken" and other packages. ---------------------------------------------------------------------- 9. "qt6" needs "pcre2" built with support for 16-bit characters enab- led. ---------------------------------------------------------------------- [buildtimes] 11.33 hours (or 680.03 minutes) - ThinkPad W530 i7 4x2 32GB RAM #--------------------------------------------------------------------- [settings] altpkg = yes exepack = yes large = yes ldbefore = -ldl -lrt -lc license = tbd nosyslinks = yes nowerror = yes purge = yes revision = numeric tmpsize = 10269M unpack = relaxed dontfind = assimp libaom openssl libvpx113 libvpx114 re2 # "libicu", "openssl3", "protobuf", "xorg" are used but shouldn't be # included in the list below as this will cause conflicts. setpaths = \ alsa brotli bzip2 eudev expat \ fontconfig freetype2 gtkcore harfbuzz jpeg \ lcms2 libb2 libevent2 libpng libva \ libwebp nspr nss openjpeg24 opus \ pciutils pcre pcre2 pulseaudio qt6 \ sqlite2 sqlite3 tiff zlib zstd \ ncurses libwmf \ double-conversion # Additionally, the following switches or env. variables shouldn't be # used: # # -I .../libicu/include # -L .../libicu/lib # -webengine-icu # export ICU_PREFIX=... #--------------------------------------------------------------------- [depends] abseil alsa assimp audiofile bison3 brotli cmake cups double-conversion eudev expat ffmpeg6:forward flex fontconfig freetype2 gstreamer:forward gtkcore hunspell jasper jpeg lcms2 libaubio libb2 libbsd libevent2 libicu libinput libmng libpng libproxy:forward libva libwebp libwmf libxml2 libxslt mariadb meson minizip-ng mtdev ncurses ninja nodejs openjpeg openssl openssl3 opus p11kit pciutils pcre pcre2 pkgconf poppler postgresql pulseaudio nas nspr nss re2 sqlite2 sqlite3 tiff xorg zlib zstd #--------------------------------------------------------------------- [configure] export LACBUILDQT6=true export LACICUBOOL=true export LLVM_INSTALL_DIR=/nosuchdir export QT6DIR=$PKGDIR_PROD export QT6PREFIX=$PKGDIR_PROD export OPENSSL_ROOT_DIR=$PRODTREE/openssl3 ETCDIR=$QT6PREFIX/etc SSLTOP=$OPENSSL_ROOT_DIR pip3install html5lib #--------------------------------------------------------------------- for x in `find . -name gles2_c_lib.cc` do cd . > $x done #--------------------------------------------------------------------- TD=typedef GI=GLintptr SI=GLsizeiptr sed \ -e "s@$TD khronos_intptr_t *$GI;@$TD ptrdiff_t $GI;@" \ -e "s@$TD khronos_ssize_t *$SI;@$TD ptrdiff_t $SI;@" \ -e "s@$TD long int *$GI;@$TD ptrdiff_t $GI;@" \ -e "s@$TD long int *$SI;@$TD ptrdiff_t $SI;@" \ \ -i `find . -type f -name gl*.h` \ `find . -type f -name functionsgl_typedefs.h` \ `find . -type f -name ppb_opengles2.h` #--------------------------------------------------------------------- sed -e '/#include /i#include ' \ -i `find . -name gl\*.h` #--------------------------------------------------------------------- # "qtwebengine" can't be built in 32-bit mode. if [ "@$LACBITS" == "@32" ]; then rm -fr qtwebengine WEBESW= else WEBESW=-webengine-icu fi WEBESW= PT=$PRODTREE #--------------------------------------------------------------------- if [ -d $PRODTREE/ffmpeg6 ]; then . srcpkgpaths ffmpeg6 FFSW="-I $PT/ffmpeg6/include -L $PT/ffmpeg6/lib" export FFMPEG_DIR=$PT/ffmpeg6 fi FFSW="-no-feature-ffmpeg" #--------------------------------------------------------------------- ./configure \ -prefix $PKGDIR_PROD \ -confirm-license \ -sysconfdir $ETCDIR \ $WEBESW \ -Wno-dev \ \ -dbus-linked \ -jasper \ -no-feature-vaapi \ -nomake examples \ -nomake tests \ -opensource \ -openssl-linked \ -sysconfdir $ETCDIR \ -skip qt3d \ -skip qtquick3dphysics \ -verbose \ $FFSW \ \ -system-doubleconversion \ -system-libjpeg \ -system-libpng \ -system-freetype \ -system-harfbuzz \ -system-pcre \ -system-sqlite \ -system-tiff \ -system-webp \ -system-zlib \ \ -webengine-opus \ -webengine-pulseaudio \ \ -no-pch \ -no-reduce-relocations \ -no-separate-debug-info \ -optimized-qmake \ -release \ -shared \ \ -I $SSLTOP/include \ -I $SSLTOP/include/openssl \ \ -L $PT/gtkcore/lib \ -L $SSLTOP/lib #--------------------------------------------------------------------- [build] PT=$PRODTREE export QT6DIR=$PKGDIR_PROD export QT6PREFIX=$PKGDIR_PROD export LACBUILDQT6=true export LACICUBOOL=true export LACPREARG="-fpermissive" export OPENSSL_ROOT_DIR=$PRODTREE/openssl3 export LACLDDIRS=$LACLDDIRS:$PT/gcc/lib export LACLDDIRS=$LACLDDIRS:$PT/libicu/lib export LACLDDIRS=$LACLDDIRS:$PT/protobuf/lib export LACLDDIRS=$LACLDDIRS:$PT/abseil/lib L=`pwd`/qtbase/lib:$LD_LIBRARY_PATH export LD_LIBRARY_PATH=$L #--------------------------------------------------------------------- ninja_simple_build cd $PKGDIR_PROD/lib touch hidden #--------------------------------------------------------------------- # The following "find ... -exec" command[s] are courtesy of BLFS. They # clean up minor issues in installed files. find $QT6PREFIX/ -name \*.prl \ -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' {} \; echo make install done #--------------------------------------------------------------------- # Original URLs. These URLs were valid at one point, but may have died # since then. If you download newer versions of tarballs [etc.], don't # delete the original versions, as you may not be able to replace # them. [urls] url_debian = http://packages.debian.org/unstable/source/\ qt-x11-free url_home = http://www.trolltech.com/products/qt/ url_lfs = http://www.linuxfromscratch.org/blfs/view/stable/\ x/lib.html#qt url_tarball = https://qt.mirror.constant.com/archive/qt/\ 6.7/6.7.3/single/qt-everywhere-src-6.7.3.tar.xz #--------------------------------------------------------------------- [history] 170514 Added package. Started with 5.7.1. 170721 Updated from 5.7.1 to 5.8.0 171114 Updated to 5.9.2 171124 Updated to 5.9.3 180316 Updated to 5.10.1 181210 Updated to 5.11.3 210207 Fixed FTBFS related to a missing declaration 210210 Fixed FTBFS related to newer "libicu" releases 210425 Updated to 5.14.2 220223 Added "-qt-assimp" to fix a FTBFS 220223 Added "slowdown = yes" to fix a lockup 230223 Updated to 5.15.8 230415 Skip "qtwebengine" on 32-bit hosts 240319 Updated to 5.15.13 240711 Updated to 5.15.14 240722 Split "qt6" off from "qt5" 240722 Updated to 6.7.2 241025 Updated to 6.7.3