# qt5/cfg - "Build" settings for package #--------------------------------------------------------------------- [technotes] 1. The source tarball used by this package has been renamed. #--------------------------------------------------------------------- 2. This package installs a copy of "qt5" release 5.15. This is the distro's primary copy of "qt5". #--------------------------------------------------------------------- 3. Warning: "qt5" 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. In this distro, the following "cfg"-level setting is used to limit build-time parallelism for this package: slowdown = yes #--------------------------------------------------------------------- 4. "qt5*" 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 "qt5*" to build at all can take days of debugging. Better still, "qt5*" hates "libressl", 32-bit compiles, and "gcc" up- dates. We'd toss "qt5*", but it's needed for GoldenDict and VirtualBox. Gold- enDict, at least, is a must-have. #--------------------------------------------------------------------- 5. Recommendations are as follows [in addition to the hardware notes included further up]: 5.1. Never update to a release of Qt5 that hasn't been out in the wild for 6 months or longer. 5.2. Subsequent to Qt5 updates, rebuild all of the packages under "*_qt/*" from "qt5" on. Then rebuild "goldendict" and "vboxose6" and confirm that those 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 "qt4" and "qt5" and vice versa. #--------------------------------------------------------------------- 7. This distro's copy of "qt5" 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. "qt5" needs "pcre2" built with support for 16-bit characters enab- led. ---------------------------------------------------------------------- [buildtimes] 02.39 hours (or 143.15 minutes) - 2021 L.A. dedi box: 6x2 CPU 32GB RAM 04.64 hours (or 278.63 minutes) - ThinkPad E540 16GB RAM i7 4x2 06.73 hours (or 403.87 minutes) - ThinkPad L390 24GB RAM i5 4x2 07.42 hours (or 444.92 minutes) - ThinkPad W530 32GB RAM i7 4x2 07.61 hours (or 456.42 minutes) - HP EliteBook 8560w 32GB RAM #--------------------------------------------------------------------- [settings] altpkg = yes exepack = yes large = yes ldbefore = -ldl -lrt -lc license = See "license*.txt" in installed tree licfile = LICENSE.LGPLv21 nosyslinks = yes nowerror = yes purge = yes revision = numeric slowdown = yes tmpsize = 7444M unpack = relaxed dontfind = libaom libicu # "libicu" shouldn't be included in the "setpaths" list... @@@ xorg setpaths = \ alsa assimp bzip2 double-conversion \ eudev expat freetype2 gtkcore \ harfbuzz jpeg lcms2 libevent2 \ libpng libvpx114 libwebp nspr \ nss opus pciutils pcre \ pcre2 pulseaudio qt5 sqlite2 \ sqlite3 tiff zlib #--------------------------------------------------------------------- [depends] assimp audiofile cups double-conversion eudev expat fontconfig freetype2 gtkcore jasper jpeg lcms2 libaubio libevent2 libicu libpng libvpx113 libwebp mariadb nodejs openssl opus p11kit pciutils pcre pcre2 pulseaudio nas nspr nss sqlite2 sqlite3 xorg zlib #--------------------------------------------------------------------- [configure] pushd qtscript/src/3rdparty/javascriptcore/JavaScriptCore/pcre/ cp -p pcre.h jspcre.h popd export LACICUBOOL=true export LLVM_INSTALL_DIR=/nosuchdir export QT5DIR=$PKGDIR_PROD export QT5PREFIX=$PKGDIR_PROD ETCDIR=$QT5PREFIX/etc sed '/qsqlresult_p.h>/a#include ' \ -i qtbase/src/plugins/sqldrivers/mysql/qsql_mysql.cpp #--------------------------------------------------------------------- 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= #--------------------------------------------------------------------- pushd qtwebengine/src/3rdparty/chromium/third_party/zlib/ treetextsub \ --keeptimes \ --pattern='#if defined(USE_SYSTEM_MINIZIP)' \ --newtext='#if 1' popd #--------------------------------------------------------------------- PT=$PRODTREE #ifdef NOTDEF # export ICU_PREFIX=$PT/libicu # -icu @@@ #endif ./configure \ -prefix $PKGDIR_PROD \ -confirm-license \ $WEBESW \ \ -dbus-linked \ -jasper \ -nomake examples \ -nomake tests \ -opensource \ -openssl-linked \ -sysconfdir $ETCDIR \ -verbose \ \ -system-assimp \ -system-doubleconversion \ -system-libjpeg \ -system-libpng \ -system-freetype \ -system-harfbuzz \ -system-pcre \ -system-sqlite \ -system-tiff \ -system-webp \ -system-zlib \ \ -no-pch \ -no-reduce-relocations \ -no-separate-debug-info \ -optimized-qmake \ -release \ -shared \ \ -I $PT/libvpx114/include \ -I $PT/openssl/include \ -I $PT/openssl/include/openssl \ \ -L $PT/gtkcore/lib \ -L $PT/libvpx114/lib \ -L $PT/openssl/lib \ # -L $PT/libicu/lib \ # -I $PT/libicu/include \ # ICU_PREFIX=$PT/libicu #--------------------------------------------------------------------- [build] PT=$PRODTREE export QT5DIR=$PKGDIR_PROD export QT5PREFIX=$PKGDIR_PROD export LACICUBOOL=true export LACPREARG="-fpermissive" export LACLDDIRS=$LACLDDIRS:$PT/gcc/lib # export LACLDDIRS=$LACLDDIRS:$PT/libicu/lib @@@ export LACLDDIRS=$LACLDDIRS:$PT/pcre/lib #--------------------------------------------------------------------- echo Starting qt5 make: pwd ls -l *akefile* smpmake echo smpmake done smpmake install cd $PKGDIR_PROD/lib touch hidden #--------------------------------------------------------------------- # The following "find ... -exec" commands are courtesy of BLFS. They # clean up minor issues in installed files. #ifdef NOTDEF # Possibly no longer needed # find $QT5PREFIX/lib/pkgconfig -name "*.pc" \ # -exec perl -pi -e "s, -L$PWD/?\S+,,g" {} \; # # find $QT5PREFIX/ -name qt_lib_bootstrap_private.pri \ # -exec sed -i -e "s:$PWD/qtbase:/$QT5PREFIX/lib/:g" {} \; #endif find $QT5PREFIX/ -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_oldball = http://qt.mirror.constant.com/archive/qt/\ 5.15/5.15.14/single/qt-everywhere-opensource-src-5.15.14.tar.xz url_tarball = https://mirror.sjtu.edu.cn/qt/official_releases/\ qt/5.15/5.15.14/single/qt-everywhere-opensource-src-5.15.14.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 Switched to 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 240714 Updated to 5.15.14 240714 Switched back to system "assimp" 240714 Patched to fix a FTBFS related to "assimp" 240714 Patched to fix a FTBFS related to "minizip" 240714 Patched to fix a FTBFS related to "zlib