libraries/qt4: Added (legacy Qt version).
Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
This commit is contained in:
parent
599e1f6f57
commit
ed95dbc32b
|
@ -0,0 +1,11 @@
|
|||
qt4 (a C++ graphical user interface toolkit, legacy version)
|
||||
|
||||
Qt is a complete and well-developed object-oriented framework for
|
||||
developing graphical user interface (GUI) applications using C++.
|
||||
|
||||
This is an older 'legacy' version of Qt, only intended to support
|
||||
older applications that have not yet been ported to Qt5. Don't use
|
||||
this for developing new code.
|
||||
|
||||
If you're a SBo maintainer working on a script that requires qt4, see
|
||||
README_SBo.txt for some helpful hints.
|
|
@ -0,0 +1,42 @@
|
|||
There are a few deliberate differences between this qt4 and the one
|
||||
that was in Slackware 14.2 as (as "qt"):
|
||||
|
||||
- The install prefix is /usr/lib(64)?/qt4 (note that 14.2 used
|
||||
/usr/lib(64)?/qt). This is because qt4 is no longer a core
|
||||
Slackware package, and to avoid confusing users (and scripts).
|
||||
|
||||
- The profile.d scripts are installed non-executable, and are intended
|
||||
to stay that way. This is to avoid conflicts between our qt4 and
|
||||
Slackware's qt5.
|
||||
|
||||
What this means for users of SBo builds that use qt4: Nothing
|
||||
special. You just install qt4 when you need it as a dependency.
|
||||
It lives in its own directory, and it won't conflict with qt5.
|
||||
|
||||
What it means for the maintainers of SBo builds that use qt4:
|
||||
|
||||
1. If your script uses cmake, you might not have to change anything.
|
||||
cmake is smart enough to find Qt4 without help from the environment.
|
||||
For instance, quazip-qt4 didn't need any changes.
|
||||
|
||||
2. Your script should "source /etc/profile.d/qt4.sh" before it
|
||||
compiles anything. I recommend putting it right after the "set -e"
|
||||
line in the template. An example script that uses this is kardsgt.
|
||||
|
||||
3. If your script refers to any files in $PKG/usr/lib$LIBDIRSUFFIX/qt,
|
||||
you'll have to change the 'qt' part to 'qt4'. The best way to do
|
||||
this is to use the $QT4DIR variable: it's defined in qt4.sh (which
|
||||
you already sourced), and in the unlikely event the qt4 directory
|
||||
ever changes again, your script won't break. An example of a script
|
||||
that needed this change is qt-assistant-compat.
|
||||
|
||||
Note: if you're writing a new script and getting errors about qt4 not
|
||||
being installed, it might mean that your script depends on qt4... but
|
||||
before you decide that's the case, check and see if whatever you're
|
||||
building offers an option (configure flag, cmake variable, whatever)
|
||||
to use qt5. Also it's worth checking to see if someone has already
|
||||
ported it to qt5 (check upstream's git repo, packages.debian.org, the
|
||||
Arch AUR, the Gentoo ebuild repo, etc). qt4 is outdated and EOLed, and
|
||||
will eventually have to go away... not in Slackware 15, but at some
|
||||
point, gcc probably will change enough to make qt4 unbuildable on some
|
||||
future Slackware version.
|
|
@ -0,0 +1,9 @@
|
|||
if [ -x /usr/bin/update-desktop-database ]; then
|
||||
/usr/bin/update-desktop-database /usr/share/applications >/dev/null 2>&1
|
||||
fi
|
||||
|
||||
if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
|
||||
if [ -x /usr/bin/gtk-update-icon-cache ]; then
|
||||
/usr/bin/gtk-update-icon-cache usr/share/icons/hicolor >/dev/null 2>&1
|
||||
fi
|
||||
fi
|
|
@ -0,0 +1,56 @@
|
|||
--- ./src/network/ssl/qsslsocket_openssl_symbols.cpp.orig 2019-11-09 12:55:26.646752874 -0600
|
||||
+++ ./src/network/ssl/qsslsocket_openssl_symbols.cpp 2019-11-09 12:58:22.032754751 -0600
|
||||
@@ -253,7 +253,9 @@
|
||||
#ifndef OPENSSL_NO_SSL2
|
||||
DEFINEFUNC(const SSL_METHOD *, SSLv2_client_method, DUMMYARG, DUMMYARG, return 0, return)
|
||||
#endif
|
||||
+#ifndef OPENSSL_NO_SSL3
|
||||
DEFINEFUNC(const SSL_METHOD *, SSLv3_client_method, DUMMYARG, DUMMYARG, return 0, return)
|
||||
+#endif
|
||||
#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||
DEFINEFUNC(const SSL_METHOD *, SSLv23_client_method, DUMMYARG, DUMMYARG, return 0, return)
|
||||
#else
|
||||
@@ -263,7 +265,9 @@
|
||||
#ifndef OPENSSL_NO_SSL2
|
||||
DEFINEFUNC(const SSL_METHOD *, SSLv2_server_method, DUMMYARG, DUMMYARG, return 0, return)
|
||||
#endif
|
||||
+#ifndef OPENSSL_NO_SSL3
|
||||
DEFINEFUNC(const SSL_METHOD *, SSLv3_server_method, DUMMYARG, DUMMYARG, return 0, return)
|
||||
+#endif
|
||||
#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||
DEFINEFUNC(const SSL_METHOD *, SSLv23_server_method, DUMMYARG, DUMMYARG, return 0, return)
|
||||
#else
|
||||
@@ -272,7 +276,9 @@
|
||||
DEFINEFUNC(const SSL_METHOD *, TLSv1_server_method, DUMMYARG, DUMMYARG, return 0, return)
|
||||
#else
|
||||
DEFINEFUNC(SSL_METHOD *, SSLv2_client_method, DUMMYARG, DUMMYARG, return 0, return)
|
||||
+#ifndef OPENSSL_NO_SSL3
|
||||
DEFINEFUNC(SSL_METHOD *, SSLv3_client_method, DUMMYARG, DUMMYARG, return 0, return)
|
||||
+#endif
|
||||
DEFINEFUNC(SSL_METHOD *, SSLv23_client_method, DUMMYARG, DUMMYARG, return 0, return)
|
||||
DEFINEFUNC(SSL_METHOD *, TLSv1_client_method, DUMMYARG, DUMMYARG, return 0, return)
|
||||
DEFINEFUNC(SSL_METHOD *, SSLv2_server_method, DUMMYARG, DUMMYARG, return 0, return)
|
||||
@@ -756,7 +762,9 @@
|
||||
RESOLVEFUNC(SSL_shutdown, 173, libs.first )
|
||||
RESOLVEFUNC(SSL_write, 188, libs.first )
|
||||
RESOLVEFUNC(SSLv2_client_method, 192, libs.first )
|
||||
+#ifndef OPENSSL_NO_SSL3
|
||||
RESOLVEFUNC(SSLv3_client_method, 195, libs.first )
|
||||
+#endif
|
||||
RESOLVEFUNC(SSLv23_client_method, 189, libs.first )
|
||||
RESOLVEFUNC(TLSv1_client_method, 198, libs.first )
|
||||
RESOLVEFUNC(SSLv2_server_method, 194, libs.first )
|
||||
--- ./src/network/ssl/qsslsocket_openssl.cpp.orig 2019-11-09 12:55:01.605752606 -0600
|
||||
+++ ./src/network/ssl/qsslsocket_openssl.cpp 2019-11-09 12:55:26.632752874 -0600
|
||||
@@ -273,7 +273,11 @@
|
||||
#endif
|
||||
break;
|
||||
case QSsl::SslV3:
|
||||
+#ifndef OPENSSL_NO_SSL3
|
||||
ctx = q_SSL_CTX_new(client ? q_SSLv3_client_method() : q_SSLv3_server_method());
|
||||
+#else
|
||||
+ ctx = 0; // SSL 3 not supported by the system, but chosen deliberately -> error
|
||||
+#endif
|
||||
break;
|
||||
case QSsl::SecureProtocols: // SslV2 will be disabled below
|
||||
case QSsl::TlsV1SslV3: // SslV2 will be disabled below
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,238 @@
|
|||
diff -up qt-everywhere-opensource-src-4.8.4/src/gui/painting/qcups.cpp.cupsEnumDests qt-everywhere-opensource-src-4.8.4/src/gui/painting/qcups.cpp
|
||||
--- qt-everywhere-opensource-src-4.8.4/src/gui/painting/qcups.cpp.cupsEnumDests 2012-11-23 10:09:53.000000000 +0000
|
||||
+++ qt-everywhere-opensource-src-4.8.4/src/gui/painting/qcups.cpp 2013-07-03 15:30:06.232936976 +0100
|
||||
@@ -50,9 +50,19 @@
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
+typedef int (*CupsEnumDests)(unsigned flags, int msec, int *cancel,
|
||||
+ cups_ptype_t type, cups_ptype_t mask,
|
||||
+ cups_dest_cb_t cb, void *user_data);
|
||||
+typedef http_t * (*CupsConnectDest)(cups_dest_t *dest, unsigned flags,
|
||||
+ int msec, int *cancel,
|
||||
+ char *resource, size_t resourcesize,
|
||||
+ cups_dest_cb_t cb, void *user_data);
|
||||
+typedef int (*CupsCopyDest)(cups_dest_t *dest, int num_dests,
|
||||
+ cups_dest_t **dests);
|
||||
typedef int (*CupsGetDests)(cups_dest_t **dests);
|
||||
typedef void (*CupsFreeDests)(int num_dests, cups_dest_t *dests);
|
||||
typedef const char* (*CupsGetPPD)(const char *printer);
|
||||
+typedef const char* (*CupsGetPPD2)(http_t *http, const char *printer);
|
||||
typedef int (*CupsMarkOptions)(ppd_file_t *ppd, int num_options, cups_option_t *options);
|
||||
typedef ppd_file_t* (*PPDOpenFile)(const char *filename);
|
||||
typedef void (*PPDMarkDefaults)(ppd_file_t *ppd);
|
||||
@@ -66,12 +76,24 @@ typedef const char* (*CupsLangEncoding)(
|
||||
typedef int (*CupsAddOption)(const char *name, const char *value, int num_options, cups_option_t **options);
|
||||
typedef int (*CupsTempFd)(char *name, int len);
|
||||
typedef int (*CupsPrintFile)(const char * name, const char * filename, const char * title, int num_options, cups_option_t * options);
|
||||
+typedef int (*CupsPrintFile2)(http_t *http, const char *name, const char *filename, const char *title, int num_options, cups_option_t *options);
|
||||
+
|
||||
+typedef struct
|
||||
+{
|
||||
+ cups_dest_t *printers;
|
||||
+ int num_printers;
|
||||
+} EnumDestsContext;
|
||||
|
||||
static bool cupsLoaded = false;
|
||||
static int qt_cups_num_printers = 0;
|
||||
+static cups_dest_t *qt_cups_printers = 0;
|
||||
+static CupsEnumDests _cupsEnumDests = 0;
|
||||
+static CupsConnectDest _cupsConnectDest = 0;
|
||||
+static CupsCopyDest _cupsCopyDest = 0;
|
||||
static CupsGetDests _cupsGetDests = 0;
|
||||
static CupsFreeDests _cupsFreeDests = 0;
|
||||
static CupsGetPPD _cupsGetPPD = 0;
|
||||
+static CupsGetPPD2 _cupsGetPPD2 = 0;
|
||||
static PPDOpenFile _ppdOpenFile = 0;
|
||||
static PPDMarkDefaults _ppdMarkDefaults = 0;
|
||||
static PPDClose _ppdClose = 0;
|
||||
@@ -84,14 +106,35 @@ static CupsLangEncoding _cupsLangEncodin
|
||||
static CupsAddOption _cupsAddOption = 0;
|
||||
static CupsTempFd _cupsTempFd = 0;
|
||||
static CupsPrintFile _cupsPrintFile = 0;
|
||||
+static CupsPrintFile2 _cupsPrintFile2 = 0;
|
||||
+
|
||||
+static int enum_dest_cb (void *user_data, unsigned flags, cups_dest_t *dest)
|
||||
+{
|
||||
+ EnumDestsContext *context = (EnumDestsContext *) user_data;
|
||||
+
|
||||
+ if ((flags & (CUPS_DEST_FLAGS_UNCONNECTED |
|
||||
+ CUPS_DEST_FLAGS_REMOVED |
|
||||
+ CUPS_DEST_FLAGS_ERROR |
|
||||
+ CUPS_DEST_FLAGS_RESOLVING |
|
||||
+ CUPS_DEST_FLAGS_CONNECTING |
|
||||
+ CUPS_DEST_FLAGS_CANCELED)) == 0)
|
||||
+ context->num_printers = _cupsCopyDest (dest, context->num_printers,
|
||||
+ &context->printers);
|
||||
+
|
||||
+ return 1;
|
||||
+}
|
||||
|
||||
static void resolveCups()
|
||||
{
|
||||
QLibrary cupsLib(QLatin1String("cups"), 2);
|
||||
if(cupsLib.load()) {
|
||||
+ _cupsEnumDests = (CupsEnumDests) cupsLib.resolve("cupsEnumDests");
|
||||
+ _cupsConnectDest = (CupsConnectDest) cupsLib.resolve("cupsConnectDest");
|
||||
+ _cupsCopyDest = (CupsCopyDest) cupsLib.resolve("cupsCopyDest");
|
||||
_cupsGetDests = (CupsGetDests) cupsLib.resolve("cupsGetDests");
|
||||
_cupsFreeDests = (CupsFreeDests) cupsLib.resolve("cupsFreeDests");
|
||||
_cupsGetPPD = (CupsGetPPD) cupsLib.resolve("cupsGetPPD");
|
||||
+ _cupsGetPPD2 = (CupsGetPPD2) cupsLib.resolve("cupsGetPPD2");
|
||||
_cupsLangGet = (CupsLangGet) cupsLib.resolve("cupsLangGet");
|
||||
_cupsLangEncoding = (CupsLangEncoding) cupsLib.resolve("cupsLangEncoding");
|
||||
_ppdOpenFile = (PPDOpenFile) cupsLib.resolve("ppdOpenFile");
|
||||
@@ -104,14 +147,27 @@ static void resolveCups()
|
||||
_cupsAddOption = (CupsAddOption) cupsLib.resolve("cupsAddOption");
|
||||
_cupsTempFd = (CupsTempFd) cupsLib.resolve("cupsTempFd");
|
||||
_cupsPrintFile = (CupsPrintFile) cupsLib.resolve("cupsPrintFile");
|
||||
+ _cupsPrintFile2 = (CupsPrintFile2) cupsLib.resolve("cupsPrintFile2");
|
||||
|
||||
- if (_cupsGetDests && _cupsFreeDests) {
|
||||
- cups_dest_t *printers;
|
||||
+ if (_cupsEnumDests && _cupsCopyDest &&
|
||||
+ _cupsConnectDest && _cupsGetPPD2 &&
|
||||
+ _cupsPrintFile2) {
|
||||
+ EnumDestsContext context;
|
||||
+ context.printers = 0;
|
||||
+ context.num_printers = 0;
|
||||
+ _cupsEnumDests(0, -1, 0, 0, 0,
|
||||
+ enum_dest_cb, &context);
|
||||
+
|
||||
+ qt_cups_printers = context.printers;
|
||||
+ qt_cups_num_printers = context.num_printers;
|
||||
+ } else if (_cupsGetDests && _cupsFreeDests) {
|
||||
+ cups_dest_t *printers;
|
||||
int num_printers = _cupsGetDests(&printers);
|
||||
- if (num_printers)
|
||||
- _cupsFreeDests(num_printers, printers);
|
||||
- qt_cups_num_printers = num_printers;
|
||||
- }
|
||||
+
|
||||
+ if (num_printers)
|
||||
+ _cupsFreeDests(num_printers, printers);
|
||||
+ qt_cups_num_printers = num_printers;
|
||||
+ }
|
||||
}
|
||||
cupsLoaded = true;
|
||||
}
|
||||
@@ -134,7 +190,15 @@ QCUPSSupport::QCUPSSupport()
|
||||
return;
|
||||
|
||||
// Update the available printer count
|
||||
- qt_cups_num_printers = prnCount = _cupsGetDests(&printers);
|
||||
+ if (qt_cups_printers && _cupsCopyDest) {
|
||||
+ int i;
|
||||
+ for (i = 0; i < qt_cups_num_printers; ++i) {
|
||||
+ prnCount = _cupsCopyDest (&qt_cups_printers[i],
|
||||
+ prnCount,
|
||||
+ &printers);
|
||||
+ }
|
||||
+ } else
|
||||
+ qt_cups_num_printers = prnCount = _cupsGetDests(&printers);
|
||||
|
||||
for (int i = 0; i < prnCount; ++i) {
|
||||
if (printers[i].is_default) {
|
||||
@@ -188,7 +252,19 @@ const ppd_file_t* QCUPSSupport::setCurre
|
||||
currPPD = 0;
|
||||
page_sizes = 0;
|
||||
|
||||
- const char *ppdFile = _cupsGetPPD(printers[index].name);
|
||||
+ const char *ppdFile = 0;
|
||||
+ if (_cupsConnectDest && _cupsGetPPD2) {
|
||||
+ char resource[HTTP_MAX_URI];
|
||||
+ http_t *http = _cupsConnectDest (&printers[index], 0, -1, 0,
|
||||
+ resource, sizeof (resource),
|
||||
+ 0, 0);
|
||||
+ if (http) {
|
||||
+ char *name = strrchr (resource, '/');
|
||||
+ if (name)
|
||||
+ ppdFile = _cupsGetPPD2 (http, ++name);
|
||||
+ }
|
||||
+ } else
|
||||
+ ppdFile = _cupsGetPPD(printers[index].name);
|
||||
|
||||
if (!ppdFile)
|
||||
return 0;
|
||||
@@ -343,7 +419,29 @@ bool QCUPSSupport::printerHasPPD(const c
|
||||
{
|
||||
if (!isAvailable())
|
||||
return false;
|
||||
- const char *ppdFile = _cupsGetPPD(printerName);
|
||||
+
|
||||
+ const char *ppdFile = 0;
|
||||
+ if (_cupsConnectDest && _cupsGetPPD2) {
|
||||
+ int i;
|
||||
+ for (i = 0; i < prnCount; ++i)
|
||||
+ if (!strcmp (printers[i].name, printerName))
|
||||
+ break;
|
||||
+
|
||||
+ if (i == prnCount)
|
||||
+ return false;
|
||||
+
|
||||
+ char resource[HTTP_MAX_URI];
|
||||
+ http_t *http = _cupsConnectDest (&printers[i], 0, -1, 0,
|
||||
+ resource, sizeof (resource),
|
||||
+ 0, 0);
|
||||
+ if (http) {
|
||||
+ char *name = strrchr (resource, '/');
|
||||
+ if (name)
|
||||
+ ppdFile = _cupsGetPPD2 (http, ++name);
|
||||
+ }
|
||||
+ } else
|
||||
+ ppdFile = _cupsGetPPD(printerName);
|
||||
+
|
||||
if (ppdFile)
|
||||
unlink(ppdFile);
|
||||
return (ppdFile != 0);
|
||||
@@ -394,6 +492,26 @@ QPair<int, QString> QCUPSSupport::tempFd
|
||||
int QCUPSSupport::printFile(const char * printerName, const char * filename, const char * title,
|
||||
int num_options, cups_option_t * options)
|
||||
{
|
||||
+ if (_cupsConnectDest && _cupsPrintFile2) {
|
||||
+ int i;
|
||||
+ for (i = 0; i < prnCount; ++i)
|
||||
+ if (!strcmp (printers[i].name, printerName))
|
||||
+ break;
|
||||
+
|
||||
+ if (i != prnCount) {
|
||||
+ char resource[HTTP_MAX_URI];
|
||||
+ http_t *http = _cupsConnectDest (&printers[i], 0, -1, 0,
|
||||
+ resource, sizeof (resource),
|
||||
+ 0, 0);
|
||||
+ if (http) {
|
||||
+ char *name = strrchr (resource, '/');
|
||||
+ if (name)
|
||||
+ return _cupsPrintFile2 (http, ++name, filename, title,
|
||||
+ num_options, options);
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
return _cupsPrintFile(printerName, filename, title, num_options, options);
|
||||
}
|
||||
|
||||
diff -up qt-everywhere-opensource-src-4.8.4/src/gui/painting/qcups_p.h.cupsEnumDests qt-everywhere-opensource-src-4.8.4/src/gui/painting/qcups_p.h
|
||||
--- qt-everywhere-opensource-src-4.8.4/src/gui/painting/qcups_p.h.cupsEnumDests 2012-11-23 10:09:53.000000000 +0000
|
||||
+++ qt-everywhere-opensource-src-4.8.4/src/gui/painting/qcups_p.h 2013-07-03 15:27:24.733343017 +0100
|
||||
@@ -92,7 +92,7 @@ public:
|
||||
|
||||
QStringList options() const;
|
||||
|
||||
- static bool printerHasPPD(const char *printerName);
|
||||
+ bool printerHasPPD(const char *printerName);
|
||||
|
||||
QString unicodeString(const char *s);
|
||||
|
||||
diff -up qt-everywhere-opensource-src-4.8.4/src/gui/painting/qprinter.cpp.cupsEnumDests qt-everywhere-opensource-src-4.8.4/src/gui/painting/qprinter.cpp
|
||||
--- qt-everywhere-opensource-src-4.8.4/src/gui/painting/qprinter.cpp.cupsEnumDests 2013-07-03 15:27:24.531342277 +0100
|
||||
+++ qt-everywhere-opensource-src-4.8.4/src/gui/painting/qprinter.cpp 2013-07-03 15:27:24.733343017 +0100
|
||||
@@ -844,7 +844,7 @@ void QPrinter::setPrinterName(const QStr
|
||||
if(d->use_default_engine
|
||||
&& d->outputFormat == QPrinter::NativeFormat) {
|
||||
if (QCUPSSupport::cupsVersion() >= 10200
|
||||
- && QCUPSSupport::printerHasPPD(name.toLocal8Bit().constData()))
|
||||
+ && QCUPSSupport().printerHasPPD(name.toLocal8Bit().constData()))
|
||||
setOutputFormat(QPrinter::PdfFormat);
|
||||
else
|
||||
setOutputFormat(QPrinter::PostScriptFormat);
|
|
@ -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
|
||||
}
|
||||
|
||||
/*!
|
|
@ -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);
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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);
|
|
@ -0,0 +1,36 @@
|
|||
diff -up qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++-32/qmake.conf.multilib qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++-32/qmake.conf
|
||||
--- qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++-32/qmake.conf.multilib 2011-05-23 12:26:21.000000000 +0200
|
||||
+++ qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++-32/qmake.conf 2011-05-25 13:39:38.789054074 +0200
|
||||
@@ -12,6 +12,8 @@ QMAKE_INCREMENTAL_STYLE = sublib
|
||||
QMAKE_CFLAGS = -m32
|
||||
QMAKE_LFLAGS = -m32
|
||||
|
||||
+QMAKE_CFLAGS_RELEASE += -O2
|
||||
+
|
||||
include(../common/linux.conf)
|
||||
include(../common/gcc-base-unix.conf)
|
||||
include(../common/g++-unix.conf)
|
||||
diff -up qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++-64/qmake.conf.multilib qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++-64/qmake.conf
|
||||
--- qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++-64/qmake.conf.multilib 2011-05-23 12:26:21.000000000 +0200
|
||||
+++ qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++-64/qmake.conf 2011-05-25 13:39:47.460747770 +0200
|
||||
@@ -15,6 +15,8 @@ QMAKE_INCREMENTAL_STYLE = sublib
|
||||
QMAKE_CFLAGS = -m64
|
||||
QMAKE_LFLAGS = -m64
|
||||
|
||||
+QMAKE_CFLAGS_RELEASE += -O2
|
||||
+
|
||||
include(../common/linux.conf)
|
||||
include(../common/gcc-base-unix.conf)
|
||||
include(../common/g++-unix.conf)
|
||||
diff -up qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++/qmake.conf.multilib qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++/qmake.conf
|
||||
--- qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++/qmake.conf.multilib 2011-05-23 12:26:21.000000000 +0200
|
||||
+++ qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++/qmake.conf 2011-05-25 13:39:26.630088814 +0200
|
||||
@@ -9,6 +9,8 @@ CONFIG += qt warn_on release increment
|
||||
QT += core gui
|
||||
QMAKE_INCREMENTAL_STYLE = sublib
|
||||
|
||||
+QMAKE_CFLAGS_RELEASE += -O2
|
||||
+
|
||||
include(../common/linux.conf)
|
||||
include(../common/gcc-base-unix.conf)
|
||||
include(../common/g++-unix.conf)
|
|
@ -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;
|
|
@ -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);
|
||||
|
|
@ -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
|
||||
-
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
|
@ -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)) {
|
|
@ -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());
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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}
|
|
@ -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 window’s position on the root may have changed, even
|
||||
+ // though the event reports that the window’s position in its
|
||||
+ // parent is unchanged because the window may have been reparented.
|
||||
+
|
||||
int x, y;
|
||||
Window child;
|
||||
XTranslateCoordinates(X11->display, internalWinId(),
|
|
@ -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();
|
|
@ -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);
|
||||
}
|
|
@ -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
|
|
@ -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);
|
|
@ -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,
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
||||
|
|
@ -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;
|
|
@ -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()
|
|
@ -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();
|
|
@ -0,0 +1,12 @@
|
|||
--- a/src/gui/kernel/qclipboard_x11.cpp.sav 2014-04-25 09:52:03.855693228 +0200
|
||||
+++ a/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();
|
||||
|
|
@ -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
|
|
@ -0,0 +1,351 @@
|
|||
diff -ur qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/fulltextsearch.pri qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/fulltextsearch.pri
|
||||
--- qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/fulltextsearch.pri 2014-04-10 20:37:12.000000000 +0200
|
||||
+++ qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/fulltextsearch.pri 2014-10-26 03:33:45.000000000 +0100
|
||||
@@ -1,125 +1,7 @@
|
||||
-DEFINES += _BUILD_FOR_QT_ LUCENE_DISABLE_MEMTRACKING
|
||||
-win32:DEFINES += _CRT_SECURE_NO_DEPRECATE _MT
|
||||
-
|
||||
-CLUCENEDIR = ../../../../src/3rdparty/clucene/src/CLucene
|
||||
-
|
||||
-INCLUDEPATH += . .. \
|
||||
- $$CLUCENEDIR \
|
||||
- $$CLUCENEDIR/../ \
|
||||
- $$CLUCENEDIR/analysis \
|
||||
- $$CLUCENEDIR/analysis/standard \
|
||||
- $$CLUCENEDIR/config \
|
||||
- $$CLUCENEDIR/debug \
|
||||
- $$CLUCENEDIR/document \
|
||||
- $$CLUCENEDIR/index \
|
||||
- $$CLUCENEDIR/queryParser \
|
||||
- $$CLUCENEDIR/search \
|
||||
- $$CLUCENEDIR/store \
|
||||
- $$CLUCENEDIR/util
|
||||
-
|
||||
-
|
||||
-SOURCES += $$CLUCENEDIR/StdHeader.cpp \
|
||||
- $$CLUCENEDIR/analysis/AnalysisHeader.cpp \
|
||||
- $$CLUCENEDIR/analysis/Analyzers.cpp \
|
||||
- $$CLUCENEDIR/config/gunichartables.cpp \
|
||||
- $$CLUCENEDIR/config/repl_lltot.cpp \
|
||||
- $$CLUCENEDIR/config/repl_tcscasecmp.cpp \
|
||||
- $$CLUCENEDIR/config/repl_tcslwr.cpp \
|
||||
- $$CLUCENEDIR/config/repl_tcstod.cpp \
|
||||
- $$CLUCENEDIR/config/repl_tcstoll.cpp \
|
||||
- $$CLUCENEDIR/config/repl_tprintf.cpp \
|
||||
- $$CLUCENEDIR/config/threads.cpp \
|
||||
- $$CLUCENEDIR/config/utf8.cpp \
|
||||
- $$CLUCENEDIR/debug/condition.cpp \
|
||||
- $$CLUCENEDIR/debug/error.cpp \
|
||||
- $$CLUCENEDIR/debug/memtracking.cpp \
|
||||
- $$CLUCENEDIR/document/DateField.cpp \
|
||||
- $$CLUCENEDIR/document/Document.cpp \
|
||||
- $$CLUCENEDIR/document/Field.cpp \
|
||||
- $$CLUCENEDIR/index/CompoundFile.cpp \
|
||||
- $$CLUCENEDIR/index/DocumentWriter.cpp \
|
||||
- $$CLUCENEDIR/index/FieldInfos.cpp \
|
||||
- $$CLUCENEDIR/index/FieldsReader.cpp \
|
||||
- $$CLUCENEDIR/index/FieldsWriter.cpp \
|
||||
- $$CLUCENEDIR/index/IndexModifier.cpp \
|
||||
- $$CLUCENEDIR/index/IndexReader.cpp \
|
||||
- $$CLUCENEDIR/index/IndexWriter.cpp \
|
||||
- $$CLUCENEDIR/index/MultiReader.cpp \
|
||||
- $$CLUCENEDIR/index/SegmentInfos.cpp \
|
||||
- $$CLUCENEDIR/index/SegmentMergeInfo.cpp \
|
||||
- $$CLUCENEDIR/index/SegmentMergeQueue.cpp \
|
||||
- $$CLUCENEDIR/index/SegmentMerger.cpp \
|
||||
- $$CLUCENEDIR/index/SegmentReader.cpp \
|
||||
- $$CLUCENEDIR/index/SegmentTermDocs.cpp \
|
||||
- $$CLUCENEDIR/index/SegmentTermEnum.cpp \
|
||||
- $$CLUCENEDIR/index/SegmentTermPositions.cpp \
|
||||
- $$CLUCENEDIR/index/SegmentTermVector.cpp \
|
||||
- $$CLUCENEDIR/index/Term.cpp \
|
||||
- $$CLUCENEDIR/index/TermInfo.cpp \
|
||||
- $$CLUCENEDIR/index/TermInfosReader.cpp \
|
||||
- $$CLUCENEDIR/index/TermInfosWriter.cpp \
|
||||
- $$CLUCENEDIR/index/TermVectorReader.cpp \
|
||||
- $$CLUCENEDIR/index/TermVectorWriter.cpp \
|
||||
- $$CLUCENEDIR/queryParser/Lexer.cpp \
|
||||
- $$CLUCENEDIR/queryParser/MultiFieldQueryParser.cpp \
|
||||
- $$CLUCENEDIR/queryParser/QueryParser.cpp \
|
||||
- $$CLUCENEDIR/queryParser/QueryParserBase.cpp \
|
||||
- $$CLUCENEDIR/queryParser/QueryToken.cpp \
|
||||
- $$CLUCENEDIR/queryParser/TokenList.cpp \
|
||||
- $$CLUCENEDIR/search/BooleanQuery.cpp \
|
||||
- $$CLUCENEDIR/search/BooleanScorer.cpp \
|
||||
- $$CLUCENEDIR/search/CachingWrapperFilter.cpp \
|
||||
- $$CLUCENEDIR/search/ChainedFilter.cpp \
|
||||
- $$CLUCENEDIR/search/ConjunctionScorer.cpp \
|
||||
- $$CLUCENEDIR/search/DateFilter.cpp \
|
||||
- $$CLUCENEDIR/search/ExactPhraseScorer.cpp \
|
||||
- $$CLUCENEDIR/search/Explanation.cpp \
|
||||
- $$CLUCENEDIR/search/FieldCache.cpp \
|
||||
- $$CLUCENEDIR/search/FieldCacheImpl.cpp \
|
||||
- $$CLUCENEDIR/search/FieldDocSortedHitQueue.cpp \
|
||||
- $$CLUCENEDIR/search/FieldSortedHitQueue.cpp \
|
||||
- $$CLUCENEDIR/search/FilteredTermEnum.cpp \
|
||||
- $$CLUCENEDIR/search/FuzzyQuery.cpp \
|
||||
- $$CLUCENEDIR/search/HitQueue.cpp \
|
||||
- $$CLUCENEDIR/search/Hits.cpp \
|
||||
- $$CLUCENEDIR/search/IndexSearcher.cpp \
|
||||
- $$CLUCENEDIR/search/MultiSearcher.cpp \
|
||||
- $$CLUCENEDIR/search/MultiTermQuery.cpp \
|
||||
- $$CLUCENEDIR/search/PhrasePositions.cpp \
|
||||
- $$CLUCENEDIR/search/PhraseQuery.cpp \
|
||||
- $$CLUCENEDIR/search/PhraseScorer.cpp \
|
||||
- $$CLUCENEDIR/search/PrefixQuery.cpp \
|
||||
- $$CLUCENEDIR/search/QueryFilter.cpp \
|
||||
- $$CLUCENEDIR/search/RangeFilter.cpp \
|
||||
- $$CLUCENEDIR/search/RangeQuery.cpp \
|
||||
- $$CLUCENEDIR/search/SearchHeader.cpp \
|
||||
- $$CLUCENEDIR/search/Similarity.cpp \
|
||||
- $$CLUCENEDIR/search/SloppyPhraseScorer.cpp \
|
||||
- $$CLUCENEDIR/search/Sort.cpp \
|
||||
- $$CLUCENEDIR/search/TermQuery.cpp \
|
||||
- $$CLUCENEDIR/search/TermScorer.cpp \
|
||||
- $$CLUCENEDIR/search/WildcardQuery.cpp \
|
||||
- $$CLUCENEDIR/search/WildcardTermEnum.cpp \
|
||||
- $$CLUCENEDIR/store/FSDirectory.cpp \
|
||||
- $$CLUCENEDIR/store/IndexInput.cpp \
|
||||
- $$CLUCENEDIR/store/IndexOutput.cpp \
|
||||
- $$CLUCENEDIR/store/Lock.cpp \
|
||||
- $$CLUCENEDIR/store/MMapInput.cpp \
|
||||
- $$CLUCENEDIR/store/RAMDirectory.cpp \
|
||||
- $$CLUCENEDIR/store/TransactionalRAMDirectory.cpp \
|
||||
- $$CLUCENEDIR/util/BitSet.cpp \
|
||||
- $$CLUCENEDIR/util/Equators.cpp \
|
||||
- $$CLUCENEDIR/util/FastCharStream.cpp \
|
||||
- $$CLUCENEDIR/util/fileinputstream.cpp \
|
||||
- $$CLUCENEDIR/util/Misc.cpp \
|
||||
- $$CLUCENEDIR/util/Reader.cpp \
|
||||
- $$CLUCENEDIR/util/StringBuffer.cpp \
|
||||
- $$CLUCENEDIR/util/StringIntern.cpp \
|
||||
- $$CLUCENEDIR/util/ThreadLocal.cpp \
|
||||
- $$CLUCENEDIR/analysis/standard/StandardAnalyzer.cpp \
|
||||
- $$CLUCENEDIR/analysis/standard/StandardFilter.cpp \
|
||||
- $$CLUCENEDIR/analysis/standard/StandardTokenizer.cpp
|
||||
|
||||
+INCLUDEPATH += /usr/include/clucene09 $$[QT_INSTALL_LIBS]/clucene09 $$[QT_INSTALL_LIBS]
|
||||
+LIBS += -L$$[QT_INSTALL_LIBS]/clucene09 -lclucene
|
||||
+#DEFINES += LUCENE_ENABLE_REFCOUNT (must be set at CLucene build time!)
|
||||
|
||||
#Header files
|
||||
HEADERS += qclucene_global_p.h \
|
||||
diff -ur qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qclucene-config_p.h qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qclucene-config_p.h
|
||||
--- qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qclucene-config_p.h 2014-04-10 20:37:12.000000000 +0200
|
||||
+++ qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qclucene-config_p.h 2014-10-26 02:28:54.000000000 +0100
|
||||
@@ -15,6 +15,8 @@
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
+#error This header must not be included when building against system CLucene.
|
||||
+
|
||||
#ifndef QCLUCENE_CONFIG_P_H
|
||||
#define QCLUCENE_CONFIG_P_H
|
||||
|
||||
diff -ur qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qclucene_global_p.h qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qclucene_global_p.h
|
||||
--- qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qclucene_global_p.h 2014-04-10 20:37:12.000000000 +0200
|
||||
+++ qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qclucene_global_p.h 2014-10-26 02:31:54.000000000 +0100
|
||||
@@ -29,20 +29,10 @@
|
||||
// We mean it.
|
||||
//
|
||||
|
||||
-#if !defined(_MSC_VER)
|
||||
-# include "qclucene-config_p.h"
|
||||
-#endif
|
||||
-
|
||||
#include <QtCore/QChar>
|
||||
#include <QtCore/QString>
|
||||
|
||||
-#if !defined(_MSC_VER) && !defined(__MINGW32__) && defined(_CL_HAVE_WCHAR_H) && defined(_CL_HAVE_WCHAR_T)
|
||||
-# if !defined(TCHAR)
|
||||
-# define TCHAR wchar_t
|
||||
-# endif
|
||||
-#else
|
||||
-# include <windows.h>
|
||||
-#endif
|
||||
+#include <CLucene/StdHeader.h>
|
||||
|
||||
QT_BEGIN_HEADER
|
||||
|
||||
@@ -56,52 +46,6 @@
|
||||
# define QHELP_EXPORT Q_DECL_IMPORT
|
||||
#endif
|
||||
|
||||
-//
|
||||
-// W A R N I N G
|
||||
-// -------------
|
||||
-//
|
||||
-// adjustments here, need to be done in
|
||||
-// QTDIR/src/3rdparty/clucene/src/CLucene/StdHeader.h as well
|
||||
-//
|
||||
-#if defined(_LUCENE_DONTIMPLEMENT_NS_MACROS)
|
||||
-
|
||||
-#elif !defined(DISABLE_NAMESPACE)
|
||||
-# ifdef QT_NAMESPACE
|
||||
-# define CL_NS_DEF(sub) namespace QT_NAMESPACE { namespace lucene{ namespace sub{
|
||||
-# define CL_NS_DEF2(sub,sub2) namespace QT_NAMESPACE { namespace lucene{ namespace sub{ namespace sub2 {
|
||||
-
|
||||
-# define CL_NS_END }}}
|
||||
-# define CL_NS_END2 }}}}
|
||||
-
|
||||
-# define CL_NS_USE(sub) using namespace QT_NAMESPACE::lucene::sub;
|
||||
-# define CL_NS_USE2(sub,sub2) using namespace QT_NAMESPACE::lucene::sub::sub2;
|
||||
-
|
||||
-# define CL_NS(sub) QT_NAMESPACE::lucene::sub
|
||||
-# define CL_NS2(sub,sub2) QT_NAMESPACE::lucene::sub::sub2
|
||||
-# else
|
||||
-# define CL_NS_DEF(sub) namespace lucene{ namespace sub{
|
||||
-# define CL_NS_DEF2(sub,sub2) namespace lucene{ namespace sub{ namespace sub2 {
|
||||
-
|
||||
-# define CL_NS_END }}
|
||||
-# define CL_NS_END2 }}}
|
||||
-
|
||||
-# define CL_NS_USE(sub) using namespace lucene::sub;
|
||||
-# define CL_NS_USE2(sub,sub2) using namespace lucene::sub::sub2;
|
||||
-
|
||||
-# define CL_NS(sub) lucene::sub
|
||||
-# define CL_NS2(sub,sub2) lucene::sub::sub2
|
||||
-# endif
|
||||
-#else
|
||||
-# define CL_NS_DEF(sub)
|
||||
-# define CL_NS_DEF2(sub, sub2)
|
||||
-# define CL_NS_END
|
||||
-# define CL_NS_END2
|
||||
-# define CL_NS_USE(sub)
|
||||
-# define CL_NS_USE2(sub,sub2)
|
||||
-# define CL_NS(sub)
|
||||
-# define CL_NS2(sub,sub2)
|
||||
-#endif
|
||||
-
|
||||
namespace {
|
||||
TCHAR* QStringToTChar(const QString &str)
|
||||
{
|
||||
diff -ur qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qindexreader.cpp qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qindexreader.cpp
|
||||
--- qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qindexreader.cpp 2014-04-10 20:37:12.000000000 +0200
|
||||
+++ qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qindexreader.cpp 2014-10-26 02:48:02.000000000 +0100
|
||||
@@ -18,6 +18,8 @@
|
||||
#include "qindexreader_p.h"
|
||||
#include "qclucene_global_p.h"
|
||||
|
||||
+#include <QtCore/QDir>
|
||||
+
|
||||
#include <CLucene.h>
|
||||
#include <CLucene/index/IndexReader.h>
|
||||
|
||||
@@ -59,13 +61,13 @@
|
||||
{
|
||||
using namespace lucene::index;
|
||||
|
||||
- return IndexReader::isLuceneFile(filename);
|
||||
+ return IndexReader::isLuceneFile(filename.toLocal8Bit().constData());
|
||||
}
|
||||
|
||||
bool QCLuceneIndexReader::indexExists(const QString &directory)
|
||||
{
|
||||
using namespace lucene::index;
|
||||
- return IndexReader::indexExists(directory);
|
||||
+ return IndexReader::indexExists(directory.toLocal8Bit().constData());
|
||||
}
|
||||
|
||||
QCLuceneIndexReader QCLuceneIndexReader::open(const QString &path)
|
||||
@@ -73,7 +75,7 @@
|
||||
using namespace lucene::index;
|
||||
|
||||
QCLuceneIndexReader indexReader;
|
||||
- indexReader.d->reader = IndexReader::open(path);
|
||||
+ indexReader.d->reader = IndexReader::open(path.toLocal8Bit().constData());
|
||||
|
||||
return indexReader;
|
||||
}
|
||||
@@ -81,25 +83,29 @@
|
||||
void QCLuceneIndexReader::unlock(const QString &path)
|
||||
{
|
||||
using namespace lucene::index;
|
||||
- IndexReader::unlock(path);
|
||||
+ IndexReader::unlock(path.toLocal8Bit().constData());
|
||||
}
|
||||
|
||||
bool QCLuceneIndexReader::isLocked(const QString &directory)
|
||||
{
|
||||
+ // The system CLucene fails here if the directory does not exist yet, unlike
|
||||
+ // the bundled one. Work around that.
|
||||
+ QDir::current().mkpath(directory);
|
||||
+
|
||||
using namespace lucene::index;
|
||||
- return IndexReader::isLocked(directory);
|
||||
+ return IndexReader::isLocked(directory.toLocal8Bit().constData());
|
||||
}
|
||||
|
||||
quint64 QCLuceneIndexReader::lastModified(const QString &directory)
|
||||
{
|
||||
using namespace lucene::index;
|
||||
- return quint64(IndexReader::lastModified(directory));
|
||||
+ return quint64(IndexReader::lastModified(directory.toLocal8Bit().constData()));
|
||||
}
|
||||
|
||||
qint64 QCLuceneIndexReader::getCurrentVersion(const QString &directory)
|
||||
{
|
||||
using namespace lucene::index;
|
||||
- return qint64(IndexReader::getCurrentVersion(directory));
|
||||
+ return qint64(IndexReader::getCurrentVersion(directory.toLocal8Bit().constData()));
|
||||
}
|
||||
|
||||
void QCLuceneIndexReader::close()
|
||||
@@ -155,7 +161,7 @@
|
||||
void QCLuceneIndexReader::setNorm(qint32 doc, const QString &field, qreal value)
|
||||
{
|
||||
TCHAR *fieldName = QStringToTChar(field);
|
||||
- d->reader->setNorm(int32_t(doc), fieldName, qreal(value));
|
||||
+ d->reader->setNorm(int32_t(doc), fieldName, (float_t)value);
|
||||
delete [] fieldName;
|
||||
}
|
||||
|
||||
diff -ur qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qindexwriter.cpp qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qindexwriter.cpp
|
||||
--- qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qindexwriter.cpp 2014-04-10 20:37:12.000000000 +0200
|
||||
+++ qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qindexwriter.cpp 2014-10-26 02:48:27.000000000 +0100
|
||||
@@ -18,6 +18,8 @@
|
||||
#include "qindexwriter_p.h"
|
||||
#include "qindexreader_p.h"
|
||||
|
||||
+#include <QtCore/QDir>
|
||||
+
|
||||
#include <CLucene.h>
|
||||
#include <CLucene/index/IndexWriter.h>
|
||||
|
||||
@@ -50,7 +52,12 @@
|
||||
: d(new QCLuceneIndexWriterPrivate())
|
||||
, analyzer(analyzer)
|
||||
{
|
||||
- d->writer = new lucene::index::IndexWriter(path,
|
||||
+ // The system CLucene cannot create directories recursively, so do it here.
|
||||
+ // Ignore failure: If it failed, we will get an error from CLucene anyway.
|
||||
+ if (create)
|
||||
+ QDir::current().mkpath(path);
|
||||
+
|
||||
+ d->writer = new lucene::index::IndexWriter(path.toLocal8Bit().constData(),
|
||||
analyzer.d->analyzer, create, closeDir);
|
||||
}
|
||||
|
||||
diff -ur qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qsearchable.cpp qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qsearchable.cpp
|
||||
--- qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qsearchable.cpp 2014-04-10 20:37:12.000000000 +0200
|
||||
+++ qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qsearchable.cpp 2014-10-26 02:48:44.000000000 +0100
|
||||
@@ -95,7 +95,7 @@
|
||||
: QCLuceneSearcher()
|
||||
{
|
||||
lucene::search::IndexSearcher *searcher =
|
||||
- new lucene::search::IndexSearcher(path);
|
||||
+ new lucene::search::IndexSearcher(path.toLocal8Bit().constData());
|
||||
|
||||
reader.d->reader = searcher->getReader();
|
||||
reader.d->deleteCLuceneIndexReader = false;
|
||||
diff -ur qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/lib.pro qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/lib.pro
|
||||
--- qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/lib.pro 2014-04-10 20:37:12.000000000 +0200
|
||||
+++ qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/lib.pro 2014-10-26 02:27:55.000000000 +0100
|
||||
@@ -43,6 +43,7 @@
|
||||
qhelp_global.cpp
|
||||
|
||||
# access to clucene
|
||||
+INCLUDEPATH += /usr/include/clucene09 $$[QT_INSTALL_LIBS]/clucene09 $$[QT_INSTALL_LIBS]
|
||||
SOURCES += qhelpsearchindexwriter_clucene.cpp \
|
||||
qhelpsearchindexreader_clucene.cpp
|
||||
HEADERS += qhelpenginecore.h \
|
File diff suppressed because it is too large
Load Diff
|
@ -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"
|
||||
|
|
@ -0,0 +1,137 @@
|
|||
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
|
||||
|
||||
diff --git a/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp b/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp
|
||||
index 973cbab..0b27e9d 100644
|
||||
--- a/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp
|
||||
+++ b/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp
|
||||
@@ -63,7 +63,7 @@ QAudioDeviceInfoInternal::QAudioDeviceInfoInternal(QByteArray dev, QAudio::Mode
|
||||
device = QLatin1String(dev);
|
||||
this->mode = mode;
|
||||
|
||||
-#if (SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
|
||||
+#if (SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 14))
|
||||
checkSurround();
|
||||
#endif
|
||||
}
|
||||
@@ -159,13 +159,13 @@ bool QAudioDeviceInfoInternal::open()
|
||||
QList<QByteArray> devices = availableDevices(mode);
|
||||
|
||||
if(dev.compare(QLatin1String("default")) == 0) {
|
||||
-#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
|
||||
+#if(SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 14))
|
||||
dev = QLatin1String(devices.first().constData());
|
||||
#else
|
||||
dev = QLatin1String("hw:0,0");
|
||||
#endif
|
||||
} else {
|
||||
-#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
|
||||
+#if(SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 14))
|
||||
dev = device;
|
||||
#else
|
||||
int idx = 0;
|
||||
@@ -212,13 +212,13 @@ bool QAudioDeviceInfoInternal::testSettings(const QAudioFormat& format) const
|
||||
QList<QByteArray> devices = QAudioDeviceInfoInternal::availableDevices(QAudio::AudioOutput);
|
||||
|
||||
if(dev.compare(QLatin1String("default")) == 0) {
|
||||
-#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
|
||||
+#if(SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 14))
|
||||
dev = QLatin1String(devices.first().constData());
|
||||
#else
|
||||
dev = QLatin1String("hw:0,0");
|
||||
#endif
|
||||
} else {
|
||||
-#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
|
||||
+#if(SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 14))
|
||||
dev = device;
|
||||
#else
|
||||
int idx = 0;
|
||||
@@ -396,7 +396,7 @@ void QAudioDeviceInfoInternal::updateLists()
|
||||
}
|
||||
channelz.append(1);
|
||||
channelz.append(2);
|
||||
-#if (SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
|
||||
+#if (SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 14))
|
||||
if (surround40) channelz.append(4);
|
||||
if (surround51) channelz.append(6);
|
||||
if (surround71) channelz.append(8);
|
||||
@@ -419,7 +419,7 @@ QList<QByteArray> QAudioDeviceInfoInternal::availableDevices(QAudio::Mode mode)
|
||||
QList<QByteArray> devices;
|
||||
QByteArray filter;
|
||||
|
||||
-#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
|
||||
+#if(SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 14))
|
||||
// Create a list of all current audio devices that support mode
|
||||
void **hints, **n;
|
||||
char *name, *descr, *io;
|
||||
@@ -498,7 +498,7 @@ QByteArray QAudioDeviceInfoInternal::defaultOutputDevice()
|
||||
return devices.first();
|
||||
}
|
||||
|
||||
-#if (SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
|
||||
+#if (SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 14))
|
||||
void QAudioDeviceInfoInternal::checkSurround()
|
||||
{
|
||||
QList<QByteArray> devices;
|
||||
diff --git a/src/multimedia/audio/qaudiodeviceinfo_alsa_p.h b/src/multimedia/audio/qaudiodeviceinfo_alsa_p.h
|
||||
index 96febf4..714bf60 100644
|
||||
--- a/src/multimedia/audio/qaudiodeviceinfo_alsa_p.h
|
||||
+++ b/src/multimedia/audio/qaudiodeviceinfo_alsa_p.h
|
||||
@@ -98,7 +98,7 @@ private:
|
||||
bool open();
|
||||
void close();
|
||||
|
||||
-#if (SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
|
||||
+#if (SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 14))
|
||||
void checkSurround();
|
||||
bool surround40;
|
||||
bool surround51;
|
||||
diff --git a/src/multimedia/audio/qaudioinput_alsa_p.cpp b/src/multimedia/audio/qaudioinput_alsa_p.cpp
|
||||
index 339fd9f..abfa4a1 100644
|
||||
--- a/src/multimedia/audio/qaudioinput_alsa_p.cpp
|
||||
+++ b/src/multimedia/audio/qaudioinput_alsa_p.cpp
|
||||
@@ -284,13 +284,13 @@ bool QAudioInputPrivate::open()
|
||||
QString dev = QString(QLatin1String(m_device.constData()));
|
||||
QList<QByteArray> devices = QAudioDeviceInfoInternal::availableDevices(QAudio::AudioInput);
|
||||
if(dev.compare(QLatin1String("default")) == 0) {
|
||||
-#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
|
||||
+#if(SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 14))
|
||||
dev = QLatin1String(devices.first());
|
||||
#else
|
||||
dev = QLatin1String("hw:0,0");
|
||||
#endif
|
||||
} else {
|
||||
-#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
|
||||
+#if(SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 14))
|
||||
dev = QLatin1String(m_device);
|
||||
#else
|
||||
int idx = 0;
|
||||
diff --git a/src/multimedia/audio/qaudiooutput_alsa_p.cpp b/src/multimedia/audio/qaudiooutput_alsa_p.cpp
|
||||
index bf85de5..c29a89f 100644
|
||||
--- a/src/multimedia/audio/qaudiooutput_alsa_p.cpp
|
||||
+++ b/src/multimedia/audio/qaudiooutput_alsa_p.cpp
|
||||
@@ -299,13 +299,13 @@ bool QAudioOutputPrivate::open()
|
||||
QString dev = QString(QLatin1String(m_device.constData()));
|
||||
QList<QByteArray> devices = QAudioDeviceInfoInternal::availableDevices(QAudio::AudioOutput);
|
||||
if(dev.compare(QLatin1String("default")) == 0) {
|
||||
-#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
|
||||
+#if(SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 14))
|
||||
dev = QLatin1String(devices.first());
|
||||
#else
|
||||
dev = QLatin1String("hw:0,0");
|
||||
#endif
|
||||
} else {
|
||||
-#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
|
||||
+#if(SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 14))
|
||||
dev = QLatin1String(m_device);
|
||||
#else
|
||||
int idx = 0;
|
|
@ -0,0 +1,12 @@
|
|||
diff -up qt-everywhere-opensource-src-4.8.7/src/gui/image/qppmhandler.cpp.me qt-everywhere-opensource-src-4.8.7/src/gui/image/qppmhandler.cpp
|
||||
--- qt-everywhere-opensource-src-4.8.7/src/gui/image/qppmhandler.cpp.me 2019-03-22 10:22:16.213800109 +0100
|
||||
+++ qt-everywhere-opensource-src-4.8.7/src/gui/image/qppmhandler.cpp 2019-03-22 10:22:40.721890281 +0100
|
||||
@@ -108,7 +108,7 @@ static bool read_pbm_header(QIODevice *d
|
||||
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;
|
|
@ -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
|
|
@ -0,0 +1,22 @@
|
|||
--- ./src/3rdparty/webkit/Source/WebCore/html/HTMLImageElement.cpp
|
||||
+++ ./src/3rdparty/webkit/Source/WebCore/html/HTMLImageElement.cpp
|
||||
@@ -74,7 +74,7 @@
|
||||
RefPtr<HTMLImageElement> image = adoptRef(new HTMLImageElement(imgTag, document));
|
||||
if (optionalWidth)
|
||||
image->setWidth(*optionalWidth);
|
||||
- if (optionalHeight > 0)
|
||||
+ if (optionalHeight)
|
||||
image->setHeight(*optionalHeight);
|
||||
return image.release();
|
||||
}
|
||||
--- ./tools/linguist/linguist/messagemodel.cpp
|
||||
+++ ./tools/linguist/linguist/messagemodel.cpp
|
||||
@@ -183,7 +183,7 @@
|
||||
if (ContextItem *c = one->findContext(oc->context())) {
|
||||
for (int j = 0; j < oc->messageCount(); ++j) {
|
||||
MessageItem *m = oc->messageItem(j);
|
||||
- if (c->findMessage(m->text(), m->comment()) >= 0)
|
||||
+ if (c->findMessage(m->text(), m->comment()))
|
||||
++inBoth;
|
||||
}
|
||||
}
|
|
@ -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*)
|
||||
+ 9*|8*|7*|6*|5*|4*|3.4*)
|
||||
;;
|
||||
3.3*)
|
||||
canBuildWebKit="no"
|
||||
@@ -8060,7 +8060,7 @@ g++*)
|
||||
3.*)
|
||||
COMPILER_VERSION="3.*"
|
||||
;;
|
||||
- 5*|4.*)
|
||||
+ 9*|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:
|
|
@ -0,0 +1,13 @@
|
|||
diff -up qt-everywhere-opensource-src-4.8.7/src/script/script.pro.gcc8 qt-everywhere-opensource-src-4.8.7/src/script/script.pro
|
||||
--- qt-everywhere-opensource-src-4.8.7/src/script/script.pro.gcc8 2015-05-07 09:14:43.000000000 -0500
|
||||
+++ qt-everywhere-opensource-src-4.8.7/src/script/script.pro 2018-05-19 16:01:24.699926959 -0500
|
||||
@@ -91,6 +91,9 @@ symbian {
|
||||
TARGET.UID3=0x2001B2E1
|
||||
}
|
||||
|
||||
+# hack around gcc8 optimization bug with -O2
|
||||
+QMAKE_CXXFLAGS_RELEASE += -O1
|
||||
+
|
||||
symbian {
|
||||
symbian-abld|symbian-sbsv2 {
|
||||
MMP_RULES += ALWAYS_BUILD_AS_ARM
|
|
@ -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
|
||||
}
|
||||
|
|
@ -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)
|
|
@ -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
|
|
@ -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;
|
|
@ -0,0 +1,40 @@
|
|||
--- a/src/corelib/global/qglobal.h
|
||||
+++ b/src/corelib/global/qglobal.h
|
||||
@@ -2482,22 +2482,32 @@ typedef uint Flags;
|
||||
|
||||
#endif /* Q_NO_TYPESAFE_FLAGS */
|
||||
|
||||
-#if defined(Q_CC_GNU) && !defined(Q_CC_INTEL) && !defined(Q_CC_RVCT)
|
||||
+#if (defined(Q_CC_GNU) && !defined(Q_CC_RVCT))
|
||||
/* make use of typeof-extension */
|
||||
template <typename T>
|
||||
class QForeachContainer {
|
||||
public:
|
||||
- inline QForeachContainer(const T& t) : c(t), brk(0), i(c.begin()), e(c.end()) { }
|
||||
+ inline QForeachContainer(const T& t) : c(t), i(c.begin()), e(c.end()), control(1) { }
|
||||
const T c;
|
||||
int brk;
|
||||
typename T::const_iterator i, e;
|
||||
+ int control;
|
||||
};
|
||||
|
||||
+// Explanation of the control word:
|
||||
+// - it's initialized to 1
|
||||
+// - that means both the inner and outer loops start
|
||||
+// - if there were no breaks, at the end of the inner loop, it's set to 0, which
|
||||
+// causes it to exit (the inner loop is run exactly once)
|
||||
+// - at the end of the outer loop, it's inverted, so it becomes 1 again, allowing
|
||||
+// the outer loop to continue executing
|
||||
+// - if there was a break inside the inner loop, it will exit with control still
|
||||
+// set to 1; in that case, the outer loop will invert it to 0 and will exit too
|
||||
#define Q_FOREACH(variable, container) \
|
||||
for (QForeachContainer<__typeof__(container)> _container_(container); \
|
||||
- !_container_.brk && _container_.i != _container_.e; \
|
||||
- __extension__ ({ ++_container_.brk; ++_container_.i; })) \
|
||||
- for (variable = *_container_.i;; __extension__ ({--_container_.brk; break;}))
|
||||
+ _container_.control && _container_.i != _container_.e; \
|
||||
+ ++_container_.i, _container_.control ^= 1) \
|
||||
+ for (variable = *_container_.i; _container_.control; _container_.control = 0)
|
||||
|
||||
#else
|
||||
|
|
@ -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 \
|
|
@ -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;
|
||||
}
|
|
@ -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;
|
||||
}
|
|
@ -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
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
# we have some commented-out patches here, leave for reference.
|
||||
|
||||
qt-everywhere-opensource-src-4.8.5-uic_multilib.patch
|
||||
qt-everywhere-opensource-src-4.8.5-webcore_debuginfo.patch
|
||||
qt-cupsEnumDests.patch
|
||||
qt-prefer_adwaita_on_gnome.patch
|
||||
#qt-x11-opensource-src-4.5.1-enable_ft_lcdfilter.patch
|
||||
qt-everywhere-opensource-src-4.6.3-glib_eventloop_nullcheck.patch
|
||||
qt-everywhere-opensource-src-4.8.3-qdbusconnection_no_debug.patch
|
||||
qt-everywhere-opensource-src-4.8.1-linguist_qmake-qt4.patch
|
||||
qt-everywhere-opensource-src-4.8.1-qt3support_debuginfo.patch
|
||||
qt-everywhere-opensource-src-4.8.5-qt_plugin_path.patch
|
||||
qt-everywhere-opensource-src-4.8.4-qmake_pkgconfig_requires_private.patch
|
||||
qt-everywhere-opensource-src-4.8.7-firebird.patch
|
||||
qt-everywhere-opensource-src-4.8.7-QT_VERSION_CHECK.patch
|
||||
qt-x11-opensource-src-4.5.0-fix-qatomic-inline-asm.patch
|
||||
qt-everywhere-opensource-src-4.8.5-mysql_config.patch
|
||||
qt-everywhere-opensource-src-4.6.2-cups.patch
|
||||
qt-everywhere-opensource-src-4.8.7-mariadb.patch
|
||||
qt-everywhere-opensource-src-4.8.7-qmake_LFLAGS.patch
|
||||
qt-everywhere-opensource-src-4.8.5-QTBUG-14467.patch
|
||||
qt-everywhere-opensource-src-4.8.0-tp-qtreeview-kpackagekit-crash.patch
|
||||
qt-everywhere-opensource-src-4.8.6-s390.patch
|
||||
qt-everywhere-opensource-src-4.8.3-no_Werror.patch
|
||||
qt-everywhere-opensource-src-4.8.0-QTBUG-22037.patch
|
||||
qt-everywhere-opensource-src-4.8.5-QTBUG-21900.patch
|
||||
qt-everywhere-opensource-src-4.8.5-tds_no_strict_aliasing.patch
|
||||
qt-everywhere-opensource-src-4.8.0-s390-atomic.patch
|
||||
qt-everywhere-opensource-src-4.8.3-icu_no_debug.patch
|
||||
qt-everywhere-opensource-src-4.8.2--assistant-crash.patch
|
||||
qt-everywhere-opensource-src-4.8.5-QTBUG-4862.patch
|
||||
qt-4.8-poll.patch
|
||||
qt-everywhere-opensource-src-4.8.6-QTBUG-37380.patch
|
||||
qt-everywhere-opensource-src-4.8.6-QTBUG-34614.patch
|
||||
qt-everywhere-opensource-src-4.8.6-QTBUG-38585.patch
|
||||
#qt-everywhere-opensource-src-4.8.6-system-clucene.patch
|
||||
qt-everywhere-opensource-src-4.8.7-mips64.patch
|
||||
qt-everywhere-opensource-src-4.8.7-gcc6.patch
|
||||
qt-everywhere-opensource-src-4.8.7-alsa-1.1.patch
|
||||
qt-everywhere-opensource-src-4.8.7-openssl-1.1.patch
|
||||
qt-everywhere-opensource-src-4.8.7-gcc8_qtscript.patch
|
||||
qt-everywhere-opensource-src-4.8.5-qgtkstyle_disable_gtk_theme_check.patch
|
||||
qt-everywhere-opensource-src-4.8.6-QTBUG-22829.patch
|
||||
qt-aarch64.patch
|
||||
qt-everywhere-opensource-src-4.8.7-qforeach.patch
|
||||
qt-everywhere-opensource-src-4.8.7-crash-in-qppmhandler.patch
|
||||
qt-everywhere-opensource-src-4.8.5-QTBUG-35459.patch
|
||||
qt-everywhere-opensource-src-4.8.6-systemtrayicon.patch
|
||||
#qt-everywhere-opensource-src-4.8.0-tp-multilib-optflags.patch
|
||||
qt-everywhere-opensource-src-4.8.7-icu59.patch
|
||||
qt-4.8-disable-sslv3.patch
|
||||
qt-everywhere-opensource-src-4.8.7-fix_pointer_comparison_to_0.patch
|
|
@ -0,0 +1,20 @@
|
|||
#!/bin/csh
|
||||
|
||||
# Environment path variables for the Qt package
|
||||
|
||||
# It's a very bad idea to make this script executable. Anything that
|
||||
# needs to build with qt4 should instead source this script. Failure
|
||||
# to follow this advice will likely break various builds that use qt5.
|
||||
# I seriously doubt anything will ever source this csh version, either.
|
||||
|
||||
setenv QT4DIR /usr/lib/qt4
|
||||
|
||||
# put the qt4 stuff first in $PATH, so running e.g. 'qmake' will
|
||||
# run the qt4 version, not the qt5 one.
|
||||
set path = ( $QT4DIR/bin $path )
|
||||
|
||||
if ( $?CPLUS_INCLUDE_PATH ) then
|
||||
setenv CPLUS_INCLUDE_PATH $QT4DIR/include:$CPLUS_INCLUDE_PATH
|
||||
else
|
||||
setenv CPLUS_INCLUDE_PATH $QT4DIR/include
|
||||
endif
|
|
@ -0,0 +1,22 @@
|
|||
#!/bin/sh
|
||||
|
||||
# Environment variables for the qt4 package.
|
||||
|
||||
# It's a very bad idea to make this script executable. Anything that
|
||||
# needs to build with qt4 should instead source this script. Failure
|
||||
# to follow this advice will likely break various builds that use qt5.
|
||||
|
||||
QT4DIR=/usr/lib/qt4
|
||||
|
||||
if [ ! "$CPLUS_INCLUDE_PATH" = "" ]; then
|
||||
CPLUS_INCLUDE_PATH=$QT4DIR/include:$CPLUS_INCLUDE_PATH
|
||||
else
|
||||
CPLUS_INCLUDE_PATH=$QT4DIR/include
|
||||
fi
|
||||
|
||||
# put the qt4 stuff first in $PATH, so running e.g. 'qmake' will
|
||||
# run the qt4 version, not the qt5 one.
|
||||
PATH="$QT4DIR/bin:$PATH"
|
||||
|
||||
export QT4DIR
|
||||
export CPLUS_INCLUDE_PATH
|
|
@ -0,0 +1,317 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Copyright 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2018 Patrick J. Volkerding, Sebeka, MN, USA
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use of this script, with or without modification, is
|
||||
# permitted provided that the following conditions are met:
|
||||
#
|
||||
# 1. Redistributions of this script must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
# Merged some ideas from Alex Sarmardzic's script for qt4 at SlackBuilds.org
|
||||
# ^^ Modified by Robby Workman <rworkman@slackware.com> for QT4 & KDE4
|
||||
|
||||
# Modifications 2010, 2011, 2012 Eric Hameleers, Eindhoven, NL
|
||||
|
||||
# qt-4.8.7 is built from The Qt Company source, with lots of patches
|
||||
# from various sources.
|
||||
|
||||
# This is the SBo-ized version. Heinz Wiesinger (pprkut) got this
|
||||
# to build on Slackware-current as of January 23, 2021. The stuff
|
||||
# in patches/ was collected (and in a few cases written) by him,
|
||||
# and he worked out the correct order to apply them. B. Watson
|
||||
# (yalhcru@gmail.com) modified pprkut's version to make it fit the SBo
|
||||
# template, and to make it install to /usr/lib(64)?/qt4/ to stay out of
|
||||
# the way.
|
||||
|
||||
cd $(dirname $0) ; CWD=$(pwd)
|
||||
|
||||
PRGNAM=qt4
|
||||
VERSION=${VERSION:-4.8.7}
|
||||
BUILD=${BUILD:-1}
|
||||
TAG=${TAG:-_SBo}
|
||||
PKGTYPE=${PKGTYPE:-tgz}
|
||||
|
||||
if [ -z "$ARCH" ]; then
|
||||
case "$( uname -m )" in
|
||||
i?86) ARCH=i586 ;;
|
||||
arm*) ARCH=arm ;;
|
||||
*) ARCH=$( uname -m ) ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
|
||||
echo "$PRGNAM-$VERSION-$ARCH-$BUILD.$PKGTYPE"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
TMP=${TMP:-/tmp}
|
||||
PKG=$TMP/package-${PRGNAM}
|
||||
OUTPUT=${OUTPUT:-/tmp}
|
||||
|
||||
if [ "$ARCH" = "i486" ]; then
|
||||
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
|
||||
LIBDIRSUFFIX=""
|
||||
elif [ "$ARCH" = "i586" ]; then
|
||||
SLKCFLAGS="-O2 -march=i586 -mtune=i686"
|
||||
LIBDIRSUFFIX=""
|
||||
elif [ "$ARCH" = "i686" ]; then
|
||||
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
|
||||
LIBDIRSUFFIX=""
|
||||
elif [ "$ARCH" = "s390" ]; then
|
||||
SLKCFLAGS="-O2"
|
||||
LIBDIRSUFFIX=""
|
||||
elif [ "$ARCH" = "x86_64" ]; then
|
||||
SLKCFLAGS="-O2 -fPIC"
|
||||
LIBDIRSUFFIX="64"
|
||||
elif [ "$ARCH" = "armv7hl" ]; then
|
||||
# To prevent "qatomic_armv6.h error: output number 2 not directly addressable"
|
||||
# More permanent solution is to patch gcc:
|
||||
# http://bazaar.launchpad.net/~linaro-toolchain-dev/gcc-linaro/4.6/revision/106731
|
||||
SLKCFLAGS="-O2 -march=armv7-a -mfpu=vfpv3-d16 -fno-strict-volatile-bitfields"
|
||||
LIBDIRSUFFIX=""
|
||||
else
|
||||
SLKCFLAGS="-O2"
|
||||
LIBDIRSUFFIX=""
|
||||
fi
|
||||
|
||||
case "$ARCH" in
|
||||
arm*) TARGET=$ARCH-slackware-linux-gnueabi ;;
|
||||
*) TARGET=$ARCH-slackware-linux ;;
|
||||
esac
|
||||
|
||||
set -e
|
||||
|
||||
SRC=qt-everywhere-opensource-src-$VERSION
|
||||
|
||||
rm -rf $PKG
|
||||
mkdir -p $TMP $PKG
|
||||
cd $TMP
|
||||
rm -rf $SRC
|
||||
tar xvf $CWD/$SRC.tar.gz
|
||||
cd $SRC
|
||||
|
||||
chown -R root:root .
|
||||
find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
|
||||
\! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+
|
||||
|
||||
if [ $ARCH = "i486" -o $ARCH = "i586" -o "$ARCH" = "i686" ]; then
|
||||
sed -i -e "s/QMAKE_CFLAGS_RELEASE += -O2/QMAKE_CFLAGS_RELEASE += $SLKCFLAGS/" mkspecs/common/gcc-base.conf
|
||||
fi
|
||||
|
||||
# 20220123 bkw: reworked a couple of these so they apply with -p1.
|
||||
# The funky sed stuff and while loop is so the 'series' file can
|
||||
# have comments and blank lines.
|
||||
sed -n -e 's/#.*//' -e '/./p' $CWD/patches/series | while read diff; do
|
||||
echo "=== Applying $diff"
|
||||
patch -p1 < $CWD/patches/$diff
|
||||
done
|
||||
|
||||
# 20220124 bkw: allow building without webkit, for my own testing
|
||||
# (makes the build run a lot faster). I don't support this as a user
|
||||
# option. If you're clever enough to find this option, you're clever
|
||||
# enough to know not to complain if it breaks some other builds, right?
|
||||
WEBKITOPT="-webkit"
|
||||
[ "${WEBKIT:-yes}" = "no" ] && WEBKITOPT="-no-webkit"
|
||||
echo "@@@ WEBKITOPT=$WEBKITOPT"
|
||||
|
||||
export CFLAGS="$SLKCFLAGS"
|
||||
export CXXFLAGS="$SLKCFLAGS -std=gnu++98 -fpermissive -fno-delete-null-pointer-checks"
|
||||
export OPENSOURCE_CXXFLAGS="$SLKCFLAGS -std=gnu++98 -fpermissive -fno-delete-null-pointer-checks"
|
||||
./configure \
|
||||
-confirm-license \
|
||||
-opensource \
|
||||
-prefix /usr/lib${LIBDIRSUFFIX}/qt4 \
|
||||
-fast \
|
||||
-release \
|
||||
-system-libpng \
|
||||
-system-libjpeg \
|
||||
-system-zlib \
|
||||
-system-sqlite \
|
||||
-plugin-sql-sqlite \
|
||||
-dbus \
|
||||
-webkit \
|
||||
-no-phonon \
|
||||
-nomake examples \
|
||||
-nomake demos \
|
||||
-nomake docs \
|
||||
-no-separate-debug-info \
|
||||
-no-pch \
|
||||
-xmlpatterns
|
||||
# No-precompiled-headers is ccache-friendly.
|
||||
|
||||
make
|
||||
make install INSTALL_ROOT=$PKG
|
||||
|
||||
# Binaries are already stripped.
|
||||
|
||||
# Don't ship .la files:
|
||||
rm -f $PKG/usr/lib${LIBDIRSUFFIX}/qt4/lib/*.la
|
||||
|
||||
# 20220124 bkw: don't think we still need this, since this is no longer
|
||||
# a core Slackware package.
|
||||
# The infamous qt -> qt-${VERSION} link that keeps the full path out of .la files:
|
||||
#( cd $PKG/usr/lib${LIBDIRSUFFIX} ; ln -sf qt qt-${VERSION} )
|
||||
|
||||
# Add a missing Qt.pc which is needed by KDE applications:
|
||||
mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/qt4/lib/pkgconfig
|
||||
cat <<EOF > $PKG/usr/lib${LIBDIRSUFFIX}/qt4/lib/pkgconfig/Qt.pc
|
||||
prefix=/usr/lib${LIBDIRSUFFIX}/qt4
|
||||
bindir=\${prefix}/bin
|
||||
datadir=\${prefix}
|
||||
docdir=\${prefix}/doc
|
||||
headerdir=\${prefix}/include
|
||||
importdir=\${prefix}/imports
|
||||
libdir=\${prefix}/lib
|
||||
moc=\${bindir}/moc
|
||||
plugindir=\${prefix}/plugins
|
||||
qmake=\${bindir}/qmake
|
||||
sysconfdir=\${prefix}/etc/settings
|
||||
translationdir=\${prefix}/translations
|
||||
|
||||
Name: Qt
|
||||
Description: Qt Configuration
|
||||
Version: $VERSION
|
||||
EOF
|
||||
|
||||
# libjscore is used internally. Prevent a false dependency on this in the .la and .pc files:
|
||||
sed -i "s,-ljscore,,g" $PKG/usr/lib${LIBDIRSUFFIX}/qt4/lib/pkgconfig/*.pc
|
||||
sed -i "s,-L../JavaScriptCore/release,,g" $PKG/usr/lib${LIBDIRSUFFIX}/qt4/lib/pkgconfig/*.pc
|
||||
|
||||
# Make sure that .la, .pc, and .prl files use the correct $LIBDIRSUFFIX:
|
||||
sed -i "s,-L/usr/X11R6/lib ,-L/usr/X11R6/lib${LIBDIRSUFFIX} ,g" \
|
||||
$PKG/usr/lib${LIBDIRSUFFIX}/qt4/lib/pkgconfig/*.pc \
|
||||
$PKG/usr/lib${LIBDIRSUFFIX}/qt4/lib/*.prl
|
||||
|
||||
# Link the shared libraries into /usr/lib:
|
||||
( cd $PKG/usr/lib${LIBDIRSUFFIX}
|
||||
for file in qt4/lib/*.so* ; do
|
||||
ln -sf $file .
|
||||
done
|
||||
)
|
||||
|
||||
# Add profile scripts
|
||||
mkdir -p $PKG/etc/profile.d
|
||||
sed -e "s#usr/lib/#usr/lib${LIBDIRSUFFIX}/#g" $CWD/profile.d/qt4.sh \
|
||||
> $PKG/etc/profile.d/qt4.sh
|
||||
sed -e "s#usr/lib/#usr/lib${LIBDIRSUFFIX}/#g" $CWD/profile.d/qt4.csh \
|
||||
> $PKG/etc/profile.d/qt4.csh
|
||||
chmod 0644 $PKG/etc/profile.d/* # do not make executable by default.
|
||||
|
||||
# Put a ton of links to more "normal" places. I'd just use a prefix of /usr, but it
|
||||
# creates a ton of new (and ambiguously named) /usr directories...
|
||||
mkdir -p $PKG/usr/bin
|
||||
( cd $PKG/usr/lib${LIBDIRSUFFIX}/qt4/bin
|
||||
for file in * ; do
|
||||
( cd $PKG/usr/bin ; ln -sf /usr/lib${LIBDIRSUFFIX}/qt4/bin/$file $file-qt4 )
|
||||
done
|
||||
)
|
||||
|
||||
mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/pkgconfig
|
||||
( cd $PKG/usr/lib${LIBDIRSUFFIX}/qt4/lib/pkgconfig
|
||||
for file in *.pc ; do
|
||||
( cd $PKG/usr/lib${LIBDIRSUFFIX}/pkgconfig ; ln -sf /usr/lib${LIBDIRSUFFIX}/qt4/lib/pkgconfig/$file . )
|
||||
done
|
||||
)
|
||||
|
||||
# Install Qt's private headers - at least Gentoo and Fedora are adding these
|
||||
# and some software has (inevitably) started depending on them:
|
||||
# We're using `rsync -R` as easy way to preserve relative path names:
|
||||
rsync -aR \
|
||||
include/Qt{Core,Declarative,Gui,Script}/private \
|
||||
src/{corelib,declarative,gui,script}/*/*_p.h \
|
||||
${PKG}/usr/lib${LIBDIRSUFFIX}/qt4/
|
||||
|
||||
# Add menu entries for all those hidden but great Qt applications:
|
||||
# Assistant icons
|
||||
install -p -m644 -D tools/assistant/tools/assistant/images/assistant.png $PKG/usr/share/icons/hicolor/32x32/apps/assistant.png
|
||||
install -p -m644 -D tools/assistant/tools/assistant/images/assistant-128.png $PKG/usr/share/icons/hicolor/128x128/apps/assistant.png
|
||||
# Designer icon
|
||||
install -p -m644 -D tools/designer/src/designer/images/designer.png $PKG/usr/share/icons/hicolor/128x128/apps/designer.png
|
||||
# Linguist icons
|
||||
for icon in tools/linguist/linguist/images/icons/linguist-*-32.png ; do
|
||||
size=$(echo $(basename ${icon}) | cut -d- -f2)
|
||||
install -p -m644 -D ${icon} $PKG/usr/share/icons/hicolor/${size}x${size}/apps/linguist.png
|
||||
done
|
||||
# Qt logo:
|
||||
convert doc/src/images/qt-logo.png -resize 48x48 $PKG/usr/share/icons/hicolor/48x48/apps/qt-logo.png
|
||||
|
||||
# And the .desktop files
|
||||
mkdir -p $PKG/usr/share/applications
|
||||
cat <<EOF > $PKG/usr/share/applications/designer.desktop
|
||||
[Desktop Entry]
|
||||
Name=Qt4 Designer
|
||||
GenericName=Interface Designer
|
||||
Comment=Design GUIs for Qt4 applications
|
||||
Exec=designer
|
||||
Icon=designer
|
||||
MimeType=application/x-designer;
|
||||
Terminal=false
|
||||
Encoding=UTF-8
|
||||
Type=Application
|
||||
Categories=Qt;Development;
|
||||
EOF
|
||||
cat <<EOF > $PKG/usr/share/applications/assistant.desktop
|
||||
[Desktop Entry]
|
||||
Name=Qt4 Assistant
|
||||
Comment=Shows Qt4 documentation and examples
|
||||
Exec=assistant
|
||||
Icon=assistant
|
||||
Terminal=false
|
||||
Encoding=UTF-8
|
||||
Type=Application
|
||||
Categories=Qt;Development;Documentation;
|
||||
EOF
|
||||
cat <<EOF > $PKG/usr/share/applications/linguist.desktop
|
||||
[Desktop Entry]
|
||||
Name=Qt4 Linguist
|
||||
Comment=Add translations to Qt4 applications
|
||||
Exec=linguist
|
||||
Icon=linguist
|
||||
MimeType=text/vnd.trolltech.linguist;application/x-linguist;
|
||||
Terminal=false
|
||||
Encoding=UTF-8
|
||||
Type=Application
|
||||
Categories=Qt;Development;
|
||||
EOF
|
||||
cat <<EOF > $PKG/usr/share/applications/qtconfig.desktop
|
||||
[Desktop Entry]
|
||||
Name=Qt4 Config
|
||||
Comment=Configure Qt4 behavior, styles, fonts
|
||||
Exec=qtconfig
|
||||
Icon=qt-logo
|
||||
Terminal=false
|
||||
Encoding=UTF-8
|
||||
Type=Application
|
||||
Categories=Qt;Settings;
|
||||
EOF
|
||||
|
||||
# Add a documentation directory:
|
||||
PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION
|
||||
mkdir -p $PKGDOC
|
||||
cp -a *GPL_EXCEPTION* LICENSE* README* changes-* $PKGDOC
|
||||
if [ -d $PKG/usr/lib${LIBDIRSUFFIX}/qt4/doc/html ]; then
|
||||
( cd $PKGDOC
|
||||
ln -sf /usr/lib${LIBDIRSUFFIX}/qt4/doc/html .
|
||||
)
|
||||
fi
|
||||
cat $CWD/README_SBo.txt > $PKGDOC/README_SBo.txt
|
||||
|
||||
mkdir -p $PKG/install
|
||||
cat $CWD/doinst.sh > $PKG/install/doinst.sh
|
||||
cat $CWD/slack-desc > $PKG/install/slack-desc
|
||||
|
||||
cd $PKG
|
||||
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD.$PKGTYPE
|
|
@ -0,0 +1,10 @@
|
|||
PRGNAM="qt4"
|
||||
VERSION="4.8.7"
|
||||
HOMEPAGE="http://www.qt.io/"
|
||||
DOWNLOAD="https://download.qt.io/archive/qt/4.8/4.8.7/qt-everywhere-opensource-src-4.8.7.tar.gz"
|
||||
MD5SUM="d990ee66bf7ab0c785589776f35ba6ad"
|
||||
DOWNLOAD_x86_64=""
|
||||
MD5SUM_x86_64=""
|
||||
REQUIRES=""
|
||||
MAINTAINER="B. Watson"
|
||||
EMAIL="yalhcru@gmail.com"
|
|
@ -0,0 +1,19 @@
|
|||
# HOW TO EDIT THIS FILE:
|
||||
# The "handy ruler" below makes it easier to edit a package description.
|
||||
# Line up the first '|' above the ':' following the base package name, and
|
||||
# the '|' on the right side marks the last column you can put a character in.
|
||||
# You must make exactly 11 lines for the formatting to be correct. It's also
|
||||
# customary to leave one space after the ':' except on otherwise blank lines.
|
||||
|
||||
|-----handy-ruler------------------------------------------------------|
|
||||
qt4: qt4 (a C++ graphical user interface toolkit, legacy version)
|
||||
qt4:
|
||||
qt4: Qt is a complete and well-developed object-oriented framework for
|
||||
qt4: developing graphical user interface (GUI) applications using C++.
|
||||
qt4:
|
||||
qt4: This is an older 'legacy' version of Qt, only intended to support
|
||||
qt4: older applications that have not yet been ported to Qt5. Don't use
|
||||
qt4: this for developing new code.
|
||||
qt4:
|
||||
qt4:
|
||||
qt4:
|
Loading…
Reference in New Issue