From 1c4cb7751c0fc256154bde487b02605a45133282 Mon Sep 17 00:00:00 2001 From: Dave Woodfall Date: Mon, 6 Apr 2020 00:50:54 +0100 Subject: libraries/qt5-legacy: Update to 5.9.9. --- libraries/qt5-legacy/README | 100 ++++++++-- libraries/qt5-legacy/README.ccache | 46 +++++ .../patches/explicitly-initialize-sqlite.patch | 217 +++++++++++++++++++++ .../patches/nss-update-sslv3-nonce.patch | 44 ----- libraries/qt5-legacy/patches/qt5.mysql.h.diff | 6 +- libraries/qt5-legacy/qt5-legacy.SlackBuild | 137 +++++++++---- libraries/qt5-legacy/qt5-legacy.info | 10 +- libraries/qt5-legacy/slack-desc | 6 +- 8 files changed, 453 insertions(+), 113 deletions(-) create mode 100644 libraries/qt5-legacy/README.ccache create mode 100644 libraries/qt5-legacy/patches/explicitly-initialize-sqlite.patch delete mode 100644 libraries/qt5-legacy/patches/nss-update-sslv3-nonce.patch diff --git a/libraries/qt5-legacy/README b/libraries/qt5-legacy/README index eefa1df469..5a5ed06ccc 100644 --- a/libraries/qt5-legacy/README +++ b/libraries/qt5-legacy/README @@ -1,24 +1,94 @@ -Qt is a cross-platform C++ application framework. Qt's primary feature -is its rich set of widgets that provide standard GUI functionality. +Qt is a cross-platform C++ application framework. Qt's +primary feature is its rich set of widgets that provide +standard GUI functionality. -This builds the legacy 5.7.1 version. +The following are optional dependencies that Qt will link +against if they are detected at build time: -Optional dependencies: unixodbc, freetds, OpenAL, libwebp, opus, snappy, -wayland, and postgresql +libwebp opus pcre2 snappy libinput -Optional dependencies: openvg and firebird (not available -at slackbuilds.org) +============================================================ -Note1: To build documentation pass DOCS=yes to the slackbuild +OPTIONS - DOCS=yes ./qt5-legacy.SlackBuild +To use Qt's built-in ccache option: -Note2: To build examples pass EXAMPLES=yes to the slackbuild + CCACHE=yes ./qt5.SlackBuild - EXAMPLES=yes ./qt5-legacy.SlackBuild +To build the documentation: -Note3: To build support for proprietary media codecs (note that this -will produce a non-redistributable package in some countries) pass -PROPRIETARY_CODECS=yes to the slackbuild + DOCS=yes ./qt5.SlackBuild - PROPRIETARY_CODECS=yes ./qt5-legacy.SlackBuild +To build the examples: + + EXAMPLES=yes ./qt5.SlackBuild + +To build support for proprietary media codecs: + + PROPRIETARY_CODECS=yes ./qt5.SlackBuild + +(this will produce a non-redistributable package in some +countries) + +To disable support for pulseaudio: + + PULSEAUDIO=no ./qt5.SlackBuild + +(Qt will automatically detect if pulseaudio is not installed +at build time and disable it if it is missing.) + +To NOT build qtwebengine (EXPERIMENTAL): + + WEBENGINE=no ./qt5.SlackBuild + + +Combine any or all of the above. + +============================================================ + +GENERAL NOTES + +After upgrading Qt5 it is important to rebuild qt5ct too, if +it is installed, or some applications may not display or +function correctly. + +There is a qt5-legacy (5.7.1) SlackBuild that is available +for older applications that do not run correctly with this +version. However it will not coexist with this version. + +Please report any problems about applications that don't +work correctly to the Qt5 maintainer or to the mailing list. + +============================================================ + +NOTES ON OPTIONS + +* Using ccache should speed up subsequent rebuilds, but may + be slower for first time or one-off builds. + +* Building the documentation and/or examples creates a + significantly larger package. + +* Successfully tested so far without webengine (VERY quick + tests): + + QMPlay2 + qt5ct + qbittorrent-qt5 + speedcrunch + qca-qt5 + psi-plus + sddm + +============================================================ + +BUILDING WITHOUT WEBENGINE + +YMMV whether it works with an application or not, but if you +have no intention of using the browser code, which includes +a chunk of 3rd party Google Chromium source, then it may +make sense to skip it and save yourself about 2/3 of the +build time. + +The package version has _nowebengine appended to it for +clarity. diff --git a/libraries/qt5-legacy/README.ccache b/libraries/qt5-legacy/README.ccache new file mode 100644 index 0000000000..1053bcc5c9 --- /dev/null +++ b/libraries/qt5-legacy/README.ccache @@ -0,0 +1,46 @@ +NOTES ON SETTING UP CCACHE + +Using ccache can save a lot of time when building packages, +and this is not limited to Qt5. Ccache is installed by +default on stock Slackware. + +ccache(1) has a lot of useful info on using ccache, however +I don't recommend using its method of symlinking. Instead I +recommend the following way: + +mkdir -p /usr/local/bin +ln -s /usr/bin/ccache /usr/local/bin/cc +ln -s /usr/bin/ccache /usr/local/bin/c++ +ln -s /usr/bin/ccache /usr/local/bin/gcc +ln -s /usr/bin/ccache /usr/local/bin/g++ + +Doing it this way rather than copying the ccache binary as +the man page suggests will ensure that the ccache used is +updated whenever the ccache package is. + +The cache is created in the home directory of the user using +it, and since slackbuilds are run by root that will be in +/root/.ccache, therefore ensure that you have enough free +space on the root file system for it. It is possible to put +the cache directory elsewhere though. See the man page for +info. But it would probably be fastest when on the same +file system as the build directory. + +It's also possible to host the cache on a shared NFS +directory, but be sure to test the speed before committing +to that. The man page has some notes on this. + +Since Qt5 can take a lot of build space I recommend a max +cache size of AT LEAST 6 GB. If you intend to use it all +the time then use as much as you can. The default size is +5 GB. I use 20 GB on my main build box, but use 7 GB on +workstations and servers. + +Handy commands: + +ccache -s: To show some statistics. +ccache -M : To set the max cache size to N. + +(use G for GB with -M.) + +Last updated Mon 10 Dec 03:46:41 UTC 2018 diff --git a/libraries/qt5-legacy/patches/explicitly-initialize-sqlite.patch b/libraries/qt5-legacy/patches/explicitly-initialize-sqlite.patch new file mode 100644 index 0000000000..2773658adc --- /dev/null +++ b/libraries/qt5-legacy/patches/explicitly-initialize-sqlite.patch @@ -0,0 +1,217 @@ +From 9bab2acc924790b0a01a08e76f9216acc2d6528b Mon Sep 17 00:00:00 2001 +From: Allan Sandfeld Jensen +Date: Thu, 16 May 2019 11:19:49 +0200 +Subject: [Backport] WebSQL: Explicitly initialize SQLite, remove deprecated + API usage. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Change-Id: I291dd041c5646c4fdd714ff98dd939566861d921 +Reviewed-on: https://chromium-review.googlesource.com/892092 +Task-number: QTBUG-75853 +Reviewed-by: Jüri Valdmann +--- + .../Source/modules/webdatabase/DatabaseTracker.cpp | 2 +- + .../modules/webdatabase/sqlite/SQLiteFileSystem.cpp | 21 ++++++++++++++++++++- + .../modules/webdatabase/sqlite/SQLiteFileSystem.h | 21 +++++++++++++++------ + .../webdatabase/sqlite/SQLiteFileSystemPosix.cpp | 19 ++++++++++--------- + .../webdatabase/sqlite/SQLiteFileSystemWin.cpp | 19 ++++++++++--------- + 5 files changed, 56 insertions(+), 26 deletions(-) + +diff --git a/chromium/third_party/WebKit/Source/modules/webdatabase/DatabaseTracker.cpp b/chromium/third_party/WebKit/Source/modules/webdatabase/DatabaseTracker.cpp +index 13ea7d8181..f78d90a5df 100644 +--- a/chromium/third_party/WebKit/Source/modules/webdatabase/DatabaseTracker.cpp ++++ b/chromium/third_party/WebKit/Source/modules/webdatabase/DatabaseTracker.cpp +@@ -66,7 +66,7 @@ DatabaseTracker& DatabaseTracker::tracker() { + } + + DatabaseTracker::DatabaseTracker() { +- SQLiteFileSystem::registerSQLiteVFS(); ++ SQLiteFileSystem::initializeSQLite(); + } + + bool DatabaseTracker::canEstablishDatabase(DatabaseContext* databaseContext, +diff --git a/chromium/third_party/WebKit/Source/modules/webdatabase/sqlite/SQLiteFileSystem.cpp b/chromium/third_party/WebKit/Source/modules/webdatabase/sqlite/SQLiteFileSystem.cpp +index 9c25341c57..2a6e140f9e 100644 +--- a/chromium/third_party/WebKit/Source/modules/webdatabase/sqlite/SQLiteFileSystem.cpp ++++ b/chromium/third_party/WebKit/Source/modules/webdatabase/sqlite/SQLiteFileSystem.cpp +@@ -39,9 +39,28 @@ + // platform-specific files SQLiteFileSystemChromium{Win|Posix}.cpp + namespace blink { + +-SQLiteFileSystem::SQLiteFileSystem() {} ++#if DCHECK_IS_ON() ++// static ++bool SQLiteFileSystem::initialize_sqlite_called_ = false; ++#endif // DCHECK_IS_ON + ++// static ++void SQLiteFileSystem::initializeSQLite() { ++#if DCHECK_IS_ON() ++ DCHECK(!initialize_sqlite_called_) << __func__ << " already called"; ++ initialize_sqlite_called_ = true; ++#endif // DCHECK_IS_ON() ++ ++ sqlite3_initialize(); ++ registerSQLiteVFS(); ++} ++ ++// static + int SQLiteFileSystem::openDatabase(const String& filename, sqlite3** database) { ++#if DCHECK_IS_ON() ++ DCHECK(initialize_sqlite_called_) ++ << "InitializeSQLite() must be called before " << __func__; ++#endif // DCHECK_IS_ON() + SafePointScope scope(BlinkGC::HeapPointersOnStack); + return sqlite3_open_v2(filename.utf8().data(), database, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, +diff --git a/chromium/third_party/WebKit/Source/modules/webdatabase/sqlite/SQLiteFileSystem.h b/chromium/third_party/WebKit/Source/modules/webdatabase/sqlite/SQLiteFileSystem.h +index 97c0ad83a1..af2bcd9211 100644 +--- a/chromium/third_party/WebKit/Source/modules/webdatabase/sqlite/SQLiteFileSystem.h ++++ b/chromium/third_party/WebKit/Source/modules/webdatabase/sqlite/SQLiteFileSystem.h +@@ -42,22 +42,31 @@ namespace blink { + // A class that abstracts the file system related operations required + // by the WebKit database code. + class SQLiteFileSystem { +- DISALLOW_NEW(); +- + public: +- // Registers a user-defined SQLite VFS. +- static void registerSQLiteVFS(); ++ // This class is used as a namespace, so instantiating it doesn't make sense. ++ SQLiteFileSystem() = delete; ++ ++ // Initializes SQLite for Blink's use. ++ // ++ // This must be called exactly once in each renderer process that uses SQLite. ++ static void initializeSQLite(); + + // Opens a database file. + // ++ // initializeSQLite() must be called before this method is called. ++ // + // filemame - The name of the database file. + // database - The SQLite structure that represents the database stored + // in the given file. + static int openDatabase(const String& filename, sqlite3** database); + + private: +- // do not instantiate this class +- SQLiteFileSystem(); ++ // Registers Chromium's VFS with SQLite. ++ static void registerSQLiteVFS(); ++ ++#if DCHECK_IS_ON() ++ static bool initialize_sqlite_called_; ++#endif // DCHECK_IS_ON() + }; // class SQLiteFileSystem + + } // namespace blink +diff --git a/chromium/third_party/WebKit/Source/modules/webdatabase/sqlite/SQLiteFileSystemPosix.cpp b/chromium/third_party/WebKit/Source/modules/webdatabase/sqlite/SQLiteFileSystemPosix.cpp +index 77e7b6d904..20d0fd2e0e 100644 +--- a/chromium/third_party/WebKit/Source/modules/webdatabase/sqlite/SQLiteFileSystemPosix.cpp ++++ b/chromium/third_party/WebKit/Source/modules/webdatabase/sqlite/SQLiteFileSystemPosix.cpp +@@ -321,11 +321,6 @@ int chromiumSleep(sqlite3_vfs* vfs, int microseconds) { + return wrappedVfs->xSleep(wrappedVfs, microseconds); + } + +-int chromiumCurrentTime(sqlite3_vfs* vfs, double* prNow) { +- sqlite3_vfs* wrappedVfs = static_cast(vfs->pAppData); +- return wrappedVfs->xCurrentTime(wrappedVfs, prNow); +-} +- + int chromiumGetLastError(sqlite3_vfs* vfs, int e, char* s) { + // xGetLastError() has never been used by SQLite. The implementation in + // os_win.c indicates this is a reasonable implementation. +@@ -333,6 +328,11 @@ int chromiumGetLastError(sqlite3_vfs* vfs, int e, char* s) { + return 0; + } + ++int chromiumCurrentTimeInt64(sqlite3_vfs* vfs, sqlite3_int64* now) { ++ sqlite3_vfs* wrapped_vfs = static_cast(vfs->pAppData); ++ return wrapped_vfs->xCurrentTimeInt64(wrapped_vfs, now); ++} ++ + } // namespace + + void SQLiteFileSystem::registerSQLiteVFS() { +@@ -342,9 +342,9 @@ void SQLiteFileSystem::registerSQLiteVFS() { + // TODO(shess): Implement local versions. + ASSERT(wrappedVfs->xRandomness); + ASSERT(wrappedVfs->xSleep); +- ASSERT(wrappedVfs->xCurrentTime); ++ ASSERT(wrappedVfs->xCurrentTimeInt64); + +- static sqlite3_vfs chromium_vfs = {1, ++ static sqlite3_vfs chromium_vfs = {2, + sizeof(chromiumVfsFile), + wrappedVfs->mxPathname, + 0, +@@ -360,8 +360,9 @@ void SQLiteFileSystem::registerSQLiteVFS() { + chromiumDlClose, + chromiumRandomness, + chromiumSleep, +- chromiumCurrentTime, +- chromiumGetLastError}; ++ nullptr, // CurrentTime is deprecated. ++ chromiumGetLastError, ++ chromiumCurrentTimeInt64}; + sqlite3_vfs_register(&chromium_vfs, 0); + } + +diff --git a/chromium/third_party/WebKit/Source/modules/webdatabase/sqlite/SQLiteFileSystemWin.cpp b/chromium/third_party/WebKit/Source/modules/webdatabase/sqlite/SQLiteFileSystemWin.cpp +index 2933df65f6..31103047fd 100644 +--- a/chromium/third_party/WebKit/Source/modules/webdatabase/sqlite/SQLiteFileSystemWin.cpp ++++ b/chromium/third_party/WebKit/Source/modules/webdatabase/sqlite/SQLiteFileSystemWin.cpp +@@ -148,11 +148,6 @@ int chromiumSleep(sqlite3_vfs* vfs, int microseconds) { + return wrappedVfs->xSleep(wrappedVfs, microseconds); + } + +-int chromiumCurrentTime(sqlite3_vfs* vfs, double* prNow) { +- sqlite3_vfs* wrappedVfs = static_cast(vfs->pAppData); +- return wrappedVfs->xCurrentTime(wrappedVfs, prNow); +-} +- + int chromiumGetLastError(sqlite3_vfs* vfs, int e, char* s) { + // xGetLastError() has never been used by SQLite. The implementation in + // os_win.c indicates this is a reasonable implementation. +@@ -160,6 +155,11 @@ int chromiumGetLastError(sqlite3_vfs* vfs, int e, char* s) { + return 0; + } + ++int chromiumCurrentTimeInt64(sqlite3_vfs* vfs, sqlite3_int64* now) { ++ sqlite3_vfs* wrapped_vfs = static_cast(vfs->pAppData); ++ return wrapped_vfs->xCurrentTimeInt64(wrapped_vfs, now); ++} ++ + } // namespace + + void SQLiteFileSystem::registerSQLiteVFS() { +@@ -169,9 +169,9 @@ void SQLiteFileSystem::registerSQLiteVFS() { + // TODO(shess): Implement local versions. + ASSERT(wrappedVfs->xRandomness); + ASSERT(wrappedVfs->xSleep); +- ASSERT(wrappedVfs->xCurrentTime); ++ ASSERT(wrappedVfs->xCurrentTimeInt64); + +- static sqlite3_vfs chromium_vfs = {1, ++ static sqlite3_vfs chromium_vfs = {2, + wrappedVfs->szOsFile, + wrappedVfs->mxPathname, + 0, +@@ -187,8 +187,9 @@ void SQLiteFileSystem::registerSQLiteVFS() { + chromiumDlClose, + chromiumRandomness, + chromiumSleep, +- chromiumCurrentTime, +- chromiumGetLastError}; ++ nullptr, // CurrentTime is deprecated. ++ chromiumGetLastError, ++ chromiumCurrentTimeInt64}; + sqlite3_vfs_register(&chromium_vfs, 0); + } + +-- +cgit v1.2.1 + diff --git a/libraries/qt5-legacy/patches/nss-update-sslv3-nonce.patch b/libraries/qt5-legacy/patches/nss-update-sslv3-nonce.patch deleted file mode 100644 index 1700c226a6..0000000000 --- a/libraries/qt5-legacy/patches/nss-update-sslv3-nonce.patch +++ /dev/null @@ -1,44 +0,0 @@ -diff -Naur qt-everywhere-opensource-src-5.5.1.orig/qtwebengine/src/3rdparty/chromium/net/quic/crypto/chacha20_poly1305_decrypter_nss.cc qt-everywhere-opensource-src-5.5.1/qtwebengine/src/3rdparty/chromium/net/quic/crypto/chacha20_poly1305_decrypter_nss.cc ---- qt-everywhere-opensource-src-5.5.1.orig/qtwebengine/src/3rdparty/chromium/net/quic/crypto/chacha20_poly1305_decrypter_nss.cc 2015-10-13 04:36:54.000000000 +0000 -+++ qt-everywhere-opensource-src-5.5.1/qtwebengine/src/3rdparty/chromium/net/quic/crypto/chacha20_poly1305_decrypter_nss.cc 2016-03-15 11:57:53.898988200 +0000 -@@ -66,9 +66,9 @@ - AeadParams* aead_params) const { - aead_params->len = sizeof(aead_params->data.nss_aead_params); - CK_NSS_AEAD_PARAMS* nss_aead_params = &aead_params->data.nss_aead_params; -- nss_aead_params->pIv = -+ nss_aead_params->pNonce = - reinterpret_cast(const_cast(nonce.data())); -- nss_aead_params->ulIvLen = nonce.size(); -+ nss_aead_params->ulNonceLen = nonce.size(); - nss_aead_params->pAAD = - reinterpret_cast(const_cast(associated_data.data())); - nss_aead_params->ulAADLen = associated_data.size(); -diff -Naur qt-everywhere-opensource-src-5.5.1.orig/qtwebengine/src/3rdparty/chromium/net/quic/crypto/chacha20_poly1305_encrypter_nss.cc qt-everywhere-opensource-src-5.5.1/qtwebengine/src/3rdparty/chromium/net/quic/crypto/chacha20_poly1305_encrypter_nss.cc ---- qt-everywhere-opensource-src-5.5.1.orig/qtwebengine/src/3rdparty/chromium/net/quic/crypto/chacha20_poly1305_encrypter_nss.cc 2015-10-13 04:36:54.000000000 +0000 -+++ qt-everywhere-opensource-src-5.5.1/qtwebengine/src/3rdparty/chromium/net/quic/crypto/chacha20_poly1305_encrypter_nss.cc 2016-03-15 11:57:53.902988200 +0000 -@@ -66,9 +66,9 @@ - AeadParams* aead_params) const { - aead_params->len = sizeof(aead_params->data.nss_aead_params); - CK_NSS_AEAD_PARAMS* nss_aead_params = &aead_params->data.nss_aead_params; -- nss_aead_params->pIv = -+ nss_aead_params->pNonce = - reinterpret_cast(const_cast(nonce.data())); -- nss_aead_params->ulIvLen = nonce.size(); -+ nss_aead_params->ulNonceLen = nonce.size(); - nss_aead_params->pAAD = - reinterpret_cast(const_cast(associated_data.data())); - nss_aead_params->ulAADLen = associated_data.size(); -diff -Naur qt-everywhere-opensource-src-5.5.1.orig/qtwebengine/src/3rdparty/chromium/net/third_party/nss/ssl/ssl3con.c qt-everywhere-opensource-src-5.5.1/qtwebengine/src/3rdparty/chromium/net/third_party/nss/ssl/ssl3con.c ---- qt-everywhere-opensource-src-5.5.1.orig/qtwebengine/src/3rdparty/chromium/net/third_party/nss/ssl/ssl3con.c 2015-10-13 04:36:52.000000000 +0000 -+++ qt-everywhere-opensource-src-5.5.1/qtwebengine/src/3rdparty/chromium/net/third_party/nss/ssl/ssl3con.c 2016-03-15 12:00:01.376986796 +0000 -@@ -2088,8 +2088,8 @@ - param.len = sizeof(aeadParams); - param.data = (unsigned char *) &aeadParams; - memset(&aeadParams, 0, sizeof(aeadParams)); -- aeadParams.pIv = (unsigned char *) additionalData; -- aeadParams.ulIvLen = 8; -+ aeadParams.pNonce = (unsigned char *) additionalData; -+ aeadParams.ulNonceLen = 8; - aeadParams.pAAD = (unsigned char *) additionalData; - aeadParams.ulAADLen = additionalDataLen; - aeadParams.ulTagLen = tagSize; diff --git a/libraries/qt5-legacy/patches/qt5.mysql.h.diff b/libraries/qt5-legacy/patches/qt5.mysql.h.diff index 41dc9d34d5..1ac6faacfd 100644 --- a/libraries/qt5-legacy/patches/qt5.mysql.h.diff +++ b/libraries/qt5-legacy/patches/qt5.mysql.h.diff @@ -1,6 +1,6 @@ -diff -Naur qt-everywhere-opensource-src-5.1.0.orig/qtbase/src/sql/drivers/mysql/qsql_mysql_p.h qt-everywhere-opensource-src-5.1.0/qtbase/src/sql/drivers/mysql/qsql_mysql_p.h ---- qt-everywhere-opensource-src-5.1.0.orig/qtbase/src/sql/drivers/mysql/qsql_mysql_p.h 2013-07-02 07:09:52.000000000 +0000 -+++ qt-everywhere-opensource-src-5.1.0/qtbase/src/sql/drivers/mysql/qsql_mysql_p.h 2013-07-21 21:21:01.190172379 +0000 +diff -Naur qt-everywhere-opensource-src-5.1.0.orig/qtbase/src/plugins/sqldrivers/mysql/qsql_mysql_p.h qt-everywhere-opensource-src-5.1.0/qtbase/src/plugins/sqldrivers/mysql/qsql_mysql_p.h +--- qt-everywhere-opensource-src-5.1.0.orig/qtbase/src/plugins/sqldrivers/mysql/qsql_mysql_p.h 2013-07-02 07:09:52.000000000 +0000 ++++ qt-everywhere-opensource-src-5.1.0/qtbase/src/plugins/sqldrivers/mysql/qsql_mysql_p.h 2013-07-21 21:21:01.190172379 +0000 @@ -60,7 +60,7 @@ #include #endif diff --git a/libraries/qt5-legacy/qt5-legacy.SlackBuild b/libraries/qt5-legacy/qt5-legacy.SlackBuild index 88e35e600c..3418558ffb 100644 --- a/libraries/qt5-legacy/qt5-legacy.SlackBuild +++ b/libraries/qt5-legacy/qt5-legacy.SlackBuild @@ -2,7 +2,8 @@ # Slackware build script for qt5-legacy -# Maintained 2018- by Dave Woodfall +# Update for 5.9.6-5.9.9 by David Woodfall +# # Copyright 2013-2017 Larry Hajali # Copyright 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Patrick J. Volkerding, Sebeka, MN, USA # All rights reserved. @@ -46,10 +47,12 @@ # This is the highly modified version qt.SlackBuild found in Slackware # tailored to Qt 5. Modified by Larry Hajali. +# Adapted for Qt 5.9.6 by David Woodfall + PRGNAM=qt5-legacy -LIBNAM=qt5 -SRCNAM=qt-everywhere-opensource-src -VERSION=${VERSION:-5.7.1} +LIBNAM=${PRGNAM%%-*} +SRCNAM=${PRGNAM%%5*} +VERSION=${VERSION:-5.9.9} BUILD=${BUILD:-1} TAG=${TAG:-_SBo} @@ -66,6 +69,52 @@ TMP=${TMP:-/tmp/SBo} PKG=$TMP/package-$PRGNAM OUTPUT=${OUTPUT:-/tmp} +EXAMPLES=${EXAMPLES:-no} +DOCS=${DOCS:-no} +PROPRIETARY_CODECS=${PROPRIETARY_CODECS:-no} +PULSEAUDIO=${PULSEAUDIO:-yes} +CCACHE=${CCACHE:-no} +WEBENGINE=${WEBENGINE:-yes} + +printf "\n%s\n\n" "SlackBuild Options:" +printf "%s\n" "CCACHE: $CCACHE" +printf "%s\n" "DOCS: $DOCS" +printf "%s\n" "EXAMPLES: $EXAMPLES" +printf "%s\n" "PROPRIETARY_CODECS: $PROPRIETARY_CODECS" +printf "%s\n" "PULSEAUDIO: $PULSEAUDIO" +printf "%s\n" "WEBENGINE: $WEBENGINE" +printf "\n" + +# Default is no. +if [ "$EXAMPLES" == "yes" ]; then + BUILD_EXAMPLES="" +else + BUILD_EXAMPLES="-nomake examples" +fi + +# Default is yes. +if [ "$PULSEAUDIO" = "no" ]; then + PULSE="-no-pulseaudio" +fi + +# Default is no. +if [ "$CCACHE" = "yes" ]; then + CCACHE="-ccache" +else + unset CCACHE +fi + +if [ "$WEBENGINE" = "no" ]; then + EXCLUDE="--exclude=qtweb*" + PKGVERSION="${VERSION}_nowebengine" +else + PKGVERSION="${VERSION}" + # Note that this changes to -webengine-proprietary-codecs in later versions + if [ "$PROPRIETARY_CODECS" = "yes" ]; then + CODECS="-proprietary-codecs" + fi +fi + if [ "$ARCH" = "i586" ]; then SLKCFLAGS="-O2 -march=i586 -mtune=i686" LIBDIRSUFFIX="" @@ -75,6 +124,7 @@ elif [ "$ARCH" = "i686" ]; then elif [ "$ARCH" = "x86_64" ]; then SLKCFLAGS="-O2 -fPIC" LIBDIRSUFFIX="64" + SLKLDFLAGS="-L/usr/lib64" elif [ "$ARCH" = "armv7hl" ]; then # To prevent "qatomic_armv6.h error: output number 2 not directly addressable" # More permanent solution is to patch gcc: @@ -86,30 +136,21 @@ else LIBDIRSUFFIX="" fi -# http://doc.qt.io/qt-5/qtwebengine-platform-notes.html#audio-and-video-codec-support -PRCOD="" -[ "$PROPRIETARY_CODECS" = "yes" ] && PRCOD="WEBENGINE_CONFIG += use_proprietary_codecs" - set -e rm -rf $PKG mkdir -p $TMP $PKG $OUTPUT cd $TMP -rm -rf $SRCNAM-$VERSION -tar xvf $CWD/$SRCNAM-$VERSION.tar.xz -cd $SRCNAM-$VERSION +echo "Removing any existing source directory. Please wait..." +rm -rf ${SRCNAM}-everywhere-opensource-src-$VERSION +tar xvf $CWD/${SRCNAM}-everywhere-opensource-src-$VERSION.tar.xz $EXCLUDE +cd ${SRCNAM}-everywhere-opensource-src-$VERSION chown -R root:root . find -L . \ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \ - -o -perm 511 \) -exec chmod 755 {} \; -o \ + -o -perm 511 \) -exec chmod 755 {} \+ -o \ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \ - -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \; - -# Slackware patch to build against MySQL/MariaDB. -patch -p1 < $CWD/patches/qt5.mysql.h.diff - -# Patch for the newer mozilla-nss -patch -p1 < $CWD/patches/nss-update-sslv3-nonce.patch + -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \+ # Limit -reduce-relocations to ix86 and x86_64. # https://bugreports.qt-project.org/browse/QTBUG-36129 @@ -119,19 +160,25 @@ else RELOCATIONS="" fi -sed -i "s|-O2|$SLKCFLAGS|" qtbase/mkspecs/common/gcc-base.conf +# Borrowed a few things from alienBOB: +# Fix path to mysql header: +cat $CWD/patches/qt5.mysql.h.diff | patch -p1 --verbose -# Build examples. Default is no. -if [ "${EXAMPLES:-no}" == "yes" ]; then - BUILD_EXAMPLES="" -else - BUILD_EXAMPLES="-nomake examples" -fi +# Fix missing private includes: QTBUG-37417 +sed -e '/CMAKE_NO_PRIVATE_INCLUDES\ \=\ true/d' \ + -i qtbase/mkspecs/features/create_cmake.prf + +# Use our custom compiler and linker flags: +sed -i -re "s,-O(2|3),$SLKCFLAGS," qtbase/mkspecs/common/gcc-base.conf -echo "$PRCOD" >> qtwebengine/.qmake.conf +if [ "$ARCH" = "x86_64" ]; then + sed -i -e "/^QMAKE_LFLAGS\s/s,+=,+= $SLKLDFLAGS,g" \ + qtbase/mkspecs/common/gcc-base.conf + export LDFLAGS="$SLKLDFLAGS" +fi export CFLAGS="$SLKCFLAGS" -export CXXFLAGS="$SLKCFLAGS" +export CXXFLAGS="$SLKCFLAGS -std=c++11" ./configure -v \ -confirm-license \ -opensource \ @@ -144,12 +191,10 @@ export CXXFLAGS="$SLKCFLAGS" -system-libjpeg \ -system-zlib \ -system-sqlite \ - -system-pcre \ -plugin-sql-sqlite \ -icu \ - -openssl \ + -openssl-linked \ -verbose \ - -optimized-qmake \ -dbus-linked \ -qpa xcb \ -xcb \ @@ -161,7 +206,10 @@ export CXXFLAGS="$SLKCFLAGS" -no-strip \ -release \ -no-use-gold-linker \ - -pulseaudio \ + -c++std c++11 \ + $CCACHE \ + $CODECS \ + $PULSE \ $RELOCATIONS \ $BUILD_EXAMPLES @@ -169,7 +217,7 @@ make make install INSTALL_ROOT=$PKG # Install documentation. Default is not to install documentation. -if [ "${DOCS:-no}" == "yes" ]; then +if [ "$DOCS" == "yes" ]; then # Recreate Makefiles in order to use the just compiled qdoc. for doc in $(find . -name "Makefile*" | xargs egrep "^\s/usr/lib${LIBDIRSUFFIX}/qt5/bin/" \ | cut -d':' -f1 | uniq) @@ -183,17 +231,15 @@ fi find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true -ln -s $LIBNAM $PKG/usr/lib${LIBDIRSUFFIX}/qt-$VERSION - mkdir -p $PKG/usr/bin for BIN in $PKG/usr/lib${LIBDIRSUFFIX}/$LIBNAM/bin/*; do TMP_FILE=$(echo $BIN | sed -e "s|$PKG||") case $(basename $BIN) in syncqt.pl|fixqt4headers.pl) - ln -s $TMP_FILE $PKG/usr/bin/$(basename $BIN) + ln -vs $TMP_FILE $PKG/usr/bin/$(basename $BIN) ;; *) - ln -s $TMP_FILE $PKG/usr/bin/$(basename $BIN)-$LIBNAM + ln -vs $TMP_FILE $PKG/usr/bin/$(basename $BIN)-$LIBNAM ;; esac done @@ -229,11 +275,13 @@ Description: Qt5 Configuration Version: $VERSION EOF -# Fix internal linking for Qt5WebEngineCore.pc. -sed -i \ - -e 's|-Wl,--start-group.* -Wl,--end-group||' \ - -e "s|-L${PWD}/qtwebengine/src/core/api/Release||" \ - $PKG/usr/lib${LIBDIRSUFFIX}/pkgconfig/Qt5WebEngineCore.pc +if [ "$WEBENGINE" = "yes" ]; then + # Fix internal linking for Qt5WebEngineCore.pc. + sed -i \ + -e 's|-Wl,--start-group.* -Wl,--end-group||' \ + -e "s|-L${PWD}/qtwebengine/src/core/api/Release||" \ + $PKG/usr/lib${LIBDIRSUFFIX}/pkgconfig/Qt5WebEngineCore.pc +fi # While we are at it, there isn't any reason to keep references to $PKG in the *.prl files. for PRL in $(find $PKG -name "*\.prl"); do @@ -269,6 +317,7 @@ find $PKG \( -name "*.qml" -o -name "*.app" \) -perm 755 -exec chmod 644 '{}' \; mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION cp -a \ README qtbase/{header*,LGPL_EXCEPTION.txt,LICENSE.*L} \ + $CWD/README.benchmarks $CWD/README.ccache \ $PKG/usr/doc/$PRGNAM-$VERSION cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild @@ -277,4 +326,6 @@ cat $CWD/slack-desc > $PKG/install/slack-desc cat $CWD/doinst.sh > $PKG/install/doinst.sh cd $PKG -/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz} +/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$PKGVERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz} + +# vim: expandtab diff --git a/libraries/qt5-legacy/qt5-legacy.info b/libraries/qt5-legacy/qt5-legacy.info index b2eac2c0f0..fc02ef7b03 100644 --- a/libraries/qt5-legacy/qt5-legacy.info +++ b/libraries/qt5-legacy/qt5-legacy.info @@ -1,10 +1,10 @@ PRGNAM="qt5-legacy" -VERSION="5.7.1" +VERSION="5.9.9" HOMEPAGE="http://qt-project.org/" -DOWNLOAD="http://ponce.cc/slackware/sources/repo/qt-everywhere-opensource-src-5.7.1.tar.xz" -MD5SUM="7524ffba8411119d867f673155ec91bc" +DOWNLOAD="https://download.qt.io/official_releases/qt/5.9/5.9.9/single/qt-everywhere-opensource-src-5.9.9.tar.xz" +MD5SUM="97e81709b57e82ab2b279408eaa9270e" DOWNLOAD_x86_64="" MD5SUM_x86_64="" -REQUIRES="libxkbcommon libinput" -MAINTAINER="David Woodfall" +REQUIRES="libxkbcommon" +MAINTAINER="Dave Woodfall" EMAIL="dave@slackbuilds.org" diff --git a/libraries/qt5-legacy/slack-desc b/libraries/qt5-legacy/slack-desc index d5abcfd6c0..6b0c96cca0 100644 --- a/libraries/qt5-legacy/slack-desc +++ b/libraries/qt5-legacy/slack-desc @@ -6,14 +6,14 @@ # customary to leave one space after the ':' except on otherwise blank lines. |-----handy-ruler------------------------------------------------------| -qt5-legacy: qt5-legacy (a multi-platform C++ graphical user interface toolkit) +qt5-legacy: qt5 (a multi-platform C++ graphical user interface toolkit) qt5-legacy: qt5-legacy: Qt is a cross-platform C++ application framework. Qt's primary feature qt5-legacy: is its rich set of widgets that provide standard GUI functionality. qt5-legacy: -qt5-legacy: This is the legacy 5.7.1 version of qt5 -qt5-legacy: qt5-legacy: Homepage: http://qt-project.org qt5-legacy: qt5-legacy: qt5-legacy: +qt5-legacy: +qt5-legacy: -- cgit v1.2.3