summaryrefslogtreecommitdiff
path: root/source/l
diff options
context:
space:
mode:
Diffstat (limited to 'source/l')
-rwxr-xr-xsource/l/SDL2/SDL2.SlackBuild2
-rwxr-xr-xsource/l/atkmm/atkmm.SlackBuild2
-rw-r--r--source/l/cryfs/041b5baea5a4efceff33df2f316646b47a1cd7c0.patch27
-rw-r--r--source/l/cryfs/27587ea1acec5f939a31217f1c43953378f18821.patch297
-rwxr-xr-xsource/l/cryfs/cryfs.SlackBuild8
-rwxr-xr-xsource/l/glib2/glib2.SlackBuild2
-rwxr-xr-xsource/l/gst-plugins-base/gst-plugins-base.SlackBuild2
-rwxr-xr-xsource/l/gst-plugins-good/gst-plugins-good.SlackBuild2
-rw-r--r--source/l/gst-plugins-good/gst-plugins-good.gcc11.patch316
-rwxr-xr-xsource/l/gtk+3/gtk+3.SlackBuild3
-rw-r--r--source/l/gtk+3/gtk.array-bounds.gcc11.diff10
-rw-r--r--source/l/gtk4/doinst.sh21
-rwxr-xr-xsource/l/gtk4/gtk4.SlackBuild161
-rw-r--r--source/l/gtk4/slack-desc19
-rwxr-xr-xsource/l/gtkmm3/gtkmm3.SlackBuild2
-rwxr-xr-xsource/l/libwebp/libwebp.SlackBuild2
-rwxr-xr-xsource/l/libwpd/libwpd.SlackBuild2
-rw-r--r--source/l/libwpd/libwpd.gcc11.diff21
-rwxr-xr-xsource/l/mlt/mlt.SlackBuild74
-rwxr-xr-xsource/l/mozilla-nss/mozilla-nss.SlackBuild4
-rwxr-xr-xsource/l/ocl-icd/ocl-icd.SlackBuild2
-rwxr-xr-xsource/l/openexr/openexr.SlackBuild2
-rw-r--r--source/l/pulseaudio/pulseaudio-autostart-meson.build.patch10
-rwxr-xr-xsource/l/pulseaudio/pulseaudio.SlackBuild4
-rw-r--r--source/l/qt5/patches/0006-Fix-build-with-GCC-11-include-limits.patch53
-rw-r--r--source/l/qt5/patches/qt5-qtbase-gcc11.patch171
-rw-r--r--source/l/qt5/patches/qt5-qtdeclarative-gcc11.patch21
-rw-r--r--source/l/qt5/patches/qt5-qtwebengine-gcc11.patch20
-rw-r--r--source/l/qt5/patches/qt5-qtwebsockets-gcc11.patch12
-rw-r--r--source/l/qt5/patches/qtconcurrentthreadengine.h-gcc11.patch14
-rwxr-xr-xsource/l/qt5/qt5.SlackBuild22
-rwxr-xr-xsource/l/tidy-html5/tidy-html5.SlackBuild6
-rwxr-xr-xsource/l/v4l-utils/v4l-utils.SlackBuild5
33 files changed, 1248 insertions, 71 deletions
diff --git a/source/l/SDL2/SDL2.SlackBuild b/source/l/SDL2/SDL2.SlackBuild
index 99b87eb0..984c5880 100755
--- a/source/l/SDL2/SDL2.SlackBuild
+++ b/source/l/SDL2/SDL2.SlackBuild
@@ -24,7 +24,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=SDL2
VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
-BUILD=${BUILD:-3}
+BUILD=${BUILD:-1}
# Automatically determine the architecture we're building on:
if [ -z "$ARCH" ]; then
diff --git a/source/l/atkmm/atkmm.SlackBuild b/source/l/atkmm/atkmm.SlackBuild
index db7365d6..fb955461 100755
--- a/source/l/atkmm/atkmm.SlackBuild
+++ b/source/l/atkmm/atkmm.SlackBuild
@@ -24,7 +24,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=atkmm
VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
-BUILD=${BUILD:-3}
+BUILD=${BUILD:-1}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
diff --git a/source/l/cryfs/041b5baea5a4efceff33df2f316646b47a1cd7c0.patch b/source/l/cryfs/041b5baea5a4efceff33df2f316646b47a1cd7c0.patch
new file mode 100644
index 00000000..22d8b344
--- /dev/null
+++ b/source/l/cryfs/041b5baea5a4efceff33df2f316646b47a1cd7c0.patch
@@ -0,0 +1,27 @@
+From 041b5baea5a4efceff33df2f316646b47a1cd7c0 Mon Sep 17 00:00:00 2001
+From: Sam James <11667869+thesamesam@users.noreply.github.com>
+Date: Sat, 14 Aug 2021 17:29:24 +0100
+Subject: [PATCH] src/fspp/fuse/Fuse.h: add <memory.h> include for
+ std::shared_ptr (#395)
+
+Needed to fix build with Boost 1.77 (some indirect inclusion
+got lost).
+
+Signed-off-by: Sam James <sam@gentoo.org>
+---
+ src/fspp/fuse/Fuse.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/fspp/fuse/Fuse.h b/src/fspp/fuse/Fuse.h
+index 2dd3c2d4d..3841e38a4 100644
+--- a/src/fspp/fuse/Fuse.h
++++ b/src/fspp/fuse/Fuse.h
+@@ -11,6 +11,7 @@
+ #include <boost/optional.hpp>
+ #include <cpp-utils/macros.h>
+ #include <atomic>
++#include <memory>
+ #include "stat_compatibility.h"
+ #include <fspp/fs_interface/Context.h>
+
+
diff --git a/source/l/cryfs/27587ea1acec5f939a31217f1c43953378f18821.patch b/source/l/cryfs/27587ea1acec5f939a31217f1c43953378f18821.patch
new file mode 100644
index 00000000..0d739b07
--- /dev/null
+++ b/source/l/cryfs/27587ea1acec5f939a31217f1c43953378f18821.patch
@@ -0,0 +1,297 @@
+From 27587ea1acec5f939a31217f1c43953378f18821 Mon Sep 17 00:00:00 2001
+From: Sebastian Messmer <messmer@cryfs.org>
+Date: Sat, 8 May 2021 14:44:27 -0700
+Subject: [PATCH] Fixed an issue when compiling with GCC 11, see
+ https://github.com/cryfs/cryfs/issues/389
+
+---
+ ChangeLog.txt | 5 ++
+ .../onblocks/datanodestore/DataNodeView.h | 8 +--
+ .../filesystem/fsblobstore/utils/DirEntry.cpp | 66 +++++++++----------
+ src/cryfs/localstate/LocalStateMetadata.cpp | 24 +++----
+ src/cryfs/localstate/LocalStateMetadata.h | 10 +--
+ 5 files changed, 59 insertions(+), 54 deletions(-)
+
+diff --git a/ChangeLog.txt b/ChangeLog.txt
+index f9776eb93..9d7a6708c 100644
+--- a/ChangeLog.txt
++++ b/ChangeLog.txt
+@@ -1,3 +1,8 @@
++Version 0.10.4 (unreleased)
++--------------
++Fixed bugs:
++* Fixed an issue when compiling with GCC 11, see https://github.com/cryfs/cryfs/issues/389
++
+ Version 0.10.3
+ ---------------
+ Fixed bugs:
+diff --git a/src/blobstore/implementations/onblocks/datanodestore/DataNodeView.h b/src/blobstore/implementations/onblocks/datanodestore/DataNodeView.h
+index 256c28495..3799612e3 100644
+--- a/src/blobstore/implementations/onblocks/datanodestore/DataNodeView.h
++++ b/src/blobstore/implementations/onblocks/datanodestore/DataNodeView.h
+@@ -67,7 +67,7 @@ class DataNodeView final {
+
+ static DataNodeView create(blockstore::BlockStore *blockStore, const DataNodeLayout &layout, uint16_t formatVersion, uint8_t depth, uint32_t size, cpputils::Data data) {
+ ASSERT(data.size() <= layout.datasizeBytes(), "Data is too large for node");
+- cpputils::Data serialized = _serialize(layout, formatVersion, depth, size, std::move(data));
++ cpputils::Data serialized = serialize_(layout, formatVersion, depth, size, std::move(data));
+ ASSERT(serialized.size() == layout.blocksizeBytes(), "Wrong block size");
+ auto block = blockStore->create(serialized);
+ return DataNodeView(std::move(block));
+@@ -75,7 +75,7 @@ class DataNodeView final {
+
+ static DataNodeView initialize(cpputils::unique_ref<blockstore::Block> block, const DataNodeLayout &layout, uint16_t formatVersion, uint8_t depth, uint32_t size, cpputils::Data data) {
+ ASSERT(data.size() <= DataNodeLayout(block->size()).datasizeBytes(), "Data is too large for node");
+- cpputils::Data serialized = _serialize(layout, formatVersion, depth, size, std::move(data));
++ cpputils::Data serialized = serialize_(layout, formatVersion, depth, size, std::move(data));
+ ASSERT(serialized.size() == block->size(), "Block has wrong size");
+ block->write(serialized.data(), 0, serialized.size());
+ return DataNodeView(std::move(block));
+@@ -83,7 +83,7 @@ class DataNodeView final {
+
+ static DataNodeView overwrite(blockstore::BlockStore *blockStore, const DataNodeLayout &layout, uint16_t formatVersion, uint8_t depth, uint32_t size, const blockstore::BlockId &blockId, cpputils::Data data) {
+ ASSERT(data.size() <= layout.datasizeBytes(), "Data is too large for node");
+- cpputils::Data serialized = _serialize(layout, formatVersion, depth, size, std::move(data));
++ cpputils::Data serialized = serialize_(layout, formatVersion, depth, size, std::move(data));
+ auto block = blockStore->overwrite(blockId, std::move(serialized));
+ return DataNodeView(std::move(block));
+ }
+@@ -143,7 +143,7 @@ class DataNodeView final {
+ }
+
+ private:
+- static cpputils::Data _serialize(const DataNodeLayout &layout, uint16_t formatVersion, uint8_t depth, uint32_t size, cpputils::Data data) {
++ static cpputils::Data serialize_(const DataNodeLayout &layout, uint16_t formatVersion, uint8_t depth, uint32_t size, cpputils::Data data) {
+ cpputils::Data result(layout.blocksizeBytes());
+ cpputils::serialize<uint16_t>(result.dataOffset(layout.FORMAT_VERSION_OFFSET_BYTES), formatVersion);
+ cpputils::serialize<uint8_t>(result.dataOffset(layout.DEPTH_OFFSET_BYTES), depth);
+diff --git a/src/cryfs/filesystem/fsblobstore/utils/DirEntry.cpp b/src/cryfs/filesystem/fsblobstore/utils/DirEntry.cpp
+index 941148db9..70dd5a560 100644
+--- a/src/cryfs/filesystem/fsblobstore/utils/DirEntry.cpp
++++ b/src/cryfs/filesystem/fsblobstore/utils/DirEntry.cpp
+@@ -11,55 +11,55 @@ namespace cryfs {
+
+ namespace {
+ template<typename DataType>
+- size_t _serialize(void* dst, const DataType& obj) {
++ size_t serialize_(void* dst, const DataType& obj) {
+ cpputils::serialize<DataType>(dst, obj);
+ return sizeof(DataType);
+ }
+
+ template<typename DataType>
+- DataType _deserialize(const char** src) {
++ DataType deserialize_(const char** src) {
+ DataType result = cpputils::deserialize<DataType>(*src);
+ *src += sizeof(DataType);
+ return result;
+ }
+
+- constexpr size_t _serializedTimeValueSize() {
++ constexpr size_t serializedTimeValueSize_() {
+ return sizeof(uint64_t) + sizeof(uint32_t);
+ }
+
+- unsigned int _serializeTimeValue(uint8_t *dest, timespec value) {
++ unsigned int serializeTimeValue_(uint8_t *dest, timespec value) {
+ unsigned int offset = 0;
+- offset += _serialize<uint64_t>(dest + offset, value.tv_sec);
+- offset += _serialize<uint32_t>(dest + offset, value.tv_nsec);
+- ASSERT(offset == _serializedTimeValueSize(), "serialized to wrong size");
++ offset += serialize_<uint64_t>(dest + offset, value.tv_sec);
++ offset += serialize_<uint32_t>(dest + offset, value.tv_nsec);
++ ASSERT(offset == serializedTimeValueSize_(), "serialized to wrong size");
+ return offset;
+ }
+
+- timespec _deserializeTimeValue(const char **pos) {
++ timespec deserializeTimeValue_(const char **pos) {
+ timespec value{};
+- value.tv_sec = _deserialize<uint64_t>(pos);
+- value.tv_nsec = _deserialize<uint32_t>(pos);
++ value.tv_sec = deserialize_<uint64_t>(pos);
++ value.tv_nsec = deserialize_<uint32_t>(pos);
+ return value;
+ }
+
+- unsigned int _serializeString(uint8_t *dest, const string &value) {
++ unsigned int serializeString_(uint8_t *dest, const string &value) {
+ std::memcpy(dest, value.c_str(), value.size()+1);
+ return value.size() + 1;
+ }
+
+- string _deserializeString(const char **pos) {
++ string deserializeString_(const char **pos) {
+ size_t length = strlen(*pos);
+ string value(*pos, length);
+ *pos += length + 1;
+ return value;
+ }
+
+- unsigned int _serializeBlockId(uint8_t *dest, const BlockId &blockId) {
++ unsigned int serializeBlockId_(uint8_t *dest, const BlockId &blockId) {
+ blockId.ToBinary(dest);
+ return blockId.BINARY_LENGTH;
+ }
+
+- BlockId _deserializeBlockId(const char **pos) {
++ BlockId deserializeBlockId_(const char **pos) {
+ BlockId blockId = BlockId::FromBinary(*pos);
+ *pos += BlockId::BINARY_LENGTH;
+ return blockId;
+@@ -75,35 +75,35 @@ namespace cryfs {
+ _mode.hasDirFlag()) + ", " + std::to_string(_mode.hasSymlinkFlag()) + ", " + std::to_string(static_cast<uint8_t>(_type))
+ );
+ unsigned int offset = 0;
+- offset += _serialize<uint8_t>(dest + offset, static_cast<uint8_t>(_type));
+- offset += _serialize<uint32_t>(dest + offset, _mode.value());
+- offset += _serialize<uint32_t>(dest + offset, _uid.value());
+- offset += _serialize<uint32_t>(dest + offset, _gid.value());
+- offset += _serializeTimeValue(dest + offset, _lastAccessTime);
+- offset += _serializeTimeValue(dest + offset, _lastModificationTime);
+- offset += _serializeTimeValue(dest + offset, _lastMetadataChangeTime);
+- offset += _serializeString(dest + offset, _name);
+- offset += _serializeBlockId(dest + offset, _blockId);
++ offset += serialize_<uint8_t>(dest + offset, static_cast<uint8_t>(_type));
++ offset += serialize_<uint32_t>(dest + offset, _mode.value());
++ offset += serialize_<uint32_t>(dest + offset, _uid.value());
++ offset += serialize_<uint32_t>(dest + offset, _gid.value());
++ offset += serializeTimeValue_(dest + offset, _lastAccessTime);
++ offset += serializeTimeValue_(dest + offset, _lastModificationTime);
++ offset += serializeTimeValue_(dest + offset, _lastMetadataChangeTime);
++ offset += serializeString_(dest + offset, _name);
++ offset += serializeBlockId_(dest + offset, _blockId);
+ ASSERT(offset == serializedSize(), "Didn't write correct number of elements");
+ }
+
+ const char *DirEntry::deserializeAndAddToVector(const char *pos, vector<DirEntry> *result) {
+- fspp::Dir::EntryType type = static_cast<fspp::Dir::EntryType>(_deserialize<uint8_t>(&pos));
+- fspp::mode_t mode = fspp::mode_t(_deserialize<uint32_t>(&pos));
+- fspp::uid_t uid = fspp::uid_t(_deserialize<uint32_t>(&pos));
+- fspp::gid_t gid = fspp::gid_t(_deserialize<uint32_t>(&pos));
+- timespec lastAccessTime = _deserializeTimeValue(&pos);
+- timespec lastModificationTime = _deserializeTimeValue(&pos);
+- timespec lastMetadataChangeTime = _deserializeTimeValue(&pos);
+- string name = _deserializeString(&pos);
+- BlockId blockId = _deserializeBlockId(&pos);
++ fspp::Dir::EntryType type = static_cast<fspp::Dir::EntryType>(deserialize_<uint8_t>(&pos));
++ fspp::mode_t mode = fspp::mode_t(deserialize_<uint32_t>(&pos));
++ fspp::uid_t uid = fspp::uid_t(deserialize_<uint32_t>(&pos));
++ fspp::gid_t gid = fspp::gid_t(deserialize_<uint32_t>(&pos));
++ timespec lastAccessTime = deserializeTimeValue_(&pos);
++ timespec lastModificationTime = deserializeTimeValue_(&pos);
++ timespec lastMetadataChangeTime = deserializeTimeValue_(&pos);
++ string name = deserializeString_(&pos);
++ BlockId blockId = deserializeBlockId_(&pos);
+
+ result->emplace_back(type, name, blockId, mode, uid, gid, lastAccessTime, lastModificationTime, lastMetadataChangeTime);
+ return pos;
+ }
+
+ size_t DirEntry::serializedSize() const {
+- return 1 + sizeof(uint32_t) + sizeof(uint32_t) + sizeof(uint32_t) + 3*_serializedTimeValueSize() + (
++ return 1 + sizeof(uint32_t) + sizeof(uint32_t) + sizeof(uint32_t) + 3*serializedTimeValueSize_() + (
+ _name.size() + 1) + _blockId.BINARY_LENGTH;
+ }
+ }
+diff --git a/src/cryfs/localstate/LocalStateMetadata.cpp b/src/cryfs/localstate/LocalStateMetadata.cpp
+index 529a26129..dfa952a1a 100644
+--- a/src/cryfs/localstate/LocalStateMetadata.cpp
++++ b/src/cryfs/localstate/LocalStateMetadata.cpp
+@@ -30,10 +30,10 @@ LocalStateMetadata::LocalStateMetadata(uint32_t myClientId, Hash encryptionKeyHa
+
+ LocalStateMetadata LocalStateMetadata::loadOrGenerate(const bf::path &statePath, const Data& encryptionKey, bool allowReplacedFilesystem) {
+ auto metadataFile = statePath / "metadata";
+- auto loaded = _load(metadataFile);
++ auto loaded = load_(metadataFile);
+ if (loaded == none) {
+ // If it couldn't be loaded, generate a new client id.
+- return _generate(metadataFile, encryptionKey);
++ return generate_(metadataFile, encryptionKey);
+ }
+
+ if (!allowReplacedFilesystem && loaded->_encryptionKeyHash.digest != cpputils::hash::hash(encryptionKey, loaded->_encryptionKeyHash.salt).digest) {
+@@ -42,22 +42,22 @@ LocalStateMetadata LocalStateMetadata::loadOrGenerate(const bf::path &statePath,
+ return *loaded;
+ }
+
+-optional<LocalStateMetadata> LocalStateMetadata::_load(const bf::path &metadataFilePath) {
++optional<LocalStateMetadata> LocalStateMetadata::load_(const bf::path &metadataFilePath) {
+ ifstream file(metadataFilePath.string());
+ if (!file.good()) {
+ // State file doesn't exist
+ return none;
+ }
+- return _deserialize(file);
++ return deserialize_(file);
+ }
+
+-void LocalStateMetadata::_save(const bf::path &metadataFilePath) const {
++void LocalStateMetadata::save_(const bf::path &metadataFilePath) const {
+ ofstream file(metadataFilePath.string(), std::ios::trunc);
+- _serialize(file);
++ serialize_(file);
+ }
+
+ namespace {
+-uint32_t _generateClientId() {
++uint32_t generateClientId_() {
+ uint32_t result;
+ do {
+ result = cpputils::deserialize<uint32_t>(Random::PseudoRandom().getFixedSize<sizeof(uint32_t)>().data());
+@@ -82,8 +82,8 @@ optional<uint32_t> _tryLoadClientIdFromLegacyFile(const bf::path &metadataFilePa
+ #endif
+ }
+
+-LocalStateMetadata LocalStateMetadata::_generate(const bf::path &metadataFilePath, const Data& encryptionKey) {
+- uint32_t myClientId = _generateClientId();
++LocalStateMetadata LocalStateMetadata::generate_(const bf::path &metadataFilePath, const Data& encryptionKey) {
++ uint32_t myClientId = generateClientId_();
+ #ifndef CRYFS_NO_COMPATIBILITY
+ // In the old format, this was stored in a "myClientId" file. If that file exists, load it from there.
+ optional<uint32_t> legacy = _tryLoadClientIdFromLegacyFile(metadataFilePath);
+@@ -93,11 +93,11 @@ LocalStateMetadata LocalStateMetadata::_generate(const bf::path &metadataFilePat
+ #endif
+
+ LocalStateMetadata result(myClientId, cpputils::hash::hash(encryptionKey, cpputils::hash::generateSalt()));
+- result._save(metadataFilePath);
++ result.save_(metadataFilePath);
+ return result;
+ }
+
+-void LocalStateMetadata::_serialize(ostream& stream) const {
++void LocalStateMetadata::serialize_(ostream& stream) const {
+ ptree pt;
+ pt.put<uint32_t>("myClientId", myClientId());
+ pt.put<string>("encryptionKey.salt", _encryptionKeyHash.salt.ToString());
+@@ -106,7 +106,7 @@ void LocalStateMetadata::_serialize(ostream& stream) const {
+ write_json(stream, pt);
+ }
+
+-LocalStateMetadata LocalStateMetadata::_deserialize(istream& stream) {
++LocalStateMetadata LocalStateMetadata::deserialize_(istream& stream) {
+ try {
+ ptree pt;
+ read_json(stream, pt);
+diff --git a/src/cryfs/localstate/LocalStateMetadata.h b/src/cryfs/localstate/LocalStateMetadata.h
+index 8b0ffc662..c06b0f05b 100644
+--- a/src/cryfs/localstate/LocalStateMetadata.h
++++ b/src/cryfs/localstate/LocalStateMetadata.h
+@@ -20,11 +20,11 @@ class LocalStateMetadata final {
+ const uint32_t _myClientId;
+ const cpputils::hash::Hash _encryptionKeyHash;
+
+- static boost::optional<LocalStateMetadata> _load(const boost::filesystem::path &metadataFilePath);
+- static LocalStateMetadata _deserialize(std::istream& stream);
+- static LocalStateMetadata _generate(const boost::filesystem::path &metadataFilePath, const cpputils::Data& encryptionKey);
+- void _save(const boost::filesystem::path &metadataFilePath) const;
+- void _serialize(std::ostream& stream) const;
++ static boost::optional<LocalStateMetadata> load_(const boost::filesystem::path &metadataFilePath);
++ static LocalStateMetadata deserialize_(std::istream& stream);
++ static LocalStateMetadata generate_(const boost::filesystem::path &metadataFilePath, const cpputils::Data& encryptionKey);
++ void save_(const boost::filesystem::path &metadataFilePath) const;
++ void serialize_(std::ostream& stream) const;
+
+ LocalStateMetadata(uint32_t myClientId, cpputils::hash::Hash encryptionKey);
+ };
+
diff --git a/source/l/cryfs/cryfs.SlackBuild b/source/l/cryfs/cryfs.SlackBuild
index 007bd1f7..e37b529b 100755
--- a/source/l/cryfs/cryfs.SlackBuild
+++ b/source/l/cryfs/cryfs.SlackBuild
@@ -25,7 +25,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=cryfs
VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-3}
# Automatically determine the architecture we're building on:
if [ -z "$ARCH" ]; then
@@ -89,6 +89,12 @@ find . \
# Oddly, cryfs expects a static boost, so we'll need to hit it with the LART:
export LDFLAGS="$SLKLDFLAGS -lboost_thread -lboost_program_options -lboost_filesystem -lboost_chrono -lcryptopp -lfuse"
+# gcc11 fixes:
+zcat $CWD/27587ea1acec5f939a31217f1c43953378f18821.patch.gz | patch -p1 --verbose || exit 1
+
+# Boost 1.77.0 fix:
+zcat $CWD/041b5baea5a4efceff33df2f316646b47a1cd7c0.patch.gz | patch -p1 --verbose || exit 1
+
# Configure, build, and install:
mkdir cmake-build
cd cmake-build
diff --git a/source/l/glib2/glib2.SlackBuild b/source/l/glib2/glib2.SlackBuild
index ca7b1431..dc4bbfde 100755
--- a/source/l/glib2/glib2.SlackBuild
+++ b/source/l/glib2/glib2.SlackBuild
@@ -100,7 +100,7 @@ meson setup \
-Dselinux=disabled \
-Dfam=false \
-Dman=true \
- -Dgtk_doc=true \
+ -Dgtk_doc=false \
-Dinstalled_tests=false \
.. || exit 1
"${NINJA:=ninja}" $NUMJOBS || exit 1
diff --git a/source/l/gst-plugins-base/gst-plugins-base.SlackBuild b/source/l/gst-plugins-base/gst-plugins-base.SlackBuild
index 22de1419..2221f7b7 100755
--- a/source/l/gst-plugins-base/gst-plugins-base.SlackBuild
+++ b/source/l/gst-plugins-base/gst-plugins-base.SlackBuild
@@ -101,7 +101,7 @@ meson setup \
--buildtype=release \
-Dexamples=disabled \
.. || exit 1
- "${NINJA:=ninja}" $NUMJOBS || exit 1
+ "${NINJA:=ninja}" $NUMJOBS || cp -a gst-libs/gst/gl/xdg-shell-client-protocol.h .. && "${NINJA:=ninja}" $NUMJOBS || exit 1
DESTDIR=$PKG $NINJA install || exit 1
cd ..
diff --git a/source/l/gst-plugins-good/gst-plugins-good.SlackBuild b/source/l/gst-plugins-good/gst-plugins-good.SlackBuild
index 1a7b8b6f..fd87f2d5 100755
--- a/source/l/gst-plugins-good/gst-plugins-good.SlackBuild
+++ b/source/l/gst-plugins-good/gst-plugins-good.SlackBuild
@@ -88,6 +88,8 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \+
+zcat $CWD/gst-plugins-good.gcc11.patch.gz | patch -p1 --verbose || exit 1
+
# Configure, build, and install:
export CFLAGS="$SLKCFLAGS"
export CXXFLAGS="$SLKCFLAGS"
diff --git a/source/l/gst-plugins-good/gst-plugins-good.gcc11.patch b/source/l/gst-plugins-good/gst-plugins-good.gcc11.patch
new file mode 100644
index 00000000..f44e3a72
--- /dev/null
+++ b/source/l/gst-plugins-good/gst-plugins-good.gcc11.patch
@@ -0,0 +1,316 @@
+From a1bf3d8d540a25268d612a489e1e836d6ea737b0 Mon Sep 17 00:00:00 2001
+From: Matthew Waters <matthew@centricular.com>
+Date: Thu, 18 Mar 2021 19:52:53 +1100
+Subject: [PATCH] gst: don't use volatile to mean atomic
+
+volatile is not sufficient to provide atomic guarantees and real atomics
+should be used instead. GCC 11 has started warning about using volatile
+with atomic operations.
+
+https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719
+
+Discovered in https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/868
+
+Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/941>
+---
+ ext/jack/gstjack.c | 6 +++---
+ ext/jack/gstjackaudiosink.c | 2 +-
+ ext/jack/gstjackaudiosrc.c | 2 +-
+ ext/pulse/pulsesink.h | 2 +-
+ ext/qt/gstqsgtexture.cc | 2 +-
+ ext/qt/gstqtglutility.cc | 2 +-
+ ext/qt/qtglrenderer.cc | 6 +++---
+ ext/qt/qtitem.cc | 2 +-
+ ext/qt/qtwindow.cc | 4 ++--
+ ext/vpx/gstvpxdec.c | 2 +-
+ ext/vpx/gstvpxenc.c | 14 +++++++-------
+ gst/audioparsers/gstac3parse.h | 2 +-
+ sys/rpicamsrc/gstrpicamsrc.c | 2 +-
+ sys/ximage/ximageutil.c | 2 +-
+ 14 files changed, 25 insertions(+), 25 deletions(-)
+
+diff --git a/ext/jack/gstjack.c b/ext/jack/gstjack.c
+index ca98dc405..fdd507d87 100644
+--- a/ext/jack/gstjack.c
++++ b/ext/jack/gstjack.c
+@@ -28,7 +28,7 @@
+ GType
+ gst_jack_connect_get_type (void)
+ {
+- static volatile gsize jack_connect_type = 0;
++ static gsize jack_connect_type = 0;
+
+ if (g_once_init_enter (&jack_connect_type)) {
+ static const GEnumValue jack_connect_enums[] = {
+@@ -50,7 +50,7 @@ gst_jack_connect_get_type (void)
+ GType
+ gst_jack_transport_get_type (void)
+ {
+- static volatile gsize type = 0;
++ static gsize type = 0;
+
+ if (g_once_init_enter (&type)) {
+ static const GFlagsValue flag_values[] = {
+@@ -84,7 +84,7 @@ gst_jack_client_free (gpointer jclient)
+ GType
+ gst_jack_client_get_type (void)
+ {
+- static volatile gsize jack_client_type = 0;
++ static gsize jack_client_type = 0;
+
+ if (g_once_init_enter (&jack_client_type)) {
+ /* hackish, but makes it show up nicely in gst-inspect */
+diff --git a/ext/jack/gstjackaudiosink.c b/ext/jack/gstjackaudiosink.c
+index ee7cea8c0..6e8d04ae5 100644
+--- a/ext/jack/gstjackaudiosink.c
++++ b/ext/jack/gstjackaudiosink.c
+@@ -131,7 +131,7 @@ gst_jack_audio_sink_free_channels (GstJackAudioSink * sink)
+ static GType
+ gst_jack_ring_buffer_get_type (void)
+ {
+- static volatile gsize ringbuffer_type = 0;
++ static gsize ringbuffer_type = 0;
+
+ if (g_once_init_enter (&ringbuffer_type)) {
+ static const GTypeInfo ringbuffer_info = {
+diff --git a/ext/jack/gstjackaudiosrc.c b/ext/jack/gstjackaudiosrc.c
+index 1d2cf82ee..d43a447a7 100644
+--- a/ext/jack/gstjackaudiosrc.c
++++ b/ext/jack/gstjackaudiosrc.c
+@@ -151,7 +151,7 @@ gst_jack_audio_src_free_channels (GstJackAudioSrc * src)
+ static GType
+ gst_jack_ring_buffer_get_type (void)
+ {
+- static volatile gsize ringbuffer_type = 0;
++ static gsize ringbuffer_type = 0;
+
+ if (g_once_init_enter (&ringbuffer_type)) {
+ static const GTypeInfo ringbuffer_info = { sizeof (GstJackRingBufferClass),
+diff --git a/ext/pulse/pulsesink.h b/ext/pulse/pulsesink.h
+index 86f3dcdbb..51ec86a25 100644
+--- a/ext/pulse/pulsesink.h
++++ b/ext/pulse/pulsesink.h
+@@ -72,7 +72,7 @@ struct _GstPulseSink
+ GstStructure *properties;
+ pa_proplist *proplist;
+
+- volatile gint format_lost;
++ gint format_lost;
+ GstClockTime format_lost_time;
+ };
+
+diff --git a/ext/qt/gstqsgtexture.cc b/ext/qt/gstqsgtexture.cc
+index a05d26edd..bfa79cda0 100644
+--- a/ext/qt/gstqsgtexture.cc
++++ b/ext/qt/gstqsgtexture.cc
+@@ -35,7 +35,7 @@ GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
+
+ GstQSGTexture::GstQSGTexture ()
+ {
+- static volatile gsize _debug;
++ static gsize _debug;
+
+ initializeOpenGLFunctions();
+
+diff --git a/ext/qt/gstqtglutility.cc b/ext/qt/gstqtglutility.cc
+index acb89b6e1..d2c092202 100644
+--- a/ext/qt/gstqtglutility.cc
++++ b/ext/qt/gstqtglutility.cc
+@@ -66,7 +66,7 @@ gst_qt_get_gl_display ()
+ {
+ GstGLDisplay *display = NULL;
+ QGuiApplication *app = static_cast<QGuiApplication *> (QCoreApplication::instance ());
+- static volatile gsize _debug;
++ static gsize _debug;
+
+ g_assert (app != NULL);
+
+diff --git a/ext/qt/qtglrenderer.cc b/ext/qt/qtglrenderer.cc
+index 2ad5601fc..52965fd0b 100644
+--- a/ext/qt/qtglrenderer.cc
++++ b/ext/qt/qtglrenderer.cc
+@@ -22,7 +22,7 @@ GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
+ static void
+ init_debug (void)
+ {
+- static volatile gsize _debug;
++ static gsize _debug;
+
+ if (g_once_init_enter (&_debug)) {
+ GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, "qtglrenderer", 0,
+@@ -115,7 +115,7 @@ typedef enum
+
+ struct SharedRenderData
+ {
+- volatile int refcount;
++ int refcount;
+ SharedRenderDataState state;
+ GMutex lock;
+ GCond cond;
+@@ -130,7 +130,7 @@ shared_render_data_new (void)
+ {
+ struct SharedRenderData *ret = g_new0 (struct SharedRenderData, 1);
+
+- ret->refcount = 1;
++ g_atomic_int_set (&ret->refcount, 1);
+ g_mutex_init (&ret->lock);
+
+ return ret;
+diff --git a/ext/qt/qtitem.cc b/ext/qt/qtitem.cc
+index 7659800b6..bc99639b4 100644
+--- a/ext/qt/qtitem.cc
++++ b/ext/qt/qtitem.cc
+@@ -104,7 +104,7 @@ void InitializeSceneGraph::run()
+
+ QtGLVideoItem::QtGLVideoItem()
+ {
+- static volatile gsize _debug;
++ static gsize _debug;
+
+ if (g_once_init_enter (&_debug)) {
+ GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, "qtglwidget", 0, "Qt GL Widget");
+diff --git a/ext/qt/qtwindow.cc b/ext/qt/qtwindow.cc
+index 9360c3337..7c44ac54e 100644
+--- a/ext/qt/qtwindow.cc
++++ b/ext/qt/qtwindow.cc
+@@ -103,7 +103,7 @@ QtGLWindow::QtGLWindow ( QWindow * parent, QQuickWindow *src ) :
+ QQuickWindow( parent ), source (src)
+ {
+ QGuiApplication *app = static_cast<QGuiApplication *> (QCoreApplication::instance ());
+- static volatile gsize _debug;
++ static gsize _debug;
+
+ g_assert (app != NULL);
+
+@@ -152,7 +152,7 @@ QtGLWindow::beforeRendering()
+
+ g_mutex_lock (&this->priv->lock);
+
+- static volatile gsize once = 0;
++ static gsize once = 0;
+ if (g_once_init_enter(&once)) {
+ this->priv->start = QDateTime::currentDateTime().toMSecsSinceEpoch();
+ g_once_init_leave(&once,1);
+diff --git a/ext/vpx/gstvpxdec.c b/ext/vpx/gstvpxdec.c
+index e92aa85c7..74cc3c970 100644
+--- a/ext/vpx/gstvpxdec.c
++++ b/ext/vpx/gstvpxdec.c
+@@ -79,7 +79,7 @@ gst_vpx_dec_post_processing_flags_get_type (void)
+ {C_FLAGS (VP8_MFQE), "Multi-frame quality enhancement", "mfqe"},
+ {0, NULL, NULL}
+ };
+- static volatile GType id = 0;
++ static GType id = 0;
+
+ if (g_once_init_enter ((gsize *) & id)) {
+ GType _id;
+diff --git a/ext/vpx/gstvpxenc.c b/ext/vpx/gstvpxenc.c
+index cd5b30d14..4b3b4f770 100644
+--- a/ext/vpx/gstvpxenc.c
++++ b/ext/vpx/gstvpxenc.c
+@@ -165,7 +165,7 @@ gst_vpx_enc_end_usage_get_type (void)
+ {VPX_CQ, "Constant Quality Mode (CQ) mode", "cq"},
+ {0, NULL, NULL}
+ };
+- static volatile GType id = 0;
++ static GType id = 0;
+
+ if (g_once_init_enter ((gsize *) & id)) {
+ GType _id;
+@@ -188,7 +188,7 @@ gst_vpx_enc_multipass_mode_get_type (void)
+ {VPX_RC_LAST_PASS, "Last pass of multipass encoding", "last-pass"},
+ {0, NULL, NULL}
+ };
+- static volatile GType id = 0;
++ static GType id = 0;
+
+ if (g_once_init_enter ((gsize *) & id)) {
+ GType _id;
+@@ -210,7 +210,7 @@ gst_vpx_enc_kf_mode_get_type (void)
+ {VPX_KF_DISABLED, "Don't automatically place keyframes", "disabled"},
+ {0, NULL, NULL}
+ };
+- static volatile GType id = 0;
++ static GType id = 0;
+
+ if (g_once_init_enter ((gsize *) & id)) {
+ GType _id;
+@@ -232,7 +232,7 @@ gst_vpx_enc_tuning_get_type (void)
+ {VP8_TUNE_SSIM, "Tune for SSIM", "ssim"},
+ {0, NULL, NULL}
+ };
+- static volatile GType id = 0;
++ static GType id = 0;
+
+ if (g_once_init_enter ((gsize *) & id)) {
+ GType _id;
+@@ -256,7 +256,7 @@ gst_vpx_enc_scaling_mode_get_type (void)
+ {VP8E_ONETWO, "1:2", "1:2"},
+ {0, NULL, NULL}
+ };
+- static volatile GType id = 0;
++ static GType id = 0;
+
+ if (g_once_init_enter ((gsize *) & id)) {
+ GType _id;
+@@ -280,7 +280,7 @@ gst_vpx_enc_token_partitions_get_type (void)
+ {VP8_EIGHT_TOKENPARTITION, "Eight token partitions", "8"},
+ {0, NULL, NULL}
+ };
+- static volatile GType id = 0;
++ static GType id = 0;
+
+ if (g_once_init_enter ((gsize *) & id)) {
+ GType _id;
+@@ -303,7 +303,7 @@ gst_vpx_enc_er_flags_get_type (void)
+ "Allow partitions to be decoded independently", "partitions"},
+ {0, NULL, NULL}
+ };
+- static volatile GType id = 0;
++ static GType id = 0;
+
+ if (g_once_init_enter ((gsize *) & id)) {
+ GType _id;
+diff --git a/gst/audioparsers/gstac3parse.h b/gst/audioparsers/gstac3parse.h
+index 0e7af5acd..81e2104d5 100644
+--- a/gst/audioparsers/gstac3parse.h
++++ b/gst/audioparsers/gstac3parse.h
+@@ -62,7 +62,7 @@ struct _GstAc3Parse {
+ gint blocks;
+ gboolean eac;
+ gboolean sent_codec_tag;
+- volatile gint align;
++ gint align;
+ GstPadChainFunction baseparse_chainfunc;
+ };
+
+diff --git a/sys/rpicamsrc/gstrpicamsrc.c b/sys/rpicamsrc/gstrpicamsrc.c
+index a148d4106..f719acb4c 100644
+--- a/sys/rpicamsrc/gstrpicamsrc.c
++++ b/sys/rpicamsrc/gstrpicamsrc.c
+@@ -292,7 +292,7 @@ gst_rpi_cam_src_sensor_mode_get_type (void)
+ "640x480 4:3 60.1-90fps", "640x480-fast"},
+ {0, NULL, NULL}
+ };
+- static volatile GType id = 0;
++ static GType id = 0;
+ if (g_once_init_enter ((gsize *) & id)) {
+ GType _id;
+ _id = g_enum_register_static ("GstRpiCamSrcSensorMode", values);
+diff --git a/sys/ximage/ximageutil.c b/sys/ximage/ximageutil.c
+index 57c9392c7..018b60515 100644
+--- a/sys/ximage/ximageutil.c
++++ b/sys/ximage/ximageutil.c
+@@ -26,7 +26,7 @@
+ GType
+ gst_meta_ximage_api_get_type (void)
+ {
+- static volatile GType type;
++ static GType type;
+ static const gchar *tags[] = { "memory", NULL };
+
+ if (g_once_init_enter (&type)) {
+--
+GitLab
+
+
diff --git a/source/l/gtk+3/gtk+3.SlackBuild b/source/l/gtk+3/gtk+3.SlackBuild
index 377b619a..74090980 100755
--- a/source/l/gtk+3/gtk+3.SlackBuild
+++ b/source/l/gtk+3/gtk+3.SlackBuild
@@ -82,6 +82,9 @@ find . \
# the configure process doesn't try to call it:
zcat $CWD/gtk.fix.missing.version-check.py.diff.gz | patch -p1 --verbose || exit 1
+# Loosen this up for gcc11:
+zcat $CWD/gtk.array-bounds.gcc11.diff.gz | patch -p1 --verbose || exit 1
+
# Configure, build, and install:
export CFLAGS="$SLKCFLAGS -DG_ENABLE_DEBUG -DG_DISABLE_CAST_CHECKS"
export CXXFLAGS="$SLKCFLAGS -DG_ENABLE_DEBUG -DG_DISABLE_CAST_CHECKS"
diff --git a/source/l/gtk+3/gtk.array-bounds.gcc11.diff b/source/l/gtk+3/gtk.array-bounds.gcc11.diff
new file mode 100644
index 00000000..99392a31
--- /dev/null
+++ b/source/l/gtk+3/gtk.array-bounds.gcc11.diff
@@ -0,0 +1,10 @@
+--- ./meson.build.orig 2021-08-05 23:49:52.169416580 -0500
++++ ./meson.build 2021-08-05 23:50:01.955416038 -0500
+@@ -309,7 +309,6 @@
+ '-Werror=sequence-point',
+ '-Werror=return-type',
+ '-Werror=trigraphs',
+- '-Werror=array-bounds',
+ '-Werror=write-strings',
+ '-Werror=address',
+ '-Werror=int-to-pointer-cast',
diff --git a/source/l/gtk4/doinst.sh b/source/l/gtk4/doinst.sh
new file mode 100644
index 00000000..74cd752a
--- /dev/null
+++ b/source/l/gtk4/doinst.sh
@@ -0,0 +1,21 @@
+config() {
+ NEW="$1"
+ OLD="$(dirname $NEW)/$(basename $NEW .new)"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+
+# Obsolete in gtk4?
+#config etc/gtk-4.0/gtkrc.new
+#config etc/gtk-4.0/im-multipress.conf.new
+#rm -f etc/gtk-4.0/gtkrc.new
+
+chroot . rm -f /usr/share/icons/*/icon-theme.cache 1> /dev/null 2> /dev/null
+chroot . /usr/bin/glib-compile-schemas /usr/share/glib-2.0/schemas/ 1> /dev/null 2> /dev/null
+chroot . /usr/bin/gio-querymodules /usr/lib64/gtk-4.0/4.0.0/media 1> /dev/null 2> /dev/null
+chroot . /usr/bin/gio-querymodules /usr/lib64/gtk-4.0/4.0.0/printbackends 1> /dev/null 2> /dev/null
diff --git a/source/l/gtk4/gtk4.SlackBuild b/source/l/gtk4/gtk4.SlackBuild
new file mode 100755
index 00000000..6f6101b1
--- /dev/null
+++ b/source/l/gtk4/gtk4.SlackBuild
@@ -0,0 +1,161 @@
+#!/bin/bash
+
+# Copyright 2008, 2009, 2010, 2011, 2013, 2018, 2020, 2021 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PKGNAM=gtk4
+VERSION=${VERSION:-$(echo gtk-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
+
+NUMJOBS=${NUMJOBS:-" -j$(expr $(nproc) + 1) "}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i586 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PKGNAM-$VERSION-$ARCH-$BUILD.txz"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-gtk4
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG/usr
+cd $TMP
+rm -rf gtk-$VERSION
+tar xvf $CWD/gtk-$VERSION.tar.?z || exit 1
+cd gtk-$VERSION || exit 1
+
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \+ -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \+
+
+# Configure, build, and install:
+export CFLAGS="$SLKCFLAGS -DG_ENABLE_DEBUG"
+export CXXFLAGS="$SLKCFLAGS -DG_ENABLE_DEBUG"
+mkdir meson-build
+cd meson-build
+meson setup \
+ --prefix=/usr \
+ --libdir=lib${LIBDIRSUFFIX} \
+ --libexecdir=/usr/libexec \
+ --bindir=/usr/bin \
+ --sbindir=/usr/sbin \
+ --includedir=/usr/include \
+ --datadir=/usr/share \
+ --mandir=/usr/man \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --buildtype=release \
+ -Dman-pages=true \
+ -Ddemos=true \
+ -Dgtk_doc=false \
+ -Dbroadway_backend=true \
+ -Dexamples=false \
+ -Dtests=false \
+ -Dinstalled_tests=false \
+ -Dwayland_backend=true \
+ .. || exit 1
+ "${NINJA:=ninja}" $NUMJOBS || exit 1
+ DESTDIR=$PKG $NINJA install || exit 1
+cd ..
+
+# The following four things don't seem to be used by gtk4. But if something
+# similar ends up being required, let me know.
+
+# Don't clobber im-multipress.conf
+#mv $PKG/etc/gtk-4.0/im-multipress.conf $PKG/etc/gtk-4.0/im-multipress.conf.new
+
+# Install a "starter" gtkrc
+#echo 'gtk-theme-name="Adwaita"' > $PKG/etc/gtk-4.0/gtkrc.new
+
+# We need to have separate 32-bit and 64-bit binaries for places where we have
+# two copies of the GTK package installed (we might have x86_64 and i586
+# packages on the same system, for example.)
+#if [ "$LIBDIRSUFFIX" = "64" ]; then
+# mv $PKG/usr/bin/gtk-query-immodules-4.0{,-64}
+# ( cd $PKG/usr/bin
+# ln -sf gtk-query-immodules-4.0-64 gtk-query-immodules-4.0
+# )
+#else
+# mv $PKG/usr/bin/gtk-query-immodules-4.0{,-32}
+# ( cd $PKG/usr/bin
+# ln -sf gtk-query-immodules-4.0-32 gtk-query-immodules-4.0
+# )
+#fi
+
+# Install wrappers for the binaries:
+#cp $CWD/update-gtk-immodules-4.0 $PKG/usr/bin/update-gtk-immodules-4.0
+#chmod 0755 $PKG/usr/bin/update-*
+
+# Strip binaries:
+find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# Compress manual pages:
+find $PKG/usr/man -type f -exec gzip -9 {} \+
+for i in $( find $PKG/usr/man -type l ) ; do
+ ln -s $( readlink $i ).gz $i.gz
+ rm $i
+done
+
+# Copy extra documentation into package.
+mkdir -p $PKG/usr/doc/gtk4-$VERSION
+cp -a \
+ AUTHORS COPYING NEWS README \
+ $PKG/usr/doc/gtk4-$VERSION
+find $PKG/usr/doc/gtk4-$VERSION/ -type f -exec chmod 644 {} \+
+chown -R root:root $PKG/usr/doc/gtk4-$VERSION
+
+mkdir -p $PKG/install
+zcat $CWD/doinst.sh > $PKG/install/doinst.sh
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -p -l y -c n $TMP/gtk4-${VERSION}-$ARCH-${BUILD}.txz
diff --git a/source/l/gtk4/slack-desc b/source/l/gtk4/slack-desc
new file mode 100644
index 00000000..7187360b
--- /dev/null
+++ b/source/l/gtk4/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+gtk4: gtk4 (multi-platform GUI toolkit v4)
+gtk4:
+gtk4: This is GTK, a multi-platform toolkit for creating graphical user
+gtk4: interfaces. Offering a complete set of widgets, GTK+ is suitable for
+gtk4: projects ranging from small one-off projects to complete application
+gtk4: suites.
+gtk4:
+gtk4:
+gtk4:
+gtk4:
+gtk4:
diff --git a/source/l/gtkmm3/gtkmm3.SlackBuild b/source/l/gtkmm3/gtkmm3.SlackBuild
index 1c944f61..cb5d066a 100755
--- a/source/l/gtkmm3/gtkmm3.SlackBuild
+++ b/source/l/gtkmm3/gtkmm3.SlackBuild
@@ -25,7 +25,7 @@ cd $(dirname $0) ; CWD=$(pwd)
SRCNAM=gtkmm
PKGNAM=gtkmm3
VERSION=${VERSION:-$(echo $SRCNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
-BUILD=${BUILD:-3}
+BUILD=${BUILD:-1}
SRCNAM=gtkmm
diff --git a/source/l/libwebp/libwebp.SlackBuild b/source/l/libwebp/libwebp.SlackBuild
index 4474c8d2..3417a96e 100755
--- a/source/l/libwebp/libwebp.SlackBuild
+++ b/source/l/libwebp/libwebp.SlackBuild
@@ -26,7 +26,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=libwebp
VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-1}
# Automatically determine the architecture we're building on:
if [ -z "$ARCH" ]; then
diff --git a/source/l/libwpd/libwpd.SlackBuild b/source/l/libwpd/libwpd.SlackBuild
index 86a6eeff..bd365653 100755
--- a/source/l/libwpd/libwpd.SlackBuild
+++ b/source/l/libwpd/libwpd.SlackBuild
@@ -81,6 +81,8 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \+
+zcat $CWD/libwpd.gcc11.diff.gz | patch -p1 --verbose || exit 1
+
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
diff --git a/source/l/libwpd/libwpd.gcc11.diff b/source/l/libwpd/libwpd.gcc11.diff
new file mode 100644
index 00000000..83855a04
--- /dev/null
+++ b/source/l/libwpd/libwpd.gcc11.diff
@@ -0,0 +1,21 @@
+--- ./src/lib/WPXContentListener.cpp.orig 2018-12-25 10:19:19.000000000 -0600
++++ ./src/lib/WPXContentListener.cpp 2021-08-06 00:05:53.939363381 -0500
+@@ -23,6 +23,7 @@
+ * Corel Corporation or Corel Corporation Limited."
+ */
+
++#include <cstddef>
+ #include "WPXContentListener.h"
+ #include "WPXPageSpan.h"
+ #include "libwpd_internal.h"
+--- ./src/lib/WPXTable.cpp.orig 2018-12-25 10:19:19.000000000 -0600
++++ ./src/lib/WPXTable.cpp 2021-08-06 00:05:19.424365290 -0500
+@@ -25,6 +25,8 @@
+ * Corel Corporation or Corel Corporation Limited."
+ */
+
++#include <cstddef>
++
+ #include "WPXTable.h"
+
+ #include "libwpd_internal.h"
diff --git a/source/l/mlt/mlt.SlackBuild b/source/l/mlt/mlt.SlackBuild
index 59182265..870e1b7d 100755
--- a/source/l/mlt/mlt.SlackBuild
+++ b/source/l/mlt/mlt.SlackBuild
@@ -1,7 +1,6 @@
#!/bin/bash
-# Copyright 2017, 2018, 2019, 2020 Eric Hameleers, Eindhoven, NL
-# Copyright 2020 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2021 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -86,66 +85,37 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \+
-PYTHONSITEPKG=$(python3 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")
-
# Configure, build, and install:
-if [ ! -r configure ]; then
- if [ -x ./autogen.sh ]; then
- NOCONFIGURE=1 ./autogen.sh
- else
- autoreconf -vif
- fi
-fi
-CFLAGS="$SLKCFLAGS" \
-CXXFLAGS="$SLKCFLAGS" \
-./configure \
- --prefix=/usr \
- --libdir=/usr/lib${LIBDIRSUFFIX} \
- --sysconfdir=/etc \
- --localstatedir=/var \
- --docdir=/usr/doc/$PKGNAM-$VERSION \
- --mandir=/usr/man \
- --infodir=/usr/info \
- --disable-static \
- --avformat-swscale \
- --disable-debug \
- --enable-gpl \
- --enable-gpl3 \
- --enable-motion-est \
- --enable-opencv \
- --enable-qt \
- --qt-libdir=$(pkg-config Qt5Core --variable=libdir) \
- --qt-includedir=$(pkg-config Qt5Core --variable=includedir) \
- --swig-languages="python" \
- --build=$ARCH-slackware-linux || exit 1
-make $NUMJOBS || make || exit 1
-make install DESTDIR=$PKG || exit 1
-
-# Install the extensions we enabled:
-install -D -m0755 src/swig/python/_mlt.so $PKG/$PYTHONSITEPKG/_mlt.so
-install -D -m0755 src/swig/python/mlt_wrap.o $PKG/$PYTHONSITEPKG/mlt_wrap.o
-install -D -m0755 src/swig/python/mlt.py $PKG/$PYTHONSITEPKG/mlt.py
-
-# Don't ship .la files:
-rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+mkdir cmake-build
+cd cmake-build
+ cmake \
+ -DCMAKE_C_FLAGS="$SLKCFLAGS" \
+ -DCMAKE_CXX_FLAGS="$SLKCFLAGS" \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DLIB_SUFFIX="$LIBDIRSUFFIX" \
+ -DDOC_INSTALL_DIR="doc" \
+ -DMAN_INSTALL_DIR=/usr/man \
+ .. || exit 1
+ make $NUMJOBS || make || exit 1
+ make install DESTDIR=$PKG || exit 1
+cd ..
# Strip binaries:
find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+# Compress manual pages:
+find $PKG/usr/man -type f -exec gzip -9 {} \+
+for i in $( find $PKG/usr/man -type l ) ; do
+ ln -s $( readlink $i ).gz $i.gz
+ rm $i
+done
+
# Add a documentation directory:
mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
cp -a \
- AUTHORS* ChangeLog COPYING* GPL* NEWS* README* docs/*.txt \
+ AUTHORS* ChangeLog CHANGES COPYING* LICENSE* NEWS* README* THANKS* TODO* \
$PKG/usr/doc/${PKGNAM}-$VERSION
-# If there's a ChangeLog, installing at least part of the recent history
-# is useful, but don't let it get totally out of control:
-if [ -r ChangeLog ]; then
- DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
- cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
- touch -r ChangeLog $DOCSDIR/ChangeLog
-fi
-
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/source/l/mozilla-nss/mozilla-nss.SlackBuild b/source/l/mozilla-nss/mozilla-nss.SlackBuild
index 4bef0f09..073f8b9c 100755
--- a/source/l/mozilla-nss/mozilla-nss.SlackBuild
+++ b/source/l/mozilla-nss/mozilla-nss.SlackBuild
@@ -26,8 +26,8 @@ cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=mozilla-nss
SRCNAM=nss
-VERSION=${VERSION:-3.67}
-NSPR=${NSPR:-4.31}
+VERSION=${VERSION:-3.69}
+NSPR=${NSPR:-4.32}
BUILD=${BUILD:-1}
# Automatically determine the architecture we're building on:
diff --git a/source/l/ocl-icd/ocl-icd.SlackBuild b/source/l/ocl-icd/ocl-icd.SlackBuild
index c133142d..a190ca15 100755
--- a/source/l/ocl-icd/ocl-icd.SlackBuild
+++ b/source/l/ocl-icd/ocl-icd.SlackBuild
@@ -25,7 +25,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=ocl-icd
VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
NUMJOBS=${NUMJOBS:-" -j$(expr $(nproc) + 1) "}
diff --git a/source/l/openexr/openexr.SlackBuild b/source/l/openexr/openexr.SlackBuild
index 6305eae9..286b4fc0 100755
--- a/source/l/openexr/openexr.SlackBuild
+++ b/source/l/openexr/openexr.SlackBuild
@@ -27,7 +27,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=openexr
VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
# Automatically determine the architecture we're building on:
if [ -z "$ARCH" ]; then
diff --git a/source/l/pulseaudio/pulseaudio-autostart-meson.build.patch b/source/l/pulseaudio/pulseaudio-autostart-meson.build.patch
new file mode 100644
index 00000000..a7fadb99
--- /dev/null
+++ b/source/l/pulseaudio/pulseaudio-autostart-meson.build.patch
@@ -0,0 +1,10 @@
+--- ./src/daemon/meson.build.orig 2021-07-27 15:02:27.738868200 -0500
++++ ./src/daemon/meson.build 2021-08-09 13:15:24.344941127 -0500
+@@ -38,6 +38,7 @@
+ if x11_dep.found()
+ conf = configuration_data()
+ conf.set('PACTL_BINARY', join_paths(bindir, 'pactl'))
++ conf.set('PA_BINARY', join_paths(bindir, 'pulseaudio'))
+
+ configure_file(
+ input : 'start-pulseaudio-x11.in',
diff --git a/source/l/pulseaudio/pulseaudio.SlackBuild b/source/l/pulseaudio/pulseaudio.SlackBuild
index 39d4b77b..bf389d8f 100755
--- a/source/l/pulseaudio/pulseaudio.SlackBuild
+++ b/source/l/pulseaudio/pulseaudio.SlackBuild
@@ -27,7 +27,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=pulseaudio
VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -91,6 +91,8 @@ echo "X-MATE-Autostart-Phase=Initialization" >> src/daemon/pulseaudio.desktop.in
# If autospawn isn't working, start-pulseaudio-x11 should start it manually:
zcat $CWD/pulseaudio-autostart.patch.gz | patch -p1 --verbose || exit 1
+# When built by meson, this patch also required to fix the above issue:
+zcat $CWD/pulseaudio-autostart-meson.build.patch.gz | patch -p1 --verbose || exit 1
# Configure, build, and install:
export CFLAGS="$SLKCFLAGS"
diff --git a/source/l/qt5/patches/0006-Fix-build-with-GCC-11-include-limits.patch b/source/l/qt5/patches/0006-Fix-build-with-GCC-11-include-limits.patch
new file mode 100644
index 00000000..f014a160
--- /dev/null
+++ b/source/l/qt5/patches/0006-Fix-build-with-GCC-11-include-limits.patch
@@ -0,0 +1,53 @@
+From 9c56d4da2ff631a8c1c30475bd792f6c86bda53c Mon Sep 17 00:00:00 2001
+From: Thiago Macieira <thiago.macieira@intel.com>
+Date: Mon, 18 Jan 2021 07:40:54 -0800
+Subject: [PATCH] Fix build with GCC 11: include <limits>
+
+Fixes: QTBUG-90395
+Pick-to: 6.0
+Change-Id: Iecc74d2000eb40dfbe7bfffd165b5dd3708b7a40
+Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
+
+[Retrieved (and backported) from:
+https://github.com/qt/qtbase/commit/9c56d4da2ff631a8c1c30475bd792f6c86bda53c]
+Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+---
+ src/corelib/global/qendian.h | 6 ++++--
+ src/corelib/global/qfloat16.h | 1 +
+ 2 files changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/src/corelib/global/qendian.h b/src/corelib/global/qendian.h
+index 99b529f17cd..c874c5e47ab 100644
+--- a/src/corelib/global/qendian.h
++++ b/src/corelib/global/qendian.h
+@@ -1,7 +1,7 @@
+ /****************************************************************************
+ **
+-** Copyright (C) 2016 The Qt Company Ltd.
+-** Copyright (C) 2016 Intel Corporation.
++** Copyright (C) 2021 The Qt Company Ltd.
++** Copyright (C) 2021 Intel Corporation.
+ ** Contact: https://www.qt.io/licensing/
+ **
+ ** This file is part of the QtCore module of the Qt Toolkit.
+@@ -44,6 +44,8 @@
+ #include <QtCore/qfloat16.h>
+ #include <QtCore/qglobal.h>
+
++#include <limits>
++
+ // include stdlib.h and hope that it defines __GLIBC__ for glibc-based systems
+ #include <stdlib.h>
+ #include <string.h>
+diff --git a/src/corelib/global/qfloat16.h b/src/corelib/global/qfloat16.h
+index e9477d2ecec..a25fac28862 100644
+--- a/src/corelib/global/qfloat16.h
++++ b/src/corelib/global/qfloat16.h
+@@ -44,6 +44,7 @@
+
+ #include <QtCore/qglobal.h>
+ #include <QtCore/qmetatype.h>
++#include <limits>
+ #include <string.h>
+
+ #if defined(QT_COMPILER_SUPPORTS_F16C) && defined(__AVX2__) && !defined(__F16C__)
diff --git a/source/l/qt5/patches/qt5-qtbase-gcc11.patch b/source/l/qt5/patches/qt5-qtbase-gcc11.patch
new file mode 100644
index 00000000..c9567128
--- /dev/null
+++ b/source/l/qt5/patches/qt5-qtbase-gcc11.patch
@@ -0,0 +1,171 @@
+diff --git a/src/corelib/codecs/qtextcodec.cpp b/src/corelib/codecs/qtextcodec.cpp
+index 06fd88da..dbff3239 100644
+--- a/src/corelib/codecs/qtextcodec.cpp
++++ b/src/corelib/codecs/qtextcodec.cpp
+@@ -38,6 +38,7 @@
+ **
+ ****************************************************************************/
+
++#include <limits>
+ #include "qplatformdefs.h"
+
+ #include "qtextcodec.h"
+diff --git a/src/corelib/codecs/qutfcodec.cpp b/src/corelib/codecs/qutfcodec.cpp
+index 8561f908..8128d3cf 100644
+--- a/src/corelib/codecs/qutfcodec.cpp
++++ b/src/corelib/codecs/qutfcodec.cpp
+@@ -38,6 +38,8 @@
+ **
+ ****************************************************************************/
+
++#include <limits>
++
+ #include "qutfcodec_p.h"
+ #include "qlist.h"
+ #include "qendian.h"
+diff --git a/src/corelib/global/qendian.cpp b/src/corelib/global/qendian.cpp
+index eb08b2f8..6b41b3dd 100644
+--- a/src/corelib/global/qendian.cpp
++++ b/src/corelib/global/qendian.cpp
+@@ -38,6 +38,7 @@
+ **
+ ****************************************************************************/
+
++#include <limits>
+ #include "qendian.h"
+
+ #include "qalgorithms.h"
+diff --git a/src/corelib/global/qfloat16.cpp b/src/corelib/global/qfloat16.cpp
+index c9733174..c62a1972 100644
+--- a/src/corelib/global/qfloat16.cpp
++++ b/src/corelib/global/qfloat16.cpp
+@@ -38,6 +38,7 @@
+ **
+ ****************************************************************************/
+
++#include <limits>
+ #include "qfloat16.h"
+ #include "private/qsimd_p.h"
+ #include <cmath> // for fpclassify()'s return values
+diff --git a/src/corelib/global/qrandom.cpp b/src/corelib/global/qrandom.cpp
+index 10672c1f..6d5fd63e 100644
+--- a/src/corelib/global/qrandom.cpp
++++ b/src/corelib/global/qrandom.cpp
+@@ -40,6 +40,7 @@
+ // for rand_s
+ #define _CRT_RAND_S
+
++#include <limits>
+ #include "qrandom.h"
+ #include "qrandom_p.h"
+ #include <qobjectdefs.h>
+diff --git a/src/corelib/plugin/qelfparser_p.cpp b/src/corelib/plugin/qelfparser_p.cpp
+index 13eee353..9e7a7a41 100644
+--- a/src/corelib/plugin/qelfparser_p.cpp
++++ b/src/corelib/plugin/qelfparser_p.cpp
+@@ -37,6 +37,7 @@
+ **
+ ****************************************************************************/
+
++#include <limits>
+ #include "qelfparser_p.h"
+
+ #if defined (Q_OF_ELF) && defined(Q_CC_GNU)
+diff --git a/src/corelib/plugin/qmachparser.cpp b/src/corelib/plugin/qmachparser.cpp
+index 11670caf..39f5596b 100644
+--- a/src/corelib/plugin/qmachparser.cpp
++++ b/src/corelib/plugin/qmachparser.cpp
+@@ -37,6 +37,8 @@
+ **
+ ****************************************************************************/
+
++#include <limits>
++
+ #include "qmachparser_p.h"
+
+ #if defined(Q_OF_MACH_O)
+diff --git a/src/corelib/plugin/quuid.cpp b/src/corelib/plugin/quuid.cpp
+index 83873edf..5aafb4e5 100644
+--- a/src/corelib/plugin/quuid.cpp
++++ b/src/corelib/plugin/quuid.cpp
+@@ -38,6 +38,7 @@
+ **
+ ****************************************************************************/
+
++#include <limits>
+ #include "quuid.h"
+
+ #include "qcryptographichash.h"
+diff --git a/src/corelib/serialization/qdatastream.cpp b/src/corelib/serialization/qdatastream.cpp
+index 5082a8cb..7eecfcca 100644
+--- a/src/corelib/serialization/qdatastream.cpp
++++ b/src/corelib/serialization/qdatastream.cpp
+@@ -40,6 +40,8 @@
+ #include "qdatastream.h"
+ #include "qdatastream_p.h"
+
++#include <limits>
++
+ #if !defined(QT_NO_DATASTREAM) || defined(QT_BOOTSTRAPPED)
+ #include "qbuffer.h"
+ #include "qfloat16.h"
+diff --git a/src/corelib/text/qbytearray.cpp b/src/corelib/text/qbytearray.cpp
+index 9a72df58..6651ee98 100644
+--- a/src/corelib/text/qbytearray.cpp
++++ b/src/corelib/text/qbytearray.cpp
+@@ -39,6 +39,7 @@
+ **
+ ****************************************************************************/
+
++#include <limits>
+ #include "qbytearray.h"
+ #include "qbytearraymatcher.h"
+ #include "private/qtools_p.h"
+diff --git a/src/corelib/text/qbytearraymatcher.cpp b/src/corelib/text/qbytearraymatcher.cpp
+index 72e09226..80511cb5 100644
+--- a/src/corelib/text/qbytearraymatcher.cpp
++++ b/src/corelib/text/qbytearraymatcher.cpp
+@@ -37,6 +37,7 @@
+ **
+ ****************************************************************************/
+
++#include <limits>
+ #include "qbytearraymatcher.h"
+
+ #include <limits.h>
+diff --git a/src/corelib/tools/qbitarray.cpp b/src/corelib/tools/qbitarray.cpp
+index ab3054d5..22efb3a0 100644
+--- a/src/corelib/tools/qbitarray.cpp
++++ b/src/corelib/tools/qbitarray.cpp
+@@ -38,6 +38,7 @@
+ **
+ ****************************************************************************/
+
++#include <limits>
+ #include "qbitarray.h"
+ #include <qalgorithms.h>
+ #include <qdatastream.h>
+diff --git a/src/corelib/tools/qcryptographichash.cpp b/src/corelib/tools/qcryptographichash.cpp
+index fa8d21e0..cd85956d 100644
+--- a/src/corelib/tools/qcryptographichash.cpp
++++ b/src/corelib/tools/qcryptographichash.cpp
+@@ -38,6 +38,7 @@
+ **
+ ****************************************************************************/
+
++#include <limits>
+ #include <qcryptographichash.h>
+ #include <qiodevice.h>
+
+diff --git a/src/gui/text/qfontengine_qpf2.cpp b/src/gui/text/qfontengine_qpf2.cpp
+index e00f9d05..917ab5f9 100644
+--- a/src/gui/text/qfontengine_qpf2.cpp
++++ b/src/gui/text/qfontengine_qpf2.cpp
+@@ -37,6 +37,7 @@
+ **
+ ****************************************************************************/
+
++#include <limits>
+ #include "qfontengine_qpf2_p.h"
+
+ #include <QtCore/QFile>
diff --git a/source/l/qt5/patches/qt5-qtdeclarative-gcc11.patch b/source/l/qt5/patches/qt5-qtdeclarative-gcc11.patch
new file mode 100644
index 00000000..91ea88b9
--- /dev/null
+++ b/source/l/qt5/patches/qt5-qtdeclarative-gcc11.patch
@@ -0,0 +1,21 @@
+--- ./qtdeclarative/src/qml/jsruntime/qv4regexp_p.h.orig 2020-10-27 03:02:12.000000000 -0500
++++ ./qtdeclarative/src/qml/jsruntime/qv4regexp_p.h 2021-08-05 13:38:38.366445122 -0500
+@@ -57,7 +57,7 @@
+ #include <wtf/FastAllocBase.h>
+ #include <wtf/BumpPointerAllocator.h>
+
+-#include <limits.h>
++#include <limits>
+
+ #include <yarr/Yarr.h>
+ #include <yarr/YarrInterpreter.h>
+--- ./qtdeclarative/src/qmldebug/qqmlprofilerevent_p.h.orig 2020-10-27 03:02:12.000000000 -0500
++++ ./qtdeclarative/src/qmldebug/qqmlprofilerevent_p.h 2021-08-05 13:39:39.671441731 -0500
+@@ -48,6 +48,7 @@
+ #include <QtCore/qmetatype.h>
+
+ #include <initializer_list>
++#include <limits>
+ #include <type_traits>
+
+ //
diff --git a/source/l/qt5/patches/qt5-qtwebengine-gcc11.patch b/source/l/qt5/patches/qt5-qtwebengine-gcc11.patch
new file mode 100644
index 00000000..3b2606e6
--- /dev/null
+++ b/source/l/qt5/patches/qt5-qtwebengine-gcc11.patch
@@ -0,0 +1,20 @@
+-- a/src/3rdparty/chromium/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc
++++ b/src/3rdparty/chromium/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc
+@@ -40,6 +40,7 @@
+ #include "absl/base/internal/hide_ptr.h"
+ #include "absl/base/internal/raw_logging.h"
+ #include "absl/base/internal/spinlock.h"
++#include <limits>
+
+ // Do not use STL. This module does not use standard memory allocation.
+
+--- a/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/containers/string_pool.h
++++ b/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/containers/string_pool.h
+@@ -19,6 +19,7 @@
+
+ #include <stddef.h>
+ #include <stdint.h>
++#include <limits>
+
+ #include <unordered_map>
+ #include <vector>
diff --git a/source/l/qt5/patches/qt5-qtwebsockets-gcc11.patch b/source/l/qt5/patches/qt5-qtwebsockets-gcc11.patch
new file mode 100644
index 00000000..5b33d7b3
--- /dev/null
+++ b/source/l/qt5/patches/qt5-qtwebsockets-gcc11.patch
@@ -0,0 +1,12 @@
+diff --git a/src/websockets/qwebsocketprotocol.cpp b/src/websockets/qwebsocketprotocol.cpp
+index df87a93..9556d18 100644
+--- a/src/websockets/qwebsocketprotocol.cpp
++++ b/src/websockets/qwebsocketprotocol.cpp
+@@ -38,6 +38,7 @@
+ ****************************************************************************/
+
+ #include "qwebsocketprotocol_p.h"
++#include <limits>
+ #include <QtCore/QString>
+ #include <QtCore/QSet>
+ #include <QtCore/QtEndian>
diff --git a/source/l/qt5/patches/qtconcurrentthreadengine.h-gcc11.patch b/source/l/qt5/patches/qtconcurrentthreadengine.h-gcc11.patch
new file mode 100644
index 00000000..534b594d
--- /dev/null
+++ b/source/l/qt5/patches/qtconcurrentthreadengine.h-gcc11.patch
@@ -0,0 +1,14 @@
+--- ./qtbase/src/concurrent/qtconcurrentthreadengine.h.orig 2020-10-27 03:02:11.000000000 -0500
++++ ./qtbase/src/concurrent/qtconcurrentthreadengine.h 2021-08-05 14:20:37.774305766 -0500
+@@ -247,8 +247,9 @@
+ class ThreadEngineStarter<void> : public ThreadEngineStarterBase<void>
+ {
+ public:
+- ThreadEngineStarter<void>(ThreadEngine<void> *_threadEngine)
+- :ThreadEngineStarterBase<void>(_threadEngine) {}
++ ThreadEngineStarter(ThreadEngine<void> *_threadEngine)
++ : ThreadEngineStarterBase<void>(_threadEngine) {}
++
+
+ void startBlocking()
+ {
diff --git a/source/l/qt5/qt5.SlackBuild b/source/l/qt5/qt5.SlackBuild
index a406bd9f..d6de2438 100755
--- a/source/l/qt5/qt5.SlackBuild
+++ b/source/l/qt5/qt5.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -31,7 +31,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=qt5
VERSION=$(ls qt-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)
-BUILD=${BUILD:-10}
+BUILD=${BUILD:-11}
PKGSRC=$(echo $VERSION | cut -d - -f 1)
PKGVER=$(echo $VERSION | tr - _)
@@ -124,6 +124,20 @@ fi
# Fix path to mysql header:
zcat $CWD/patches/qt5.mysql.h.diff.gz | patch -p1 --verbose || exit 1
+# Fix build with gcc11:
+cd qtbase
+ zcat $CWD/patches/qt5-qtbase-gcc11.patch.gz | patch -p1 --verbose || exit 1
+ zcat $CWD/patches/0006-Fix-build-with-GCC-11-include-limits.patch.gz | patch -p1 --verbose || exit 1
+cd - 1>/dev/null
+zcat $CWD/patches/qt5-qtdeclarative-gcc11.patch.gz | patch -p1 --verbose || exit 1
+cd qtwebsockets
+ zcat $CWD/patches/qt5-qtwebsockets-gcc11.patch.gz | patch -p1 --verbose || exit 1
+cd - 1>/dev/null
+zcat $CWD/patches/qtconcurrentthreadengine.h-gcc11.patch.gz | patch -p1 --verbose || exit 1
+cd qtwebengine
+ zcat $CWD/patches/qt5-qtwebengine-gcc11.patch.gz | patch -p1 --verbose || exit 1
+cd - 1>/dev/null
+
# CMake generates wrong -isystem /usr/include compilations flags with Qt5::Gui
# and for it breaks KWin compilation with:
# /usr/include/c++/9.1.0/cstdlib:75:15: fatal error: stdlib.h: No such file or directory
@@ -217,7 +231,9 @@ export QT_PLUGIN_PATH="${QTDIR}/qtbase/plugins"
# Sometimes a failure happens when parallelizing make. Try again if make fails,
# but make a failure the second time around (single threaded) a fatal error:
-make $NUMJOBS || make || exit 1
+#### DEBUG
+make $NUMJOBS || exit 1
+#make $NUMJOBS || make || exit 1
make install INSTALL_ROOT=$PKG || exit 1
# Strip binaries:
diff --git a/source/l/tidy-html5/tidy-html5.SlackBuild b/source/l/tidy-html5/tidy-html5.SlackBuild
index 5b42defa..70402eaa 100755
--- a/source/l/tidy-html5/tidy-html5.SlackBuild
+++ b/source/l/tidy-html5/tidy-html5.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/bash
-# Copyright 2020 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2020, 2021 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -24,7 +24,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=tidy-html5
VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
-BUILD=${BUILD:-3}
+BUILD=${BUILD:-1}
# Automatically determine the architecture we're building on:
if [ -z "$ARCH" ]; then
@@ -102,7 +102,7 @@ cd cmake-build
cd ..
# Don't package static library:
-rm -f $PKG/usr/lib${LIBDIRSUFFIX}/libtidys.a
+rm -f $PKG/usr/lib${LIBDIRSUFFIX}/libtidy.a
# Strip binaries:
find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
diff --git a/source/l/v4l-utils/v4l-utils.SlackBuild b/source/l/v4l-utils/v4l-utils.SlackBuild
index e2ac7aa3..f83a0899 100755
--- a/source/l/v4l-utils/v4l-utils.SlackBuild
+++ b/source/l/v4l-utils/v4l-utils.SlackBuild
@@ -79,9 +79,12 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \+
+# Using -std=gnu++14 to fix compile with gcc11 - revisit later to see if it's
+# still needed.
+
# Configure:
CFLAGS="$SLKCFLAGS" \
-CXXFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS -std=gnu++14" \
./configure \
--prefix=/usr \
--sysconfdir=/etc \