!1 init qt package

Merge pull request !1 from openeuler-basic/init
This commit is contained in:
openeuler-ci-bot 2019-12-17 17:16:55 +08:00 committed by Gitee
commit 0c14fbf600
58 changed files with 5219 additions and 75 deletions

41
CVE-2018-19871.patch Normal file
View File

@ -0,0 +1,41 @@
From 7cfe47a8fe2f987fb2a066a696fb3d9d0afe4d65 Mon Sep 17 00:00:00 2001
From: Eirik Aavitsland <eirik.aavitsland@qt.io>
Date: Fri, 24 Aug 2018 12:03:00 +0200
Subject: [PATCH] TGA handler: check for out of range image size
Make the decoder fail early to avoid spending time and memory on
attempting to decode a corrupt image file.
Change-Id: Iac35e72de743f412a65d11c58fe7faa275dc4e41
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
---
src/plugins/imageformats/tga/qtgafile.cpp | 8 ++++++++
1 file changed, 8 insertions(+)
--- a/src/plugins/imageformats/tga/qtgafile.cpp
+++ b/src/plugins/imageformats/tga/qtgafile.cpp
@@ -165,6 +165,12 @@
if (!validDepth)
{
mErrorMessage = QObject::tr("Image depth not valid");
+ return;
+ }
+ if (quint64(width()) * quint64(height()) > (8192 * 8192))
+ {
+ mErrorMessage = QObject::tr("Image size exceeds limit");
+ return;
}
int fileBytes = mDevice->size();
if (!mDevice->seek(fileBytes - FooterSize))
@@ -237,6 +243,8 @@
unsigned char yCorner = desc & 0x20; // 0 = lower, 1 = upper
QImage im(imageWidth, imageHeight, QImage::Format_ARGB32);
+ if (im.isNull())
+ return QImage();
TgaReader *reader = 0;
if (bitsPerPixel == 16)
reader = new Tga16Reader();

35
CVE-2018-19872.patch Normal file
View File

@ -0,0 +1,35 @@
From b7321368924c4dbed81aa008d76ebfb1dffd7e60 Mon Sep 17 00:00:00 2001
From: Eirik Aavitsland <eirik.aavitsland@qt.io>
Date: Thu, 2 Aug 2018 13:11:20 +0200
Subject: [PATCH] Fix crash in qppmhandler for certain malformed image files
The ppm format specifies that the maximum color value field must be
less than 65536. The handler did not enforce this, leading to
potentional overflow when the value was used in 16 bits context.
Task-number: QTBUG-69449
Change-Id: Iea7a7e0f8953ec1ea8571e215687d12a9d77e11c
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
(cherry picked from commit 8c4207dddf9b2af0767de2ef0a10652612d462a5)
(cherry picked from commit 805dce07b9797f5f2770a9d2c58d6d381784ca25)
---
src/gui/image/qppmhandler.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/gui/image/qppmhandler.cpp b/src/gui/image/qppmhandler.cpp
index 6eb35e15586..307dcc693d5 100644
--- a/src/gui/image/qppmhandler.cpp
+++ b/src/gui/image/qppmhandler.cpp
@@ -108,7 +108,7 @@ static bool read_pbm_header(QIODevice *device, char& type, int& w, int& h, int&
else
mcc = read_pbm_int(device); // get max color component
- if (w <= 0 || w > 32767 || h <= 0 || h > 32767 || mcc <= 0)
+ if (w <= 0 || w > 32767 || h <= 0 || h > 32767 || mcc <= 0 || mcc > 0xffff)
return false; // weird P.M image
return true;
--
2.16.3

View File

@ -1,36 +0,0 @@
# qt
#### Description
{**When you're done, you can delete the content in this README and update the file with details for others getting started with your repository**}
#### Software Architecture
Software architecture description
#### Installation
1. xxxx
2. xxxx
3. xxxx
#### Instructions
1. xxxx
2. xxxx
3. xxxx
#### Contribution
1. Fork the repository
2. Create Feat_xxx branch
3. Commit your code
4. Create Pull Request
#### Gitee Feature
1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md
2. Gitee blog [blog.gitee.com](https://blog.gitee.com)
3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore)
4. The most valuable open source project [GVP](https://gitee.com/gvp)
5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help)
6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)

View File

@ -1,39 +0,0 @@
# qt
#### 介绍
{**以下是码云平台说明,您可以替换此简介**
码云是 OSCHINA 推出的基于 Git 的代码托管平台(同时支持 SVN。专为开发者提供稳定、高效、安全的云端软件开发协作平台
无论是个人、团队、或是企业,都能够用码云实现代码托管、项目管理、协作开发。企业项目请看 [https://gitee.com/enterprises](https://gitee.com/enterprises)}
#### 软件架构
软件架构说明
#### 安装教程
1. xxxx
2. xxxx
3. xxxx
#### 使用说明
1. xxxx
2. xxxx
3. xxxx
#### 参与贡献
1. Fork 本仓库
2. 新建 Feat_xxx 分支
3. 提交代码
4. 新建 Pull Request
#### 码云特技
1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md
2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com)
3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目
4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目
5. 码云官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help)
6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)

9
assistant.desktop Normal file
View File

@ -0,0 +1,9 @@
[Desktop Entry]
Name=Qt4 Assistant
GenericName=Documentation viewer
Comment=Shows Qt4 documentation and examples
Exec=assistant-qt4
Icon=assistant
Terminal=false
Type=Application
Categories=Qt;Development;Documentation;

10
designer.desktop Normal file
View File

@ -0,0 +1,10 @@
[Desktop Entry]
Name=Qt4 Designer
GenericName=Interface Designer
Comment=Design GUIs for Qt4 applications
Exec=designer-qt4
Icon=designer
MimeType=application/x-designer;
Terminal=false
Type=Application
Categories=Qt;Development;

BIN
hi128-app-qt4-logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
hi48-app-qt4-logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

10
linguist.desktop Normal file
View File

@ -0,0 +1,10 @@
[Desktop Entry]
Name=Qt4 Linguist
GenericName=Translation tool
Comment=Add translations to Qt4 applications
Exec=linguist-qt4
Icon=linguist
MimeType=text/vnd.trolltech.linguist;application/x-linguist;
Terminal=false
Type=Application
Categories=Qt;Development;

33
macros.qt4 Normal file
View File

@ -0,0 +1,33 @@
%_qt4 @@NAME@@
%_qt4_epoch @@EPOCH@@
%_qt4_version @@VERSION@@
%_qt4_evr @@EVR@@
%_qt48 %{_qt4_version}
%_qt4_prefix %{_libdir}/qt4
%_qt4_bindir %{_qt4_prefix}/bin
%_qt4_datadir %{_qt4_prefix}
%_qt4_demosdir %{_qt4_prefix}/demos
%_qt4_docdir %{_docdir}/qt4
%_qt4_examples %{_qt4_prefix}/examples
%_qt4_examplesdir %{_qt4_prefix}/examples
%_qt4_headerdir %{_includedir}
%_qt4_importdir %{_qt4_prefix}/imports
%_qt4_libdir %{_libdir}
%_qt4_plugindir %{_qt4_prefix}/plugins
%_qt4_qmake %{_qt4_bindir}/qmake
%_qt4_sysconfdir %{_sysconfdir}
%_qt4_translationdir %{_datadir}/qt4/translations
%_qt4_ldflags %{?__global_ldflags}
%_qt4_optflags %{optflags}
%_qt4_qmake_flags \\\
QMAKE_CFLAGS_DEBUG="${CFLAGS:-%{_qt4_optflags}}" \\\
QMAKE_CFLAGS_RELEASE="${CFLAGS:-%{_qt4_optflags}}" \\\
QMAKE_CXXFLAGS_DEBUG="${CXXFLAGS:-%{_qt4_optflags}}" \\\
QMAKE_CXXFLAGS_RELEASE="${CXXFLAGS:-%{_qt4_optflags}}" \\\
QMAKE_LFLAGS_DEBUG="${LDFLAGS:-%{_qt4_ldflags}}" \\\
QMAKE_LFLAGS_RELEASE="${LDFLAGS:-%{_qt4_ldflags}}" \\\
QMAKE_STRIP=
%qmake_qt4 %{_qt4_qmake} %{_qt4_qmake_flags}

23
qconfig-multilib.h Normal file
View File

@ -0,0 +1,23 @@
/* qconfig.h */
/* This file is here to prevent a file conflict on multiarch systems. A
* conflict will occur because qconfig.h has arch-specific definitions.
*
* DO NOT INCLUDE THE NEW FILE DIRECTLY -- ALWAYS INCLUDE THIS ONE INSTEAD. */
#ifndef QCONFIG_MULTILIB_H
#define QCONFIG_MULTILIB_H
#ifndef __WORDSIZE
#include <bits/wordsize.h>
#endif
#if __WORDSIZE == 32
#include "QtCore/qconfig-32.h"
#elif __WORDSIZE == 64
#include "QtCore/qconfig-64.h"
#else
#error "unexpected value for __WORDSIZE macro"
#endif
#endif

10
qdbusviewer.desktop Normal file
View File

@ -0,0 +1,10 @@
[Desktop Entry]
Name=Qt4 QDbusViewer
GenericName=D-Bus Debugger
Comment=Debug D-Bus applications
Exec=qdbusviewer
Icon=qdbusviewer
Terminal=false
Type=Application
Categories=Qt;Development;Debugger;

812
qt-4.8-poll.patch Normal file
View File

@ -0,0 +1,812 @@
diff -up qt-everywhere-opensource-src-4.8.6/src/corelib/io/qprocess_unix.cpp.poll qt-everywhere-opensource-src-4.8.6/src/corelib/io/qprocess_unix.cpp
--- qt-everywhere-opensource-src-4.8.6/src/corelib/io/qprocess_unix.cpp.poll 2014-03-30 15:36:48.000000000 -0500
+++ qt-everywhere-opensource-src-4.8.6/src/corelib/io/qprocess_unix.cpp 2014-03-31 18:04:05.958260978 -0500
@@ -158,13 +158,6 @@ static void qt_sa_sigchld_sigaction(int
}
}
-static inline void add_fd(int &nfds, int fd, fd_set *fdset)
-{
- FD_SET(fd, fdset);
- if ((fd) > nfds)
- nfds = fd;
-}
-
struct QProcessInfo {
QProcess *process;
int deathPipe;
@@ -256,9 +249,9 @@ QProcessManager::~QProcessManager()
void QProcessManager::run()
{
forever {
- fd_set readset;
- FD_ZERO(&readset);
- FD_SET(qt_qprocess_deadChild_pipe[0], &readset);
+ pollfd fd;
+ fd.fd = qt_qprocess_deadChild_pipe[0];
+ fd.events = POLLIN;
#if defined (QPROCESS_DEBUG)
qDebug() << "QProcessManager::run() waiting for children to die";
@@ -267,8 +260,8 @@ void QProcessManager::run()
// block forever, or until activity is detected on the dead child
// pipe. the only other peers are the SIGCHLD signal handler, and the
// QProcessManager destructor.
- int nselect = select(qt_qprocess_deadChild_pipe[0] + 1, &readset, 0, 0, 0);
- if (nselect < 0) {
+ int ret = qt_safe_poll(&fd, 1, -1, /* retry_eintr */ false);
+ if (ret < 0) {
if (errno == EINTR)
continue;
break;
@@ -1027,17 +1020,6 @@ void QProcessPrivate::killProcess()
::kill(pid_t(pid), SIGKILL);
}
-static int select_msecs(int nfds, fd_set *fdread, fd_set *fdwrite, int timeout)
-{
- if (timeout < 0)
- return qt_safe_select(nfds, fdread, fdwrite, 0, 0);
-
- struct timeval tv;
- tv.tv_sec = timeout / 1000;
- tv.tv_usec = (timeout % 1000) * 1000;
- return qt_safe_select(nfds, fdread, fdwrite, 0, &tv);
-}
-
/*
Returns the difference between msecs and elapsed. If msecs is -1,
however, -1 is returned.
@@ -1060,10 +1042,10 @@ bool QProcessPrivate::waitForStarted(int
childStartedPipe[0]);
#endif
- fd_set fds;
- FD_ZERO(&fds);
- FD_SET(childStartedPipe[0], &fds);
- if (select_msecs(childStartedPipe[0] + 1, &fds, 0, msecs) == 0) {
+ pollfd fd;
+ fd.fd = childStartedPipe[0];
+ fd.events = POLLIN;
+ if (qt_safe_poll(&fd, 1, msecs) == 0) {
processError = QProcess::Timedout;
q->setErrorString(QProcess::tr("Process operation timed out"));
#if defined (QPROCESS_DEBUG)
@@ -1079,6 +1061,47 @@ bool QProcessPrivate::waitForStarted(int
return startedEmitted;
}
+class QProcessFDSet {
+ pollfd fds[5];
+
+ static size_t size()
+ {
+ return sizeof(fds)/sizeof(fds[0]);
+ }
+
+public:
+ QProcessFDSet(QProcessPrivate &proc)
+ {
+ for (size_t i = 0; i < size(); ++i) {
+ fds[i].fd = -1;
+ fds[i].events = POLLIN;
+ }
+ death().fd = proc.deathPipe[0];
+
+ if (proc.processState == QProcess::Starting)
+ started().fd = proc.childStartedPipe[0];
+
+ stdout().fd = proc.stdoutChannel.pipe[0];
+ stderr().fd = proc.stderrChannel.pipe[0];
+
+ if (!proc.writeBuffer.isEmpty()) {
+ stdin().fd = proc.stdinChannel.pipe[1];
+ stdin().events = POLLOUT;
+ }
+ }
+
+ int poll(int timeout)
+ {
+ return qt_safe_poll(fds, size(), timeout);
+ }
+
+ pollfd &death() { return fds[0]; }
+ pollfd &started() { return fds[1]; }
+ pollfd &stdout() { return fds[2]; }
+ pollfd &stderr() { return fds[3]; }
+ pollfd &stdin() { return fds[4]; }
+};
+
bool QProcessPrivate::waitForReadyRead(int msecs)
{
Q_Q(QProcess);
@@ -1090,28 +1113,9 @@ bool QProcessPrivate::waitForReadyRead(i
stopWatch.start();
forever {
- fd_set fdread;
- fd_set fdwrite;
-
- FD_ZERO(&fdread);
- FD_ZERO(&fdwrite);
-
- int nfds = deathPipe[0];
- FD_SET(deathPipe[0], &fdread);
-
- if (processState == QProcess::Starting)
- add_fd(nfds, childStartedPipe[0], &fdread);
-
- if (stdoutChannel.pipe[0] != -1)
- add_fd(nfds, stdoutChannel.pipe[0], &fdread);
- if (stderrChannel.pipe[0] != -1)
- add_fd(nfds, stderrChannel.pipe[0], &fdread);
-
- if (!writeBuffer.isEmpty() && stdinChannel.pipe[1] != -1)
- add_fd(nfds, stdinChannel.pipe[1], &fdwrite);
-
+ QProcessFDSet fdset(*this);
int timeout = qt_timeout_value(msecs, stopWatch.elapsed());
- int ret = select_msecs(nfds + 1, &fdread, &fdwrite, timeout);
+ int ret = fdset.poll(timeout);
if (ret < 0) {
break;
}
@@ -1121,18 +1125,18 @@ bool QProcessPrivate::waitForReadyRead(i
return false;
}
- if (childStartedPipe[0] != -1 && FD_ISSET(childStartedPipe[0], &fdread)) {
+ if (qt_readable(fdset.started())) {
if (!_q_startupNotification())
return false;
}
bool readyReadEmitted = false;
- if (stdoutChannel.pipe[0] != -1 && FD_ISSET(stdoutChannel.pipe[0], &fdread)) {
+ if (qt_readable(fdset.stdout())) {
bool canRead = _q_canReadStandardOutput();
if (processChannel == QProcess::StandardOutput && canRead)
readyReadEmitted = true;
}
- if (stderrChannel.pipe[0] != -1 && FD_ISSET(stderrChannel.pipe[0], &fdread)) {
+ if (qt_readable(fdset.stderr())) {
bool canRead = _q_canReadStandardError();
if (processChannel == QProcess::StandardError && canRead)
readyReadEmitted = true;
@@ -1140,13 +1144,13 @@ bool QProcessPrivate::waitForReadyRead(i
if (readyReadEmitted)
return true;
- if (stdinChannel.pipe[1] != -1 && FD_ISSET(stdinChannel.pipe[1], &fdwrite))
+ if (qt_writable(fdset.stdin()))
_q_canWrite();
- if (deathPipe[0] == -1 || FD_ISSET(deathPipe[0], &fdread)) {
+ if (qt_readable(fdset.death())) {
if (_q_processDied())
return false;
- }
+ }
}
return false;
}
@@ -1162,29 +1166,9 @@ bool QProcessPrivate::waitForBytesWritte
stopWatch.start();
while (!writeBuffer.isEmpty()) {
- fd_set fdread;
- fd_set fdwrite;
-
- FD_ZERO(&fdread);
- FD_ZERO(&fdwrite);
-
- int nfds = deathPipe[0];
- FD_SET(deathPipe[0], &fdread);
-
- if (processState == QProcess::Starting)
- add_fd(nfds, childStartedPipe[0], &fdread);
-
- if (stdoutChannel.pipe[0] != -1)
- add_fd(nfds, stdoutChannel.pipe[0], &fdread);
- if (stderrChannel.pipe[0] != -1)
- add_fd(nfds, stderrChannel.pipe[0], &fdread);
-
-
- if (!writeBuffer.isEmpty() && stdinChannel.pipe[1] != -1)
- add_fd(nfds, stdinChannel.pipe[1], &fdwrite);
-
+ QProcessFDSet fdset(*this);
int timeout = qt_timeout_value(msecs, stopWatch.elapsed());
- int ret = select_msecs(nfds + 1, &fdread, &fdwrite, timeout);
+ int ret = fdset.poll(timeout);
if (ret < 0) {
break;
}
@@ -1195,24 +1179,24 @@ bool QProcessPrivate::waitForBytesWritte
return false;
}
- if (childStartedPipe[0] != -1 && FD_ISSET(childStartedPipe[0], &fdread)) {
+ if (qt_readable(fdset.started())) {
if (!_q_startupNotification())
return false;
}
- if (stdinChannel.pipe[1] != -1 && FD_ISSET(stdinChannel.pipe[1], &fdwrite))
+ if (qt_writable(fdset.stdin()))
return _q_canWrite();
- if (stdoutChannel.pipe[0] != -1 && FD_ISSET(stdoutChannel.pipe[0], &fdread))
+ if (qt_readable(fdset.stdout()))
_q_canReadStandardOutput();
- if (stderrChannel.pipe[0] != -1 && FD_ISSET(stderrChannel.pipe[0], &fdread))
+ if (qt_readable(fdset.stderr()))
_q_canReadStandardError();
- if (deathPipe[0] == -1 || FD_ISSET(deathPipe[0], &fdread)) {
- if (_q_processDied())
- return false;
- }
+ if (qt_readable(fdset.death())) {
+ if (_q_processDied())
+ return false;
+ }
}
return false;
@@ -1229,29 +1213,9 @@ bool QProcessPrivate::waitForFinished(in
stopWatch.start();
forever {
- fd_set fdread;
- fd_set fdwrite;
- int nfds = -1;
-
- FD_ZERO(&fdread);
- FD_ZERO(&fdwrite);
-
- if (processState == QProcess::Starting)
- add_fd(nfds, childStartedPipe[0], &fdread);
-
- if (stdoutChannel.pipe[0] != -1)
- add_fd(nfds, stdoutChannel.pipe[0], &fdread);
- if (stderrChannel.pipe[0] != -1)
- add_fd(nfds, stderrChannel.pipe[0], &fdread);
-
- if (processState == QProcess::Running)
- add_fd(nfds, deathPipe[0], &fdread);
-
- if (!writeBuffer.isEmpty() && stdinChannel.pipe[1] != -1)
- add_fd(nfds, stdinChannel.pipe[1], &fdwrite);
-
+ QProcessFDSet fdset(*this);
int timeout = qt_timeout_value(msecs, stopWatch.elapsed());
- int ret = select_msecs(nfds + 1, &fdread, &fdwrite, timeout);
+ int ret = fdset.poll(timeout);
if (ret < 0) {
break;
}
@@ -1261,20 +1225,20 @@ bool QProcessPrivate::waitForFinished(in
return false;
}
- if (childStartedPipe[0] != -1 && FD_ISSET(childStartedPipe[0], &fdread)) {
+ if (qt_readable(fdset.started())) {
if (!_q_startupNotification())
return false;
}
- if (stdinChannel.pipe[1] != -1 && FD_ISSET(stdinChannel.pipe[1], &fdwrite))
+ if (qt_writable(fdset.stdin()))
_q_canWrite();
- if (stdoutChannel.pipe[0] != -1 && FD_ISSET(stdoutChannel.pipe[0], &fdread))
+ if (qt_readable(fdset.stdout()))
_q_canReadStandardOutput();
- if (stderrChannel.pipe[0] != -1 && FD_ISSET(stderrChannel.pipe[0], &fdread))
+ if (qt_readable(fdset.stderr()))
_q_canReadStandardError();
- if (deathPipe[0] == -1 || FD_ISSET(deathPipe[0], &fdread)) {
+ if (qt_readable(fdset.death())) {
if (_q_processDied())
return true;
}
@@ -1284,10 +1248,10 @@ bool QProcessPrivate::waitForFinished(in
bool QProcessPrivate::waitForWrite(int msecs)
{
- fd_set fdwrite;
- FD_ZERO(&fdwrite);
- FD_SET(stdinChannel.pipe[1], &fdwrite);
- return select_msecs(stdinChannel.pipe[1] + 1, 0, &fdwrite, msecs < 0 ? 0 : msecs) == 1;
+ pollfd fd;
+ fd.fd = stdinChannel.pipe[1];
+ fd.events = POLLIN;
+ return qt_safe_poll(&fd, 1, msecs);
}
void QProcessPrivate::findExitCode()
diff -up qt-everywhere-opensource-src-4.8.6/src/corelib/kernel/qcore_unix.cpp.poll qt-everywhere-opensource-src-4.8.6/src/corelib/kernel/qcore_unix.cpp
--- qt-everywhere-opensource-src-4.8.6/src/corelib/kernel/qcore_unix.cpp.poll 2014-03-30 15:36:48.000000000 -0500
+++ qt-everywhere-opensource-src-4.8.6/src/corelib/kernel/qcore_unix.cpp 2014-03-31 18:01:59.369715403 -0500
@@ -99,4 +99,165 @@ int qt_safe_select(int nfds, fd_set *fdr
}
}
+#ifndef Q_OS_VXWORKS
+
+int qt_safe_poll(struct pollfd *fds, int nfds, int timeout_ms, bool retry_eintr)
+{
+ if (nfds == 0)
+ return 0;
+ if (nfds < 0) {
+ errno = EINVAL;
+ return -1;
+ }
+
+ // Retry on ret == 0 if the deadline has not yet passed because
+ // Linux can return early from the syscall, without setting EINTR.
+ if (timeout_ms < 0) {
+ forever {
+ int ret = ::poll(fds, nfds, -1);
+ if (ret > 0)
+ return ret;
+ if (retry_eintr) {
+ if (ret == 0 || ret == -1 && errno == EINTR) {
+ continue;
+ } else {
+ return -1;
+ }
+ }
+ if (ret == 0) {
+ errno = EINTR;
+ return -1;
+ }
+ return ret;
+ }
+ }
+
+ timeval previous = qt_gettime();
+ timeval deadline = previous;
+ deadline.tv_sec += timeout_ms / 1000;
+ deadline.tv_usec += (timeout_ms % 1000) * 1000;
+ if (deadline.tv_usec >= 1000000) {
+ ++deadline.tv_sec;
+ deadline.tv_usec -= 1000000;
+ }
+ int remaining = timeout_ms;
+
+ forever {
+ int ret = ::poll(fds, nfds, remaining);
+ if (ret > 0)
+ return ret;
+ timeval now = qt_gettime();
+ if ((now.tv_sec > deadline.tv_sec // past deadline
+ || (now.tv_sec == deadline.tv_sec
+ && now.tv_usec >= deadline.tv_usec))
+ || (now.tv_sec < previous.tv_sec // time warp
+ || (now.tv_sec == previous.tv_sec
+ && now.tv_usec < previous.tv_usec))
+ || (ret < 0 && (errno != EINTR || !retry_eintr))) // other error
+ return ret;
+ if (ret == 0 && !retry_eintr) {
+ errno = EINTR;
+ return -1;
+ }
+ remaining = (deadline.tv_sec - now.tv_sec) * 1000
+ + (deadline.tv_usec - now.tv_usec) / 1000;
+ previous = now;
+ }
+}
+
+#else
+
+// Poll emulation for VxWorks.
+
+static int mark_bad_descriptors(pollfd *fds, int nfds)
+{
+ fd_set r;
+ FD_ZERO(&r);
+ struct timeval tv;
+ tv.tv_sec = 0;
+ tv.tv_usec = 0;
+ int ret = 0;
+
+ // Check each descriptor invidually for badness.
+ for (int i = 0; i < nfds; ++i) {
+ pollfd &fd(fds[i]);
+ if (fd.fd >= 0) {
+ FD_SET(fd.fd, &r);
+ int ret = qt_safe_select(fd.fd + 1, &r, NULL, NULL, &tv);
+ FD_CLR(fd.fd, &r);
+ if (ret < 0 && errno == EBADF) {
+ fd.revents = POLLNVAL;
+ ++ret;
+ }
+ }
+ }
+ Q_ASSERT(ret > 0);
+ return ret;
+}
+
+int qt_safe_poll(pollfd *fds, int nfds, int timeout, bool retry_eintr)
+{
+ fd_set r, w;
+ FD_ZERO(&r);
+ FD_ZERO(&w);
+ int maxfd = -1;
+
+ // Extract the watched descriptors.
+ for (int i = 0; i < nfds; ++i) {
+ pollfd &fd(fds[i]);
+ if (fd.fd >= 0 && fd.fd < FD_SETSIZE) {
+ if (fd.events & POLLIN) {
+ FD_SET(fd.fd, &r);
+ if (fd.fd > maxfd)
+ maxfd = fd.fd;
+ }
+ if (fd.events & POLLOUT) {
+ FD_SET(fd.fd, &w);
+ if (fd.fd > maxfd)
+ maxfd = fd.fd;
+ }
+ }
+ }
+
+ // If timeout is negative, wait indefinitely for activity.
+ timeval tv;
+ timeval *ptv;
+ if (timeout >= 0) {
+ tv.tv_sec = timeout / 1000;
+ tv.tv_usec = (timeout % 1000) * 1000;
+ ptv = &tv;
+ } else
+ ptv = NULL;
+
+ int ret;
+ if (retry_eintr)
+ ret = qt_safe_select(maxfd + 1, &r, &w, NULL, ptv);
+ else
+ ret = ::select(maxfd + 1, &r, &w, NULL, ptv);
+ if (ret < 0 && errno == EBADF) {
+ return mark_bad_descriptors(fds, nfds);
+ }
+ if (ret <= 0)
+ return ret;
+
+ // Set the revents flags.
+ ret = 0;
+ for (int i = 0; i < nfds; ++i) {
+ pollfd &fd(fds[i]);
+ fd.revents = 0;
+ if (fd.fd >= 0 && fd.fd < FD_SETSIZE) {
+ if ((fd.events & POLLIN) && FD_ISSET(fd.fd, &r))
+ fd.revents |= POLLIN;
+ if ((fd.events & POLLOUT) && FD_ISSET(fd.fd, &w))
+ fd.revents |= POLLOUT;
+ if (fd.revents)
+ ++ret;
+ }
+ }
+ Q_ASSERT(ret > 0);
+ return ret;
+}
+
+#endif
+
QT_END_NAMESPACE
diff -up qt-everywhere-opensource-src-4.8.6/src/corelib/kernel/qcore_unix_p.h.poll qt-everywhere-opensource-src-4.8.6/src/corelib/kernel/qcore_unix_p.h
--- qt-everywhere-opensource-src-4.8.6/src/corelib/kernel/qcore_unix_p.h.poll 2014-03-30 15:36:48.000000000 -0500
+++ qt-everywhere-opensource-src-4.8.6/src/corelib/kernel/qcore_unix_p.h 2014-03-31 18:01:59.370715392 -0500
@@ -345,9 +345,42 @@ static inline pid_t qt_safe_waitpid(pid_
timeval qt_gettime(); // in qelapsedtimer_mac.cpp or qtimestamp_unix.cpp
+// Deprecated due to FD_SETSIZE limitation, use qt_safe_poll instead.
Q_CORE_EXPORT int qt_safe_select(int nfds, fd_set *fdread, fd_set *fdwrite, fd_set *fdexcept,
const struct timeval *tv);
+#ifndef Q_OS_VXWORKS
+#include <poll.h>
+#else
+
+// Poll emulation for VxWorks.
+
+struct pollfd {
+ int fd;
+ short events;
+ short revents;
+};
+
+#define POLLIN 1
+#define POLLOUT 2
+#define POLLERR 4
+#define POLLHUP 8
+#define POLLNVAL 16
+#endif
+
+inline bool qt_readable(const pollfd &fd)
+{
+ return fd.fd >= 0 && (fd.revents & (POLLIN | POLLHUP | POLLERR | POLLNVAL)) != 0;
+}
+
+inline bool qt_writable(const pollfd &fd)
+{
+ return fd.fd >= 0 && (fd.revents & (POLLOUT | POLLHUP | POLLERR | POLLNVAL)) != 0;
+}
+
+Q_CORE_EXPORT int qt_safe_poll(pollfd *fds, int nfds, int timeout,
+ bool retry_eintr = true);
+
// according to X/OPEN we have to define semun ourselves
// we use prefix as on some systems sem.h will have it
struct semid_ds;
diff -up qt-everywhere-opensource-src-4.8.6/src/network/socket/qlocalserver_unix.cpp.poll qt-everywhere-opensource-src-4.8.6/src/network/socket/qlocalserver_unix.cpp
--- qt-everywhere-opensource-src-4.8.6/src/network/socket/qlocalserver_unix.cpp.poll 2014-03-30 15:36:49.000000000 -0500
+++ qt-everywhere-opensource-src-4.8.6/src/network/socket/qlocalserver_unix.cpp 2014-03-31 18:01:59.370715392 -0500
@@ -208,16 +208,11 @@ void QLocalServerPrivate::_q_onNewConnec
void QLocalServerPrivate::waitForNewConnection(int msec, bool *timedOut)
{
- fd_set readfds;
- FD_ZERO(&readfds);
- FD_SET(listenSocket, &readfds);
+ struct pollfd fd;
+ fd.fd = listenSocket;
+ fd.events = POLLIN;
- timeval timeout;
- timeout.tv_sec = msec / 1000;
- timeout.tv_usec = (msec % 1000) * 1000;
-
- int result = -1;
- result = qt_safe_select(listenSocket + 1, &readfds, 0, 0, (msec == -1) ? 0 : &timeout);
+ int result = qt_safe_poll(&fd, 1, msec);
if (-1 == result) {
setError(QLatin1String("QLocalServer::waitForNewConnection"));
closeServer();
diff -up qt-everywhere-opensource-src-4.8.6/src/network/socket/qlocalsocket_unix.cpp.poll qt-everywhere-opensource-src-4.8.6/src/network/socket/qlocalsocket_unix.cpp
--- qt-everywhere-opensource-src-4.8.6/src/network/socket/qlocalsocket_unix.cpp.poll 2014-03-30 15:36:49.000000000 -0500
+++ qt-everywhere-opensource-src-4.8.6/src/network/socket/qlocalsocket_unix.cpp 2014-03-31 18:01:59.370715392 -0500
@@ -56,10 +56,6 @@
#include <qdebug.h>
#include <qelapsedtimer.h>
-#ifdef Q_OS_VXWORKS
-# include <selectLib.h>
-#endif
-
#define QT_CONNECT_TIMEOUT 30000
QT_BEGIN_NAMESPACE
@@ -520,32 +516,17 @@ bool QLocalSocket::waitForConnected(int
if (state() != ConnectingState)
return (state() == ConnectedState);
- fd_set fds;
- FD_ZERO(&fds);
- FD_SET(d->connectingSocket, &fds);
-
- timeval timeout;
- timeout.tv_sec = msec / 1000;
- timeout.tv_usec = (msec % 1000) * 1000;
-
- // timeout can not be 0 or else select will return an error.
- if (0 == msec)
- timeout.tv_usec = 1000;
+ pollfd fd;
+ fd.fd = d->connectingSocket;
+ fd.events = POLLIN | POLLOUT;
int result = -1;
// on Linux timeout will be updated by select, but _not_ on other systems.
QElapsedTimer timer;
+ int remaining = msec;
timer.start();
- while (state() == ConnectingState
- && (-1 == msec || timer.elapsed() < msec)) {
-#ifdef Q_OS_SYMBIAN
- // On Symbian, ready-to-write is signaled when non-blocking socket
- // connect is finised. Is ready-to-read really used on other
- // UNIX paltforms when using non-blocking AF_UNIX socket?
- result = ::select(d->connectingSocket + 1, 0, &fds, 0, &timeout);
-#else
- result = ::select(d->connectingSocket + 1, &fds, 0, 0, &timeout);
-#endif
+ while (state() == ConnectingState) {
+ result = qt_safe_poll(&fd, 1, remaining, /* retry_eintr */ false);
if (-1 == result && errno != EINTR) {
d->errorOccurred( QLocalSocket::UnknownSocketError,
QLatin1String("QLocalSocket::waitForConnected"));
@@ -553,6 +534,11 @@ bool QLocalSocket::waitForConnected(int
}
if (result > 0)
d->_q_connectToSocket();
+ if (msec >= 0) {
+ remaining = timer.elapsed() - msec;
+ if (remaining < 0)
+ break;
+ }
}
return (state() == ConnectedState);
diff -up qt-everywhere-opensource-src-4.8.6/src/network/socket/qnativesocketengine_unix.cpp.poll qt-everywhere-opensource-src-4.8.6/src/network/socket/qnativesocketengine_unix.cpp
--- qt-everywhere-opensource-src-4.8.6/src/network/socket/qnativesocketengine_unix.cpp.poll 2014-03-30 15:36:49.000000000 -0500
+++ qt-everywhere-opensource-src-4.8.6/src/network/socket/qnativesocketengine_unix.cpp 2014-03-31 18:01:59.371715381 -0500
@@ -1068,48 +1068,40 @@ qint64 QNativeSocketEnginePrivate::nativ
int QNativeSocketEnginePrivate::nativeSelect(int timeout, bool selectForRead) const
{
- fd_set fds;
- FD_ZERO(&fds);
- FD_SET(socketDescriptor, &fds);
-
- struct timeval tv;
- tv.tv_sec = timeout / 1000;
- tv.tv_usec = (timeout % 1000) * 1000;
-
- int retval;
- if (selectForRead)
- retval = qt_safe_select(socketDescriptor + 1, &fds, 0, 0, timeout < 0 ? 0 : &tv);
- else
- retval = qt_safe_select(socketDescriptor + 1, 0, &fds, 0, timeout < 0 ? 0 : &tv);
-
- return retval;
+ struct pollfd fd;
+ fd.fd = socketDescriptor;
+ if (selectForRead) {
+ fd.events = POLLIN;
+ } else {
+ fd.events = POLLOUT;
+ }
+ return qt_safe_poll(&fd, 1, timeout);
}
int QNativeSocketEnginePrivate::nativeSelect(int timeout, bool checkRead, bool checkWrite,
bool *selectForRead, bool *selectForWrite) const
{
- fd_set fdread;
- FD_ZERO(&fdread);
+ struct pollfd fd;
+ fd.fd = socketDescriptor;
if (checkRead)
- FD_SET(socketDescriptor, &fdread);
-
- fd_set fdwrite;
- FD_ZERO(&fdwrite);
+ fd.events = POLLIN;
+ else
+ fd.events = 0;
if (checkWrite)
- FD_SET(socketDescriptor, &fdwrite);
-
- struct timeval tv;
- tv.tv_sec = timeout / 1000;
- tv.tv_usec = (timeout % 1000) * 1000;
-
- int ret;
- ret = qt_safe_select(socketDescriptor + 1, &fdread, &fdwrite, 0, timeout < 0 ? 0 : &tv);
-
+ fd.events |= POLLOUT;
+ int ret = qt_safe_poll(&fd, 1, timeout);
if (ret <= 0)
- return ret;
- *selectForRead = FD_ISSET(socketDescriptor, &fdread);
- *selectForWrite = FD_ISSET(socketDescriptor, &fdwrite);
-
+ return ret;
+ bool r = (fd.revents & (POLLIN | POLLHUP | POLLERR)) != 0;
+ bool w = (fd.revents & (POLLOUT | POLLHUP | POLLERR)) != 0;
+ // Emulate the return value from select(2).
+ ret = 0;
+ if (r)
+ ++ret;
+ if (w)
+ ++ret;
+ *selectForRead = r;
+ *selectForWrite = w;
return ret;
}
diff -up qt-everywhere-opensource-src-4.8.6/src/qt3support/network/q3socketdevice_unix.cpp.poll qt-everywhere-opensource-src-4.8.6/src/qt3support/network/q3socketdevice_unix.cpp
--- qt-everywhere-opensource-src-4.8.6/src/qt3support/network/q3socketdevice_unix.cpp.poll 2014-03-30 15:36:49.000000000 -0500
+++ qt-everywhere-opensource-src-4.8.6/src/qt3support/network/q3socketdevice_unix.cpp 2014-03-31 18:01:59.371715381 -0500
@@ -68,6 +68,7 @@ static inline int qt_socket_socket(int d
#endif
#include "q3socketdevice.h"
+#include "private/qcore_unix_p.h"
#ifndef QT_NO_NETWORK
@@ -588,19 +589,10 @@ Q_LONG Q3SocketDevice::waitForMore( int
{
if ( !isValid() )
return -1;
- if ( fd >= FD_SETSIZE )
- return -1;
-
- fd_set fds;
- struct timeval tv;
-
- FD_ZERO( &fds );
- FD_SET( fd, &fds );
-
- tv.tv_sec = msecs / 1000;
- tv.tv_usec = (msecs % 1000) * 1000;
- int rv = select( fd+1, &fds, 0, 0, msecs < 0 ? 0 : &tv );
+ pollfd pfd;
+ pfd.fd = fd;
+ int rv = qt_safe_poll(&pfd, 1, msecs, /* retry_eintr */ false);
if ( rv < 0 )
return -1;
diff -up qt-everywhere-opensource-src-4.8.6/src/qt3support/other/q3process_unix.cpp.poll qt-everywhere-opensource-src-4.8.6/src/qt3support/other/q3process_unix.cpp
--- qt-everywhere-opensource-src-4.8.6/src/qt3support/other/q3process_unix.cpp.poll 2014-03-30 15:36:49.000000000 -0500
+++ qt-everywhere-opensource-src-4.8.6/src/qt3support/other/q3process_unix.cpp 2014-03-31 18:01:59.372715370 -0500
@@ -981,13 +981,10 @@ bool Q3Process::isRunning() const
// On heavy processing, the socket notifier for the sigchild might not
// have found time to fire yet.
if ( d->procManager && d->procManager->sigchldFd[1] < FD_SETSIZE ) {
- fd_set fds;
- struct timeval tv;
- FD_ZERO( &fds );
- FD_SET( d->procManager->sigchldFd[1], &fds );
- tv.tv_sec = 0;
- tv.tv_usec = 0;
- if ( ::select( d->procManager->sigchldFd[1]+1, &fds, 0, 0, &tv ) > 0 )
+ pollfd fd;
+ fd.fd = d->procManager->sigchldFd[1];
+ fd.events = POLLIN;
+ if ( qt_safe_poll(&fd, 1, 0, /* retry_eintr */ false) > 0 )
d->procManager->sigchldHnd( d->procManager->sigchldFd[1] );
}
@@ -1124,29 +1121,21 @@ void Q3Process::socketRead( int fd )
}
}
- if ( fd < FD_SETSIZE ) {
- fd_set fds;
- struct timeval tv;
- FD_ZERO( &fds );
- FD_SET( fd, &fds );
- tv.tv_sec = 0;
- tv.tv_usec = 0;
- while ( ::select( fd+1, &fds, 0, 0, &tv ) > 0 ) {
- // prepare for the next round
- FD_ZERO( &fds );
- FD_SET( fd, &fds );
- // read data
- ba = new QByteArray( basize );
- n = ::read( fd, ba->data(), basize );
- if ( n > 0 ) {
- ba->resize( n );
- buffer->append( ba );
- ba = 0;
- } else {
- delete ba;
- ba = 0;
- break;
- }
+ pollfd pfd;
+ pfd.fd = fd;
+ pfd.events = POLLIN;
+ while (qt_safe_poll(&pfd, 1, 0)) {
+ // read data
+ ba = new QByteArray( basize );
+ n = ::read( fd, ba->data(), basize );
+ if ( n > 0 ) {
+ ba->resize( n );
+ buffer->append( ba );
+ ba = 0;
+ } else {
+ delete ba;
+ ba = 0;
+ break;
}
}

514
qt-aarch64.patch Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,84 @@
diff -ur qt-everywhere-opensource-src-4.6.2/src/gui/dialogs/qprintdialog_unix.cpp qt-everywhere-opensource-src-4.6.2-cups/src/gui/dialogs/qprintdialog_unix.cpp
--- qt-everywhere-opensource-src-4.6.2/src/gui/dialogs/qprintdialog_unix.cpp 2010-02-11 16:55:22.000000000 +0100
+++ qt-everywhere-opensource-src-4.6.2-cups/src/gui/dialogs/qprintdialog_unix.cpp 2010-02-28 04:34:16.000000000 +0100
@@ -569,6 +569,32 @@
void QPrintDialogPrivate::selectPrinter(QCUPSSupport *cups)
{
options.duplex->setEnabled(cups && cups->ppdOption("Duplex"));
+
+ if (cups) {
+ const ppd_option_t* duplex = cups->ppdOption("Duplex");
+ if (duplex) {
+ // copy default ppd duplex to qt dialog
+ if (qstrcmp(duplex->defchoice, "DuplexTumble") == 0)
+ options.duplexShort->setChecked(true);
+ else if (qstrcmp(duplex->defchoice, "DuplexNoTumble") == 0)
+ options.duplexLong->setChecked(true);
+ else
+ options.noDuplex->setChecked(true);
+ }
+
+ if (cups->currentPPD()) {
+ // set default color
+ if (cups->currentPPD()->color_device)
+ options.color->setChecked(true);
+ else
+ options.grayscale->setChecked(true);
+ }
+
+ // set collation
+ const ppd_option_t *collate = cups->ppdOption("Collate");
+ if (collate)
+ options.collate->setChecked(qstrcmp(collate->defchoice, "True")==0);
+ }
}
#endif
diff -ur qt-everywhere-opensource-src-4.6.2/src/gui/painting/qprinter.cpp qt-everywhere-opensource-src-4.6.2-cups/src/gui/painting/qprinter.cpp
--- qt-everywhere-opensource-src-4.6.2/src/gui/painting/qprinter.cpp 2010-02-11 16:55:22.000000000 +0100
+++ qt-everywhere-opensource-src-4.6.2-cups/src/gui/painting/qprinter.cpp 2010-02-28 04:55:15.000000000 +0100
@@ -627,6 +627,44 @@
&& d_ptr->paintEngine->type() != QPaintEngine::MacPrinter) {
setOutputFormat(QPrinter::PdfFormat);
}
+
+#if !defined(QT_NO_CUPS) && !defined(QT_NO_LIBRARY)
+ // fill in defaults from ppd file
+ QCUPSSupport cups;
+
+ int printernum = -1;
+ for (int i = 0; i < cups.availablePrintersCount(); i++) {
+ if (printerName().toLocal8Bit() == cups.availablePrinters()[i].name)
+ printernum = i;
+ }
+ if (printernum >= 0) {
+ cups.setCurrentPrinter(printernum);
+
+ const ppd_option_t* duplex = cups.ppdOption("Duplex");
+ if (duplex) {
+ // copy default ppd duplex to qt dialog
+ if (qstrcmp(duplex->defchoice, "DuplexTumble") == 0)
+ setDuplex(DuplexShortSide);
+ else if (qstrcmp(duplex->defchoice, "DuplexNoTumble") == 0)
+ setDuplex(DuplexLongSide);
+ else
+ setDuplex(DuplexNone);
+ }
+
+ if (cups.currentPPD()) {
+ // set default color
+ if (cups.currentPPD()->color_device)
+ setColorMode(Color);
+ else
+ setColorMode(GrayScale);
+ }
+
+ // set collation
+ const ppd_option_t *collate = cups.ppdOption("Collate");
+ if (collate)
+ setCollateCopies(qstrcmp(collate->defchoice, "True")==0);
+ }
+#endif
}
/*!

View File

@ -0,0 +1,69 @@
diff -ur qt-everywhere-opensource-src-4.6.3/src/gui/kernel/qguieventdispatcher_glib.cpp qt-everywhere-opensource-src-4.6.3-glib_eventloop_nullcheck/src/gui/kernel/qguieventdispatcher_glib.cpp
--- qt-everywhere-opensource-src-4.6.3/src/gui/kernel/qguieventdispatcher_glib.cpp 2010-06-02 04:03:15.000000000 +0200
+++ qt-everywhere-opensource-src-4.6.3-glib_eventloop_nullcheck/src/gui/kernel/qguieventdispatcher_glib.cpp 2010-12-08 22:22:38.000000000 +0100
@@ -76,7 +76,7 @@
GX11EventSource *source = reinterpret_cast<GX11EventSource *>(s);
return (XEventsQueued(X11->display, QueuedAfterFlush)
|| (!(source->flags & QEventLoop::ExcludeUserInputEvents)
- && !source->d->queuedUserInputEvents.isEmpty()));
+ && source->d && !source->d->queuedUserInputEvents.isEmpty()));
}
static gboolean x11EventSourceCheck(GSource *s)
@@ -84,7 +84,7 @@
GX11EventSource *source = reinterpret_cast<GX11EventSource *>(s);
return (XEventsQueued(X11->display, QueuedAfterFlush)
|| (!(source->flags & QEventLoop::ExcludeUserInputEvents)
- && !source->d->queuedUserInputEvents.isEmpty()));
+ && source->d && !source->d->queuedUserInputEvents.isEmpty()));
}
static gboolean x11EventSourceDispatch(GSource *s, GSourceFunc callback, gpointer user_data)
@@ -95,7 +95,7 @@
do {
XEvent event;
if (!(source->flags & QEventLoop::ExcludeUserInputEvents)
- && !source->d->queuedUserInputEvents.isEmpty()) {
+ && source->d && !source->d->queuedUserInputEvents.isEmpty()) {
// process a pending user input event
event = source->d->queuedUserInputEvents.takeFirst();
} else if (XEventsQueued(X11->display, QueuedAlready)) {
@@ -112,7 +112,8 @@
case XKeyRelease:
case EnterNotify:
case LeaveNotify:
- source->d->queuedUserInputEvents.append(event);
+ if (source->d)
+ source->d->queuedUserInputEvents.append(event);
continue;
case ClientMessage:
@@ -127,7 +128,8 @@
break;
}
}
- source->d->queuedUserInputEvents.append(event);
+ if (source->d)
+ source->d->queuedUserInputEvents.append(event);
continue;
default:
@@ -140,7 +142,7 @@
}
// send through event filter
- if (source->q->filterEvent(&event))
+ if (source->q && source->q->filterEvent(&event))
continue;
if (qApp->x11ProcessEvent(&event) == 1)
@@ -152,7 +154,8 @@
out:
- source->d->runTimersOnceWithNormalPriority();
+ if (source->d)
+ source->d->runTimersOnceWithNormalPriority();
if (callback)
callback(user_data);

View File

@ -0,0 +1,41 @@
diff -up qt-everywhere-opensource-src-4.8.0/src/corelib/tools/qlist.h.QTBUG-22037 qt-everywhere-opensource-src-4.8.0/src/corelib/tools/qlist.h
--- qt-everywhere-opensource-src-4.8.0/src/corelib/tools/qlist.h.QTBUG-22037 2011-10-03 22:44:32.000000000 -0500
+++ qt-everywhere-opensource-src-4.8.0/src/corelib/tools/qlist.h 2011-10-15 14:25:52.238694974 -0500
@@ -769,26 +769,18 @@ Q_OUTOFLINE_TEMPLATE void QList<T>::clea
template <typename T>
Q_OUTOFLINE_TEMPLATE int QList<T>::removeAll(const T &_t)
{
- int index = indexOf(_t);
- if (index == -1)
- return 0;
-
+ detachShared();
const T t = _t;
- detach();
-
- Node *i = reinterpret_cast<Node *>(p.at(index));
- Node *e = reinterpret_cast<Node *>(p.end());
- Node *n = i;
- node_destruct(i);
- while (++i != e) {
- if (i->t() == t)
- node_destruct(i);
- else
- *n++ = *i;
- }
-
- int removedCount = e - n;
- d->end -= removedCount;
+ int removedCount=0, i=0;
+ Node *n;
+ while (i < p.size())
+ if ((n = reinterpret_cast<Node *>(p.at(i)))->t() == t) {
+ node_destruct(n);
+ p.remove(i);
+ ++removedCount;
+ } else {
+ ++i;
+ }
return removedCount;
}

View File

@ -0,0 +1,20 @@
diff -up qt-everywhere-opensource-src-4.8.0/src/corelib/arch/qatomic_s390.h.s390-atomic qt-everywhere-opensource-src-4.8.0/src/corelib/arch/qatomic_s390.h
--- qt-everywhere-opensource-src-4.8.0/src/corelib/arch/qatomic_s390.h.s390-atomic 2011-12-18 16:15:20.000000000 +0100
+++ qt-everywhere-opensource-src-4.8.0/src/corelib/arch/qatomic_s390.h 2011-12-18 16:17:34.000000000 +0100
@@ -400,6 +400,16 @@ Q_INLINE_TEMPLATE T* QBasicAtomicPointer
template <typename T>
+Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddOrdered(qptrdiff valueToAdd)
+{
+#ifndef __s390x__
+ return (T *)__CS_OLD_LOOP(&_q_value, valueToAdd * sizeof(T), "ar", "", "bcr 15,0\n");
+#else
+ return (T *)__CSG_OLD_LOOP(&_q_value, valueToAdd * sizeof(T), "agr", "", "bcr 15,0\n");
+#endif
+}
+
+template <typename T>
Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelaxed(qptrdiff valueToAdd)
{
return fetchAndAddOrdered(valueToAdd);

View File

@ -0,0 +1,12 @@
diff -up qt-everywhere-opensource-src-4.8.0-tp/src/gui/itemviews/qtreeview.cpp.qtreeview-kpackagekit-crash qt-everywhere-opensource-src-4.8.0-tp/src/gui/itemviews/qtreeview.cpp
--- qt-everywhere-opensource-src-4.8.0-tp/src/gui/itemviews/qtreeview.cpp.qtreeview-kpackagekit-crash 2011-05-23 12:26:21.000000000 +0200
+++ qt-everywhere-opensource-src-4.8.0-tp/src/gui/itemviews/qtreeview.cpp 2011-05-25 13:24:33.137315194 +0200
@@ -3215,7 +3215,7 @@ int QTreeViewPrivate::itemHeight(int ite
return defaultItemHeight;
if (viewItems.isEmpty())
return 0;
- const QModelIndex &index = viewItems.at(item).index;
+ QModelIndex index = viewItems.at(item).index;
if (!index.isValid())
return 0;
int height = viewItems.at(item).height;

View File

@ -0,0 +1,27 @@
diff -up qt-everywhere-opensource-src-4.8.2/tools/linguist/lrelease/main.cpp.linguist_qtmake-qt4 qt-everywhere-opensource-src-4.8.2/tools/linguist/lrelease/main.cpp
--- qt-everywhere-opensource-src-4.8.2/tools/linguist/lrelease/main.cpp.linguist_qtmake-qt4 2012-04-26 21:45:50.000000000 +0200
+++ qt-everywhere-opensource-src-4.8.2/tools/linguist/lrelease/main.cpp 2012-05-29 12:17:03.416561535 +0200
@@ -314,9 +314,9 @@ int main(int argc, char **argv)
parseHandler.verbose = evalHandler.verbose = cd.isVerbose();
ProFileOption option;
#ifdef QT_BOOTSTRAPPED
- option.initProperties(binDir + QLatin1String("/qmake"));
+ option.initProperties(binDir + QLatin1String("/qmake-qt4"));
#else
- option.initProperties(app.applicationDirPath() + QLatin1String("/qmake"));
+ option.initProperties(app.applicationDirPath() + QLatin1String("/qmake-qt4"));
#endif
ProFileParser parser(0, &parseHandler);
ProFileEvaluator visitor(&option, &parser, &evalHandler);
diff -up qt-everywhere-opensource-src-4.8.2/tools/linguist/lupdate/main.cpp.linguist_qtmake-qt4 qt-everywhere-opensource-src-4.8.2/tools/linguist/lupdate/main.cpp
--- qt-everywhere-opensource-src-4.8.2/tools/linguist/lupdate/main.cpp.linguist_qtmake-qt4 2012-04-26 21:45:50.000000000 +0200
+++ qt-everywhere-opensource-src-4.8.2/tools/linguist/lupdate/main.cpp 2012-05-29 11:46:48.811134546 +0200
@@ -765,7 +765,7 @@ int main(int argc, char **argv)
parseHandler.verbose = evalHandler.verbose = !!(options & Verbose);
ProFileOption option;
- option.initProperties(app.applicationDirPath() + QLatin1String("/qmake"));
+ option.initProperties(app.applicationDirPath() + QLatin1String("/qmake-qt4"));
option.setCommandLineArguments(QStringList() << QLatin1String("CONFIG+=lupdate_run"));
ProFileParser parser(0, &parseHandler);

View File

@ -0,0 +1,10 @@
diff -up qt-everywhere-opensource-src-4.8.1/src/qt3support/qt3support.pro.debuginfo qt-everywhere-opensource-src-4.8.1/src/qt3support/qt3support.pro
--- qt-everywhere-opensource-src-4.8.1/src/qt3support/qt3support.pro.debuginfo 2012-03-14 09:01:17.000000000 -0500
+++ qt-everywhere-opensource-src-4.8.1/src/qt3support/qt3support.pro 2012-05-11 11:55:37.780070386 -0500
@@ -34,6 +34,3 @@ MOCDIR = .moc
*-g++*: QMAKE_CXXFLAGS += -fno-strict-aliasing
-CONFIG -= separate_debug_info
-CONFIG += no_debug_info
-

View File

@ -0,0 +1,13 @@
diff -up qt-everywhere-opensource-src-4.8.2/tools/assistant/tools/assistant/mainwindow.cpp.me qt-everywhere-opensource-src-4.8.2/tools/assistant/tools/assistant/mainwindow.cpp
--- qt-everywhere-opensource-src-4.8.2/tools/assistant/tools/assistant/mainwindow.cpp.me 2012-06-19 12:52:22.740180410 +0200
+++ qt-everywhere-opensource-src-4.8.2/tools/assistant/tools/assistant/mainwindow.cpp 2012-06-19 12:52:51.953194103 +0200
@@ -944,8 +944,7 @@ void MainWindow::updateApplicationFont()
if (helpEngine.usesAppFont())
font = helpEngine.appFont();
- const QWidgetList &widgets = qApp->allWidgets();
- foreach (QWidget* widget, widgets)
+ foreach (QWidget* widget, QApplication::allWidgets())
widget->setFont(font);
}

View File

@ -0,0 +1,23 @@
diff -up qt-everywhere-opensource-src-4.8.3/src/corelib/tools/qlocale_icu.cpp.icu_no_debug qt-everywhere-opensource-src-4.8.3/src/corelib/tools/qlocale_icu.cpp
--- qt-everywhere-opensource-src-4.8.3/src/corelib/tools/qlocale_icu.cpp.icu_no_debug 2012-09-06 02:33:45.000000000 -0500
+++ qt-everywhere-opensource-src-4.8.3/src/corelib/tools/qlocale_icu.cpp 2012-09-11 09:04:21.542379795 -0500
@@ -84,7 +84,9 @@ bool qt_initIcu(const QString &localeStr
QLibrary lib(QLatin1String("icui18n"), QLatin1String(U_ICU_VERSION_SHORT));
lib.setLoadHints(QLibrary::ImprovedSearchHeuristics);
if (!lib.load()) {
+#ifndef QT_NO_DEBUG
qWarning() << "Unable to load library icui18n" << lib.errorString();
+#endif
status = ErrorLoading;
return false;
}
@@ -114,7 +116,9 @@ bool qt_initIcu(const QString &localeStr
QLibrary ucLib(QLatin1String("icuuc"), QLatin1String(U_ICU_VERSION_SHORT));
ucLib.setLoadHints(QLibrary::ImprovedSearchHeuristics);
if (!ucLib.load()) {
+#ifndef QT_NO_DEBUG
qWarning() << "Unable to load library icuuc" << ucLib.errorString();
+#endif
status = ErrorLoading;
return false;
}

View File

@ -0,0 +1,12 @@
diff -up qt-everywhere-opensource-src-4.8.3/src/3rdparty/webkit/Source/WebKit.pri.no_Werror qt-everywhere-opensource-src-4.8.3/src/3rdparty/webkit/Source/WebKit.pri
--- qt-everywhere-opensource-src-4.8.3/src/3rdparty/webkit/Source/WebKit.pri.no_Werror 2012-09-06 02:33:50.000000000 -0500
+++ qt-everywhere-opensource-src-4.8.3/src/3rdparty/webkit/Source/WebKit.pri 2012-09-11 09:03:19.152159783 -0500
@@ -102,7 +102,7 @@ CONFIG -= warn_on
# Treat warnings as errors on x86/Linux/GCC
linux-g++* {
- !CONFIG(standalone_package):if(isEqual(QT_ARCH,x86_64)|isEqual(QT_ARCH,i386)): QMAKE_CXXFLAGS += -Werror
+ #!CONFIG(standalone_package):if(isEqual(QT_ARCH,x86_64)|isEqual(QT_ARCH,i386)): QMAKE_CXXFLAGS += -Werror
greaterThan(QT_GCC_MAJOR_VERSION, 3):greaterThan(QT_GCC_MINOR_VERSION, 5) {
if (!contains(QMAKE_CXXFLAGS, -std=c++0x) && !contains(QMAKE_CXXFLAGS, -std=gnu++0x)) {

View File

@ -0,0 +1,14 @@
diff -up qt-everywhere-opensource-src-4.8.3/src/dbus/qdbusconnection.cpp.qdbusconnection_no_debug.patch qt-everywhere-opensource-src-4.8.3/src/dbus/qdbusconnection.cpp
--- qt-everywhere-opensource-src-4.8.3/src/dbus/qdbusconnection.cpp.qdbusconnection_no_debug.patch 2012-09-06 02:33:44.000000000 -0500
+++ qt-everywhere-opensource-src-4.8.3/src/dbus/qdbusconnection.cpp 2012-09-11 08:55:29.854026815 -0500
@@ -1109,8 +1109,10 @@ public:
// make sure this connection is running on the main thread
QCoreApplication *instance = QCoreApplication::instance();
if (!instance) {
+#ifndef QT_NO_DEBUG
qWarning("QDBusConnection: %s D-Bus connection created before QCoreApplication. Application may misbehave.",
type == SessionBus ? "session" : type == SystemBus ? "system" : "generic");
+#endif
} else if (QDBusConnectionPrivate::d(*this)) {
QDBusConnectionPrivate::d(*this)->moveToThread(instance->thread());
}

View File

@ -0,0 +1,16 @@
diff -up qt-everywhere-opensource-src-4.8.4/qmake/generators/makefile.cpp.qmake_pkgconfig_requires_private qt-everywhere-opensource-src-4.8.4/qmake/generators/makefile.cpp
--- qt-everywhere-opensource-src-4.8.4/qmake/generators/makefile.cpp.qmake_pkgconfig_requires_private 2012-11-23 04:11:21.000000000 -0600
+++ qt-everywhere-opensource-src-4.8.4/qmake/generators/makefile.cpp 2013-02-11 07:36:36.192779528 -0600
@@ -3293,6 +3293,12 @@ MakefileGenerator::writePkgConfigFile()
t << "Requires: " << requires << endl;
}
+ // requires.private
+ const QString requires_private = project->values("QMAKE_PKGCONFIG_REQUIRES_PRIVATE").join(" ");
+ if (!requires_private.isEmpty()) {
+ t << "Requires.private: " << requires_private << endl;
+ }
+
t << endl;
}

View File

@ -0,0 +1,24 @@
diff -up qt-everywhere-opensource-src-4.8.5/mkspecs/features/qt_functions.prf.QTBUG-14467 qt-everywhere-opensource-src-4.8.5/mkspecs/features/qt_functions.prf
--- qt-everywhere-opensource-src-4.8.5/mkspecs/features/qt_functions.prf.QTBUG-14467 2013-05-30 16:19:17.000000000 -0500
+++ qt-everywhere-opensource-src-4.8.5/mkspecs/features/qt_functions.prf 2013-06-09 11:53:45.709773603 -0500
@@ -72,7 +72,7 @@ defineTest(qtAddLibrary) {
}
isEmpty(LINKAGE) {
if(!debug_and_release|build_pass):CONFIG(debug, debug|release) {
- win32:LINKAGE = -l$${LIB_NAME}$${QT_LIBINFIX}d
+ win32:LINKAGE = -l$${LIB_NAME}d$${QT_LIBINFIX}
mac:LINKAGE = -l$${LIB_NAME}$${QT_LIBINFIX}_debug
}
isEmpty(LINKAGE):LINKAGE = -l$${LIB_NAME}$${QT_LIBINFIX}
diff -up qt-everywhere-opensource-src-4.8.5/mkspecs/features/win32/windows.prf.QTBUG-14467 qt-everywhere-opensource-src-4.8.5/mkspecs/features/win32/windows.prf
--- qt-everywhere-opensource-src-4.8.5/mkspecs/features/win32/windows.prf.QTBUG-14467 2013-05-30 16:19:17.000000000 -0500
+++ qt-everywhere-opensource-src-4.8.5/mkspecs/features/win32/windows.prf 2013-06-09 11:53:45.710773593 -0500
@@ -6,7 +6,7 @@ contains(TEMPLATE, ".*app"){
qt:for(entryLib, $$list($$unique(QMAKE_LIBS_QT_ENTRY))) {
isEqual(entryLib, -lqtmain): {
- CONFIG(debug, debug|release): QMAKE_LIBS += $${entryLib}$${QT_LIBINFIX}d
+ CONFIG(debug, debug|release): QMAKE_LIBS += $${entryLib}d$${QT_LIBINFIX}
else: QMAKE_LIBS += $${entryLib}$${QT_LIBINFIX}
} else {
QMAKE_LIBS += $${entryLib}

View File

@ -0,0 +1,84 @@
diff -up qt-everywhere-opensource-src-4.8.5/src/gui/kernel/qapplication_x11.cpp.QTBUG-21900 qt-everywhere-opensource-src-4.8.5/src/gui/kernel/qapplication_x11.cpp
--- qt-everywhere-opensource-src-4.8.5/src/gui/kernel/qapplication_x11.cpp.QTBUG-21900 2013-05-30 16:18:05.000000000 -0500
+++ qt-everywhere-opensource-src-4.8.5/src/gui/kernel/qapplication_x11.cpp 2013-06-09 11:53:45.891771748 -0500
@@ -818,6 +818,27 @@ static Bool qt_sync_request_scanner(Disp
#endif
#endif // QT_NO_XSYNC
+struct qt_configure_event_data
+{
+ WId window;
+ WId parent;
+};
+
+static Bool qt_configure_event_scanner(Display*, XEvent *event, XPointer arg)
+{
+ qt_configure_event_data *data =
+ reinterpret_cast<qt_configure_event_data*>(arg);
+ if (event->type == ConfigureNotify &&
+ event->xconfigure.window == data->window) {
+ return true;
+ } else if (event->type == ReparentNotify &&
+ event->xreparent.window == data->window) {
+ data->parent = event->xreparent.parent;
+ }
+
+ return false;
+}
+
static void qt_x11_create_intern_atoms()
{
const char *names[QX11Data::NAtoms];
@@ -5302,8 +5323,11 @@ bool QETWidget::translateConfigEvent(con
if (d->extra->compress_events) {
// ConfigureNotify compression for faster opaque resizing
XEvent otherEvent;
- while (XCheckTypedWindowEvent(X11->display, internalWinId(), ConfigureNotify,
- &otherEvent)) {
+ qt_configure_event_data configureData;
+ configureData.window = internalWinId();
+ configureData.parent = d->topData()->parentWinId;
+ while (XCheckIfEvent(X11->display, &otherEvent,
+ &qt_configure_event_scanner, (XPointer)&configureData)) {
if (qt_x11EventFilter(&otherEvent))
continue;
@@ -5316,13 +5340,19 @@ bool QETWidget::translateConfigEvent(con
newSize.setWidth(otherEvent.xconfigure.width);
newSize.setHeight(otherEvent.xconfigure.height);
+ trust = isVisible()
+ && (configureData.parent == XNone ||
+ configureData.parent == QX11Info::appRootWindow());
+
if (otherEvent.xconfigure.send_event || trust) {
newCPos.rx() = otherEvent.xconfigure.x +
otherEvent.xconfigure.border_width;
newCPos.ry() = otherEvent.xconfigure.y +
otherEvent.xconfigure.border_width;
isCPos = true;
- }
+ } else {
+ isCPos = false;
+ }
}
#ifndef QT_NO_XSYNC
qt_sync_request_event_data sync_event;
@@ -5335,9 +5365,14 @@ bool QETWidget::translateConfigEvent(con
}
if (!isCPos) {
- // we didn't get an updated position of the toplevel.
- // either we haven't moved or there is a bug in the window manager.
- // anyway, let's query the position to be certain.
+ // If the last configure event didn't have a trustable position,
+ // it's necessary to query, see ICCCM 4.24:
+ //
+ // Any real ConfigureNotify event on a top-level window implies
+ // that the windows position on the root may have changed, even
+ // though the event reports that the windows position in its
+ // parent is unchanged because the window may have been reparented.
+
int x, y;
Window child;
XTranslateCoordinates(X11->display, internalWinId(),

View File

@ -0,0 +1,12 @@
diff -ur qt-everywhere-opensource-src-4.8.5-CVE-2013-4549/src/xml/sax/qxml.cpp qt-everywhere-opensource-src-4.8.5-QTBUG-35459/src/xml/sax/qxml.cpp
--- qt-everywhere-opensource-src-4.8.5-CVE-2013-4549/src/xml/sax/qxml.cpp 2013-12-05 19:23:33.000000000 +0100
+++ qt-everywhere-opensource-src-4.8.5-QTBUG-35459/src/xml/sax/qxml.cpp 2014-01-13 20:13:59.000000000 +0100
@@ -428,7 +428,7 @@
// for the DTD currently being parsed.
static const int dtdRecursionLimit = 2;
// The maximum amount of characters an entity value may contain, after expansion.
- static const int entityCharacterLimit = 1024;
+ static const int entityCharacterLimit = 4096;
const QString &string();
void stringClear();

View File

@ -0,0 +1,29 @@
diff -up qt-everywhere-opensource-src-4.8.5/src/corelib/io/qfilesystemengine_unix.cpp.QTBUG-4862 qt-everywhere-opensource-src-4.8.5/src/corelib/io/qfilesystemengine_unix.cpp
--- qt-everywhere-opensource-src-4.8.5/src/corelib/io/qfilesystemengine_unix.cpp.QTBUG-4862 2013-06-09 12:02:50.323221694 -0500
+++ qt-everywhere-opensource-src-4.8.5/src/corelib/io/qfilesystemengine_unix.cpp 2013-06-09 12:38:53.140804742 -0500
@@ -624,6 +624,25 @@ QString QFileSystemEngine::homePath()
{
QString home = QFile::decodeName(qgetenv("HOME"));
if (home.isEmpty())
+ {
+#if !defined(QT_NO_THREAD) && defined(_POSIX_THREAD_SAFE_FUNCTIONS) && !defined(Q_OS_OPENBSD)
+ int size_max = sysconf(_SC_GETPW_R_SIZE_MAX);
+ if (size_max == -1)
+ size_max = 1024;
+ QVarLengthArray<char, 1024> buf(size_max);
+#endif
+ struct passwd *pw = 0;
+ uid_t user_id = getuid();
+ pw = getpwuid(user_id);
+#if !defined(QT_NO_THREAD) && defined(_POSIX_THREAD_SAFE_FUNCTIONS) && !defined(Q_OS_OPENBSD)
+ struct passwd entry;
+ getpwuid_r(user_id, &entry, buf.data(), buf.size(), &pw);
+#else
+ pw = getpwuid(user_id);
+#endif
+ home = QFile::decodeName(QByteArray(pw->pw_dir));
+ }
+ if (home.isEmpty())
home = rootPath();
return QDir::cleanPath(home);
}

View File

@ -0,0 +1,19 @@
diff -up qt-everywhere-opensource-src-4.8.5/configure.mysql_config qt-everywhere-opensource-src-4.8.5/configure
--- qt-everywhere-opensource-src-4.8.5/configure.mysql_config 2013-06-07 00:16:41.000000000 -0500
+++ qt-everywhere-opensource-src-4.8.5/configure 2014-03-07 10:09:27.412071146 -0600
@@ -5480,8 +5480,15 @@ for _SQLDR in $CFG_SQL_AVAILABLE; do
[ -z "$CFG_MYSQL_CONFIG" ] && CFG_MYSQL_CONFIG=`"$WHICH" mysql_config`
if [ -x "$CFG_MYSQL_CONFIG" ]; then
QT_CFLAGS_MYSQL=`$CFG_MYSQL_CONFIG --include 2>/dev/null`
+ $CFG_MYSQL_CONFIG --variable=pkglibdir &>/dev/null && \
+ QT_MYSQL_PKGLIBDIR=`$CFG_MYSQL_CONFIG --variable=pkglibdir 2>/dev/null`
+ if [ -n "$QT_MYSQL_PKGLIBDIR" ]; then
+ QT_LFLAGS_MYSQL_R="-L$QT_MYSQL_PKGLIBDIR -lmysqlclient_r"
+ QT_LFLAGS_MYSQL="-L$QT_MYSQL_PKGLIBDIR -lmysqlclient"
+ else
QT_LFLAGS_MYSQL_R=`$CFG_MYSQL_CONFIG --libs_r 2>/dev/null`
QT_LFLAGS_MYSQL=`$CFG_MYSQL_CONFIG --libs 2>/dev/null`
+ fi
QT_MYSQL_VERSION=`$CFG_MYSQL_CONFIG --version 2>/dev/null`
QT_MYSQL_VERSION_MAJOR=`echo $QT_MYSQL_VERSION | cut -d . -f 1`
fi

View File

@ -0,0 +1,22 @@
diff -up qt-everywhere-opensource-src-4.8.5/src/gui/styles/qgtkstyle_p.cpp.qgtkstyle_disable_gtk_theme_check qt-everywhere-opensource-src-4.8.5/src/gui/styles/qgtkstyle_p.cpp
--- qt-everywhere-opensource-src-4.8.5/src/gui/styles/qgtkstyle_p.cpp.qgtkstyle_disable_gtk_theme_check 2013-06-09 16:28:22.938840346 -0500
+++ qt-everywhere-opensource-src-4.8.5/src/gui/styles/qgtkstyle_p.cpp 2013-06-09 17:03:01.781125479 -0500
@@ -503,18 +503,6 @@ void QGtkStylePrivate::initGtkWidgets()
return;
}
- static QString themeName;
- if (!gtkWidgetMap()->contains("GtkWindow") && themeName.isEmpty()) {
- themeName = getThemeName();
-
- if (themeName == QLS("Qt") || themeName == QLS("Qt4")) {
- // Due to namespace conflicts with Qt3 and obvious recursion with Qt4,
- // we cannot support the GTK_Qt Gtk engine
- qWarning("QGtkStyle cannot be used together with the GTK_Qt engine.");
- return;
- }
- }
-
if (QGtkStylePrivate::gtk_init) {
// Gtk will set the Qt error handler so we have to reset it afterwards
x11ErrorHandler qt_x_errhandler = XSetErrorHandler(0);

View File

@ -0,0 +1,19 @@
diff -up qt-everywhere-opensource-src-4.8.5/src/corelib/kernel/qcoreapplication.cpp.qt_plugin_path qt-everywhere-opensource-src-4.8.5/src/corelib/kernel/qcoreapplication.cpp
--- qt-everywhere-opensource-src-4.8.5/src/corelib/kernel/qcoreapplication.cpp.qt_plugin_path 2013-06-07 00:16:52.000000000 -0500
+++ qt-everywhere-opensource-src-4.8.5/src/corelib/kernel/qcoreapplication.cpp 2013-06-21 07:14:10.045039936 -0500
@@ -2511,6 +2511,15 @@ QStringList QCoreApplication::libraryPat
if (!app_libpaths->contains(installPathPlugins))
app_libpaths->append(installPathPlugins);
}
+
+ // hack in support for kde4 plugin paths -- Rex
+ QString kde4PathPlugins = QLibraryInfo::location(QLibraryInfo::LibrariesPath) + QLatin1String("/kde4/plugins");
+ if (QFile::exists(kde4PathPlugins)) {
+ // Make sure we convert from backslashes to slashes.
+ //kde4PathPlugins = QDir(kde4PathPlugins).canonicalPath();
+ if (!app_libpaths->contains(kde4PathPlugins))
+ app_libpaths->append(kde4PathPlugins);
+ }
#endif
// If QCoreApplication is not yet instantiated,

View File

@ -0,0 +1,12 @@
diff -up qt-everywhere-opensource-src-4.8.5/src/sql/drivers/tds/qsql_tds.pri.tds_no_strict_aliasing qt-everywhere-opensource-src-4.8.5/src/sql/drivers/tds/qsql_tds.pri
--- qt-everywhere-opensource-src-4.8.5/src/sql/drivers/tds/qsql_tds.pri.tds_no_strict_aliasing 2013-06-09 11:57:49.198291245 -0500
+++ qt-everywhere-opensource-src-4.8.5/src/sql/drivers/tds/qsql_tds.pri 2013-06-09 12:01:24.120100371 -0500
@@ -1,6 +1,8 @@
HEADERS += $$PWD/qsql_tds.h
SOURCES += $$PWD/qsql_tds.cpp
+*-g++*: QMAKE_CXXFLAGS += -fno-strict-aliasing
+
unix|win32-g++*: {
LIBS += $$QT_LFLAGS_TDS
!contains(LIBS, .*sybdb.*):LIBS += -lsybdb

View File

@ -0,0 +1,28 @@
diff -up qt-everywhere-opensource-src-4.8.5/src/tools/moc/moc.cpp.uic_multilib qt-everywhere-opensource-src-4.8.5/src/tools/moc/moc.cpp
diff -up qt-everywhere-opensource-src-4.8.5/src/tools/uic3/embed.cpp.uic_multilib qt-everywhere-opensource-src-4.8.5/src/tools/uic3/embed.cpp
--- qt-everywhere-opensource-src-4.8.5/src/tools/uic3/embed.cpp.uic_multilib 2013-05-30 16:18:04.000000000 -0500
+++ qt-everywhere-opensource-src-4.8.5/src/tools/uic3/embed.cpp 2013-06-09 11:50:25.597813974 -0500
@@ -152,8 +152,7 @@ void Ui3Reader::embed(const char *projec
for ( it = images.begin(); it != images.end(); ++it )
out << "** " << *it << "\n";
out << "**\n";
- out << "** Created: " << QDateTime::currentDateTime().toString() << "\n";
- out << "** by: The User Interface Compiler for Qt version " << QT_VERSION_STR << "\n";
+ out << "** Created: by: The User Interface Compiler for Qt version " << QT_VERSION_STR << "\n";
out << "**\n";
out << "** WARNING! All changes made in this file will be lost!\n";
out << "****************************************************************************/\n";
diff -up qt-everywhere-opensource-src-4.8.5/src/tools/uic3/uic.cpp.uic_multilib qt-everywhere-opensource-src-4.8.5/src/tools/uic3/uic.cpp
--- qt-everywhere-opensource-src-4.8.5/src/tools/uic3/uic.cpp.uic_multilib 2013-05-30 16:18:04.000000000 -0500
+++ qt-everywhere-opensource-src-4.8.5/src/tools/uic3/uic.cpp 2013-06-09 11:51:28.310174526 -0500
@@ -146,8 +146,7 @@ void Uic::writeCopyrightHeader(DomUI *ui
out << "/********************************************************************************\n";
out << "** Form generated from reading UI file '" << QFileInfo(opt.inputFile).fileName() << "'\n";
out << "**\n";
- out << "** Created: " << QDateTime::currentDateTime().toString() << "\n";
- out << "** " << QString::fromLatin1("by: Qt User Interface Compiler version %1\n").arg(QLatin1String(QT_VERSION_STR));
+ out << "** Created by: " << QString::fromLatin1("Qt User Interface Compiler version %1\n").arg(QLatin1String(QT_VERSION_STR));
out << "**\n";
out << "** WARNING! All changes made in this file will be lost when recompiling UI file!\n";
out << "********************************************************************************/\n\n";
diff -up qt-everywhere-opensource-src-4.8.5/src/tools/uic/uic.cpp.uic_multilib qt-everywhere-opensource-src-4.8.5/src/tools/uic/uic.cpp

View File

@ -0,0 +1,16 @@
diff -up qt-everywhere-opensource-src-4.8.5/src/3rdparty/webkit/Source/WebCore/WebCore.pri.webkit_debuginfo qt-everywhere-opensource-src-4.8.5/src/3rdparty/webkit/Source/WebCore/WebCore.pri
--- qt-everywhere-opensource-src-4.8.5/src/3rdparty/webkit/Source/WebCore/WebCore.pri.webkit_debuginfo 2013-06-07 00:16:55.000000000 -0500
+++ qt-everywhere-opensource-src-4.8.5/src/3rdparty/webkit/Source/WebCore/WebCore.pri 2013-07-11 14:04:19.937056249 -0500
@@ -5,6 +5,12 @@ include(features.pri)
# Uncomment this to enable Texture Mapper.
# CONFIG += texmap
+#
+equals(QT_ARCH, s390)|equals(QT_ARCH, arm)|equals(QT_ARCH, mips)|equals(QT_ARCH, i386)|equals(QT_ARCH, i686)|equals(QT_ARCH, x86_64)|equals(QT_ARCH, powerpc64)|equals(QT_ARCH, powerpc) {
+ message("WebCore workaround for QtWebkit: do not build with -g, but with -g1")
+ QMAKE_CXXFLAGS_RELEASE -= -g
+ QMAKE_CXXFLAGS_RELEASE += -g1
+}
QT *= network

View File

@ -0,0 +1,17 @@
diff -up qt-everywhere-opensource-src-4.8.7/src/tools/moc/main.cpp.QTBUG-22829 qt-everywhere-opensource-src-4.8.7/src/tools/moc/main.cpp
--- qt-everywhere-opensource-src-4.8.7/src/tools/moc/main.cpp.QTBUG-22829 2015-05-07 09:14:44.000000000 -0500
+++ qt-everywhere-opensource-src-4.8.7/src/tools/moc/main.cpp 2016-12-08 12:32:46.638962448 -0600
@@ -188,8 +188,12 @@ int runMoc(int _argc, char **_argv)
pp.macros["Q_MOC_RUN"];
pp.macros["__cplusplus"];
- // Workaround a bug while parsing the boost/type_traits/has_operator.hpp header. See QTBUG-22829
+ // Workaround a bugs while parsing some boost headers. See QTBUG-22829
pp.macros["BOOST_TT_HAS_OPERATOR_HPP_INCLUDED"];
+ pp.macros["BOOST_LEXICAL_CAST_INCLUDED"];
+ pp.macros["BOOST_NEXT_PRIOR_HPP_INCLUDED"];
+ pp.macros["BOOST_TYPE_TRAITS_HPP"];
+ pp.macros["_SYS_SYSMACROS_H_OUTER"];
QByteArray filename;
QByteArray output;

View File

@ -0,0 +1,94 @@
--- a/src/corelib/kernel/qeventdispatcher_glib.cpp.sav 2014-03-28 15:26:37.000000000 +0100
+++ b/src/corelib/kernel/qeventdispatcher_glib.cpp 2014-04-24 09:44:09.358659204 +0200
@@ -255,22 +255,30 @@ struct GPostEventSource
GSource source;
QAtomicInt serialNumber;
int lastSerialNumber;
+ QEventLoop::ProcessEventsFlags processEventsFlags;
QEventDispatcherGlibPrivate *d;
};
static gboolean postEventSourcePrepare(GSource *s, gint *timeout)
{
+ GPostEventSource *source = reinterpret_cast<GPostEventSource *>(s);
QThreadData *data = QThreadData::current();
if (!data)
return false;
+ QEventLoop::ProcessEventsFlags excludeAllFlags
+ = QEventLoop::ExcludeUserInputEvents
+ | QEventLoop::ExcludeSocketNotifiers
+ | QEventLoop::X11ExcludeTimers;
+ if ((source->processEventsFlags & excludeAllFlags) == excludeAllFlags)
+ return false;
+
gint dummy;
if (!timeout)
timeout = &dummy;
const bool canWait = data->canWaitLocked();
*timeout = canWait ? -1 : 0;
- GPostEventSource *source = reinterpret_cast<GPostEventSource *>(s);
return (!canWait
|| (source->serialNumber != source->lastSerialNumber));
}
@@ -284,8 +292,14 @@ static gboolean postEventSourceDispatch(
{
GPostEventSource *source = reinterpret_cast<GPostEventSource *>(s);
source->lastSerialNumber = source->serialNumber;
- QCoreApplication::sendPostedEvents();
- source->d->runTimersOnceWithNormalPriority();
+ QEventLoop::ProcessEventsFlags excludeAllFlags
+ = QEventLoop::ExcludeUserInputEvents
+ | QEventLoop::ExcludeSocketNotifiers
+ | QEventLoop::X11ExcludeTimers;
+ if ((source->processEventsFlags & excludeAllFlags) != excludeAllFlags) {
+ QCoreApplication::sendPostedEvents();
+ source->d->runTimersOnceWithNormalPriority();
+ }
return true; // i dunno, george...
}
@@ -329,6 +343,7 @@ QEventDispatcherGlibPrivate::QEventDispa
postEventSource = reinterpret_cast<GPostEventSource *>(g_source_new(&postEventSourceFuncs,
sizeof(GPostEventSource)));
postEventSource->serialNumber = 1;
+ postEventSource->processEventsFlags = QEventLoop::AllEvents;
postEventSource->d = this;
g_source_set_can_recurse(&postEventSource->source, true);
g_source_attach(&postEventSource->source, mainContext);
@@ -423,6 +438,7 @@ bool QEventDispatcherGlib::processEvents
// tell postEventSourcePrepare() and timerSource about any new flags
QEventLoop::ProcessEventsFlags savedFlags = d->timerSource->processEventsFlags;
+ d->postEventSource->processEventsFlags = flags;
d->timerSource->processEventsFlags = flags;
d->socketNotifierSource->processEventsFlags = flags;
@@ -435,6 +451,7 @@ bool QEventDispatcherGlib::processEvents
while (!result && canWait)
result = g_main_context_iteration(d->mainContext, canWait);
+ d->postEventSource->processEventsFlags = savedFlags;
d->timerSource->processEventsFlags = savedFlags;
d->socketNotifierSource->processEventsFlags = savedFlags;
--- a/src/corelib/kernel/qeventdispatcher_unix.cpp.sav 2013-06-07 07:16:52.000000000 +0200
+++ b/src/corelib/kernel/qeventdispatcher_unix.cpp 2014-04-24 09:43:06.927589535 +0200
@@ -905,7 +905,15 @@ bool QEventDispatcherUNIX::processEvents
// we are awake, broadcast it
emit awake();
- QCoreApplicationPrivate::sendPostedEvents(0, 0, d->threadData);
+
+ QEventLoop::ProcessEventsFlags excludeAllFlags
+ = QEventLoop::ExcludeUserInputEvents
+ | QEventLoop::ExcludeSocketNotifiers
+ | QEventLoop::X11ExcludeTimers;
+ if ((flags & excludeAllFlags) == excludeAllFlags)
+ return false;
+ if(( flags & excludeAllFlags ) != excludeAllFlags )
+ QCoreApplicationPrivate::sendPostedEvents(0, 0, d->threadData);
int nevents = 0;
const bool canWait = (d->threadData->canWaitLocked()

View File

@ -0,0 +1,63 @@
Author: Jan-Marek Glogowski <glogow@fbihome.de>
Date: Thu Mar 06 18:44:43 2014 +0100
Honor QEventLoop::ExcludeSocketNotifiers in glib event loop.
Implements QEventLoop::ExcludeSocketNotifiers in the same way
QEventLoop::X11ExcludeTimers is already implemented for the glib
event loop.
--- qt4-x11-4.8.1.orig/src/corelib/kernel/qeventdispatcher_glib.cpp
+++ qt4-x11-4.8.1/src/corelib/kernel/qeventdispatcher_glib.cpp
@@ -65,6 +65,7 @@ struct GPollFDWithQSocketNotifier
struct GSocketNotifierSource
{
GSource source;
+ QEventLoop::ProcessEventsFlags processEventsFlags;
QList<GPollFDWithQSocketNotifier *> pollfds;
};
@@ -80,6 +81,9 @@ static gboolean socketNotifierSourceChec
GSocketNotifierSource *src = reinterpret_cast<GSocketNotifierSource *>(source);
bool pending = false;
+ if (src->processEventsFlags & QEventLoop::ExcludeSocketNotifiers)
+ return pending;
+
for (int i = 0; !pending && i < src->pollfds.count(); ++i) {
GPollFDWithQSocketNotifier *p = src->pollfds.at(i);
@@ -103,6 +107,9 @@ static gboolean socketNotifierSourceDisp
QEvent event(QEvent::SockAct);
GSocketNotifierSource *src = reinterpret_cast<GSocketNotifierSource *>(source);
+ if (src->processEventsFlags & QEventLoop::ExcludeSocketNotifiers)
+ return true;
+
for (int i = 0; i < src->pollfds.count(); ++i) {
GPollFDWithQSocketNotifier *p = src->pollfds.at(i);
@@ -330,6 +337,7 @@ QEventDispatcherGlibPrivate::QEventDispa
reinterpret_cast<GSocketNotifierSource *>(g_source_new(&socketNotifierSourceFuncs,
sizeof(GSocketNotifierSource)));
(void) new (&socketNotifierSource->pollfds) QList<GPollFDWithQSocketNotifier *>();
+ socketNotifierSource->processEventsFlags = QEventLoop::AllEvents;
g_source_set_can_recurse(&socketNotifierSource->source, true);
g_source_attach(&socketNotifierSource->source, mainContext);
@@ -415,6 +423,7 @@ bool QEventDispatcherGlib::processEvents
// tell postEventSourcePrepare() and timerSource about any new flags
QEventLoop::ProcessEventsFlags savedFlags = d->timerSource->processEventsFlags;
d->timerSource->processEventsFlags = flags;
+ d->socketNotifierSource->processEventsFlags = flags;
if (!(flags & QEventLoop::EventLoopExec)) {
// force timers to be sent at normal priority
@@ -426,6 +435,7 @@ bool QEventDispatcherGlib::processEvents
result = g_main_context_iteration(d->mainContext, canWait);
d->timerSource->processEventsFlags = savedFlags;
+ d->socketNotifierSource->processEventsFlags = savedFlags;
if (canWait)
emit awake();

View File

@ -0,0 +1,12 @@
--- a/src/gui/kernel/qclipboard_x11.cpp.sav 2014-04-25 09:52:03.855693228 +0200
+++ b/src/gui/kernel/qclipboard_x11.cpp 2014-04-25 09:51:58.038693777 +0200
@@ -548,7 +548,8 @@ bool QX11Data::clipboardWaitForEvent(Win
return false;
XSync(X11->display, false);
- usleep(50000);
+ if (!XPending(X11->display))
+ usleep(5000);
now.start();

View File

@ -0,0 +1,31 @@
diff -up qt-everywhere-opensource-src-4.8.6/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h.s390 qt-everywhere-opensource-src-4.8.6/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h
--- qt-everywhere-opensource-src-4.8.6/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h.s390 2014-03-30 15:36:49.000000000 -0500
+++ qt-everywhere-opensource-src-4.8.6/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h 2014-03-31 17:59:16.846465899 -0500
@@ -189,6 +189,18 @@
#define WTF_CPU_SPARC 1
#endif
+/* CPU(S390X) - S390 64-bit */
+#if defined(__s390x__)
+#define WTF_CPU_S390X 1
+#define WTF_CPU_BIG_ENDIAN 1
+#endif
+
+/* CPU(S390) - S390 32-bit */
+#if defined(__s390__)
+#define WTF_CPU_S390 1
+#define WTF_CPU_BIG_ENDIAN 1
+#endif
+
/* CPU(X86) - i386 / x86 32-bit */
#if defined(__i386__) \
|| defined(i386) \
@@ -903,7 +915,7 @@
#endif
#if !defined(WTF_USE_JSVALUE64) && !defined(WTF_USE_JSVALUE32) && !defined(WTF_USE_JSVALUE32_64)
-#if (CPU(X86_64) && (OS(UNIX) || OS(WINDOWS) || OS(SOLARIS) || OS(HPUX))) || (CPU(IA64) && !CPU(IA64_32)) || CPU(ALPHA) || CPU(AIX64) || CPU(SPARC64) || CPU(MIPS64) || CPU(AARCH64)
+#if (CPU(X86_64) && (OS(UNIX) || OS(WINDOWS) || OS(SOLARIS) || OS(HPUX))) || (CPU(IA64) && !CPU(IA64_32)) || CPU(ALPHA) || CPU(AIX64) || CPU(SPARC64) || CPU(MIPS64) || CPU(AARCH64) || CPU(S390X)
#define WTF_USE_JSVALUE64 1
#elif CPU(ARM) || CPU(PPC64)
#define WTF_USE_JSVALUE32 1

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,12 @@
diff -up qt-everywhere-opensource-src-4.8.7/src/corelib/global/qglobal.h.majmin qt-everywhere-opensource-src-4.8.7/src/corelib/global/qglobal.h
--- qt-everywhere-opensource-src-4.8.7/src/corelib/global/qglobal.h.majmin 2015-05-07 09:14:48.000000000 -0500
+++ qt-everywhere-opensource-src-4.8.7/src/corelib/global/qglobal.h 2016-12-08 12:10:29.677359701 -0600
@@ -52,7 +52,7 @@
/*
can be used like #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0))
*/
-#define QT_VERSION_CHECK(major, minor, patch) ((major<<16)|(minor<<8)|(patch))
+#define QT_VERSION_CHECK(qt_version_check_major, qt_version_check_minor, qt_version_check_patch) ((qt_version_check_major<<16)|(qt_version_check_minor<<8)|(qt_version_check_patch))
#define QT_PACKAGEDATE_STR "2015-05-07"

View File

@ -0,0 +1,12 @@
diff -up qt-everywhere-opensource-src-4.8.7/config.tests/unix/alsa/alsatest.cpp.than qt-everywhere-opensource-src-4.8.7/config.tests/unix/alsa/alsatest.cpp
--- qt-everywhere-opensource-src-4.8.7/config.tests/unix/alsa/alsatest.cpp.than 2016-02-10 16:31:02.450152334 +0100
+++ qt-everywhere-opensource-src-4.8.7/config.tests/unix/alsa/alsatest.cpp 2016-02-10 16:31:51.495307579 +0100
@@ -40,7 +40,7 @@
****************************************************************************/
#include <alsa/asoundlib.h>
-#if(!(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 10))
+#if(!(SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 10)))
#error "Alsa version found too old, require >= 1.0.10"
#endif

View File

@ -0,0 +1,45 @@
diff -up qt-everywhere-opensource-src-4.8.7/config.tests/unix/ibase/ibase.cpp.ibase qt-everywhere-opensource-src-4.8.7/config.tests/unix/ibase/ibase.cpp
--- qt-everywhere-opensource-src-4.8.7/config.tests/unix/ibase/ibase.cpp.ibase 2015-05-07 09:14:42.000000000 -0500
+++ qt-everywhere-opensource-src-4.8.7/config.tests/unix/ibase/ibase.cpp 2016-11-30 10:55:05.825339674 -0600
@@ -39,7 +39,7 @@
**
****************************************************************************/
-#include <ibase.h>
+#include <firebird/ibase.h>
int main(int, char **)
{
diff -up qt-everywhere-opensource-src-4.8.7/config.tests/unix/ibase/ibase.pro.ibase qt-everywhere-opensource-src-4.8.7/config.tests/unix/ibase/ibase.pro
--- qt-everywhere-opensource-src-4.8.7/config.tests/unix/ibase/ibase.pro.ibase 2015-05-07 09:14:42.000000000 -0500
+++ qt-everywhere-opensource-src-4.8.7/config.tests/unix/ibase/ibase.pro 2016-11-30 10:56:11.017740104 -0600
@@ -1,4 +1,4 @@
SOURCES = ibase.cpp
CONFIG -= qt dylib
mac:CONFIG -= app_bundle
-LIBS += -lgds
+LIBS += -lfbclient
diff -up qt-everywhere-opensource-src-4.8.7/src/sql/drivers/ibase/qsql_ibase.h.ibase qt-everywhere-opensource-src-4.8.7/src/sql/drivers/ibase/qsql_ibase.h
--- qt-everywhere-opensource-src-4.8.7/src/sql/drivers/ibase/qsql_ibase.h.ibase 2015-05-07 09:14:48.000000000 -0500
+++ qt-everywhere-opensource-src-4.8.7/src/sql/drivers/ibase/qsql_ibase.h 2016-11-30 10:57:34.516252974 -0600
@@ -45,7 +45,7 @@
#include <QtSql/qsqlresult.h>
#include <QtSql/qsqldriver.h>
#include <QtSql/private/qsqlcachedresult_p.h>
-#include <ibase.h>
+#include <firebird/ibase.h>
QT_BEGIN_HEADER
diff -up qt-everywhere-opensource-src-4.8.7/src/sql/drivers/ibase/qsql_ibase.pri.ibase qt-everywhere-opensource-src-4.8.7/src/sql/drivers/ibase/qsql_ibase.pri
--- qt-everywhere-opensource-src-4.8.7/src/sql/drivers/ibase/qsql_ibase.pri.ibase 2015-05-07 09:14:48.000000000 -0500
+++ qt-everywhere-opensource-src-4.8.7/src/sql/drivers/ibase/qsql_ibase.pri 2016-11-30 10:57:11.783113341 -0600
@@ -2,7 +2,7 @@ HEADERS += $$PWD/qsql_ibase.h
SOURCES += $$PWD/qsql_ibase.cpp
unix {
- !contains(LIBS, .*gds.*):!contains(LIBS, .*libfb.*):LIBS += -lgds
+ !contains(LIBS, .*gds.*):!contains(LIBS, .*libfb.*):LIBS += -lfbclient
} else {
!contains(LIBS, .*gds.*):!contains(LIBS, .*fbclient.*) {
win32-borland:LIBS += gds32.lib

View File

@ -0,0 +1,35 @@
diff -up qt-everywhere-opensource-src-4.8.7/configure.gcc6 qt-everywhere-opensource-src-4.8.7/configure
--- qt-everywhere-opensource-src-4.8.7/configure.gcc6 2016-04-15 07:04:19.430268222 -0500
+++ qt-everywhere-opensource-src-4.8.7/configure 2016-04-15 07:05:22.157568689 -0500
@@ -7744,7 +7744,7 @@ case "$XPLATFORM" in
*-g++*)
# Check gcc's version
case "$(${QMAKE_CONF_COMPILER} -dumpversion)" in
- 5*|4*|3.4*)
+ 8*|7*|6*|5*|4*|3.4*)
;;
3.3*)
canBuildWebKit="no"
@@ -8060,7 +8060,7 @@ g++*)
3.*)
COMPILER_VERSION="3.*"
;;
- 5*|4.*)
+ 8*|7*|6*|5*|4.*)
COMPILER_VERSION="4"
;;
*)
diff -up qt-everywhere-opensource-src-4.8.7/src/xmlpatterns/api/qcoloroutput_p.h.gcc6 qt-everywhere-opensource-src-4.8.7/src/xmlpatterns/api/qcoloroutput_p.h
--- qt-everywhere-opensource-src-4.8.7/src/xmlpatterns/api/qcoloroutput_p.h.gcc6 2015-05-07 09:14:48.000000000 -0500
+++ qt-everywhere-opensource-src-4.8.7/src/xmlpatterns/api/qcoloroutput_p.h 2016-04-15 07:04:19.431268227 -0500
@@ -70,8 +70,8 @@ namespace QPatternist
ForegroundShift = 10,
BackgroundShift = 20,
SpecialShift = 20,
- ForegroundMask = ((1 << ForegroundShift) - 1) << ForegroundShift,
- BackgroundMask = ((1 << BackgroundShift) - 1) << BackgroundShift
+ ForegroundMask = 0x1f << ForegroundShift,
+ BackgroundMask = 0x7 << BackgroundShift
};
public:

View File

@ -0,0 +1,28 @@
From: Fabian Vogt <fabian@ritter-vogt.de>
Subject: Fix build with ICU >= 59
ICU >= 59 requires C++11 for its header files.
Qt can't be compiled with -std=c++11 as a whole, so only enable
it for qlocale_icu.cpp.
Index: qt-everywhere-opensource-src-4.8.7/src/corelib/tools/tools.pri
===================================================================
--- qt-everywhere-opensource-src-4.8.7.orig/src/corelib/tools/tools.pri
+++ qt-everywhere-opensource-src-4.8.7/src/corelib/tools/tools.pri
@@ -102,7 +102,15 @@ contains(QT_CONFIG, zlib):include($$PWD/
else:include($$PWD/../../3rdparty/zlib_dependency.pri)
contains(QT_CONFIG,icu) {
- SOURCES += tools/qlocale_icu.cpp
+ cpp11.name = cpp11
+ cpp11.input = SOURCES_CPP11
+ cpp11.dependency_type = TYPE_C
+ cpp11.variable_out = OBJECTS
+ cpp11.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_IN_BASE}$${first(QMAKE_EXT_OBJ)}
+ cpp11.commands = $${QMAKE_CXX} $(CXXFLAGS) -std=c++11 $(INCPATH) -c ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT}
+ QMAKE_EXTRA_COMPILERS += cpp11
+
+ SOURCES_CPP11 += tools/qlocale_icu.cpp
DEFINES += QT_USE_ICU
}

View File

@ -0,0 +1,28 @@
diff -up qt-everywhere-opensource-src-4.8.7/src/sql/drivers/mysql/qsql_mysql.cpp.mariadb qt-everywhere-opensource-src-4.8.7/src/sql/drivers/mysql/qsql_mysql.cpp
--- qt-everywhere-opensource-src-4.8.7/src/sql/drivers/mysql/qsql_mysql.cpp.mariadb 2015-05-07 09:14:48.000000000 -0500
+++ qt-everywhere-opensource-src-4.8.7/src/sql/drivers/mysql/qsql_mysql.cpp 2017-10-23 14:13:15.871808984 -0500
@@ -1105,11 +1105,16 @@ static void qLibraryInit()
}
# endif // MYSQL_VERSION_ID
#endif // Q_NO_MYSQL_EMBEDDED
+
+#if defined(MARIADB_BASE_VERSION) || defined(MARIADB_VERSION_ID)
+ qAddPostRoutine(mysql_server_end);
+#endif
}
static void qLibraryEnd()
{
#ifndef Q_NO_MYSQL_EMBEDDED
+#if !defined(MARIADB_BASE_VERSION) && !defined(MARIADB_VERSION_ID)
# if MYSQL_VERSION_ID > 40000
# if (MYSQL_VERSION_ID >= 40110 && MYSQL_VERSION_ID < 50000) || MYSQL_VERSION_ID >= 50003
mysql_library_end();
@@ -1118,6 +1123,7 @@ static void qLibraryEnd()
# endif
# endif
#endif
+#endif
}
QMYSQLDriver::QMYSQLDriver(QObject * parent)

View File

@ -0,0 +1,13 @@
diff -urp qt-everywhere-opensource-src-4.8.7/configure q/configure
--- qt-everywhere-opensource-src-4.8.7/configure 2016-04-03 16:49:50.218644449 +0200
+++ q/configure 2016-04-03 17:22:35.376405024 +0200
@@ -3331,6 +3331,9 @@ arm*)
CFG_ARCH=arm
COMPAT_ARCH=armv6
;;
+mips*)
+ CFG_ARCH=mips
+ ;;
esac
if [ -d "$relpath/src/corelib/arch/$CFG_ARCH" ]; then

View File

@ -0,0 +1,694 @@
diff -ur qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslcertificate.cpp qt-everywhere-opensource-src-4.8.7-openssl-1.1/src/network/ssl/qsslcertificate.cpp
--- qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslcertificate.cpp 2015-05-07 16:14:44.000000000 +0200
+++ qt-everywhere-opensource-src-4.8.7-openssl-1.1/src/network/ssl/qsslcertificate.cpp 2018-01-05 17:44:16.997588265 +0100
@@ -259,10 +259,10 @@
QByteArray QSslCertificate::version() const
{
QMutexLocker lock(QMutexPool::globalInstanceGet(d.data()));
- if (d->versionString.isEmpty() && d->x509)
+ if (d->versionString.isEmpty() && d->x509) {
d->versionString =
- QByteArray::number(qlonglong(q_ASN1_INTEGER_get(d->x509->cert_info->version)) + 1);
-
+ QByteArray::number(qlonglong(q_X509_get_version(d->x509)) + 1);
+ }
return d->versionString;
}
@@ -276,7 +276,7 @@
{
QMutexLocker lock(QMutexPool::globalInstanceGet(d.data()));
if (d->serialNumberString.isEmpty() && d->x509) {
- ASN1_INTEGER *serialNumber = d->x509->cert_info->serialNumber;
+ ASN1_INTEGER *serialNumber = q_X509_get_serialNumber(d->x509);
// if we cannot convert to a long, just output the hexadecimal number
if (serialNumber->length > 4) {
QByteArray hexString;
@@ -489,24 +489,33 @@
QSslKey key;
key.d->type = QSsl::PublicKey;
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
X509_PUBKEY *xkey = d->x509->cert_info->key;
+#else
+ X509_PUBKEY *xkey = q_X509_get_X509_PUBKEY(d->x509);
+#endif
EVP_PKEY *pkey = q_X509_PUBKEY_get(xkey);
Q_ASSERT(pkey);
- if (q_EVP_PKEY_type(pkey->type) == EVP_PKEY_RSA) {
+ int key_id;
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ key_id = q_EVP_PKEY_type(pkey->type);
+#else
+ key_id = q_EVP_PKEY_base_id(pkey);
+#endif
+ if (key_id == EVP_PKEY_RSA) {
key.d->rsa = q_EVP_PKEY_get1_RSA(pkey);
key.d->algorithm = QSsl::Rsa;
key.d->isNull = false;
- } else if (q_EVP_PKEY_type(pkey->type) == EVP_PKEY_DSA) {
+ } else if (key_id == EVP_PKEY_DSA) {
key.d->dsa = q_EVP_PKEY_get1_DSA(pkey);
key.d->algorithm = QSsl::Dsa;
key.d->isNull = false;
- } else if (q_EVP_PKEY_type(pkey->type) == EVP_PKEY_DH) {
+ } else if (key_id == EVP_PKEY_DH) {
// DH unsupported
} else {
// error?
}
-
q_EVP_PKEY_free(pkey);
return key;
}
@@ -687,7 +696,11 @@
unsigned char *data = 0;
int size = q_ASN1_STRING_to_UTF8(&data, q_X509_NAME_ENTRY_get_data(e));
info[QString::fromUtf8(obj)] = QString::fromUtf8((char*)data, size);
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
q_CRYPTO_free(data);
+#else
+ q_CRYPTO_free(data, __FILE__, __LINE__);
+#endif
}
return info;
}
diff -ur qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslkey.cpp qt-everywhere-opensource-src-4.8.7-openssl-1.1/src/network/ssl/qsslkey.cpp
--- qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslkey.cpp 2015-05-07 16:14:44.000000000 +0200
+++ qt-everywhere-opensource-src-4.8.7-openssl-1.1/src/network/ssl/qsslkey.cpp 2018-01-05 18:00:27.453937599 +0100
@@ -321,8 +321,19 @@
{
if (d->isNull)
return -1;
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
return (d->algorithm == QSsl::Rsa)
? q_BN_num_bits(d->rsa->n) : q_BN_num_bits(d->dsa->p);
+#else
+ if (d->algorithm == QSsl::Rsa) {
+ return q_RSA_bits(d->rsa);
+ } else {
+ const BIGNUM *p = (const BIGNUM *) NULL;
+ q_DSA_get0_pqg(d->dsa, &p, (const BIGNUM **) NULL, (const BIGNUM **) NULL);
+ return q_BN_num_bits(p);
+ }
+#endif
+
}
/*!
diff -ur qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslsocket_openssl.cpp qt-everywhere-opensource-src-4.8.7-openssl-1.1/src/network/ssl/qsslsocket_openssl.cpp
--- qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslsocket_openssl.cpp 2015-05-07 16:14:44.000000000 +0200
+++ qt-everywhere-opensource-src-4.8.7-openssl-1.1/src/network/ssl/qsslsocket_openssl.cpp 2018-01-05 12:06:06.336990956 +0100
@@ -93,6 +93,7 @@
bool QSslSocketPrivate::s_loadedCiphersAndCerts = false;
bool QSslSocketPrivate::s_loadRootCertsOnDemand = false;
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
/* \internal
From OpenSSL's thread(3) manual page:
@@ -174,6 +175,8 @@
}
} // extern "C"
+#endif //OPENSSL_VERSION_NUMBER >= 0x10100000L
+
QSslSocketBackendPrivate::QSslSocketBackendPrivate()
: ssl(0),
ctx(0),
@@ -222,9 +225,12 @@
ciph.d->encryptionMethod = descriptionList.at(4).mid(4);
ciph.d->exportable = (descriptionList.size() > 6 && descriptionList.at(6) == QLatin1String("export"));
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
ciph.d->bits = cipher->strength_bits;
ciph.d->supportedBits = cipher->alg_bits;
-
+#else
+ ciph.d->bits = q_SSL_CIPHER_get_bits(cipher, &ciph.d->supportedBits);
+#endif
}
return ciph;
}
@@ -363,7 +369,7 @@
//
// See also: QSslContext::fromConfiguration()
if (caCertificate.expiryDate() >= QDateTime::currentDateTime()) {
- q_X509_STORE_add_cert(ctx->cert_store, (X509 *)caCertificate.handle());
+ q_X509_STORE_add_cert(q_SSL_CTX_get_cert_store(ctx), (X509 *)caCertificate.handle());
}
}
@@ -500,8 +506,10 @@
*/
void QSslSocketPrivate::deinitialize()
{
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
q_CRYPTO_set_id_callback(0);
q_CRYPTO_set_locking_callback(0);
+#endif
}
/*!
@@ -522,13 +530,17 @@
return false;
// Check if the library itself needs to be initialized.
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
QMutexLocker locker(openssl_locks()->initLock());
+#endif
if (!s_libraryLoaded) {
s_libraryLoaded = true;
// Initialize OpenSSL.
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
q_CRYPTO_set_id_callback(id_function);
q_CRYPTO_set_locking_callback(locking_function);
+#endif
if (q_SSL_library_init() != 1)
return false;
q_SSL_load_error_strings();
@@ -567,7 +579,9 @@
void QSslSocketPrivate::ensureCiphersAndCertsLoaded()
{
- QMutexLocker locker(openssl_locks()->initLock());
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ QMutexLocker locker(openssl_locks()->initLock());
+#endif
if (s_loadedCiphersAndCerts)
return;
s_loadedCiphersAndCerts = true;
@@ -659,13 +673,18 @@
STACK_OF(SSL_CIPHER) *supportedCiphers = q_SSL_get_ciphers(mySsl);
for (int i = 0; i < q_sk_SSL_CIPHER_num(supportedCiphers); ++i) {
if (SSL_CIPHER *cipher = q_sk_SSL_CIPHER_value(supportedCiphers, i)) {
- if (cipher->valid) {
+
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ if (cipher->valid) {
+#endif
QSslCipher ciph = QSslSocketBackendPrivate::QSslCipher_from_SSL_CIPHER(cipher);
if (!ciph.isNull()) {
if (!ciph.name().toLower().startsWith(QLatin1String("adh")))
ciphers << ciph;
}
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
}
+#endif
}
}
diff -ur qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslsocket_openssl_p.h qt-everywhere-opensource-src-4.8.7-openssl-1.1/src/network/ssl/qsslsocket_openssl_p.h
--- qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslsocket_openssl_p.h 2015-05-07 16:14:44.000000000 +0200
+++ qt-everywhere-opensource-src-4.8.7-openssl-1.1/src/network/ssl/qsslsocket_openssl_p.h 2018-01-05 12:06:06.337990940 +0100
@@ -84,6 +84,10 @@
#include <openssl/tls1.h>
#endif
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+#define OPENSSL_NO_SSL2
+#endif
+
#if OPENSSL_VERSION_NUMBER >= 0x10000000L
typedef _STACK STACK;
#endif
diff -ur qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslsocket_openssl_symbols.cpp qt-everywhere-opensource-src-4.8.7-openssl-1.1/src/network/ssl/qsslsocket_openssl_symbols.cpp
--- qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslsocket_openssl_symbols.cpp 2015-05-07 16:14:44.000000000 +0200
+++ qt-everywhere-opensource-src-4.8.7-openssl-1.1/src/network/ssl/qsslsocket_openssl_symbols.cpp 2018-01-05 17:59:10.636973932 +0100
@@ -111,16 +111,30 @@
DEFINEFUNC2(int, ASN1_STRING_to_UTF8, unsigned char **a, a, ASN1_STRING *b, b, return 0, return);
DEFINEFUNC4(long, BIO_ctrl, BIO *a, a, int b, b, long c, c, void *d, d, return -1, return)
DEFINEFUNC(int, BIO_free, BIO *a, a, return 0, return)
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
DEFINEFUNC(BIO *, BIO_new, BIO_METHOD *a, a, return 0, return)
+#else
+DEFINEFUNC(BIO *, BIO_new, const BIO_METHOD *a, a, return 0, return)
+#endif
DEFINEFUNC2(BIO *, BIO_new_mem_buf, void *a, a, int b, b, return 0, return)
DEFINEFUNC3(int, BIO_read, BIO *a, a, void *b, b, int c, c, return -1, return)
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
DEFINEFUNC(BIO_METHOD *, BIO_s_mem, void, DUMMYARG, return 0, return)
+#else
+DEFINEFUNC(const BIO_METHOD *, BIO_s_mem, void, DUMMYARG, return 0, return)
+#endif
DEFINEFUNC3(int, BIO_write, BIO *a, a, const void *b, b, int c, c, return -1, return)
DEFINEFUNC(int, BN_num_bits, const BIGNUM *a, a, return 0, return)
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
DEFINEFUNC(int, CRYPTO_num_locks, DUMMYARG, DUMMYARG, return 0, return)
DEFINEFUNC(void, CRYPTO_set_locking_callback, void (*a)(int, int, const char *, int), a, return, DUMMYARG)
DEFINEFUNC(void, CRYPTO_set_id_callback, unsigned long (*a)(), a, return, DUMMYARG)
+#endif
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
DEFINEFUNC(void, CRYPTO_free, void *a, a, return, DUMMYARG)
+#else
+DEFINEFUNC3(void, CRYPTO_free, void *a, a, const char *b, b, int c, c, return, DUMMYARG)
+#endif
DEFINEFUNC(void, DSA_free, DSA *a, a, return, DUMMYARG)
#if OPENSSL_VERSION_NUMBER < 0x00908000L
DEFINEFUNC3(X509 *, d2i_X509, X509 **a, a, unsigned char **b, b, long c, c, return 0, return)
@@ -157,6 +171,7 @@
DEFINEFUNC2(void, RAND_seed, const void *a, a, int b, b, return, DUMMYARG)
DEFINEFUNC(int, RAND_status, void, DUMMYARG, return -1, return)
DEFINEFUNC(void, RSA_free, RSA *a, a, return, DUMMYARG)
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
DEFINEFUNC(int, sk_num, STACK *a, a, return -1, return)
DEFINEFUNC2(void, sk_pop_free, STACK *a, a, void (*b)(void*), b, return, DUMMYARG)
#if OPENSSL_VERSION_NUMBER >= 0x10000000L
@@ -166,6 +181,12 @@
DEFINEFUNC(void, sk_free, STACK *a, a, return, DUMMYARG)
DEFINEFUNC2(char *, sk_value, STACK *a, a, int b, b, return 0, return)
#endif
+#else
+DEFINEFUNC(int, OPENSSL_sk_num, STACK *a, a, return -1, return)
+DEFINEFUNC2(void, OPENSSL_sk_pop_free, STACK *a, a, void (*b)(void*), b, return, DUMMYARG)
+DEFINEFUNC(void, OPENSSL_sk_free, _STACK *a, a, return, DUMMYARG)
+DEFINEFUNC2(void *, OPENSSL_sk_value, STACK *a, a, int b, b, return 0, return)
+#endif
DEFINEFUNC(int, SSL_accept, SSL *a, a, return -1, return)
DEFINEFUNC(int, SSL_clear, SSL *a, a, return -1, return)
DEFINEFUNC3(char *, SSL_CIPHER_description, SSL_CIPHER *a, a, char *b, b, int c, c, return 0, return)
@@ -213,8 +234,12 @@
#else
DEFINEFUNC(long, SSL_get_verify_result, SSL *a, a, return -1, return)
#endif
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
DEFINEFUNC(int, SSL_library_init, void, DUMMYARG, return -1, return)
DEFINEFUNC(void, SSL_load_error_strings, void, DUMMYARG, return, DUMMYARG)
+#else
+DEFINEFUNC2(int, OPENSSL_init_ssl, uint64_t opts, opts, const OPENSSL_INIT_SETTINGS *settings, settings, return -1, return)
+#endif
DEFINEFUNC(SSL *, SSL_new, SSL_CTX *a, a, return 0, return)
#if OPENSSL_VERSION_NUMBER >= 0x0090806fL && !defined(OPENSSL_NO_TLSEXT)
DEFINEFUNC4(long, SSL_ctrl, SSL *a, a, int cmd, cmd, long larg, larg, void *parg, parg, return -1, return)
@@ -229,13 +254,21 @@
DEFINEFUNC(const SSL_METHOD *, SSLv2_client_method, DUMMYARG, DUMMYARG, return 0, return)
#endif
DEFINEFUNC(const SSL_METHOD *, SSLv3_client_method, DUMMYARG, DUMMYARG, return 0, return)
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
DEFINEFUNC(const SSL_METHOD *, SSLv23_client_method, DUMMYARG, DUMMYARG, return 0, return)
+#else
+DEFINEFUNC(const SSL_METHOD *, TLS_client_method, DUMMYARG, DUMMYARG, return 0, return)
+#endif
DEFINEFUNC(const SSL_METHOD *, TLSv1_client_method, DUMMYARG, DUMMYARG, return 0, return)
#ifndef OPENSSL_NO_SSL2
DEFINEFUNC(const SSL_METHOD *, SSLv2_server_method, DUMMYARG, DUMMYARG, return 0, return)
#endif
DEFINEFUNC(const SSL_METHOD *, SSLv3_server_method, DUMMYARG, DUMMYARG, return 0, return)
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
DEFINEFUNC(const SSL_METHOD *, SSLv23_server_method, DUMMYARG, DUMMYARG, return 0, return)
+#else
+DEFINEFUNC(const SSL_METHOD *, TLS_server_method, DUMMYARG, DUMMYARG, return 0, return)
+#endif
DEFINEFUNC(const SSL_METHOD *, TLSv1_server_method, DUMMYARG, DUMMYARG, return 0, return)
#else
DEFINEFUNC(SSL_METHOD *, SSLv2_client_method, DUMMYARG, DUMMYARG, return 0, return)
@@ -274,7 +307,11 @@
DEFINEFUNC(int, X509_STORE_CTX_get_error, X509_STORE_CTX *a, a, return -1, return)
DEFINEFUNC(int, X509_STORE_CTX_get_error_depth, X509_STORE_CTX *a, a, return -1, return)
DEFINEFUNC(X509 *, X509_STORE_CTX_get_current_cert, X509_STORE_CTX *a, a, return 0, return)
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
DEFINEFUNC(STACK_OF(X509) *, X509_STORE_CTX_get_chain, X509_STORE_CTX *a, a, return 0, return)
+#else
+DEFINEFUNC(STACK_OF(X509) *, X509_STORE_CTX_get0_chain, X509_STORE_CTX *a, a, return 0, return)
+#endif
DEFINEFUNC(X509_STORE_CTX *, X509_STORE_CTX_new, DUMMYARG, DUMMYARG, return 0, return)
#ifdef SSLEAY_MACROS
DEFINEFUNC2(int, i2d_DSAPrivateKey, const DSA *a, a, unsigned char **b, b, return -1, return)
@@ -282,10 +319,34 @@
DEFINEFUNC3(RSA *, d2i_RSAPrivateKey, RSA **a, a, unsigned char **b, b, long c, c, return 0, return)
DEFINEFUNC3(DSA *, d2i_DSAPrivateKey, DSA **a, a, unsigned char **b, b, long c, c, return 0, return)
#endif
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
DEFINEFUNC(void, OPENSSL_add_all_algorithms_noconf, void, DUMMYARG, return, DUMMYARG)
DEFINEFUNC(void, OPENSSL_add_all_algorithms_conf, void, DUMMYARG, return, DUMMYARG)
+#else
+DEFINEFUNC2(int, OPENSSL_init_crypto, uint64_t opts, opts, const OPENSSL_INIT_SETTINGS *settings, settings, return -1, return)
+#endif
DEFINEFUNC3(int, SSL_CTX_load_verify_locations, SSL_CTX *ctx, ctx, const char *CAfile, CAfile, const char *CApath, CApath, return 0, return)
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
DEFINEFUNC(long, SSLeay, void, DUMMYARG, return 0, return)
+#else
+DEFINEFUNC(unsigned long, OpenSSL_version_num, void, DUMMYARG, return 0, return)
+#endif
+DEFINEFUNC(X509_STORE *, SSL_CTX_get_cert_store, const SSL_CTX *ctx, ctx, return 0, return)
+
+DEFINEFUNC(ASN1_INTEGER *, X509_get_serialNumber, X509 *x, x, return 0, return)
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+DEFINEFUNC(int, EVP_PKEY_id, const EVP_PKEY *pkey, pkey, return 0, return)
+DEFINEFUNC(int, EVP_PKEY_base_id, const EVP_PKEY *pkey, pkey, return 0, return)
+DEFINEFUNC2(int, SSL_CIPHER_get_bits, const SSL_CIPHER *cipher, cipher, int *alg_bits, alg_bits, return 0, return)
+DEFINEFUNC2(long, SSL_CTX_set_options, SSL_CTX *ctx, ctx, long options, options, return 0, return)
+DEFINEFUNC(long, X509_get_version, X509 *x, x, return 0, return)
+DEFINEFUNC(X509_PUBKEY *, X509_get_X509_PUBKEY, X509 *x, x, return 0, return)
+DEFINEFUNC(int, RSA_bits, const RSA *rsa, rsa, return 0, return)
+DEFINEFUNC(int, DSA_security_bits, const DSA *dsa, dsa, return 0, return)
+DEFINEFUNC(ASN1_TIME *, X509_getm_notAfter, X509 *x, x, return 0, return)
+DEFINEFUNC(ASN1_TIME *, X509_getm_notBefore, X509 *x, x, return 0, return)
+DEFINEFUNC4(void, DSA_get0_pqg, const DSA *d, d, const BIGNUM **p, p, const BIGNUM **q, q, const BIGNUM **g, g, return, return)
+#endif
#ifdef Q_OS_SYMBIAN
#define RESOLVEFUNC(func, ordinal, lib) \
@@ -580,7 +641,11 @@
static volatile bool symbolsResolved = false;
static volatile bool triedToResolveSymbols = false;
#ifndef QT_NO_THREAD
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
QMutexLocker locker(QMutexPool::globalInstanceGet((void *)&q_SSL_library_init));
+#else
+ QMutexLocker locker(QMutexPool::globalInstanceGet((void *)&q_OPENSSL_init_ssl));
+#endif
#endif
if (symbolsResolved)
return true;
@@ -614,9 +679,11 @@
RESOLVEFUNC(BIO_write, 269, libs.second )
RESOLVEFUNC(BN_num_bits, 387, libs.second )
RESOLVEFUNC(CRYPTO_free, 469, libs.second )
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
RESOLVEFUNC(CRYPTO_num_locks, 500, libs.second )
RESOLVEFUNC(CRYPTO_set_id_callback, 513, libs.second )
RESOLVEFUNC(CRYPTO_set_locking_callback, 516, libs.second )
+#endif
RESOLVEFUNC(DSA_free, 594, libs.second )
RESOLVEFUNC(ERR_error_string, 744, libs.second )
RESOLVEFUNC(ERR_get_error, 749, libs.second )
@@ -674,8 +741,10 @@
RESOLVEFUNC(SSL_get_peer_cert_chain, 117, libs.first )
RESOLVEFUNC(SSL_get_peer_certificate, 118, libs.first )
RESOLVEFUNC(SSL_get_verify_result, 132, libs.first )
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
RESOLVEFUNC(SSL_library_init, 137, libs.first )
RESOLVEFUNC(SSL_load_error_strings, 139, libs.first )
+#endif
RESOLVEFUNC(SSL_new, 140, libs.first )
#if OPENSSL_VERSION_NUMBER >= 0x0090806fL && !defined(OPENSSL_NO_TLSEXT)
RESOLVEFUNC(SSL_ctrl, 95, libs.first )
@@ -747,9 +816,11 @@
RESOLVEFUNC(BIO_write)
RESOLVEFUNC(BN_num_bits)
RESOLVEFUNC(CRYPTO_free)
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
RESOLVEFUNC(CRYPTO_num_locks)
RESOLVEFUNC(CRYPTO_set_id_callback)
RESOLVEFUNC(CRYPTO_set_locking_callback)
+#endif
RESOLVEFUNC(DSA_free)
RESOLVEFUNC(ERR_error_string)
RESOLVEFUNC(ERR_get_error)
@@ -779,10 +850,17 @@
RESOLVEFUNC(RAND_seed)
RESOLVEFUNC(RAND_status)
RESOLVEFUNC(RSA_free)
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
RESOLVEFUNC(sk_free)
RESOLVEFUNC(sk_num)
RESOLVEFUNC(sk_pop_free)
RESOLVEFUNC(sk_value)
+#else
+ RESOLVEFUNC(OPENSSL_sk_free)
+ RESOLVEFUNC(OPENSSL_sk_num)
+ RESOLVEFUNC(OPENSSL_sk_pop_free)
+ RESOLVEFUNC(OPENSSL_sk_value)
+#endif
RESOLVEFUNC(SSL_CIPHER_description)
RESOLVEFUNC(SSL_CTX_check_private_key)
RESOLVEFUNC(SSL_CTX_ctrl)
@@ -797,6 +875,7 @@
RESOLVEFUNC(SSL_CTX_use_PrivateKey)
RESOLVEFUNC(SSL_CTX_use_RSAPrivateKey)
RESOLVEFUNC(SSL_CTX_use_PrivateKey_file)
+ RESOLVEFUNC(SSL_CTX_get_cert_store)
RESOLVEFUNC(SSL_accept)
RESOLVEFUNC(SSL_clear)
RESOLVEFUNC(SSL_connect)
@@ -807,8 +886,12 @@
RESOLVEFUNC(SSL_get_peer_cert_chain)
RESOLVEFUNC(SSL_get_peer_certificate)
RESOLVEFUNC(SSL_get_verify_result)
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
RESOLVEFUNC(SSL_library_init)
RESOLVEFUNC(SSL_load_error_strings)
+#else
+ RESOLVEFUNC(OPENSSL_init_ssl)
+#endif
RESOLVEFUNC(SSL_new)
#if OPENSSL_VERSION_NUMBER >= 0x0090806fL && !defined(OPENSSL_NO_TLSEXT)
RESOLVEFUNC(SSL_ctrl)
@@ -819,17 +902,47 @@
RESOLVEFUNC(SSL_set_connect_state)
RESOLVEFUNC(SSL_shutdown)
RESOLVEFUNC(SSL_write)
+
+ RESOLVEFUNC(X509_get_serialNumber)
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+ RESOLVEFUNC(SSL_CTX_ctrl)
+ RESOLVEFUNC(EVP_PKEY_id)
+ RESOLVEFUNC(EVP_PKEY_base_id)
+ RESOLVEFUNC(SSL_CIPHER_get_bits)
+ RESOLVEFUNC(SSL_CTX_set_options)
+ RESOLVEFUNC(X509_get_version)
+ RESOLVEFUNC(X509_get_X509_PUBKEY)
+ RESOLVEFUNC(RSA_bits)
+ RESOLVEFUNC(DSA_security_bits)
+ RESOLVEFUNC(DSA_get0_pqg)
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ RESOLVEFUNC(X509_get_notAfter)
+ RESOLVEFUNC(X509_get_notBefore)
+#else
+ RESOLVEFUNC(X509_getm_notAfter)
+ RESOLVEFUNC(X509_getm_notBefore)
+#endif
+#endif
+
#ifndef OPENSSL_NO_SSL2
RESOLVEFUNC(SSLv2_client_method)
#endif
RESOLVEFUNC(SSLv3_client_method)
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
RESOLVEFUNC(SSLv23_client_method)
+#else
+ RESOLVEFUNC(TLS_client_method)
+#endif
RESOLVEFUNC(TLSv1_client_method)
#ifndef OPENSSL_NO_SSL2
RESOLVEFUNC(SSLv2_server_method)
#endif
RESOLVEFUNC(SSLv3_server_method)
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
RESOLVEFUNC(SSLv23_server_method)
+#else
+ RESOLVEFUNC(TLS_server_method)
+#endif
RESOLVEFUNC(TLSv1_server_method)
RESOLVEFUNC(X509_NAME_entry_count)
RESOLVEFUNC(X509_NAME_get_entry)
@@ -846,7 +959,11 @@
RESOLVEFUNC(X509_STORE_CTX_get_error)
RESOLVEFUNC(X509_STORE_CTX_get_error_depth)
RESOLVEFUNC(X509_STORE_CTX_get_current_cert)
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
RESOLVEFUNC(X509_STORE_CTX_get_chain)
+#else
+ RESOLVEFUNC(X509_STORE_CTX_get0_chain)
+#endif
RESOLVEFUNC(X509_cmp)
#ifndef SSLEAY_MACROS
RESOLVEFUNC(X509_dup)
@@ -867,10 +984,18 @@
RESOLVEFUNC(d2i_DSAPrivateKey)
RESOLVEFUNC(d2i_RSAPrivateKey)
#endif
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
RESOLVEFUNC(OPENSSL_add_all_algorithms_noconf)
RESOLVEFUNC(OPENSSL_add_all_algorithms_conf)
+#else
+ RESOLVEFUNC(OPENSSL_init_crypto)
+#endif
RESOLVEFUNC(SSL_CTX_load_verify_locations)
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
RESOLVEFUNC(SSLeay)
+#else
+ RESOLVEFUNC(OpenSSL_version_num)
+#endif
#endif // Q_OS_SYMBIAN
symbolsResolved = true;
delete libs.first;
diff -ur qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslsocket_openssl_symbols_p.h qt-everywhere-opensource-src-4.8.7-openssl-1.1/src/network/ssl/qsslsocket_openssl_symbols_p.h
--- qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslsocket_openssl_symbols_p.h 2015-05-07 16:14:44.000000000 +0200
+++ qt-everywhere-opensource-src-4.8.7-openssl-1.1/src/network/ssl/qsslsocket_openssl_symbols_p.h 2018-01-05 17:59:42.041550255 +0100
@@ -207,16 +207,31 @@
int q_ASN1_STRING_to_UTF8(unsigned char **a, ASN1_STRING *b);
long q_BIO_ctrl(BIO *a, int b, long c, void *d);
int q_BIO_free(BIO *a);
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
BIO *q_BIO_new(BIO_METHOD *a);
+#else
+BIO *q_BIO_new(const BIO_METHOD *a);
+#endif
BIO *q_BIO_new_mem_buf(void *a, int b);
int q_BIO_read(BIO *a, void *b, int c);
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
BIO_METHOD *q_BIO_s_mem();
+#else
+const BIO_METHOD *q_BIO_s_mem();
+#endif
int q_BIO_write(BIO *a, const void *b, int c);
int q_BN_num_bits(const BIGNUM *a);
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
int q_CRYPTO_num_locks();
void q_CRYPTO_set_locking_callback(void (*a)(int, int, const char *, int));
void q_CRYPTO_set_id_callback(unsigned long (*a)());
void q_CRYPTO_free(void *a);
+#else
+#define q_CRYPTO_num_locks() 1
+#define q_CRYPTO_set_locking_callback(a)
+#define q_CRYPTO_set_id_callback(a)
+void q_CRYPTO_free(void *a, const char *b, int c);
+#endif
void q_DSA_free(DSA *a);
#if OPENSSL_VERSION_NUMBER >= 0x00908000L
// 0.9.8 broke SC and BC by changing this function's signature.
@@ -258,6 +273,7 @@
void q_RAND_seed(const void *a, int b);
int q_RAND_status();
void q_RSA_free(RSA *a);
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
int q_sk_num(STACK *a);
void q_sk_pop_free(STACK *a, void (*b)(void *));
#if OPENSSL_VERSION_NUMBER >= 0x10000000L
@@ -267,6 +283,16 @@
void q_sk_free(STACK *a);
char * q_sk_value(STACK *a, int b);
#endif
+#else
+int q_OPENSSL_sk_num(STACK *a);
+void q_OPENSSL_sk_pop_free(STACK *a, void (*b)(void *));
+void q_OPENSSL_sk_free(_STACK *a);
+void * q_OPENSSL_sk_value(STACK *a, int b);
+#define q_sk_num q_OPENSSL_sk_num
+#define q_sk_pop_free q_OPENSSL_sk_pop_free
+#define q_sk_free q_OPENSSL_sk_free
+#define q_sk_value q_OPENSSL_sk_value
+#endif
int q_SSL_accept(SSL *a);
int q_SSL_clear(SSL *a);
char *q_SSL_CIPHER_description(SSL_CIPHER *a, char *b, int c);
@@ -314,8 +340,14 @@
#else
long q_SSL_get_verify_result(SSL *a);
#endif
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
int q_SSL_library_init();
void q_SSL_load_error_strings();
+#else
+int q_OPENSSL_init_ssl(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings);
+#define q_SSL_library_init() q_OPENSSL_init_ssl(0, (const OPENSSL_INIT_SETTINGS *) NULL)
+#define q_SSL_load_error_strings() q_OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS | OPENSSL_INIT_LOAD_CRYPTO_STRINGS, (const OPENSSL_INIT_SETTINGS *) NULL)
+#endif
SSL *q_SSL_new(SSL_CTX *a);
#if OPENSSL_VERSION_NUMBER >= 0x0090806fL && !defined(OPENSSL_NO_TLSEXT)
long q_SSL_ctrl(SSL *ssl,int cmd, long larg, void *parg);
@@ -328,11 +360,21 @@
#if OPENSSL_VERSION_NUMBER >= 0x10000000L
const SSL_METHOD *q_SSLv2_client_method();
const SSL_METHOD *q_SSLv3_client_method();
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
const SSL_METHOD *q_SSLv23_client_method();
+#else
+const SSL_METHOD *q_TLS_client_method();
+#define q_SSLv23_client_method q_TLS_client_method
+#endif
const SSL_METHOD *q_TLSv1_client_method();
const SSL_METHOD *q_SSLv2_server_method();
const SSL_METHOD *q_SSLv3_server_method();
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
const SSL_METHOD *q_SSLv23_server_method();
+#else
+const SSL_METHOD *q_TLS_server_method();
+#define q_SSLv23_server_method q_TLS_server_method
+#endif
const SSL_METHOD *q_TLSv1_server_method();
#else
SSL_METHOD *q_SSLv2_client_method();
@@ -377,7 +419,12 @@
int q_X509_STORE_CTX_get_error(X509_STORE_CTX *ctx);
int q_X509_STORE_CTX_get_error_depth(X509_STORE_CTX *ctx);
X509 *q_X509_STORE_CTX_get_current_cert(X509_STORE_CTX *ctx);
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
STACK_OF(X509) *q_X509_STORE_CTX_get_chain(X509_STORE_CTX *ctx);
+#else
+STACK_OF(X509) *q_X509_STORE_CTX_get0_chain(X509_STORE_CTX *ctx);
+#define q_X509_STORE_CTX_get_chain q_X509_STORE_CTX_get0_chain
+#endif
#define q_BIO_get_mem_data(b, pp) (int)q_BIO_ctrl(b,BIO_CTRL_INFO,0,(char *)pp)
#define q_BIO_pending(b) (int)q_BIO_ctrl(b,BIO_CTRL_PENDING,0,NULL)
@@ -399,7 +446,25 @@
PEM_ASN1_write_bio((int (*)(void*, unsigned char**))q_i2d_DSAPrivateKey,PEM_STRING_DSA,\
bp,(char *)x,enc,kstr,klen,cb,u)
#endif
+
+X509_STORE * q_SSL_CTX_get_cert_store(const SSL_CTX *ctx);
+ASN1_INTEGER * q_X509_get_serialNumber(X509 *x);
+
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
#define q_SSL_CTX_set_options(ctx,op) q_SSL_CTX_ctrl((ctx),SSL_CTRL_OPTIONS,(op),NULL)
+#define q_X509_get_version(x) X509_get_version(x)
+#else
+int q_EVP_PKEY_id(const EVP_PKEY *pkey);
+int q_EVP_PKEY_base_id(const EVP_PKEY *pkey);
+int q_SSL_CIPHER_get_bits(const SSL_CIPHER *cipher, int *alg_bits);
+long q_SSL_CTX_set_options(SSL_CTX *ctx, long options);
+long q_X509_get_version(X509 *x);
+X509_PUBKEY * q_X509_get_X509_PUBKEY(X509 *x);
+int q_RSA_bits(const RSA *rsa);
+int q_DSA_security_bits(const DSA *dsa);
+void q_DSA_get0_pqg(const DSA *d, const BIGNUM **p, const BIGNUM **q, const BIGNUM **g);
+#endif
+
#define q_SKM_sk_num(type, st) ((int (*)(const STACK_OF(type) *))q_sk_num)(st)
#define q_SKM_sk_value(type, st,i) ((type * (*)(const STACK_OF(type) *, int))q_sk_value)(st, i)
#define q_sk_GENERAL_NAME_num(st) q_SKM_sk_num(GENERAL_NAME, (st))
@@ -410,8 +475,17 @@
#define q_sk_SSL_CIPHER_value(st, i) q_SKM_sk_value(SSL_CIPHER, (st), (i))
#define q_SSL_CTX_add_extra_chain_cert(ctx,x509) \
q_SSL_CTX_ctrl(ctx,SSL_CTRL_EXTRA_CHAIN_CERT,0,(char *)x509)
+
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
#define q_X509_get_notAfter(x) X509_get_notAfter(x)
#define q_X509_get_notBefore(x) X509_get_notBefore(x)
+#else
+ASN1_TIME *q_X509_getm_notAfter(X509 *x);
+ASN1_TIME *q_X509_getm_notBefore(X509 *x);
+#define q_X509_get_notAfter(x) q_X509_getm_notAfter(x)
+#define q_X509_get_notBefore(x) q_X509_getm_notBefore(x)
+#endif
+
#define q_EVP_PKEY_assign_RSA(pkey,rsa) q_EVP_PKEY_assign((pkey),EVP_PKEY_RSA,\
(char *)(rsa))
#define q_EVP_PKEY_assign_DSA(pkey,dsa) q_EVP_PKEY_assign((pkey),EVP_PKEY_DSA,\
@@ -421,10 +495,21 @@
#else
#define q_OpenSSL_add_all_algorithms() q_OPENSSL_add_all_algorithms_noconf()
#endif
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
void q_OPENSSL_add_all_algorithms_noconf();
void q_OPENSSL_add_all_algorithms_conf();
+#else
+int q_OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings);
+#define q_OPENSSL_add_all_algorithms_conf() q_OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS | OPENSSL_INIT_ADD_ALL_DIGESTS | OPENSSL_INIT_LOAD_CONFIG, (const OPENSSL_INIT_SETTINGS *) NULL)
+# define q_OPENSSL_add_all_algorithms_noconf() q_OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS | OPENSSL_INIT_ADD_ALL_DIGESTS, (const OPENSSL_INIT_SETTINGS *) NULL)
+#endif
int q_SSL_CTX_load_verify_locations(SSL_CTX *ctx, const char *CAfile, const char *CApath);
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
long q_SSLeay();
+#else
+unsigned long q_OpenSSL_version_num();
+#define q_SSLeay q_OpenSSL_version_num
+#endif
// Helper function
class QDateTime;

View File

@ -0,0 +1,12 @@
diff -up qt-everywhere-opensource-src-4.8.7/qmake/Makefile.unix.qmake_LFLAGS qt-everywhere-opensource-src-4.8.7/qmake/Makefile.unix
--- qt-everywhere-opensource-src-4.8.7/qmake/Makefile.unix.qmake_LFLAGS 2015-05-07 09:14:42.000000000 -0500
+++ qt-everywhere-opensource-src-4.8.7/qmake/Makefile.unix 2018-02-15 08:25:13.168838577 -0600
@@ -3,7 +3,7 @@ BUILD_PATH = @BUILD_PATH@
QTOBJS = @QMAKE_QTOBJS@
QTSRCS = @QMAKE_QTSRCS@
QMAKESPEC = @QMAKESPEC@
-LFLAGS = @QMAKE_LFLAGS@
+LFLAGS = @QMAKE_LFLAGS@ $(QMAKE_LFLAGS_RELEASE)
#qmake code
OBJS=project.o property.o main.o makefile.o unixmake2.o unixmake.o \

Binary file not shown.

View File

@ -0,0 +1,17 @@
--- a/src/gui/kernel/qguiplatformplugin.cpp.adwaita 2015-02-12 14:32:45.217935391 +0100
+++ b/src/gui/kernel/qguiplatformplugin.cpp 2015-02-12 14:46:11.471866038 +0100
@@ -165,8 +165,13 @@ QString QGuiPlatformPlugin::styleName()
case DE_GNOME: {
QStringList availableStyles = QStyleFactory::keys();
// Set QGtkStyle for GNOME if available
+ QString adwaitaStyleKey = QString::fromLatin1("adwaita");
QString gtkStyleKey = QString::fromLatin1("GTK+");
- if (availableStyles.contains(gtkStyleKey)) {
+ if (availableStyles.contains(adwaitaStyleKey)) {
+ stylename = adwaitaStyleKey;
+ break;
+ }
+ else if (availableStyles.contains(gtkStyleKey)) {
stylename = gtkStyleKey;
break;
}

View File

@ -0,0 +1,50 @@
diff -ur qt-x11-opensource-src-4.5.0/src/corelib/arch/qatomic_i386.h qt-x11-opensource-src-4.5.0-fix-qatomic-inline-asm/src/corelib/arch/qatomic_i386.h
--- qt-x11-opensource-src-4.5.0/src/corelib/arch/qatomic_i386.h 2009-02-25 22:09:21.000000000 +0100
+++ qt-x11-opensource-src-4.5.0-fix-qatomic-inline-asm/src/corelib/arch/qatomic_i386.h 2009-04-01 17:54:21.000000000 +0200
@@ -115,8 +115,8 @@
asm volatile("lock\n"
"incl %0\n"
"setne %1"
- : "=m" (_q_value), "=qm" (ret)
- : "m" (_q_value)
+ : "+m" (_q_value), "=qm" (ret)
+ :
: "memory");
return ret != 0;
}
@@ -127,8 +127,8 @@
asm volatile("lock\n"
"decl %0\n"
"setne %1"
- : "=m" (_q_value), "=qm" (ret)
- : "m" (_q_value)
+ : "+m" (_q_value), "=qm" (ret)
+ :
: "memory");
return ret != 0;
}
diff -ur qt-x11-opensource-src-4.5.0/src/corelib/arch/qatomic_x86_64.h qt-x11-opensource-src-4.5.0-fix-qatomic-inline-asm/src/corelib/arch/qatomic_x86_64.h
--- qt-x11-opensource-src-4.5.0/src/corelib/arch/qatomic_x86_64.h 2009-02-25 22:09:21.000000000 +0100
+++ qt-x11-opensource-src-4.5.0-fix-qatomic-inline-asm/src/corelib/arch/qatomic_x86_64.h 2009-04-01 17:54:32.000000000 +0200
@@ -116,8 +116,8 @@
asm volatile("lock\n"
"incl %0\n"
"setne %1"
- : "=m" (_q_value), "=qm" (ret)
- : "m" (_q_value)
+ : "+m" (_q_value), "=qm" (ret)
+ :
: "memory");
return ret != 0;
}
@@ -128,8 +128,8 @@
asm volatile("lock\n"
"decl %0\n"
"setne %1"
- : "=m" (_q_value), "=qm" (ret)
- : "m" (_q_value)
+ : "+m" (_q_value), "=qm" (ret)
+ :
: "memory");
return ret != 0;
}

View File

@ -0,0 +1,12 @@
diff -up qt-x11-opensource-src-4.5.1/src/gui/text/qfontengine_ft.cpp.enable_ft_lcdfilter qt-x11-opensource-src-4.5.1/src/gui/text/qfontengine_ft.cpp
--- qt-x11-opensource-src-4.5.1/src/gui/text/qfontengine_ft.cpp.enable_ft_lcdfilter 2009-04-21 18:57:41.000000000 -0500
+++ qt-x11-opensource-src-4.5.1/src/gui/text/qfontengine_ft.cpp 2009-04-24 11:17:49.562695405 -0500
@@ -72,7 +72,7 @@
#include FT_CONFIG_OPTIONS_H
#endif
-#if defined(FT_LCD_FILTER_H) && defined(FT_CONFIG_OPTION_SUBPIXEL_RENDERING)
+#if defined(FT_LCD_FILTER_H)
#define QT_USE_FREETYPE_LCDFILTER
#endif

469
qt.spec Normal file
View File

@ -0,0 +1,469 @@
%if "%{?__isa_bits}" == "64"
%define platform linux-g++-64
%endif
%ifarch x86_64 aarch64
%define platform linux-g++
%endif
%define _qt4_prefix %{_libdir}/qt4
%define priority 20
%ifarch x86_64
%define priority 25
%endif
Name: qt
Epoch: 1
Version: 4.8.7
Release: 44
Summary: A software toolkit for developing applications
License: (LGPLv2 with exceptions or GPLv3 with exceptions) and ASL 2.0 and BSD and FTL and MIT
URL: http://qt-project.org/
Source0: https://download.qt-project.org/official_releases/qt/4.8/%{version}/qt-everywhere-opensource-src-%{version}.tar.gz
Source1: qconfig-multilib.h
Source2: assistant.desktop
Source3: designer.desktop
Source4: linguist.desktop
Source5: qdbusviewer.desktop
Source6: qtdemo.desktop
Source7: qtconfig.desktop
Source8: hi128-app-qt4-logo.png
Source9: hi48-app-qt4-logo.png
Source10: macros.qt4
Patch1: qt-everywhere-opensource-src-4.8.5-uic_multilib.patch
Patch2: qt-everywhere-opensource-src-4.8.5-webcore_debuginfo.patch
Patch3: qt-prefer_adwaita_on_gnome.patch
Patch4: qt-x11-opensource-src-4.5.1-enable_ft_lcdfilter.patch
Patch5: qt-everywhere-opensource-src-4.6.3-glib_eventloop_nullcheck.patch
Patch6: qt-everywhere-opensource-src-4.8.3-qdbusconnection_no_debug.patch
Patch7: qt-everywhere-opensource-src-4.8.1-linguist_qmake-qt4.patch
Patch8: qt-everywhere-opensource-src-4.8.1-qt3support_debuginfo.patch
Patch9: qt-everywhere-opensource-src-4.8.5-qt_plugin_path.patch
Patch10: qt-everywhere-opensource-src-4.8.4-qmake_pkgconfig_requires_private.patch
Patch11: qt-everywhere-opensource-src-4.8.7-firebird.patch
Patch12: qt-everywhere-opensource-src-4.8.7-QT_VERSION_CHECK.patch
Patch13: qt-x11-opensource-src-4.5.0-fix-qatomic-inline-asm.patch
Patch14: qt-everywhere-opensource-src-4.8.5-mysql_config.patch
Patch15: qt-everywhere-opensource-src-4.6.2-cups.patch
Patch16: qt-everywhere-opensource-src-4.8.7-mariadb.patch
Patch17: qt-everywhere-opensource-src-4.8.7-qmake_LFLAGS.patch
Patch18: qt-everywhere-opensource-src-4.8.5-QTBUG-14467.patch
Patch19: qt-everywhere-opensource-src-4.8.0-tp-qtreeview-kpackagekit-crash.patch
Patch20: qt-everywhere-opensource-src-4.8.6-s390.patch
Patch21: qt-everywhere-opensource-src-4.8.3-no_Werror.patch
Patch22: qt-everywhere-opensource-src-4.8.0-QTBUG-22037.patch
Patch23: qt-everywhere-opensource-src-4.8.5-QTBUG-21900.patch
Patch24: qt-everywhere-opensource-src-4.8.5-tds_no_strict_aliasing.patch
Patch25: qt-everywhere-opensource-src-4.8.0-s390-atomic.patch
Patch26: qt-everywhere-opensource-src-4.8.3-icu_no_debug.patch
Patch27: qt-everywhere-opensource-src-4.8.2--assistant-crash.patch
Patch28: qt-everywhere-opensource-src-4.8.5-QTBUG-4862.patch
Patch29: qt-4.8-poll.patch
Patch30: qt-everywhere-opensource-src-4.8.6-QTBUG-37380.patch
Patch31: qt-everywhere-opensource-src-4.8.6-QTBUG-34614.patch
Patch32: qt-everywhere-opensource-src-4.8.6-QTBUG-38585.patch
Patch33: qt-everywhere-opensource-src-4.8.7-mips64.patch
Patch34: qt-everywhere-opensource-src-4.8.7-gcc6.patch
Patch35: qt-everywhere-opensource-src-4.8.7-alsa-1.1.patch
Patch36: qt-everywhere-opensource-src-4.8.7-openssl-1.1.patch
Patch37: qt-everywhere-opensource-src-4.8.7-icu59.patch
Patch38: qt-everywhere-opensource-src-4.8.5-qgtkstyle_disable_gtk_theme_check.patch
Patch39: qt-everywhere-opensource-src-4.8.6-QTBUG-22829.patch
Patch40: qt-aarch64.patch
Patch41: qt-everywhere-opensource-src-4.8.5-QTBUG-35459.patch
Patch42: qt-everywhere-opensource-src-4.8.6-systemtrayicon.patch
Patch6000: CVE-2018-19869.patch
Patch6001: CVE-2018-19872.patch
Patch6002: CVE-2018-19871.patch
BuildRequires: cups-devel desktop-file-utils gcc-c++ libjpeg-devel findutils libmng-devel libtiff-devel pkgconfig pkgconfig(alsa)
BuildRequires: pkgconfig(dbus-1) pkgconfig(fontconfig) pkgconfig(glib-2.0) pkgconfig(icu-i18n) openssl-devel pkgconfig(libpng)
BuildRequires: pkgconfig(libpulse) pkgconfig(xtst) pkgconfig(zlib) rsync pkgconfig(gl) pkgconfig(glu) pkgconfig(ice) pkgconfig(sm)
BuildRequires: pkgconfig(xcursor) pkgconfig(xfixes) pkgconfig(xft) pkgconfig(xi) pkgconfig(xinerama) pkgconfig(xrandr) pkgconfig(xrender)
BuildRequires: pkgconfig(xt) pkgconfig(xv) pkgconfig(x11) pkgconfig(xproto)
BuildRequires: firebird-devel mariadb-connector-c-devel pkgconfig(gtk+-2.0) postgresql-devel unixODBC-devel pkgconfig(sqlite3) freetds-devel
Requires: ca-certificates qt-settings
Requires(post): %{_sbindir}/update-alternatives
Requires(postun): %{_sbindir}/update-alternatives
Provides: qgtkstyle = 0.1-1 qt4-sqlite = %{version}-%{release} qt4-sqlite%{?_isa} = %{version}-%{release}
Provides: qt4 = %{version}-%{release} qt4%{?_isa} = %{version}-%{release}
Provides: qt-sqlite = %{epoch}:%{version}-%{release} qt-sqlite%{?_isa} = %{epoch}:%{version}-%{release}
Obsoletes: qgtkstyle < 0.1 qt-sqlite < %{epoch}:%{version}-%{release} qt4 < %{version}-%{release}
Provides: %{name}-assistant = %{epoch}:%{version}-%{release} qt4-assistant = %{version}-%{release} bundled(clucene09)
Obsoletes: %{name}-assistant < %{epoch}:%{version}-%{release} %{name}-config < %{epoch}:%{version}-%{release}
Provides: %{name}-config = %{epoch}:%{version}-%{release} qt4-config = %{version}-%{release}
Obsoletes: %{name}-demos < %{epoch}:%{version}-%{release} %{name}-doc < %{epoch}:%{version}-%{release} qt4-doc < %{version}-%{release}
Provides: %{name}-doc = %{epoch}:%{version}-%{release} qt4-doc = %{version}-%{release} %{name}-qvfb = %{epoch}:%{version}-%{release}
Provides: %{name}-designer-plugin-webkit = %{epoch}:%{version}-%{release} %{name}-demos = %{epoch}:%{version}-%{release}
Obsoletes: %{name}-designer-plugin-webkit < %{epoch}:%{version}-%{release} %{name}-qvfb < %{epoch}:%{version}-%{release}
Provides: %{name}-ibase = %{epoch}:%{version}-%{release} qt4-ibase = %{version}-%{release} qt4-ibase%{?_isa} = %{version}-%{release}
Obsoletes: %{name}-ibase < %{epoch}:%{version}-%{release} %{name}-mysql < %{epoch}:%{version}-%{release} qt-x11 < 1:4.8.5-2
Provides: %{name}-mysql = %{epoch}:%{version}-%{release} qt4-MySQL = %{version}-%{release} qt4-mysql = %{version}-%{release}
Obsoletes: qt4-MySQL < %{version}-%{release} qt4-mysql < %{version}-%{release} %{name}-odbc < %{epoch}:%{version}-%{release}
Provides: qt4-mysql%{?_isa} = %{version}-%{release} %{name}-odbc = %{epoch}:%{version}-%{release} qt4-ODBC = %{version}-%{release}
Provides: qt4-odbc = %{version}-%{release} qt4-odbc%{?_isa} = %{version}-%{release} %{name}-postgresql = %{epoch}:%{version}-%{release}
Obsoletes: qt4-odbc < %{version}-%{release} qt4-ODBC < %{version}-%{release} %{name}-postgresql < %{epoch}:%{version}-%{release}
Provides: qt4-PostgreSQL = %{version}-%{release} qt4-postgresql = %{version}-%{release} qt4-postgresql%{?_isa} = %{version}-%{release}
Obsoletes: qt4-PostgreSQL < %{version}-%{release} qt4-postgresql < %{version}-%{release} %{name}-tds < %{epoch}:%{version}-%{release}
Provides: %{name}-tds = %{epoch}:%{version}-%{release} qt4-tds = %{version}-%{release} qt4-tds%{?_isa} = %{version}-%{release}
Provides: %{name}-x11 = %{epoch}:%{version}-%{release} %{name}-x11%{?_isa} = %{epoch}:%{version}-%{release} qt4-x11 = %{version}-%{release}
Provides: qt4-x11%{?_isa} = %{version}-%{release} %{name}-qdbusviewer = %{epoch}:%{version}-%{release} %{name}-common = %{epoch}:%{version}-%{release}
Obsoletes: qt4-x11 < %{version}-%{release} qt-designer-plugin-phonon < 1:4.7.2-6 %{name}-qdbusviewer < %{epoch}:%{version}-%{release}
Obsoletes: %{name}-x11 < %{epoch}:%{version}-%{release} %{name}-common < %{epoch}:%{version}-%{release}
%description
Qt (pronounced as "cute", not "cu-tee") is a cross-platform framework that is usually used as a graphical toolkit,
although it is also very helpful in creating CLI applications. It runs on the three major desktop OSes, as well as
on mobile OSes, such as Symbian, Nokia Belle, Meego Harmattan, MeeGo or BB10, and on embedded devices. Ports for
Android (Necessitas) and iOS are also in development
%package devel
Summary: Development files for the %{name}
Requires: %{name} = %{epoch}:%{version}-%{release}
Requires: pkgconfig(gl) pkgconfig(glu) pkgconfig gcc-c++ pkgconfig(x11) pkgconfig(xproto)
Requires: pkgconfig(ice) pkgconfig(sm) pkgconfig(xcursor) pkgconfig(xext) pkgconfig(xv) pkgconfig(xt)
Requires: pkgconfig(xfixes) pkgconfig(xft) pkgconfig(xi) pkgconfig(xinerama) pkgconfig(xrandr) pkgconfig(xrender)
Provides: qt4-designer = %{version}-%{release} qt4-static = %{version}-%{release}
Provides: %{name}-static = %{?epoch:%{epoch}:}%{version}-%{release} %{name}-examples = %{epoch}:%{version}-%{release}
Obsoletes: qt4-devel < %{version}-%{release} qt4-designer < %{version}-%{release}
Provides: qt4-devel = %{version}-%{release} qt4-devel%{?_isa} = %{version}-%{release}
Provides: %{name}-devel-private = %{epoch}:%{version}-%{release} qt4-devel-private = %{version}-%{release}
Provides: qt4-private-devel = %{version}-%{release} %{name}-private-devel = %{epoch}:%{version}-%{release}
Obsoletes: %{name}-devel-private < %{epoch}:%{version}-%{release} %{name}-examples < %{epoch}:%{version}-%{release}
%description devel
This package contains the development files for %{name}.
%prep
%autosetup -n qt-everywhere-opensource-src-%{version} -p1
sed -i -e 's|^\(QMAKE_STRIP.*=\).*$|\1|g' mkspecs/common/linux.conf
if [ "%{_lib}" == "lib64" ] ; then
sed -i -e "s,/usr/lib /lib,/usr/%{_lib} /%{_lib},g" config.tests/{unix,x11}/*.test
sed -i -e "s,/lib /usr/lib,/%{_lib} /usr/%{_lib},g" config.tests/{unix,x11}/*.test
fi
for f in translations/*.ts ; do
touch ${f%.ts}.qm
done
%build
RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS | sed 's|-fexceptions||g'`
CXXFLAGS="$CXXFLAGS -std=gnu++98 -Wno-deprecated"
export LD_LIBRARY_PATH=$PWD/lib/
export CXXFLAGS="$CXXFLAGS $RPM_OPT_FLAGS"
export CFLAGS="$CFLAGS $RPM_OPT_FLAGS"
export LDFLAGS="$LDFLAGS $RPM_LD_FLAGS"
export PATH=$PWD/bin:$PATH
export QTDIR=$PWD
./configure -v -fast -optimized-qmake -confirm-license -opensource -prefix %{_qt4_prefix} \
-bindir %{_qt4_prefix}/bin -datadir %{_qt4_prefix} -docdir %{_docdir}/qt4 -demosdir %{_qt4_prefix}/demos \
-examplesdir %{_qt4_prefix}/examples -headerdir %{_includedir} -libdir %{_libdir} -importdir %{_qt4_prefix}/imports \
-plugindir %{_qt4_prefix}/plugins -sysconfdir %{_sysconfdir} -translationdir %{_datadir}/qt4/translations \
-platform %{platform} -no-rpath -gtkstyle -cups -shared -release -fontconfig -largefile -no-separate-debug-info \
-no-phonon -no-pch -sm -stl -glib -xkb -xshape -xinerama -xinput -xcursor -xfixes -xrandr -xrender -system-libmng \
-system-libjpeg -system-libtiff -system-zlib -icu -openssl-linked -xmlpatterns -dbus-linked -graphicssystem raster \
-webkit -plugin-sql-ibase -plugin-sql-mysql -plugin-sql-psql -plugin-sql-odbc -plugin-sql-sqlite -plugin-sql-tds -system-sqlite
make clean -C qmake
%make_build -C qmake \
QMAKE_CFLAGS_RELEASE="${CFLAGS:-$RPM_OPT_FLAGS}" QMAKE_CXXFLAGS_RELEASE="${CXXFLAGS:-$RPM_OPT_FLAGS}" \
QMAKE_LFLAGS_RELEASE="${LDFLAGS:-$RPM_LD_FLAGS}" QMAKE_STRIP=
%make_build
%make_build -C tools/qvfb
bin/lrelease translations/*.ts
%install
make install INSTALL_ROOT=%{buildroot}
make install INSTALL_ROOT=%{buildroot} -C tools/qvfb
rsync -aR include/Qt{Core,Declarative,Gui,Script}/private src/{corelib,declarative,gui,script}/*/*_p.h %{buildroot}%{_prefix}/
desktop-file-install --dir=%{buildroot}%{_datadir}/applications --vendor="qt4" \
%{SOURCE2} %{SOURCE3} %{SOURCE4} %{SOURCE5} %{SOURCE6} %{SOURCE7}
glib2_libs=$(pkg-config --libs glib-2.0 gobject-2.0 gthread-2.0)
ssl_libs=$(pkg-config --libs openssl)
for dep in -laudio -ldbus-1 -lfreetype -lfontconfig -ldl -lphonon -lpthread -lICE ${glib2_libs} \
-ljpeg -lm -lmng -lpng -lpulse -lpulse-mainloop-glib ${ssl_libs} -lsqlite3 -lz -lSM -lX11 -lXcursor \
-lXext -lXfixes -lXft -lXinerama -lXi -lXrandr -lXrender -lXt -L/usr/X11R6/lib -L/usr/X11R6/%{_lib} -L%{_libdir} ; do
sed -i -e "s|$dep ||g" %{buildroot}%{_libdir}/lib*.la
sed -i -e "s|$dep ||g" %{buildroot}%{_libdir}/*.prl
done
sed -i -e "/^QMAKE_PRL_BUILD_DIR/d" %{buildroot}%{_libdir}/*.prl
sed -i -e "s|-L%{_builddir}/qt-everywhere-opensource-src-%{version}/lib||g" \
%{buildroot}%{_libdir}/pkgconfig/*.pc \
%{buildroot}%{_libdir}/*.prl
rm -f %{buildroot}%{_libdir}/lib*.la
mkdir %{buildroot}%{_bindir}
pushd %{buildroot}%{_qt4_prefix}/bin
for i in * ; do
case "${i}" in
assistant|designer|linguist|lrelease|lupdate|moc|qmake|qtconfig|qtdemo|uic)
ln -v ${i} %{buildroot}%{_bindir}/${i}-qt4
ln -sv ${i} ${i}-qt4
;;
qmlviewer)
ln -v ${i} %{buildroot}%{_bindir}/${i}
ln -v ${i} %{buildroot}%{_bindir}/${i}-qt4
ln -sv ${i} ${i}-qt4
;;
*)
ln -v ${i} %{buildroot}%{_bindir}/${i}
;;
esac
done
popd
pushd %{buildroot}%{_libdir}
for lib in libQt*.so ; do
libbase=`basename $lib .so | sed -e 's/^lib//'`
echo "INPUT(-l${libbase})" > lib${libbase}_debug.so
done
for lib in libQt*.a ; do
libbase=`basename $lib .a | sed -e 's/^lib//' `
echo "INPUT(-l${libbase})" > lib${libbase}_debug.a
done
popd
%ifarch x86_64 i686
mv %{buildroot}%{_includedir}/Qt/qconfig.h %{buildroot}%{_includedir}/QtCore/qconfig-%{__isa_bits}.h
install -p -m644 -D %{SOURCE1} %{buildroot}%{_includedir}/QtCore/qconfig-multilib.h
ln -sf qconfig-multilib.h %{buildroot}%{_includedir}/QtCore/qconfig.h
ln -sf ../QtCore/qconfig.h %{buildroot}%{_includedir}/Qt/qconfig.h
%endif
mkdir -p %{buildroot}%{_sysconfdir}/xdg/qtchooser
pushd %{buildroot}%{_sysconfdir}/xdg/qtchooser
echo "%{_qt4_prefix}/bin" > 4-%{__isa_bits}.conf
echo "%{_libdir}/qt4" >> 4-%{__isa_bits}.conf
touch default.conf 4.conf
popd
install -p -m644 -D tools/assistant/tools/assistant/images/assistant.png %{buildroot}%{_datadir}/icons/hicolor/32x32/apps/assistant.png
install -p -m644 -D %{SOURCE9} %{buildroot}%{_datadir}/icons/hicolor/48x48/apps/qt4-logo.png
install -p -m644 -D %{SOURCE8} %{buildroot}%{_datadir}/icons/hicolor/128x128/apps/qt4-logo.png
install -p -m644 -D tools/assistant/tools/assistant/images/assistant-128.png %{buildroot}%{_datadir}/icons/hicolor/128x128/apps/assistant.png
install -p -m644 -D tools/designer/src/designer/images/designer.png %{buildroot}%{_datadir}/icons/hicolor/128x128/apps/designer.png
install -p -m644 -D tools/qdbus/qdbusviewer/images/qdbusviewer.png %{buildroot}%{_datadir}/icons/hicolor/32x32/apps/qdbusviewer.png
install -p -m644 -D tools/qdbus/qdbusviewer/images/qdbusviewer-128.png %{buildroot}%{_datadir}/icons/hicolor/128x128/apps/qdbusviewer.png
for icon in tools/linguist/linguist/images/icons/linguist-*-32.png ; do
size=$(echo $(basename ${icon}) | cut -d- -f2)
install -p -m644 -D ${icon} %{buildroot}%{_datadir}/icons/hicolor/${size}x${size}/apps/linguist.png
done
cat >%{buildroot}%{_libdir}/pkgconfig/Qt.pc<<EOF
prefix=%{_qt4_prefix}
bindir=%{_qt4_prefix}/bin
datadir=%{_qt4_prefix}
demosdir=%{_qt4_prefix}/demos
docdir=%{_docdir}/qt4
examplesdir=%{_qt4_prefix}/examples
headerdir=%{_includedir}
importdir=%{_qt4_prefix}/imports
libdir=%{_libdir}
moc=%{_qt4_prefix}/bin/moc
plugindir=%{_qt4_prefix}/plugins
qmake=%{_qt4_prefix}/bin/qmake
sysconfdir=%{_sysconfdir}
translationdir=%{_datadir}/qt4/translations
Name: Qt
Description: Configuration For Qt
Version: %{version}
EOF
install -p -m644 -D %{SOURCE10} %{buildroot}%{_rpmconfigdir}/macros.d/macros.qt4
sed -i \
-e "s|@@NAME@@|%{name}|g" \
-e "s|@@EPOCH@@|%{?epoch}%{!?epoch:0}|g" \
-e "s|@@VERSION@@|%{version}|g" \
-e "s|@@EVR@@|%{?epoch:%{epoch}:}%{version}-%{release}|g" \
%{buildroot}%{_rpmconfigdir}/macros.d/macros.qt4
mkdir -p %{buildroot}%{_docdir}/qt4/{html,qch,src}
mkdir -p %{buildroot}%{_qt4_prefix}/plugins/{crypto,gui_platform,styles}
rm -fv %{buildroot}%{_libdir}/libphonon.so*
rm -rfv %{buildroot}%{_libdir}/pkgconfig/phonon.pc
rm -fv %{buildroot}%{_includedir}/phonon/*.h
rm -rfv %{buildroot}%{_includedir}/phonon*
rm -fv %{buildroot}%{_datadir}/dbus-1/interfaces/org.kde.Phonon.AudioOutput.xml
rm -fv %{buildroot}%{_qt4_prefix}/plugins/designer/libphononwidgets.so
rm -fv %{buildroot}%{_qt4_prefix}/plugins/phonon_backend/*_gstreamer.so
rm -fv %{buildroot}%{_datadir}/kde4/services/phononbackends/gstreamer.desktop
rm -fv %{buildroot}%{_qt4_prefix}/mkspecs/modules/qt_webkit_version.pri
rm -fv %{buildroot}%{_includedir}/Qt/{qgraphicswebview.h,qweb*.h,QtWebKit}
rm -rfv %{buildroot}%{_includedir}/QtWebKit/
rm -rfv %{buildroot}%{_qt4_prefix}/imports/QtWebKit/
rm -fv %{buildroot}%{_libdir}/libQtWebKit*
rm -fv %{buildroot}%{_libdir}/pkgconfig/QtWebKit.pc
rm -rfv %{buildroot}%{_qt4_prefix}/tests/
%find_lang qvfb --with-qt --without-mo
%find_lang qt --with-qt --without-mo
%find_lang assistant --with-qt --without-mo
%find_lang qt_help --with-qt --without-mo
%find_lang qtconfig --with-qt --without-mo
%find_lang qtscript --with-qt --without-mo
cat qvfb.lang qt.lang assistant.lang qt_help.lang qtconfig.lang qtscript.lang >qt_all.lang
%find_lang designer --with-qt --without-mo
%find_lang linguist --with-qt --without-mo
cat designer.lang linguist.lang >qt-devel.lang
%pre
if [ $1 -gt 1 ] ; then
%{_sbindir}/update-alternatives \
--remove qtchooser-qt4 \
%{_sysconfdir}/xdg/qtchooser/qt4-%{__isa_bits}.conf >& /dev/null ||:
%{_sbindir}/update-alternatives \
--remove qtchooser-default \
%{_sysconfdir}/xdg/qtchooser/qt4.conf >& /dev/null ||:
fi
%post
/sbin/ldconfig
%{_sbindir}/update-alternatives \
--install %{_sysconfdir}/xdg/qtchooser/4.conf \
qtchooser-4 \
%{_sysconfdir}/xdg/qtchooser/4-%{__isa_bits}.conf \
%{priority}
%{_sbindir}/update-alternatives \
--install %{_sysconfdir}/xdg/qtchooser/default.conf \
qtchooser-default \
%{_sysconfdir}/xdg/qtchooser/4.conf \
%{priority}
touch --no-create %{_datadir}/icons/hicolor ||:
%postun
/sbin/ldconfig
if [ $1 -eq 0 ]; then
%{_sbindir}/update-alternatives \
--remove qtchooser-4 \
%{_sysconfdir}/xdg/qtchooser/4-%{__isa_bits}.conf
%{_sbindir}/update-alternatives \
--remove qtchooser-default \
%{_sysconfdir}/xdg/qtchooser/4.conf
fi
if [ $1 -eq 0 ] ; then
touch --no-create %{_datadir}/icons/hicolor ||:
gtk-update-icon-cache -q %{_datadir}/icons/hicolor 2> /dev/null ||:
fi
%posttrans
gtk-update-icon-cache -q %{_datadir}/icons/hicolor 2> /dev/null ||:
%post devel
touch --no-create %{_datadir}/icons/hicolor ||:
%posttrans devel
gtk-update-icon-cache -q %{_datadir}/icons/hicolor 2> /dev/null ||:
update-desktop-database -q &> /dev/null ||:
%postun devel
if [ $1 -eq 0 ] ; then
touch --no-create %{_datadir}/icons/hicolor ||:
gtk-update-icon-cache -q %{_datadir}/icons/hicolor 2> /dev/null ||:
update-desktop-database -q &> /dev/null ||:
fi
%files -f qt_all.lang
%doc README
%license LICENSE.GPL3 LICENSE.LGPL LGPL_EXCEPTION.txt
%dir %{_sysconfdir}/xdg/qtchooser
%ghost %{_sysconfdir}/xdg/qtchooser/{default.conf,4.conf}
%{_sysconfdir}/xdg/qtchooser/4-%{__isa_bits}.conf
%dir %{_qt4_prefix}
%dir %{_qt4_prefix}/bin
%dir %{_datadir}/qt4
%dir %{_datadir}/qt4/translations/
%dir %{_docdir}/qt4
%dir %{_docdir}/qt4/{html/,qch/,src/}
%{_docdir}/qt4/html/*
%{_docdir}/qt4/qch/*.qch
%{_docdir}/qt4/src/*
%{_qt4_prefix}/{phrasebooks/,demos/}
%{_qt4_prefix}/plugins/*
%{_libdir}/{libQtCore.so.4*,libQtDBus.so.4*,libQtNetwork.so.4*}
%{_libdir}/{libQtScript.so.4*,libQtSql.so.4*,libQtTest.so.4*}
%{_libdir}/{libQtXml.so.4*,libQtXmlPatterns.so.4*}
%dir %{_qt4_prefix}/plugins
%dir %{_qt4_prefix}/plugins/crypto/
%dir %{_qt4_prefix}/plugins/sqldrivers/
%{_bindir}/{assistant*,qt*config*,qt*demo*,qdbusviewer,qvfb,qdbus}
%{_qt4_prefix}/bin/{assistant*,qt*config*,qt*demo*,qvfb,qdbusviewer,qdbus}
%{_datadir}/applications/{*assistant,*qtconfig}.desktop
%{_datadir}/applications/{*qtdemo,*qdbusviewer}.desktop
%{_datadir}/icons/hicolor/*/apps/assistant*
%exclude %{_docdir}/qt4/qch/{designer.qch,linguist.qch}
%dir %{_qt4_prefix}/imports/
%{_qt4_prefix}/imports/Qt/
%{_libdir}/{libQt3Support,libQtCLucene,libQtDesigner}.so.4*
%{_libdir}/{libQtDeclarative,libQtDesignerComponents}.so.4*
%{_libdir}/{libQtGui,libQtHelp,libQtMultimedia,libQtOpenGL}.so.4*
%{_libdir}/{libQtScriptTools,libQtSvg}.so.4*
%{_datadir}/icons/hicolor/*/apps/{qt4-logo.*,qdbusviewer.*}
%files devel -f qt-devel.lang
%{_rpmconfigdir}/macros.d/macros.qt4
%{_qt4_prefix}/bin/{lconvert,lrelease*,lupdate*,moc*,pixeltool*,linguist*}
%{_qt4_prefix}/bin/{qdoc3*,qmake*,qmlviewer*,qmlplugindump,qt3to4}
%{_qt4_prefix}/bin/{qttracereplay,rcc*,uic*,qcollectiongenerator}
%{_qt4_prefix}/bin/{qdbuscpp2xml,qdbusxml2cpp,qhelpconverter,designer*}
%{_qt4_prefix}/bin/{qhelpgenerator,xmlpatterns,xmlpatternsvalidator}
%{_bindir}/{lrelease*,lupdate*,moc*,uic*,designer*,linguist*,lconvert}
%{_bindir}/{pixeltool,qcollectiongenerator,qdoc3,qmake*,qmlviewer*,qt3to4}
%{_bindir}/{qttracereplay,qdbuscpp2xml,qdbusxml2cpp,qhelpconverter}
%{_bindir}/{qhelpgenerator,qmlplugindump,rcc,xmlpatterns,xmlpatternsvalidator}
%{_includedir}/*
%{_qt4_prefix}/mkspecs/
%{_qt4_prefix}/q3porting.xml
%{_libdir}/{libQt*.so,libQtUiTools*.a,libQt*.prl}
%{_libdir}/pkgconfig/*.pc
%{_datadir}/applications/{*designer.desktop,*linguist.desktop}
%{_datadir}/icons/hicolor/*/apps/{designer*,linguist*}
%{_docdir}/qt4/qch/{designer.qch,linguist.qch}
%{_prefix}/src/{corelib/,declarative/,gui/,script/}
%{_qt4_prefix}/examples/
%changelog
* Thu Dec 12 2019 shenyangyang<shenyangyang4@huawei.com> - 1:4.8.7-44
- Type:enhancement
- ID:NA
- SUG:NA
- DESC:strenthen spec file
* Wed Oct 30 2019 lirui<lirui130@huawei.com> - 1:4.8.7-43
- Type:cves
- ID:CVE-2018-19871
- SUG:restart
- DESC:fix CVE-2018-19871
* Wed Aug 14 2019 lingsheng<lingsheng@huawei.com> - 1:4.8.7-42
- Type:cves
- ID:CVE-2018-19872
- SUG:restart
- DESC:fix CVE-2018-19872
* Tue May 07 2019 yuejiayan<yuejiayan@huawei.com> - 1:4.8.7-41
- Type:cves
- ID: CVE-2018-19869
- SUG:NA
- DESC:fix CVE-2018-19869
* Thu Apr 10 2019 openEuler Buildteam <buildteam@openeuler.org> - 1:4.8.7-40
- Package init

8
qtconfig.desktop Normal file
View File

@ -0,0 +1,8 @@
[Desktop Entry]
Name=Qt4 Config
Comment=Configure Qt4 behavior, styles, fonts
Exec=qtconfig-qt4
Icon=qt4-logo
Terminal=false
Type=Application
Categories=Qt;Settings;

8
qtdemo.desktop Normal file
View File

@ -0,0 +1,8 @@
[Desktop Entry]
Name=Qt4 Demo
Comment=Show Qt4 demos and programming examples
Exec=qtdemo-qt4
Icon=qt4-logo
Terminal=false
Type=Application
Categories=Qt;Development;