Browse Source

l/qt5: Upgraded to qt-5.9.6.

slackware-14.2
Damien Goutte-Gattat 3 years ago
parent
commit
fe236a6e18
  1. 12
      l/qt5/patches/qt5.pulseaudio.diff
  2. 80
      l/qt5/patches/qt5.qtbug-49061.patch
  3. 41
      l/qt5/patches/qt5.qtbug-55583.patch
  4. 1
      l/qt5/qt-everywhere-opensource-src-5.7.1.tar.xz.sha256
  5. 1
      l/qt5/qt-everywhere-opensource-src-5.9.6.tar.xz.sha256
  6. 79
      l/qt5/qt5.SlackBuild

12
l/qt5/patches/qt5.pulseaudio.diff

@ -1,12 +0,0 @@
--- qt-everywhere-opensource-src-5.4.0/qtwebengine/src/3rdparty/chromium/media/media.gyp.orig 2014-12-05 17:26:44.000000000 +0100
+++ qt-everywhere-opensource-src-5.4.0/qtwebengine/src/3rdparty/chromium/media/media.gyp 2014-12-12 10:27:20.393735405 +0100
@@ -29,7 +29,7 @@
['use_cras==1', {
'use_pulseaudio%': 0,
}, {
- 'use_pulseaudio%': 1,
+ 'use_pulseaudio%': 0,
}],
],
}, {

80
l/qt5/patches/qt5.qtbug-49061.patch

@ -1,80 +0,0 @@
#
# https://github.com/qt/qtbase/commit/494376f9.patch
#
From 494376f980e96339b6f1eff7c41336ca4d853065 Mon Sep 17 00:00:00 2001
From: Thiago Macieira <thiago.macieira@intel.com>
Date: Thu, 12 Nov 2015 10:14:51 -0800
Subject: [PATCH] Stop unloading plugins in QPluginLoader and QFactoryLoader
QPluginLoader hasn't unloaded in its destructor since Qt 5.0, but we
missed the equivalent code in QFactoryLoader (which bypasses
QPluginLoader). Besides, QPluginLoader::unload() was still doing
unloading, which it won't anymore.
Not unloading plugins is Qt's policy, as decided during the 5.0
development process and reaffirmed now in 5.6. This is due to static
data in plugins leaking out and remaining in use past the unloading of
the plugin, causing crashes.
This does not affect QLibrary and QLibrary::unload(). Those are meant
for non-Qt loadable modules, so unloading them may be safe.
Task-number: QTBUG-49061
Discussed-on: http://lists.qt-project.org/pipermail/development/2015-November/023681.html
Change-Id: I461e9fc7199748faa187ffff1416070f138df8db
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
---
src/corelib/plugin/qfactoryloader.cpp | 6 ++++--
src/corelib/plugin/qpluginloader.cpp | 5 +++--
2 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/src/corelib/plugin/qfactoryloader.cpp b/src/corelib/plugin/qfactoryloader.cpp
index 53b38c3..c820d53 100644
--- a/src/corelib/plugin/qfactoryloader.cpp
+++ b/src/corelib/plugin/qfactoryloader.cpp
@@ -203,10 +203,12 @@ void QFactoryLoader::update()
++keyUsageCount;
}
}
- if (keyUsageCount || keys.isEmpty())
+ if (keyUsageCount || keys.isEmpty()) {
+ library->setLoadHints(QLibrary::PreventUnloadHint); // once loaded, don't unload
d->libraryList += library;
- else
+ } else {
library->release();
+ }
}
}
#else
diff --git a/src/corelib/plugin/qpluginloader.cpp b/src/corelib/plugin/qpluginloader.cpp
index 62067c7..4752f69 100644
--- a/src/corelib/plugin/qpluginloader.cpp
+++ b/src/corelib/plugin/qpluginloader.cpp
@@ -154,6 +154,7 @@ QPluginLoader::QPluginLoader(const QString &fileName, QObject *parent)
: QObject(parent), d(0), did_load(false)
{
setFileName(fileName);
+ setLoadHints(QLibrary::PreventUnloadHint);
}
/*!
@@ -348,7 +349,7 @@ static QString locatePlugin(const QString& fileName)
void QPluginLoader::setFileName(const QString &fileName)
{
#if defined(QT_SHARED)
- QLibrary::LoadHints lh;
+ QLibrary::LoadHints lh = QLibrary::PreventUnloadHint;
if (d) {
lh = d->loadHints();
d->release();
@@ -394,7 +395,7 @@ QString QPluginLoader::errorString() const
\brief Give the load() function some hints on how it should behave.
You can give hints on how the symbols in the plugin are
- resolved. By default, none of the hints are set.
+ resolved. By default since Qt 5.7, QLibrary::PreventUnloadHint is set.
See the documentation of QLibrary::loadHints for a complete
description of how this property works.

41
l/qt5/patches/qt5.qtbug-55583.patch

@ -1,41 +0,0 @@
#
# https://github.com/qt/qtbase/commit/84ea00d4.patch
#
From 84ea00d47049d882f2fabf1446ec6c6eb5fe3038 Mon Sep 17 00:00:00 2001
From: J-P Nurmi <jpnurmi@qt.io>
Date: Tue, 6 Dec 2016 16:30:31 +0100
Subject: [PATCH] QGtk3Dialog: don't crash on Wayland
Check if it's an X11 window before calling XSetTransientForHint().
No transient parent will be set for GTK+ dialogs on Wayland. That
has to be implemented separately.
Task-number: QTBUG-55583
Change-Id: Iabc2a72681c8157bb2f2fe500892853aa397106b
Reviewed-by: Dmitry Shachnev <mitya57@gmail.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
---
src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.cpp | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.cpp b/src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.cpp
index ba5089a..699b058 100644
--- a/src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.cpp
+++ b/src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.cpp
@@ -135,10 +135,12 @@ bool QGtk3Dialog::show(Qt::WindowFlags flags, Qt::WindowModality modality, QWind
GdkWindow *gdkWindow = gtk_widget_get_window(gtkWidget);
if (parent) {
- GdkDisplay *gdkDisplay = gdk_window_get_display(gdkWindow);
- XSetTransientForHint(gdk_x11_display_get_xdisplay(gdkDisplay),
- gdk_x11_window_get_xid(gdkWindow),
- parent->winId());
+ if (GDK_IS_X11_WINDOW(gdkWindow)) {
+ GdkDisplay *gdkDisplay = gdk_window_get_display(gdkWindow);
+ XSetTransientForHint(gdk_x11_display_get_xdisplay(gdkDisplay),
+ gdk_x11_window_get_xid(gdkWindow),
+ parent->winId());
+ }
}
if (modality != Qt::NonModal) {

1
l/qt5/qt-everywhere-opensource-src-5.7.1.tar.xz.sha256

@ -1 +0,0 @@
46ebca977deb629c5e69c2545bc5fe13f7e40012e5e2e451695c583bd33502fa qt-everywhere-opensource-src-5.7.1.tar.xz

1
l/qt5/qt-everywhere-opensource-src-5.9.6.tar.xz.sha256

@ -0,0 +1 @@
dacc995ae3a7cdad80eb9fdf6470299a8fac41f468a9bb941670ece523b62af4 qt-everywhere-opensource-src-5.9.6.tar.xz

79
l/qt5/qt5.SlackBuild

@ -1,6 +1,6 @@
#!/bin/sh
# Build script for Slackware
# Copyright (C) 2017 Damien Goutte-Gattat
# Copyright (C) 2017,2019 Damien Goutte-Gattat
# Copyright (C) 2006-2016 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
@ -29,9 +29,9 @@
# Source package infos
NAMESRC=${NAMESRC:-qt}
VERSION=${VERSION:-5.7.1}
VERSION=${VERSION:-5.9.6}
ARCHIVE=${ARCHIVE:-$NAMESRC-everywhere-opensource-src-$VERSION.tar.xz}
WGET=${WGET:-http://download.qt.io/archive/qt/5.7/$VERSION/single/$ARCHIVE}
WGET=${WGET:-http://download.qt.io/archive/qt/5.9/$VERSION/single/$ARCHIVE}
# Build infos
NAMEPKG=${NAMEPKG:-qt5}
@ -104,12 +104,6 @@ echo "Building $ARCHIVE..."
tar xf $CWD/$ARCHIVE
cd $NAME
# Fix dangling symlinks, thanks Larry Hajali:
rm -f qtwebengine/src/3rdparty/chromium/third_party/mesa/src/src/gallium/state_trackers/d3d1x/w32api
rm -f qtwebengine/src/3rdparty/chromium/third_party/webrtc/tools/e2e_quality/audio/perf
ln -s ../../../../../tools/perf \
qtwebengine/src/3rdparty/chromium/third_party/webrtc/tools/e2e_quality/audio/
# Use -reduce-relocations only on i?86 and x86_64 architextures.
# https://bugreports.qt-project.org/browse/QTBUG-36129
if echo $ARCH | grep -q '\(i.86\|x86_64\)' 2>/dev/null; then
@ -118,30 +112,16 @@ else
RELOCATIONS=""
fi
# Fix path to mysql header:
# Fix path to mysql header.
cat $CWD/patches/qt5.mysql.h.diff | patch -p1 --verbose || exit 1
# Don't unload plugins in QPluginLoader (segfault in LXQT):
cd qtbase
cat $CWD/patches/qt5.qtbug-49061.patch | patch -p1 --verbose || exit 1
cd -
# Fix file chooser segfault on Gnome/Wayland:
cd qtbase
cat $CWD/patches/qt5.qtbug-55583.patch | patch -p1 --verbose || exit 1
cd -
if ! pkg-config --exists libpulse 2>/dev/null ; then
# Forcibly disable pulseaudio in qtwebengine:
cat $CWD/patches/qt5.pulseaudio.diff | patch -p1 --verbose || exit 1
# Disable pulseaudio in Qt5:
PACONF="-no-pulseaudio"
else
PACONF=" "
fi
# Fix missing private includes: QTBUG-37417
sed -e '/CMAKE_NO_PRIVATE_INCLUDES\ \=\ true/d' \
-i qtbase/mkspecs/features/create_cmake.prf
sed -i -e "s/-O2/$SLKCFLAGS/" qtbase/mkspecs/common/g++-base.conf || exit 1
# Use custom compiler and linker flags.
sed -i -e "s/-O2/$SLKCFLAGS/" qtbase/mkspecs/common/gcc-base.conf || exit 1
sed -i -e "s/-O3/$SLKCFLAGS/" qtbase/mkspecs/common/gcc-base.conf || exit 1
sed -i -e "/^QMAKE_LFLAGS\s/s,+=,+= $SLKLDFLAGS,g" qtbase/mkspecs/common/gcc-base.conf || exit 1
# Enable h.264 codec support:
@ -153,24 +133,23 @@ echo "CONFIG += lang-all" >> qtvirtualkeyboard/.qmake.conf
export CFLAGS="$SLKCFLAGS"
export CXXFLAGS="$SLKCFLAGS"
export OPENSOURCE_CXXFLAGS="$SLKCFLAGS"
export QTDIR="$TMP/qt-everywhere-opensource-src-$VERSION"
export LD_LIBRARY_PATH="$QTDIR/qtbase/lib:$QTDIR/qttools/lib:$LD_LIBRARY_PATH"
export QT_PLUGIN_PATH="$QTDIR/qtbase/plugins"
export QTDIR="${TMP}/qt-everywhere-opensource-src-${PKGSRC}"
export LD_LIBRARY_PATH="${QTDIR}/qtbase/lib:${QTDIR}/qttools/lib:${LD_LIBRARY_PATH}"
export QT_PLUGIN_PATH="${QTDIR}/qtbase/plugins"
./configure \
-confirm-license \
-opensource \
-prefix /usr \
-libdir /usr/lib$LIBDIRSUFFIX \
-bindir /usr/lib$LIBDIRSUFFIX/qt5/bin \
-libdir /usr/lib${LIBDIRSUFFIX} \
-bindir /usr/lib${LIBDIRSUFFIX}/qt5/bin \
-sysconfdir /etc/xdg \
-headerdir /usr/include/qt5 \
-datadir /usr/share/qt5 \
-archdatadir /usr/lib$LIBDIRSUFFIX/qt5 \
-docdir /usr/doc/qt5-$VERSION \
-examplesdir /usr/doc/qt5-$VERSION/examples \
-archdatadir /usr/lib${LIBDIRSUFFIX}/qt5 \
-docdir /usr/doc/qt5-$PKGVER \
-examplesdir /usr/doc/qt5-$PKGVER/examples \
-system-libpng \
-system-libjpeg \
-system-pcre \
-system-sqlite \
-system-zlib \
-plugin-sql-mysql \
@ -192,11 +171,11 @@ export QT_PLUGIN_PATH="$QTDIR/qtbase/plugins"
-no-separate-debug-info \
-no-strip \
-no-use-gold-linker \
${PACONF} \
${RELOCATIONS} \
-no-pch \
# No-precompiled-headers is ccache-friendly.
OPENSSL_INCDIR="/usr/include/openssl-1.0" \
OPENSSL_LIBDIR="/usr/lib${LIBDIRSUFFIX}/openssl-1.0"
# 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 -j $JOBS || make || exit 1
@ -206,6 +185,22 @@ make install INSTALL_ROOT=$PKG || exit 1
find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
# Remove rpaths
for file in $(find . | xargs file | grep -e "executable" -e "shared object" | grep ELF | cut -f 1 -d : 2>/dev/null) ; do
if [ ! "$(patchelf --print-rpath $file 2>/dev/null)" = "" ]; then
patchelf --remove-rpath $file
fi
done
# Don't ship .la files
rm -f $PKG/usr/lib$LIBDIRSUFFIX/*.la
# 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
# Fix the path in prl files:
find "$PKG/usr/lib$LIBDIRSUFFIX" -type f -name '*.prl' \
-exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d;s/\(QMAKE_PRL_LIBS =\).*/\1/' {} \;
@ -313,8 +308,8 @@ install -m 755 $CWD/doinst.sh $PKG/install/doinst.sh
# Add dependency infos
cat <<EOF > $PKG/install/slack-required
libxkbcommon
libinput
libxkbcommon
EOF
# Package the tree

Loading…
Cancel
Save