From 2060a31b06f9821c773130770cc36f3094c05e5b Mon Sep 17 00:00:00 2001 From: CentOS Buildsys Date: Jul 31 2013 10:44:39 +0000 Subject: import qt-4.8.5-3.el7.src.rpm --- diff --git a/.qt.metadata b/.qt.metadata new file mode 100644 index 0000000..aafd569 --- /dev/null +++ b/.qt.metadata @@ -0,0 +1,4 @@ +2a1577e5c201a8a7e8ac105999732d9111aa0511 SOURCES/hi48-app-qt4-logo.png +a1fe2c718e113dce72f960b549356395c86372f3 SOURCES/hi128-app-qt4-logo.png +745f9ebf091696c0d5403ce691dc28c039d77b9e SOURCES/qt-everywhere-opensource-src-4.8.5.tar.gz +2bd7a9654a56f486013714e5b954d40af0185077 SOURCES/qt-everywhere-opensource-src-4.8.5-QTBUG-21900.patch diff --git a/README.md b/README.md deleted file mode 100644 index 0e7897f..0000000 --- a/README.md +++ /dev/null @@ -1,5 +0,0 @@ -The master branch has no content - -Look at the c7 branch if you are working with CentOS-7, or the c4/c5/c6 branch for CentOS-4, 5 or 6 - -If you find this file in a distro specific branch, it means that no content has been checked in yet diff --git a/SOURCES/Trolltech.conf b/SOURCES/Trolltech.conf new file mode 100644 index 0000000..b125965 --- /dev/null +++ b/SOURCES/Trolltech.conf @@ -0,0 +1,3 @@ +[Qt] +font="Sans Serif,10,-1,5,50,0,0,0,0,0" + diff --git a/SOURCES/assistant.desktop b/SOURCES/assistant.desktop new file mode 100644 index 0000000..ce7d337 --- /dev/null +++ b/SOURCES/assistant.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Name=Qt4 Assistant +GenericName=Documentation viewer +Comment=Shows Qt4 documentation and examples +Exec=assistant-qt4 +Icon=assistant +Terminal=false +Type=Application +Categories=Qt;Development;Documentation; diff --git a/SOURCES/designer.desktop b/SOURCES/designer.desktop new file mode 100644 index 0000000..d8c2f4d --- /dev/null +++ b/SOURCES/designer.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Name=Qt4 Designer +GenericName=Interface Designer +Comment=Design GUIs for Qt4 applications +Exec=designer-qt4 +Icon=designer +MimeType=application/x-designer; +Terminal=false +Type=Application +Categories=Qt;Development; diff --git a/SOURCES/linguist.desktop b/SOURCES/linguist.desktop new file mode 100644 index 0000000..713d711 --- /dev/null +++ b/SOURCES/linguist.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Name=Qt4 Linguist +GenericName=Translation tool +Comment=Add translations to Qt4 applications +Exec=linguist-qt4 +Icon=linguist +MimeType=text/vnd.trolltech.linguist;application/x-linguist; +Terminal=false +Type=Application +Categories=Qt;Development; diff --git a/SOURCES/qconfig-multilib.h b/SOURCES/qconfig-multilib.h new file mode 100644 index 0000000..7ed351b --- /dev/null +++ b/SOURCES/qconfig-multilib.h @@ -0,0 +1,20 @@ +/* qconfig.h */ +/* This file is here to prevent a file conflict on multiarch systems. A + * conflict will occur because qconfig.h has arch-specific definitions. + * + * DO NOT INCLUDE THE NEW FILE DIRECTLY -- ALWAYS INCLUDE THIS ONE INSTEAD. */ + +#ifndef QCONFIG_MULTILIB_H +#define QCONFIG_MULTILIB_H +#include + +#if __WORDSIZE == 32 +#include "QtCore/qconfig-32.h" +#elif __WORDSIZE == 64 +#include "QtCore/qconfig-64.h" +#else +#error "unexpected value for __WORDSIZE macro" +#endif + +#endif + diff --git a/SOURCES/qdbusviewer.desktop b/SOURCES/qdbusviewer.desktop new file mode 100644 index 0000000..b22ac1d --- /dev/null +++ b/SOURCES/qdbusviewer.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Name=Qt4 QDbusViewer +GenericName=D-Bus Debugger +Comment=Debug D-Bus applications +Exec=qdbusviewer +Icon=qdbusviewer +Terminal=false +Type=Application +Categories=Qt;Development;Debugger; + diff --git a/SOURCES/qt-4.8-poll.patch b/SOURCES/qt-4.8-poll.patch new file mode 100644 index 0000000..3c99ccf --- /dev/null +++ b/SOURCES/qt-4.8-poll.patch @@ -0,0 +1,804 @@ +--- a/src/corelib/io/qprocess_unix.cpp ++++ a/src/corelib/io/qprocess_unix.cpp +@@ -139,13 +139,6 @@ static void qt_sa_sigchld_handler(int signum) + oldAction(signum); + } + +-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; +@@ -231,9 +224,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"; +@@ -242,8 +235,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; +@@ -992,17 +985,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. +@@ -1025,10 +1007,10 @@ bool QProcessPrivate::waitForStarted(int msecs) + 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) +@@ -1044,6 +1026,47 @@ bool QProcessPrivate::waitForStarted(int msecs) + 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); +@@ -1055,28 +1078,9 @@ bool QProcessPrivate::waitForReadyRead(int msecs) + 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; + } +@@ -1086,18 +1090,18 @@ bool QProcessPrivate::waitForReadyRead(int msecs) + 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; +@@ -1105,13 +1109,13 @@ bool QProcessPrivate::waitForReadyRead(int msecs) + 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; + } +@@ -1127,29 +1131,9 @@ bool QProcessPrivate::waitForBytesWritten(int msecs) + 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; + } +@@ -1160,24 +1144,24 @@ bool QProcessPrivate::waitForBytesWritten(int msecs) + 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; +@@ -1194,29 +1178,9 @@ bool QProcessPrivate::waitForFinished(int msecs) + 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; + } +@@ -1226,20 +1190,20 @@ bool QProcessPrivate::waitForFinished(int msecs) + 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; + } +@@ -1249,10 +1213,10 @@ bool QProcessPrivate::waitForFinished(int msecs) + + 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() +--- a/src/corelib/kernel/qcore_unix.cpp ++++ a/src/corelib/kernel/qcore_unix.cpp +@@ -103,4 +103,165 @@ int qt_safe_select(int nfds, fd_set *fdread, fd_set *fdwrite, fd_set *fdexcept, + } + } + ++#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 +--- a/src/corelib/kernel/qcore_unix_p.h ++++ a/src/corelib/kernel/qcore_unix_p.h +@@ -316,9 +316,42 @@ static inline pid_t qt_safe_waitpid(pid_t pid, int *status, int options) + + 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 ++#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; +--- a/src/network/socket/qlocalserver_unix.cpp ++++ a/src/network/socket/qlocalserver_unix.cpp +@@ -208,16 +208,11 @@ void QLocalServerPrivate::_q_onNewConnection() + + 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(); +--- a/src/network/socket/qlocalsocket_unix.cpp ++++ a/src/network/socket/qlocalsocket_unix.cpp +@@ -56,10 +56,6 @@ + #include + #include + +-#ifdef Q_OS_VXWORKS +-# include +-#endif +- + #define QT_CONNECT_TIMEOUT 30000 + + QT_BEGIN_NAMESPACE +@@ -520,32 +516,17 @@ bool QLocalSocket::waitForConnected(int msec) + 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 msec) + } + if (result > 0) + d->_q_connectToSocket(); ++ if (msec >= 0) { ++ remaining = timer.elapsed() - msec; ++ if (remaining < 0) ++ break; ++ } + } + + return (state() == ConnectedState); +--- a/src/network/socket/qnativesocketengine_unix.cpp ++++ a/src/network/socket/qnativesocketengine_unix.cpp +@@ -1090,48 +1090,40 @@ qint64 QNativeSocketEnginePrivate::nativeRead(char *data, qint64 maxSize) + + 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; + } + +--- a/src/qt3support/network/q3socketdevice_unix.cpp ++++ a/src/qt3support/network/q3socketdevice_unix.cpp +@@ -68,6 +68,7 @@ static inline int qt_socket_socket(int domain, int type, int protocol) + #endif + + #include "q3socketdevice.h" ++#include "private/qcore_unix_p.h" + + #ifndef QT_NO_NETWORK + +@@ -588,19 +589,10 @@ Q_LONG Q3SocketDevice::waitForMore( int msecs, bool *timeout ) const + { + 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; +--- a/src/qt3support/other/q3process_unix.cpp ++++ a/src/qt3support/other/q3process_unix.cpp +@@ -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; + } + } + diff --git a/SOURCES/qt-everywhere-opensource-src-4.6.2-cups.patch b/SOURCES/qt-everywhere-opensource-src-4.6.2-cups.patch new file mode 100644 index 0000000..e0305e1 --- /dev/null +++ b/SOURCES/qt-everywhere-opensource-src-4.6.2-cups.patch @@ -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 + } + + /*! diff --git a/SOURCES/qt-everywhere-opensource-src-4.6.3-glib_eventloop_nullcheck.patch b/SOURCES/qt-everywhere-opensource-src-4.6.3-glib_eventloop_nullcheck.patch new file mode 100644 index 0000000..d4e5924 --- /dev/null +++ b/SOURCES/qt-everywhere-opensource-src-4.6.3-glib_eventloop_nullcheck.patch @@ -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(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(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); diff --git a/SOURCES/qt-everywhere-opensource-src-4.7.0-beta2-mysql_config.patch b/SOURCES/qt-everywhere-opensource-src-4.7.0-beta2-mysql_config.patch new file mode 100644 index 0000000..47c066b --- /dev/null +++ b/SOURCES/qt-everywhere-opensource-src-4.7.0-beta2-mysql_config.patch @@ -0,0 +1,19 @@ +diff -up qt-everywhere-opensource-src-4.7.0-beta2/configure.mysql_config qt-everywhere-opensource-src-4.7.0-beta2/configure +--- qt-everywhere-opensource-src-4.7.0-beta2/configure.mysql_config 2010-06-29 20:53:10.000000000 -0500 ++++ qt-everywhere-opensource-src-4.7.0-beta2/configure 2010-07-08 08:30:32.148864934 -0500 +@@ -4849,8 +4849,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 --pkglibdir &>/dev/null && \ ++ QT_MYSQL_PKGLIBDIR=`$CFG_MYSQL_CONFIG --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 diff --git a/SOURCES/qt-everywhere-opensource-src-4.8.0-QTBUG-22037.patch b/SOURCES/qt-everywhere-opensource-src-4.8.0-QTBUG-22037.patch new file mode 100644 index 0000000..4279ce2 --- /dev/null +++ b/SOURCES/qt-everywhere-opensource-src-4.8.0-QTBUG-22037.patch @@ -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::clea + template + Q_OUTOFLINE_TEMPLATE int QList::removeAll(const T &_t) + { +- int index = indexOf(_t); +- if (index == -1) +- return 0; +- ++ detachShared(); + const T t = _t; +- detach(); +- +- Node *i = reinterpret_cast(p.at(index)); +- Node *e = reinterpret_cast(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(p.at(i)))->t() == t) { ++ node_destruct(n); ++ p.remove(i); ++ ++removedCount; ++ } else { ++ ++i; ++ } + return removedCount; + } + diff --git a/SOURCES/qt-everywhere-opensource-src-4.8.0-beta1-s390.patch b/SOURCES/qt-everywhere-opensource-src-4.8.0-beta1-s390.patch new file mode 100644 index 0000000..5f0bbf8 --- /dev/null +++ b/SOURCES/qt-everywhere-opensource-src-4.8.0-beta1-s390.patch @@ -0,0 +1,31 @@ +diff -up qt-everywhere-opensource-src-4.8.0/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h.s390 qt-everywhere-opensource-src-4.8.0/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h +--- qt-everywhere-opensource-src-4.8.0/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h.s390 2011-07-28 11:12:48.000000000 +0200 ++++ qt-everywhere-opensource-src-4.8.0/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h 2011-07-28 11:13:56.000000000 +0200 +@@ -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) \ +@@ -873,7 +885,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) ++#if (CPU(X86_64) && (OS(UNIX) || OS(WINDOWS) || OS(SOLARIS) || OS(HPUX))) || (CPU(IA64) && !CPU(IA64_32)) || CPU(ALPHA) || CPU(AIX64) || CPU(SPARC64) || CPU(S390X) + #define WTF_USE_JSVALUE64 1 + #elif CPU(ARM) || CPU(PPC64) + #define WTF_USE_JSVALUE32 1 diff --git a/SOURCES/qt-everywhere-opensource-src-4.8.0-ld-gold.patch b/SOURCES/qt-everywhere-opensource-src-4.8.0-ld-gold.patch new file mode 100644 index 0000000..0e3897e --- /dev/null +++ b/SOURCES/qt-everywhere-opensource-src-4.8.0-ld-gold.patch @@ -0,0 +1,22 @@ +diff -up qt-everywhere-opensource-src-4.8.0/src/3rdparty/webkit/Source/common.pri.me qt-everywhere-opensource-src-4.8.0/src/3rdparty/webkit/Source/common.pri +--- qt-everywhere-opensource-src-4.8.0/src/3rdparty/webkit/Source/common.pri.me 2012-01-24 13:05:50.460890750 +0100 ++++ qt-everywhere-opensource-src-4.8.0/src/3rdparty/webkit/Source/common.pri 2012-01-24 13:19:08.836799974 +0100 +@@ -3,12 +3,12 @@ + contains(JAVASCRIPTCORE_JIT,yes): DEFINES+=ENABLE_JIT=1 + contains(JAVASCRIPTCORE_JIT,no): DEFINES+=ENABLE_JIT=0 + +-linux-g++ { +-isEmpty($$(SBOX_DPKG_INST_ARCH)):exists(/usr/bin/ld.gold) { +- message(Using gold linker) +- QMAKE_LFLAGS+=-fuse-ld=gold +-} +-} ++#linux-g++ { ++#isEmpty($$(SBOX_DPKG_INST_ARCH)):exists(/usr/bin/ld.gold) { ++# message(Using gold linker) ++# QMAKE_LFLAGS+=-fuse-ld=gold ++#} ++#} + + # We use this flag on production branches + # See https://bugs.webkit.org/show_bug.cgi?id=60824 diff --git a/SOURCES/qt-everywhere-opensource-src-4.8.0-s390-atomic.patch b/SOURCES/qt-everywhere-opensource-src-4.8.0-s390-atomic.patch new file mode 100644 index 0000000..6fedcc8 --- /dev/null +++ b/SOURCES/qt-everywhere-opensource-src-4.8.0-s390-atomic.patch @@ -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 ++Q_INLINE_TEMPLATE T *QBasicAtomicPointer::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 + Q_INLINE_TEMPLATE T *QBasicAtomicPointer::fetchAndAddRelaxed(qptrdiff valueToAdd) + { + return fetchAndAddOrdered(valueToAdd); diff --git a/SOURCES/qt-everywhere-opensource-src-4.8.0-tp-multilib-optflags.patch b/SOURCES/qt-everywhere-opensource-src-4.8.0-tp-multilib-optflags.patch new file mode 100644 index 0000000..5c8b5a1 --- /dev/null +++ b/SOURCES/qt-everywhere-opensource-src-4.8.0-tp-multilib-optflags.patch @@ -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) diff --git a/SOURCES/qt-everywhere-opensource-src-4.8.0-tp-qtreeview-kpackagekit-crash.patch b/SOURCES/qt-everywhere-opensource-src-4.8.0-tp-qtreeview-kpackagekit-crash.patch new file mode 100644 index 0000000..947f758 --- /dev/null +++ b/SOURCES/qt-everywhere-opensource-src-4.8.0-tp-qtreeview-kpackagekit-crash.patch @@ -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; diff --git a/SOURCES/qt-everywhere-opensource-src-4.8.1-linguist_qmake-qt4.patch b/SOURCES/qt-everywhere-opensource-src-4.8.1-linguist_qmake-qt4.patch new file mode 100644 index 0000000..e84446c --- /dev/null +++ b/SOURCES/qt-everywhere-opensource-src-4.8.1-linguist_qmake-qt4.patch @@ -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); + diff --git a/SOURCES/qt-everywhere-opensource-src-4.8.1-qt3support_debuginfo.patch b/SOURCES/qt-everywhere-opensource-src-4.8.1-qt3support_debuginfo.patch new file mode 100644 index 0000000..7458314 --- /dev/null +++ b/SOURCES/qt-everywhere-opensource-src-4.8.1-qt3support_debuginfo.patch @@ -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 +- diff --git a/SOURCES/qt-everywhere-opensource-src-4.8.1-qtgahandle.patch b/SOURCES/qt-everywhere-opensource-src-4.8.1-qtgahandle.patch new file mode 100644 index 0000000..64ffef3 --- /dev/null +++ b/SOURCES/qt-everywhere-opensource-src-4.8.1-qtgahandle.patch @@ -0,0 +1,53 @@ +diff -up qt-everywhere-opensource-src-4.8.1/src/plugins/imageformats/tga/qtgafile.cpp.me qt-everywhere-opensource-src-4.8.1/src/plugins/imageformats/tga/qtgafile.cpp +--- qt-everywhere-opensource-src-4.8.1/src/plugins/imageformats/tga/qtgafile.cpp.me 2012-03-30 21:54:59.921331145 +0200 ++++ qt-everywhere-opensource-src-4.8.1/src/plugins/imageformats/tga/qtgafile.cpp 2012-03-30 21:58:14.516042067 +0200 +@@ -41,6 +41,7 @@ + + #include "qtgafile.h" + ++#include + #include + #include + #include +@@ -264,3 +265,16 @@ QImage QTgaFile::readImage() + // TODO: add processing of TGA extension information - ie TGA 2.0 files + return im; + } ++/** ++ * Checks if device contains a valid tga image, *without* changing device ++ * position. ++ */ ++bool QTgaFile::canRead(QIODevice *device) ++{ ++ QByteArray header = device->peek(HeaderSize); ++ if (header.size() < HeaderSize) ++ return false; ++ QBuffer buffer(&header); ++ QTgaFile tga(&buffer); ++ return tga.isValid(); ++} +diff -up qt-everywhere-opensource-src-4.8.1/src/plugins/imageformats/tga/qtgafile.h.me qt-everywhere-opensource-src-4.8.1/src/plugins/imageformats/tga/qtgafile.h +--- qt-everywhere-opensource-src-4.8.1/src/plugins/imageformats/tga/qtgafile.h.me 2012-03-30 21:58:39.670023189 +0200 ++++ qt-everywhere-opensource-src-4.8.1/src/plugins/imageformats/tga/qtgafile.h 2012-03-30 21:59:06.202317384 +0200 +@@ -93,6 +93,8 @@ public: + inline QSize size() const; + inline Compression compression() const; + ++ static bool canRead(QIODevice *device); ++ + private: + static inline quint16 littleEndianInt(const unsigned char *d); + +diff -up qt-everywhere-opensource-src-4.8.1/src/plugins/imageformats/tga/qtgahandler.cpp.me qt-everywhere-opensource-src-4.8.1/src/plugins/imageformats/tga/qtgahandler.cpp +--- qt-everywhere-opensource-src-4.8.1/src/plugins/imageformats/tga/qtgahandler.cpp.me 2012-03-30 21:59:17.373303356 +0200 ++++ qt-everywhere-opensource-src-4.8.1/src/plugins/imageformats/tga/qtgahandler.cpp 2012-03-30 22:00:13.817226439 +0200 +@@ -77,8 +77,7 @@ bool QTgaHandler::canRead(QIODevice *dev + qWarning("QTgaHandler::canRead() called with no device"); + return false; + } +- QTgaFile tga(device); +- return tga.isValid(); ++ return QTgaFile::canRead(device); + } + + bool QTgaHandler::read(QImage *image) diff --git a/SOURCES/qt-everywhere-opensource-src-4.8.2--assistant-crash.patch b/SOURCES/qt-everywhere-opensource-src-4.8.2--assistant-crash.patch new file mode 100644 index 0000000..f0a41a4 --- /dev/null +++ b/SOURCES/qt-everywhere-opensource-src-4.8.2--assistant-crash.patch @@ -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); + } + diff --git a/SOURCES/qt-everywhere-opensource-src-4.8.3-icu_no_debug.patch b/SOURCES/qt-everywhere-opensource-src-4.8.3-icu_no_debug.patch new file mode 100644 index 0000000..9c53f3c --- /dev/null +++ b/SOURCES/qt-everywhere-opensource-src-4.8.3-icu_no_debug.patch @@ -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; + } diff --git a/SOURCES/qt-everywhere-opensource-src-4.8.3-no_Werror.patch b/SOURCES/qt-everywhere-opensource-src-4.8.3-no_Werror.patch new file mode 100644 index 0000000..86dcc28 --- /dev/null +++ b/SOURCES/qt-everywhere-opensource-src-4.8.3-no_Werror.patch @@ -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)) { diff --git a/SOURCES/qt-everywhere-opensource-src-4.8.3-qdbusconnection_no_debug.patch b/SOURCES/qt-everywhere-opensource-src-4.8.3-qdbusconnection_no_debug.patch new file mode 100644 index 0000000..dd3a5a0 --- /dev/null +++ b/SOURCES/qt-everywhere-opensource-src-4.8.3-qdbusconnection_no_debug.patch @@ -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()); + } diff --git a/SOURCES/qt-everywhere-opensource-src-4.8.4-qmake_pkgconfig_requires_private.patch b/SOURCES/qt-everywhere-opensource-src-4.8.4-qmake_pkgconfig_requires_private.patch new file mode 100644 index 0000000..0494c81 --- /dev/null +++ b/SOURCES/qt-everywhere-opensource-src-4.8.4-qmake_pkgconfig_requires_private.patch @@ -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; + } + diff --git a/SOURCES/qt-everywhere-opensource-src-4.8.5-QTBUG-14467.patch b/SOURCES/qt-everywhere-opensource-src-4.8.5-QTBUG-14467.patch new file mode 100644 index 0000000..81d74ff --- /dev/null +++ b/SOURCES/qt-everywhere-opensource-src-4.8.5-QTBUG-14467.patch @@ -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} diff --git a/SOURCES/qt-everywhere-opensource-src-4.8.5-QTBUG-22829.patch b/SOURCES/qt-everywhere-opensource-src-4.8.5-QTBUG-22829.patch new file mode 100644 index 0000000..78b78b0 --- /dev/null +++ b/SOURCES/qt-everywhere-opensource-src-4.8.5-QTBUG-22829.patch @@ -0,0 +1,14 @@ +diff -up qt-everywhere-opensource-src-4.8.5/src/tools/moc/main.cpp.QTBUG-22829 qt-everywhere-opensource-src-4.8.5/src/tools/moc/main.cpp +--- qt-everywhere-opensource-src-4.8.5/src/tools/moc/main.cpp.QTBUG-22829 2013-06-09 17:04:02.762459323 -0500 ++++ qt-everywhere-opensource-src-4.8.5/src/tools/moc/main.cpp 2013-06-09 17:08:20.409680813 -0500 +@@ -188,8 +188,9 @@ 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"]; + + QByteArray filename; + QByteArray output; diff --git a/SOURCES/qt-everywhere-opensource-src-4.8.5-QTBUG-30076.patch b/SOURCES/qt-everywhere-opensource-src-4.8.5-QTBUG-30076.patch new file mode 100644 index 0000000..dc0dc52 --- /dev/null +++ b/SOURCES/qt-everywhere-opensource-src-4.8.5-QTBUG-30076.patch @@ -0,0 +1,115 @@ +From 8053ae4030b4342f73a08b9870ccd19189ae401d Mon Sep 17 00:00:00 2001 +From: Mark Brand +Date: Thu, 7 Mar 2013 11:52:52 +0100 +Subject: [PATCH 4/4] postgresql driver: escape backslashes only when server + requires it + +Task-number: QTBUG-30076 + +Change-Id: I408cda941884f01484d0edfa82c91fc19cb8718c +Reviewed-by: Israel Lins Albuquerque +Reviewed-by: Sergey Blagodarin +Reviewed-by: Andy Shaw +Reviewed-by: Andras Mantia +(cherry picked from qtbase/e3c5351d06ce8a12f035cd0627356bc64d8c334a) +Reviewed-by: Mark Brand +--- + src/sql/drivers/psql/qsql_psql.cpp | 38 +++++++++++++++++++++++++++++++++----- + 1 file changed, 33 insertions(+), 5 deletions(-) + +diff --git a/src/sql/drivers/psql/qsql_psql.cpp b/src/sql/drivers/psql/qsql_psql.cpp +index 51ddce0..c2a127c 100644 +--- a/src/sql/drivers/psql/qsql_psql.cpp ++++ b/src/sql/drivers/psql/qsql_psql.cpp +@@ -120,7 +120,16 @@ inline void qPQfreemem(void *buffer) + class QPSQLDriverPrivate + { + public: +- QPSQLDriverPrivate(QPSQLDriver *qq) : q(qq), connection(0), isUtf8(false), pro(QPSQLDriver::Version6), sn(0), pendingNotifyCheck(false) {} ++ QPSQLDriverPrivate(QPSQLDriver *qq) ++ : q(qq), ++ connection(0), ++ isUtf8(false), ++ pro(QPSQLDriver::Version6), ++ sn(0), ++ pendingNotifyCheck(false), ++ hasBackslashEscape(false) ++ { } ++ + QPSQLDriver *q; + PGconn *connection; + bool isUtf8; +@@ -128,6 +137,7 @@ public: + QSocketNotifier *sn; + QStringList seid; + mutable bool pendingNotifyCheck; ++ bool hasBackslashEscape; + + void appendTables(QStringList &tl, QSqlQuery &t, QChar type); + PGresult * exec(const char * stmt) const; +@@ -135,6 +145,7 @@ public: + QPSQLDriver::Protocol getPSQLVersion(); + bool setEncodingUtf8(); + void setDatestyle(); ++ void detectBackslashEscape(); + }; + + void QPSQLDriverPrivate::appendTables(QStringList &tl, QSqlQuery &t, QChar type) +@@ -636,6 +647,23 @@ void QPSQLDriverPrivate::setDatestyle() + PQclear(result); + } + ++void QPSQLDriverPrivate::detectBackslashEscape() ++{ ++ // standard_conforming_strings option introduced in 8.2 ++ // http://www.postgresql.org/docs/8.2/static/runtime-config-compatible.html ++ if (pro < QPSQLDriver::Version82) { ++ hasBackslashEscape = true; ++ } else { ++ hasBackslashEscape = false; ++ PGresult* result = exec(QLatin1String("SELECT '\\\\' x")); ++ int status = PQresultStatus(result); ++ if (status == PGRES_COMMAND_OK || status == PGRES_TUPLES_OK) ++ if (QString::fromLatin1(PQgetvalue(result, 0, 0)) == QLatin1String("\\")) ++ hasBackslashEscape = true; ++ PQclear(result); ++ } ++} ++ + static QPSQLDriver::Protocol qMakePSQLVersion(int vMaj, int vMin) + { + switch (vMaj) { +@@ -742,6 +770,7 @@ QPSQLDriver::QPSQLDriver(PGconn *conn, QObject *parent) + d->connection = conn; + if (conn) { + d->pro = d->getPSQLVersion(); ++ d->detectBackslashEscape(); + setOpen(true); + setOpenError(false); + } +@@ -842,6 +871,7 @@ bool QPSQLDriver::open(const QString & db, + } + + d->pro = d->getPSQLVersion(); ++ d->detectBackslashEscape(); + d->isUtf8 = d->setEncodingUtf8(); + d->setDatestyle(); + +@@ -1228,12 +1258,10 @@ QString QPSQLDriver::formatValue(const QSqlField &field, bool trimStrings) const + } + break; + case QVariant::String: +- { +- // Escape '\' characters + r = QSqlDriver::formatValue(field, trimStrings); +- r.replace(QLatin1String("\\"), QLatin1String("\\\\")); ++ if (d->hasBackslashEscape) ++ r.replace(QLatin1String("\\"), QLatin1String("\\\\")); + break; +- } + case QVariant::Bool: + if (field.value().toBool()) + r = QLatin1String("TRUE"); +-- +1.8.3.1 + diff --git a/SOURCES/qt-everywhere-opensource-src-4.8.5-QTBUG-4862.patch b/SOURCES/qt-everywhere-opensource-src-4.8.5-QTBUG-4862.patch new file mode 100644 index 0000000..ee1d191 --- /dev/null +++ b/SOURCES/qt-everywhere-opensource-src-4.8.5-QTBUG-4862.patch @@ -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 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); + } diff --git a/SOURCES/qt-everywhere-opensource-src-4.8.5-qgtkstyle_disable_gtk_theme_check.patch b/SOURCES/qt-everywhere-opensource-src-4.8.5-qgtkstyle_disable_gtk_theme_check.patch new file mode 100644 index 0000000..9a9f773 --- /dev/null +++ b/SOURCES/qt-everywhere-opensource-src-4.8.5-qgtkstyle_disable_gtk_theme_check.patch @@ -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); diff --git a/SOURCES/qt-everywhere-opensource-src-4.8.5-qt_plugin_path.patch b/SOURCES/qt-everywhere-opensource-src-4.8.5-qt_plugin_path.patch new file mode 100644 index 0000000..6a87783 --- /dev/null +++ b/SOURCES/qt-everywhere-opensource-src-4.8.5-qt_plugin_path.patch @@ -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, diff --git a/SOURCES/qt-everywhere-opensource-src-4.8.5-tds_no_strict_aliasing.patch b/SOURCES/qt-everywhere-opensource-src-4.8.5-tds_no_strict_aliasing.patch new file mode 100644 index 0000000..2deeb51 --- /dev/null +++ b/SOURCES/qt-everywhere-opensource-src-4.8.5-tds_no_strict_aliasing.patch @@ -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 diff --git a/SOURCES/qt-everywhere-opensource-src-4.8.5-uic_multilib.patch b/SOURCES/qt-everywhere-opensource-src-4.8.5-uic_multilib.patch new file mode 100644 index 0000000..d04d1be --- /dev/null +++ b/SOURCES/qt-everywhere-opensource-src-4.8.5-uic_multilib.patch @@ -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 diff --git a/SOURCES/qt-x11-opensource-src-4.5.0-fix-qatomic-inline-asm.patch b/SOURCES/qt-x11-opensource-src-4.5.0-fix-qatomic-inline-asm.patch new file mode 100644 index 0000000..e5ab4ba --- /dev/null +++ b/SOURCES/qt-x11-opensource-src-4.5.0-fix-qatomic-inline-asm.patch @@ -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; + } diff --git a/SOURCES/qt-x11-opensource-src-4.5.1-enable_ft_lcdfilter.patch b/SOURCES/qt-x11-opensource-src-4.5.1-enable_ft_lcdfilter.patch new file mode 100644 index 0000000..4ab3ea4 --- /dev/null +++ b/SOURCES/qt-x11-opensource-src-4.5.1-enable_ft_lcdfilter.patch @@ -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 + diff --git a/SOURCES/qtconfig.desktop b/SOURCES/qtconfig.desktop new file mode 100644 index 0000000..efc4d4a --- /dev/null +++ b/SOURCES/qtconfig.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Name=Qt4 Config +Comment=Configure Qt4 behavior, styles, fonts +Exec=qtconfig-qt4 +Icon=qt4-logo +Terminal=false +Type=Application +Categories=Qt;Settings; diff --git a/SOURCES/qtdemo.desktop b/SOURCES/qtdemo.desktop new file mode 100644 index 0000000..9bcbf1b --- /dev/null +++ b/SOURCES/qtdemo.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Name=Qt4 Demo +Comment=Show Qt4 demos and programming examples +Exec=qtdemo-qt4 +Icon=qt4-logo +Terminal=false +Type=Application +Categories=Qt;Development; diff --git a/SPECS/qt.spec b/SPECS/qt.spec new file mode 100644 index 0000000..55f7308 --- /dev/null +++ b/SPECS/qt.spec @@ -0,0 +1,2138 @@ +# Fedora Review: http://bugzilla.redhat.com/188180 + +# configure options +# -no-pch disables precompiled headers, make ccache-friendly +%define no_pch -no-pch + +# See http://bugzilla.redhat.com/223663 +%define multilib_archs x86_64 %{ix86} ppc64 ppc s390x s390 sparc64 sparcv9 +%define multilib_basearchs x86_64 ppc64 s390x sparc64 + +%if 0%{?fedora} > 16 || 0%{?rhel} > 6 +# use external qt_settings pkg +%define qt_settings 1 +%endif + +%if 0%{?_rpmconfigdir:1} +%define rpm_macros_dir %{_rpmconfigdir}/macros.d +%else +%define rpm_macros_dir %{_sysconfdir}/rpm +%endif + +# trim changelog included in binary rpms +%global _changelog_trimtime %(date +%s -d "1 year ago") + +Summary: Qt toolkit +Name: qt +Epoch: 1 +Version: 4.8.5 +Release: 3%{?dist} + +# See LGPL_EXCEPTIONS.txt, LICENSE.GPL3, respectively, for exception details +License: (LGPLv2 with exceptions or GPLv3 with exceptions) and ASL 2.0 and BSD and FTL and MIT +Group: System Environment/Libraries +Url: http://qt-project.org/ +%if 0%{?pre:1} +Source0: http://download.qt-project.org/snapshots/qt/4.8/%{version}-%{pre}/qt-everywhere-opensource-src-%{version}-%{pre}.tar.gz +%else +Source0: http://download.qt-project.org/official_releases/qt/4.8/%{version}/qt-everywhere-opensource-src-%{version}.tar.gz +%endif +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) + +Obsoletes: qt4 < %{version}-%{release} +Provides: qt4 = %{version}-%{release} +%{?_isa:Provides: qt4%{?_isa} = %{version}-%{release}} + +# default Qt config file +Source4: Trolltech.conf + +# header file to workaround multilib issue +Source5: qconfig-multilib.h + +# set default QMAKE_CFLAGS_RELEASE +Patch2: qt-everywhere-opensource-src-4.8.0-tp-multilib-optflags.patch + +# get rid of timestamp which causes multilib problem +Patch4: qt-everywhere-opensource-src-4.8.5-uic_multilib.patch + +# enable ft lcdfilter +Patch15: qt-x11-opensource-src-4.5.1-enable_ft_lcdfilter.patch + +# may be upstreamable, not sure yet +# workaround for gdal/grass crashers wrt glib_eventloop null deref's +Patch23: qt-everywhere-opensource-src-4.6.3-glib_eventloop_nullcheck.patch + +# hack out largely useless (to users) warnings about qdbusconnection +# (often in kde apps), keep an eye on https://git.reviewboard.kde.org/r/103699/ +Patch25: qt-everywhere-opensource-src-4.8.3-qdbusconnection_no_debug.patch + +# lrelease-qt4 tries to run qmake not qmake-qt4 (http://bugzilla.redhat.com/820767) +Patch26: qt-everywhere-opensource-src-4.8.1-linguist_qmake-qt4.patch + +# enable debuginfo in libQt3Support +Patch27: qt-everywhere-opensource-src-4.8.1-qt3support_debuginfo.patch + +# kde4/multilib QT_PLUGIN_PATH +Patch28: qt-everywhere-opensource-src-4.8.5-qt_plugin_path.patch + +## upstreamable bits +# add support for pkgconfig's Requires.private to qmake +Patch50: qt-everywhere-opensource-src-4.8.4-qmake_pkgconfig_requires_private.patch + +# fix invalid inline assembly in qatomic_{i386,x86_64}.h (de)ref implementations +Patch53: qt-x11-opensource-src-4.5.0-fix-qatomic-inline-asm.patch + +# fix invalid assumptions about mysql_config --libs +# http://bugzilla.redhat.com/440673 +Patch54: qt-everywhere-opensource-src-4.7.0-beta2-mysql_config.patch + +# http://bugs.kde.org/show_bug.cgi?id=180051#c22 +Patch55: qt-everywhere-opensource-src-4.6.2-cups.patch + +# Fails to create debug build of Qt projects on mingw (rhbz#653674) +Patch64: qt-everywhere-opensource-src-4.8.5-QTBUG-14467.patch + +# fix QTreeView crash triggered by KPackageKit (patch by David Faure) +Patch65: qt-everywhere-opensource-src-4.8.0-tp-qtreeview-kpackagekit-crash.patch + +# fix the outdated standalone copy of JavaScriptCore +Patch67: qt-everywhere-opensource-src-4.8.0-beta1-s390.patch + +# https://bugs.webkit.org/show_bug.cgi?id=63941 +# -Wall + -Werror = fail +Patch68: qt-everywhere-opensource-src-4.8.3-no_Werror.patch + +# revert qlist.h commit that seems to induce crashes in qDeleteAll to disable +# set to -qt-sql- to enable *in* qt library +%define mysql -plugin-sql-mysql +%define odbc -plugin-sql-odbc +%define psql -plugin-sql-psql +%define sqlite -plugin-sql-sqlite +%define phonon -phonon +%define phonon_backend -phonon-backend +%define dbus -dbus-linked +%define graphicssystem -graphicssystem raster +%define gtkstyle -gtkstyle +%if 0%{?fedora} +# FIXME/TODO: use system webkit for assistant, examples/webkit, demos/browser +%define webkit -webkit +%define ibase -plugin-sql-ibase +%define tds -plugin-sql-tds +%endif +%if 0%{?rhel} +%define no_javascript_jit -no-javascript-jit +%define ibase -no-sql-ibase +%define tds -no-sql-tds +%endif + +# See http://bugzilla.redhat.com/196901 +%define _qt4 %{name} +%define _qt4_prefix %{_libdir}/qt4 +%define _qt4_bindir %{_qt4_prefix}/bin +# _qt4_datadir is not multilib clean, and hacks to workaround that breaks stuff. +#define _qt4_datadir %{_datadir}/qt4 +%define _qt4_datadir %{_qt4_prefix} +%define _qt4_demosdir %{_qt4_prefix}/demos +%define _qt4_docdir %{_docdir}/qt4 +%define _qt4_examplesdir %{_qt4_prefix}/examples +%define _qt4_headerdir %{_includedir} +%define _qt4_importdir %{_qt4_prefix}/imports +%define _qt4_libdir %{_libdir} +%define _qt4_plugindir %{_qt4_prefix}/plugins +%define _qt4_sysconfdir %{_sysconfdir} +%define _qt4_translationdir %{_datadir}/qt4/translations + +BuildRequires: cups-devel +BuildRequires: desktop-file-utils +BuildRequires: findutils +BuildRequires: libjpeg-devel +BuildRequires: libmng-devel +BuildRequires: libtiff-devel +BuildRequires: pkgconfig +BuildRequires: pkgconfig(alsa) +BuildRequires: pkgconfig(dbus-1) +BuildRequires: pkgconfig(fontconfig) +BuildRequires: pkgconfig(glib-2.0) +BuildRequires: pkgconfig(icu-i18n) +BuildRequires: pkgconfig(NetworkManager) +BuildRequires: pkgconfig(openssl) +BuildRequires: pkgconfig(libpng) +BuildRequires: pkgconfig(libpulse) +BuildRequires: pkgconfig(xtst) +BuildRequires: pkgconfig(zlib) +BuildRequires: rsync + +%define gl_deps pkgconfig(gl) pkgconfig(glu) +%define x_deps pkgconfig(ice) pkgconfig(sm) pkgconfig(xcursor) pkgconfig(xext) pkgconfig(xfixes) pkgconfig(xft) pkgconfig(xi) pkgconfig(xinerama) pkgconfig(xrandr) pkgconfig(xrender) pkgconfig(xt) pkgconfig(xv) pkgconfig(x11) pkgconfig(xproto) +BuildRequires: %{gl_deps} +BuildRequires: %{x_deps} + +%if "%{?ibase}" != "-no-sql-ibase" +BuildRequires: firebird-devel +%endif + +%if "%{?mysql}" != "-no-sql-mysql" +BuildRequires: mysql-devel >= 4.0 +%endif + +%if "%{?phonon_backend}" == "-phonon-backend" +BuildRequires: pkgconfig(gstreamer-0.10) +BuildRequires: pkgconfig(gstreamer-plugins-base-0.10) +%endif + +%if "%{?gtkstyle}" == "-gtkstyle" +BuildRequires: pkgconfig(gtk+-2.0) +%endif + +%if "%{?psql}" != "-no-sql-psql" +BuildRequires: postgresql-devel +%endif + +%if "%{?odbc}" != "-no-sql-odbc" +BuildRequires: unixODBC-devel +%endif + +%if "%{?sqlite}" != "-no-sql-sqlite" +%define _system_sqlite -system-sqlite +BuildRequires: pkgconfig(sqlite3) +%endif + +Provides: qt4-sqlite = %{version}-%{release} +%{?_isa:Provides: qt4-sqlite%{?_isa} = %{version}-%{release}} +Obsoletes: qt-sqlite < 1:4.7.1-16 +Provides: qt-sqlite = %{?epoch:%{epoch}:}%{version}-%{release} +%{?_isa:Provides: qt-sqlite%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}} + +%if "%{?tds}" != "-no-sql-tds" +BuildRequires: freetds-devel +%endif + +Obsoletes: qgtkstyle < 0.1 +Provides: qgtkstyle = 0.1-1 +Requires: ca-certificates +%if 0%{?qt_settings} +Requires: qt-settings +%endif + +%description +Qt is a software toolkit for developing applications. + +This package contains base tools, like string, xml, and network +handling. + +%package assistant +Summary: Documentation browser for Qt 4 +Group: Documentation +Requires: %{name}-sqlite%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: qt4-assistant = %{version}-%{release} +Requires: %{name}-x11%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} +%description assistant +%{summary}. + +%package config +Summary: Graphical configuration tool for programs using Qt 4 +Group: User Interface/Desktops +# -config introduced in 4.7.1-10 , for upgrade path +# seems to tickle a pk bug, https://bugzilla.redhat.com/674326 +#Obsoletes: %{name}-x11 < 1:4.7.1-10 +Obsoletes: qt4-config < 4.5.0 +Provides: qt4-config = %{version}-%{release} +Requires: %{name}-x11%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} +%description config +%{summary}. + +%define demos 1 +%package demos +Summary: Demonstration applications for %{name} +Group: Documentation +Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}-doc +%description demos +%{summary}. + +%define docs 1 +%package doc +Summary: API documentation for %{name} +Group: Documentation +Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}-assistant +Obsoletes: qt4-doc < %{version}-%{release} +Provides: qt4-doc = %{version}-%{release} +# help workaround yum bug http://bugzilla.redhat.com/502401 +Obsoletes: qt-doc < 1:4.5.1-4 +BuildArch: noarch +%description doc +%{summary}. Includes: +Qt Assistant + +%package designer-plugin-webkit +Summary: Qt designer plugin for WebKit +Group: Development/Libraries +Requires: %{name}-x11%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} +%description designer-plugin-webkit +%{summary}. + +%package devel +Summary: Development files for the Qt toolkit +Group: Development/Libraries +Requires: %{name}%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}-x11%{?_isa} +Requires: %{name}-sqlite%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{gl_deps} +Requires: %{x_deps} +Requires: pkgconfig +%if 0%{?phonon:1} +Provides: qt4-phonon-devel = %{version}-%{release} +%endif +Obsoletes: qt4-designer < %{version}-%{release} +Provides: qt4-designer = %{version}-%{release} +# as long as libQtUiTools.a is included +Provides: %{name}-static = %{version}-%{release} +Obsoletes: qt4-devel < %{version}-%{release} +Provides: qt4-devel = %{version}-%{release} +%{?_isa:Provides: qt4-devel%{?_isa} = %{version}-%{release}} +Provides: qt4-static = %{version}-%{release} + +%description devel +This package contains the files necessary to develop +applications using the Qt toolkit. Includes: +Qt Linguist + +# make a devel private subpkg or not? +%define private 1 +%package devel-private +Summary: Private headers for Qt toolkit +Group: Development/Libraries +Provides: qt4-devel-private = %{version}-%{release} +Requires: %{name}-devel = %{?epoch:%{epoch}:}%{version}-%{release} +BuildArch: noarch +%description devel-private +%{summary}. + +%define examples 1 +%package examples +Summary: Programming examples for %{name} +Group: Documentation +Requires: %{name}%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} +%description examples +%{summary}. + +%define qvfb 1 +%package qvfb +Summary: Virtual frame buffer for Qt for Embedded Linux +Group: Applications/Emulators +Requires: %{name}%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} +%description qvfb +%{summary}. + +%package ibase +Summary: IBase driver for Qt's SQL classes +Group: System Environment/Libraries +Requires: %{name}%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: qt4-ibase = %{version}-%{release} +%{?_isa:Provides: qt4-ibase%{?_isa} = %{version}-%{release}} +%description ibase +%{summary}. + +%package mysql +Summary: MySQL driver for Qt's SQL classes +Group: System Environment/Libraries +Requires: %{name}%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} +Obsoletes: qt4-MySQL < %{version}-%{release} +Provides: qt4-MySQL = %{version}-%{release} +Obsoletes: qt4-mysql < %{version}-%{release} +Provides: qt4-mysql = %{version}-%{release} +%{?_isa:Provides: qt4-mysql%{?_isa} = %{version}-%{release}} +%description mysql +%{summary}. + +%package odbc +Summary: ODBC driver for Qt's SQL classes +Group: System Environment/Libraries +Requires: %{name}%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} +Obsoletes: qt4-ODBC < %{version}-%{release} +Provides: qt4-ODBC = %{version}-%{release} +Obsoletes: qt4-odbc < %{version}-%{release} +Provides: qt4-odbc = %{version}-%{release} +%{?_isa:Provides: qt4-odbc%{?_isa} = %{version}-%{release}} +%description odbc +%{summary}. + +%package postgresql +Summary: PostgreSQL driver for Qt's SQL classes +Group: System Environment/Libraries +Requires: %{name}%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} +Obsoletes: qt4-PostgreSQL < %{version}-%{release} +Provides: qt4-PostgreSQL = %{version}-%{release} +Obsoletes: qt4-postgresql < %{version}-%{release} +Provides: qt4-postgresql = %{version}-%{release} +%{?_isa:Provides: qt4-postgresql%{?_isa} = %{version}-%{release}} +%description postgresql +%{summary}. + +%package tds +Summary: TDS driver for Qt's SQL classes +Group: System Environment/Libraries +Requires: %{name}%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: qt4-tds = %{version}-%{release} +%{?_isa:Provides: qt4-tds%{?_isa} = %{version}-%{release}} +%description tds +%{summary}. + +%package x11 +Summary: Qt GUI-related libraries +Group: System Environment/Libraries +# include Obsoletes here to be safe(r) bootstrap-wise with phonon-4.5.0 +# that will Provides: it -- Rex +Obsoletes: qt-designer-plugin-phonon < 1:4.7.2-6 +Requires: %{name}%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} +Obsoletes: qt4-x11 < %{version}-%{release} +Provides: qt4-x11 = %{version}-%{release} +%{?_isa:Provides: qt4-x11%{?_isa} = %{version}-%{release}} +%description x11 +Qt libraries used for drawing widgets and OpenGL items. + +%package qdbusviewer +Summary: D-Bus debugger and viewer +# When split out from qt-x11 +Obsoletes: qt-x11 < 1:4.8.5-2 +Requires: %{name}-x11%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} +%description qdbusviewer +QDbusviewer can be used to inspect D-Bus objects of running programs +and invoke methods on those objects. + + +%prep +%setup -q -n qt-everywhere-opensource-src-%{version} + +%patch2 -p1 -b .multilib-optflags +# drop backup file(s), else they get installed too, http://bugzilla.redhat.com/639463 +rm -fv mkspecs/linux-g++*/qmake.conf.multilib-optflags +%patch4 -p1 -b .uic_multilib +%patch15 -p1 -b .enable_ft_lcdfilter +%patch23 -p1 -b .glib_eventloop_nullcheck +%patch25 -p1 -b .qdbusconnection_no_debug +%patch26 -p1 -b .linguist_qtmake-qt4 +%patch27 -p1 -b .qt3support_debuginfo +%patch28 -p1 -b .qt_plugin_path +%patch50 -p1 -b .qmake_pkgconfig_requires_private +## TODO: still worth carrying? if so, upstream it. +%patch53 -p1 -b .qatomic-inline-asm +## TODO: upstream me +%patch54 -p1 -b .mysql_config +%patch55 -p1 -b .cups-1 +%patch64 -p1 -b .QTBUG-14467 +%patch65 -p1 -b .qtreeview-kpackagekit-crash +%patch67 -p1 -b .s390 +%patch68 -p1 -b .no_Werror +%patch69 -p1 -b .QTBUG-22037 +%patch71 -p1 -b .QTBUG-21900 +%patch74 -p1 -b .tds_no_strict_aliasing +%patch76 -p1 -b .s390-atomic +%patch77 -p1 -b .icu_no_debug +%patch80 -p1 -b .ld.gold +%patch81 -p1 -b .assistant-crash +%patch82 -p1 -b .QTBUG-4862 +%patch83 -p1 -b .poll + +# upstream patches +%patch100 -p1 -b .QTgaHandler +%patch101 -p1 -R -b .QTBUG-30076 +%patch102 -p1 -b .qgtkstyle_disable_gtk_theme_check +%patch113 -p1 -b .QTBUG-22829 + +# security fixes + +# drop -fexceptions from $RPM_OPT_FLAGS +RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS | sed 's|-fexceptions||g'` + +%define platform linux-g++ + +# some 64bit platforms assume -64 suffix, https://bugzilla.redhat.com/569542 +%if "%{?__isa_bits}" == "64" +%define platform linux-g++-64 +%endif + +# https://bugzilla.redhat.com/478481 +%ifarch x86_64 +%define platform linux-g++ +%endif + +sed -i -e "s|-O2|$RPM_OPT_FLAGS|g" \ + mkspecs/%{platform}/qmake.conf + +sed -i -e "s|^\(QMAKE_LFLAGS_RELEASE.*\)|\1 $RPM_LD_FLAGS|" \ + mkspecs/common/g++-unix.conf + +# undefine QMAKE_STRIP, so we get useful -debuginfo pkgs +sed -i -e "s|^QMAKE_STRIP.*=.*|QMAKE_STRIP =|" \ + mkspecs/common/linux.conf + +# set correct lib path +if [ "%{_lib}" == "lib64" ] ; then + sed -i -e "s,/usr/lib /lib,/usr/%{_lib} /%{_lib},g" config.tests/{unix,x11}/*.test + sed -i -e "s,/lib /usr/lib,/%{_lib} /usr/%{_lib},g" config.tests/{unix,x11}/*.test +fi + +# let makefile create missing .qm files, the .qm files should be included in qt upstream +for f in translations/*.ts ; do + touch ${f%.ts}.qm +done + + +%build + +# build shared, threaded (default) libraries +./configure -v \ + -confirm-license \ + -opensource \ + -optimized-qmake \ + -prefix %{_qt4_prefix} \ + -bindir %{_qt4_bindir} \ + -datadir %{_qt4_datadir} \ + -demosdir %{_qt4_demosdir} \ + -docdir %{_qt4_docdir} \ + -examplesdir %{_qt4_examplesdir} \ + -headerdir %{_qt4_headerdir} \ + -importdir %{_qt4_importdir} \ + -libdir %{_qt4_libdir} \ + -plugindir %{_qt4_plugindir} \ + -sysconfdir %{_qt4_sysconfdir} \ + -translationdir %{_qt4_translationdir} \ + -platform %{platform} \ + -release \ + -shared \ + -cups \ + -fontconfig \ + -largefile \ + -gtkstyle \ + -no-rpath \ + -reduce-relocations \ + -no-separate-debug-info \ + %{?phonon} %{!?phonon:-no-phonon} \ + %{?phonon_backend} \ + %{?no_pch} \ + %{?no_javascript_jit} \ + -sm \ + -stl \ + -system-libmng \ + -system-libpng \ + -system-libjpeg \ + -system-libtiff \ + -system-zlib \ + -xinput \ + -xcursor \ + -xfixes \ + -xinerama \ + -xshape \ + -xrandr \ + -xrender \ + -xkb \ + -glib \ + -icu \ + -openssl-linked \ + -xmlpatterns \ + %{?dbus} %{!?dbus:-no-dbus} \ + %{?graphicssystem} \ + %{?webkit} %{!?webkit:-no-webkit } \ + %{?ibase} \ + %{?mysql} \ + %{?psql} \ + %{?odbc} \ + %{?sqlite} %{?_system_sqlite} \ + %{?tds} \ + %{!?docs:-nomake docs} \ + %{!?demos:-nomake demos} \ + %{!?examples:-nomake examples} + +make %{?_smp_mflags} + +# TODO: consider patching tools/tools.pro to enable building this by default +%{?qvfb:make %{?_smp_mflags} -C tools/qvfb} + +# recreate .qm files +LD_LIBRARY_PATH=`pwd`/lib bin/lrelease translations/*.ts + + +%install +rm -rf %{buildroot} + +make install INSTALL_ROOT=%{buildroot} + +%if 0%{?qvfb} +make install INSTALL_ROOT=%{buildroot} -C tools/qvfb +%find_lang qvfb --with-qt --without-mo +%else +rm -f %{buildroot}%{_qt4_translationdir}/qvfb*.qm +%endif + +%if 0%{?private} +# install private headers +# using rsync -R as easy way to preserve relative path names +# we're cheating and using %%_prefix (/usr) directly here +rsync -aR \ + include/Qt{Core,Declarative,Gui,Script}/private \ + src/{corelib,declarative,gui,script}/*/*_p.h \ + %{buildroot}%{_prefix}/ +%endif + +# Add desktop files, --vendor=qt4 helps avoid possible conflicts with qt3/qt5 +desktop-file-install \ + --dir=%{buildroot}%{_datadir}/applications \ + --vendor="qt4" \ + %{SOURCE20} %{SOURCE21} %{SOURCE22} %{?dbus:%{SOURCE23}} %{?demos:%{SOURCE24}} %{SOURCE25} + +## pkg-config +# strip extraneous dirs/libraries +# safe ones +glib2_libs=$(pkg-config --libs glib-2.0 gobject-2.0 gthread-2.0) +ssl_libs=$(pkg-config --libs openssl) +for dep in \ + -laudio -ldbus-1 -lfreetype -lfontconfig ${glib2_libs} \ + -ljpeg -lm -lmng -lpng -lpulse -lpulse-mainloop-glib ${ssl_libs} -lsqlite3 -lz \ + -L/usr/X11R6/lib -L/usr/X11R6/%{_lib} -L%{_libdir} ; do + sed -i -e "s|$dep ||g" %{buildroot}%{_qt4_libdir}/lib*.la +# sed -i -e "s|$dep ||g" %{buildroot}%{_qt4_libdir}/pkgconfig/*.pc + sed -i -e "s|$dep ||g" %{buildroot}%{_qt4_libdir}/*.prl +done +# riskier +for dep in -ldl -lphonon -lpthread -lICE -lSM -lX11 -lXcursor -lXext -lXfixes -lXft -lXinerama -lXi -lXrandr -lXrender -lXt ; do + sed -i -e "s|$dep ||g" %{buildroot}%{_qt4_libdir}/lib*.la +# sed -i -e "s|$dep ||g" %{buildroot}%{_qt4_libdir}/pkgconfig/*.pc + sed -i -e "s|$dep ||g" %{buildroot}%{_qt4_libdir}/*.prl +done + +# nuke dangling reference(s) to %buildroot +sed -i -e "/^QMAKE_PRL_BUILD_DIR/d" %{buildroot}%{_qt4_libdir}/*.prl +sed -i -e "s|-L%{_builddir}/qt-everywhere-opensource-src-%{version}%{?pre:-%{pre}}/lib||g" \ + %{buildroot}%{_qt4_libdir}/pkgconfig/*.pc \ + %{buildroot}%{_qt4_libdir}/*.prl + +# nuke QMAKE_PRL_LIBS, seems similar to static linking and .la files (#520323) +# don't nuke, just drop -lphonon (above) +#sed -i -e "s|^QMAKE_PRL_LIBS|#QMAKE_PRL_LIBS|" %{buildroot}%{_qt4_libdir}/*.prl + +# .la files, die, die, die. +rm -f %{buildroot}%{_qt4_libdir}/lib*.la + +%if 0 +#if "%{_qt4_docdir}" != "%{_qt4_prefix}/doc" +# -doc make symbolic link to _qt4_docdir +rm -rf %{buildroot}%{_qt4_prefix}/doc +ln -s ../../share/doc/qt4 %{buildroot}%{_qt4_prefix}/doc +%endif + +# let rpm handle binaries conflicts +mkdir %{buildroot}%{_bindir} +pushd %{buildroot}%{_qt4_bindir} +for i in * ; do + case "${i}" in + assistant|designer|linguist|lrelease|lupdate|moc|qmake|qtconfig|qtdemo|uic) + mv $i ../../../bin/${i}-qt4 + ln -s ../../../bin/${i}-qt4 . + ln -s ../../../bin/${i}-qt4 $i + ;; + *) + mv $i ../../../bin/ + ln -s ../../../bin/$i . + ;; + esac +done +popd + +# _debug targets (see bug #196513) +pushd %{buildroot}%{_qt4_libdir} +for lib in libQt*.so ; do + libbase=`basename $lib .so | sed -e 's/^lib//'` +# ln -s $lib lib${libbase}_debug.so + echo "INPUT(-l${libbase})" > lib${libbase}_debug.so +done +for lib in libQt*.a ; do + libbase=`basename $lib .a | sed -e 's/^lib//' ` +# ln -s $lib lib${libbase}_debug.a + echo "INPUT(-l${libbase})" > lib${libbase}_debug.a +done +popd + +%ifarch %{multilib_archs} +# multilib: qconfig.h + mv %{buildroot}%{_qt4_headerdir}/Qt/qconfig.h %{buildroot}%{_qt4_headerdir}/QtCore/qconfig-%{__isa_bits}.h + install -p -m644 -D %{SOURCE5} %{buildroot}%{_qt4_headerdir}/QtCore/qconfig-multilib.h + ln -sf qconfig-multilib.h %{buildroot}%{_qt4_headerdir}/QtCore/qconfig.h + ln -sf ../QtCore/qconfig.h %{buildroot}%{_qt4_headerdir}/Qt/qconfig.h +%endif + +%if "%{_qt4_libdir}" != "%{_libdir}" + mkdir -p %{buildroot}/etc/ld.so.conf.d + echo "%{_qt4_libdir}" > %{buildroot}/etc/ld.so.conf.d/qt4-%{__isa_bits}.conf +%endif + +%if ! 0%{?qt_settings} +# Trolltech.conf +install -p -m644 -D %{SOURCE4} %{buildroot}%{_qt4_sysconfdir}/Trolltech.conf +%endif + +# qt4-logo (generic) icons +install -p -m644 -D %{SOURCE30} %{buildroot}%{_datadir}/icons/hicolor/128x128/apps/qt4-logo.png +install -p -m644 -D %{SOURCE31} %{buildroot}%{_datadir}/icons/hicolor/48x48/apps/qt4-logo.png + +# assistant icons +install -p -m644 -D tools/assistant/tools/assistant/images/assistant.png %{buildroot}%{_datadir}/icons/hicolor/32x32/apps/assistant.png +install -p -m644 -D tools/assistant/tools/assistant/images/assistant-128.png %{buildroot}%{_datadir}/icons/hicolor/128x128/apps/assistant.png + +# designer icons +install -p -m644 -D tools/designer/src/designer/images/designer.png %{buildroot}%{_datadir}/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} %{buildroot}%{_datadir}/icons/hicolor/${size}x${size}/apps/linguist.png +done + +# qdbusviewer icons +install -p -m644 -D tools/qdbus/qdbusviewer/images/qdbusviewer.png %{buildroot}%{_datadir}/icons/hicolor/32x32/apps/qdbusviewer.png +install -p -m644 -D tools/qdbus/qdbusviewer/images/qdbusviewer-128.png %{buildroot}%{_datadir}/icons/hicolor/128x128/apps/qdbusviewer.png + +# Qt.pc +cat >%{buildroot}%{_libdir}/pkgconfig/Qt.pc<%{buildroot}%{rpm_macros_dir}/macros.qt4<qt-x11.lang + +%find_lang designer --with-qt --without-mo +%find_lang linguist --with-qt --without-mo +cat designer.lang linguist.lang >qt-devel.lang + + +%clean +rm -rf %{buildroot} + + +%post -p /sbin/ldconfig +%postun -p /sbin/ldconfig + +%files -f qt.lang +%defattr(-,root,root,-) +%doc README LICENSE.GPL3 LICENSE.LGPL LGPL_EXCEPTION.txt +%if "%{_qt4_libdir}" != "%{_libdir}" +/etc/ld.so.conf.d/* +%dir %{_qt4_libdir} +%endif +%dir %{_qt4_prefix} +%if "%{_qt4_bindir}" == "%{_bindir}" +%{_qt4_prefix}/bin +%else +%dir %{_qt4_bindir} +%endif +%if "%{_qt4_datadir}" != "%{_datadir}/qt4" +%dir %{_datadir}/qt4 +%else +%dir %{_qt4_datadir} +%endif +%dir %{_qt4_docdir} +%dir %{_qt4_docdir}/html/ +%dir %{_qt4_docdir}/qch/ +%dir %{_qt4_docdir}/src/ + +%if "%{_qt4_sysconfdir}" != "%{_sysconfdir}" +%dir %{_qt4_sysconfdir} +%endif +%if ! 0%{?qt_settings} +%config(noreplace) %{_qt4_sysconfdir}/Trolltech.conf +%endif +%{_qt4_datadir}/phrasebooks/ +%{_qt4_libdir}/libQtCore.so.4* +%if 0%{?dbus:1} +%if "%{_qt4_bindir}" != "%{_bindir}" +%{_bindir}/qdbus +%endif +%{_qt4_bindir}/qdbus +%{_qt4_libdir}/libQtDBus.so.4* +%endif +%{_qt4_libdir}/libQtNetwork.so.4* +%{_qt4_libdir}/libQtScript.so.4* +%{_qt4_libdir}/libQtSql.so.4* +%{_qt4_libdir}/libQtTest.so.4* +%{_qt4_libdir}/libQtXml.so.4* +%{_qt4_libdir}/libQtXmlPatterns.so.4* +%dir %{_qt4_plugindir} +%dir %{_qt4_plugindir}/crypto/ +%dir %{_qt4_plugindir}/sqldrivers/ +%dir %{_qt4_translationdir}/ +%{_qt4_plugindir}/sqldrivers/libqsqlite* + +%post assistant +touch --no-create %{_datadir}/icons/hicolor ||: + +%posttrans assistant +gtk-update-icon-cache -q %{_datadir}/icons/hicolor 2> /dev/null ||: + +%postun assistant +if [ $1 -eq 0 ] ; then +touch --no-create %{_datadir}/icons/hicolor ||: +gtk-update-icon-cache -q %{_datadir}/icons/hicolor 2> /dev/null ||: +fi + +%files assistant +%defattr(-,root,root,-) +%if "%{_qt4_bindir}" != "%{_bindir}" +%{_bindir}/assistant* +%endif +%{_qt4_bindir}/assistant* +%{_datadir}/applications/*assistant.desktop +%{_datadir}/icons/hicolor/*/apps/assistant* + +%files config +%defattr(-,root,root,-) +%if "%{_qt4_bindir}" != "%{_bindir}" +%{_bindir}/qt*config* +%endif +%{_qt4_bindir}/qt*config* +%{_datadir}/applications/*qtconfig.desktop + +%if 0%{?demos} +%files demos +%defattr(-,root,root,-) +%{_qt4_bindir}/qt*demo* +%if "%{_qt4_bindir}" != "%{_bindir}" +%{_bindir}/qt*demo* +%endif +%{_datadir}/applications/*qtdemo.desktop +%{_qt4_demosdir}/ +%endif + +%if "%{?webkit}" == "-webkit" +%files designer-plugin-webkit +%defattr(-,root,root,-) +%{_qt4_plugindir}/designer/libqwebview.so +%endif + +%post devel +touch --no-create %{_datadir}/icons/hicolor ||: + +%posttrans devel +gtk-update-icon-cache -q %{_datadir}/icons/hicolor 2> /dev/null ||: +update-desktop-database -q &> /dev/null ||: + +%postun devel +if [ $1 -eq 0 ] ; then +touch --no-create %{_datadir}/icons/hicolor ||: +gtk-update-icon-cache -q %{_datadir}/icons/hicolor 2> /dev/null ||: +update-desktop-database -q &> /dev/null ||: +fi + +%files devel -f qt-devel.lang +%defattr(-,root,root,-) +%{rpm_macros_dir}/macros.qt4 +%{_qt4_bindir}/lconvert +%{_qt4_bindir}/lrelease* +%{_qt4_bindir}/lupdate* +%{_qt4_bindir}/moc* +%{_qt4_bindir}/pixeltool* +%{_qt4_bindir}/qdoc3* +%{_qt4_bindir}/qmake* +%{_qt4_bindir}/qmlplugindump +%{_qt4_bindir}/qt3to4 +%{_qt4_bindir}/qttracereplay +%{_qt4_bindir}/rcc* +%{_qt4_bindir}/uic* +%{_qt4_bindir}/qcollectiongenerator +%if 0%{?dbus:1} +%{_qt4_bindir}/qdbuscpp2xml +%{_qt4_bindir}/qdbusxml2cpp +%endif +%{_qt4_bindir}/qhelpconverter +%{_qt4_bindir}/qhelpgenerator +%{_qt4_bindir}/xmlpatterns +%{_qt4_bindir}/xmlpatternsvalidator +%if "%{_qt4_bindir}" != "%{_bindir}" +%{_bindir}/lrelease* +%{_bindir}/lupdate* +%{_bindir}/moc* +%{_bindir}/qmake* +%{_bindir}/uic* +%{_bindir}/designer* +%{_bindir}/linguist* +%{_bindir}/lconvert +%{_bindir}/pixeltool +%{_bindir}/qdoc3 +%{_bindir}/qt3to4 +%{_bindir}/qttracereplay +%{_bindir}/qcollectiongenerator +%if 0%{?dbus:1} +%{_bindir}/qdbuscpp2xml +%{_bindir}/qdbusxml2cpp +%endif +%{_bindir}/qhelpconverter +%{_bindir}/qhelpgenerator +%{_bindir}/qmlplugindump +%{_bindir}/rcc +%{_bindir}/xmlpatterns +%{_bindir}/xmlpatternsvalidator +%endif +%if "%{_qt4_headerdir}" != "%{_includedir}" +%dir %{_qt4_headerdir}/ +%endif +%{_qt4_headerdir}/* +%{_qt4_datadir}/mkspecs/ +%if "%{_qt4_datadir}" != "%{_qt4_prefix}" +%{_qt4_prefix}/mkspecs/ +%endif +%{_qt4_datadir}/q3porting.xml +%if 0%{?phonon:1} +## nuke this one too? -- Rex +%{_qt4_libdir}/libphonon.prl +%endif +%{_qt4_libdir}/libQt*.so +%{_qt4_libdir}/libQtUiTools*.a +%{_qt4_libdir}/libQt*.prl +%{_libdir}/pkgconfig/*.pc +# Qt designer +%{_qt4_bindir}/designer* +%{_datadir}/applications/*designer.desktop +%{_datadir}/icons/hicolor/*/apps/designer* +%{?docs:%{_qt4_docdir}/qch/designer.qch} +# Qt Linguist +%{_qt4_bindir}/linguist* +%{_datadir}/applications/*linguist.desktop +%{_datadir}/icons/hicolor/*/apps/linguist* +%{?docs:%{_qt4_docdir}/qch/linguist.qch} +%if 0%{?private} +%exclude %{_qt4_headerdir}/*/private/ + +%files devel-private +%defattr(-,root,root,-) +%{_qt4_headerdir}/QtCore/private/ +%{_qt4_headerdir}/QtDeclarative/private/ +%{_qt4_headerdir}/QtGui/private/ +%{_qt4_headerdir}/QtScript/private/ +%{_qt4_headerdir}/../src/corelib/ +%{_qt4_headerdir}/../src/declarative/ +%{_qt4_headerdir}/../src/gui/ +%{_qt4_headerdir}/../src/script/ +%endif + +%if 0%{?docs} +%files doc +%defattr(-,root,root,-) +%{_qt4_docdir}/html/* +%{_qt4_docdir}/qch/*.qch +%exclude %{_qt4_docdir}/qch/designer.qch +%exclude %{_qt4_docdir}/qch/linguist.qch +%{_qt4_docdir}/src/* +#{_qt4_prefix}/doc +%endif + +%if 0%{?examples} +%files examples +%defattr(-,root,root,-) +%{_qt4_examplesdir}/ +%endif + +%if 0%{?qvfb} +%files qvfb -f qvfb.lang +%defattr(-,root,root,-) +%{_bindir}/qvfb +%{_qt4_bindir}/qvfb +%endif + +%if "%{?ibase}" == "-plugin-sql-ibase" +%files ibase +%defattr(-,root,root,-) +%{_qt4_plugindir}/sqldrivers/libqsqlibase* +%endif + +%if "%{?mysql}" == "-plugin-sql-mysql" +%files mysql +%defattr(-,root,root,-) +%{_qt4_plugindir}/sqldrivers/libqsqlmysql* +%endif + +%if "%{?odbc}" == "-plugin-sql-odbc" +%files odbc +%defattr(-,root,root,-) +%{_qt4_plugindir}/sqldrivers/libqsqlodbc* +%endif + +%if "%{?psql}" == "-plugin-sql-psql" +%files postgresql +%defattr(-,root,root,-) +%{_qt4_plugindir}/sqldrivers/libqsqlpsql* +%endif + +%if "%{?tds}" == "-plugin-sql-tds" +%files tds +%defattr(-,root,root,-) +%{_qt4_plugindir}/sqldrivers/libqsqltds* +%endif + +%post x11 +/sbin/ldconfig +touch --no-create %{_datadir}/icons/hicolor ||: + +%posttrans x11 +gtk-update-icon-cache -q %{_datadir}/icons/hicolor 2> /dev/null ||: + +%postun x11 +/sbin/ldconfig +if [ $1 -eq 0 ] ; then +touch --no-create %{_datadir}/icons/hicolor ||: +gtk-update-icon-cache -q %{_datadir}/icons/hicolor 2> /dev/null ||: +fi + +%files x11 -f qt-x11.lang +%defattr(-,root,root,-) +%dir %{_qt4_importdir}/ +%{_qt4_importdir}/Qt/ +%{_qt4_libdir}/libQt3Support.so.4* +%{_qt4_libdir}/libQtCLucene.so.4* +%{_qt4_libdir}/libQtDesigner.so.4* +%{_qt4_libdir}/libQtDeclarative.so.4* +%{_qt4_libdir}/libQtDesignerComponents.so.4* +%{_qt4_libdir}/libQtGui.so.4* +%{_qt4_libdir}/libQtHelp.so.4* +%{_qt4_libdir}/libQtMultimedia.so.4* +%{_qt4_libdir}/libQtOpenGL.so.4* +%{_qt4_libdir}/libQtScriptTools.so.4* +%{_qt4_libdir}/libQtSvg.so.4* +%{_qt4_plugindir}/* +%exclude %{_qt4_plugindir}/crypto +%if "%{?webkit}" == "-webkit" +%exclude %{_qt4_plugindir}/designer/libqwebview.so +%endif +%exclude %{_qt4_plugindir}/sqldrivers +%if "%{_qt4_bindir}" != "%{_bindir}" +%{_bindir}/qmlviewer +%endif +%{_qt4_bindir}/qmlviewer +%{_datadir}/icons/hicolor/*/apps/qt4-logo.* + +%if 0%{?dbus:1} +%post qdbusviewer +touch --no-create %{_datadir}/icons/hicolor ||: + +%posttrans qdbusviewer +gtk-update-icon-cache -q %{_datadir}/icons/hicolor 2> /dev/null ||: + +%postun qdbusviewer +if [ $1 -eq 0 ] ; then +touch --no-create %{_datadir}/icons/hicolor ||: +gtk-update-icon-cache -q %{_datadir}/icons/hicolor 2> /dev/null ||: +fi + +%files qdbusviewer +%if "%{_qt4_bindir}" != "%{_bindir}" +%{_bindir}/qdbusviewer +%endif +%{_qt4_bindir}/qdbusviewer +%{_datadir}/applications/*qdbusviewer.desktop +%{_datadir}/icons/hicolor/*/apps/qdbusviewer.* +%endif + + +%changelog +* Wed Jul 31 2013 Than Ngo - 1:4.8.5-3 +- revert upstream postgresql driver changes wrt escaping (QTBUG-30076) + +* Tue Jul 02 2013 Rex Dieter 4.8.5-2 +- qdbusviewer subpkg (#968336) + +* Tue Jul 02 2013 Rex Dieter 4.8.5-1 +- 4.8.5 (final) + +* Wed Jun 26 2013 Rex Dieter 4.8.5-0.6.rc2 +- trim changelog +- cleaner rpm_macros_dir handling + +* Fri Jun 21 2013 Rex Dieter 4.8.5-0.5.rc2 +- drop multilib portion from qt_plugin_path.patch + +* Tue Jun 18 2013 Rex Dieter 4.8.5-0.4.rc2 +- (re)add kde4/multilib QT_PLUGIN_PATH + +* Mon Jun 10 2013 Rex Dieter 4.8.5-0.3.rc2 +- 4.8.5-rc2 + +* Mon Jun 10 2013 Rex Dieter 4.8.5-0.2.rc +- RFE: Add %%qmake_qt4 macro (#870199) + +* Sun Jun 09 2013 Rex Dieter 4.8.5-0.1.rc +- 4.8.5-RC + +* Thu May 30 2013 Rex Dieter 4.8.4-19 +- drop QTBUG-27809 candidate fix, causes regressions (#968794) + +* Tue May 28 2013 Than Ngo - 4.8.4-18 +- QTBUG-27809, fix multiple calls to QDBusPendingReply::waitForFinished on separate objects + +* Thu Apr 25 2013 Than Ngo - 4.8.4-17 +- Desktop file sanity, drop key "Encoding", it's deprecated + +* Fri Apr 19 2013 Rex Dieter 4.8.4-16 +- update URL (#859286) +- include qdbusviewer .desktop/icon +- .desktop files: +mime scriptlets, +GenericName keys + +* Wed Mar 20 2013 Rex Dieter 4.8.4-15 +- pull in a few more upstream fixes + +* Mon Feb 11 2013 Rex Dieter 4.8.4-14 +- SIGSEGV when called from QMetaObject::metaCall (QTBUG-29082, kde#311751) + +* Mon Feb 11 2013 Rex Dieter 4.8.4-13 +- qmake: add support for pkgconfig Requires.private + +* Mon Feb 11 2013 Rex Dieter 4.8.4-12 +- add more moc/boost workarounds, thanks boost-1.53 (QTBUG-22829) + +* Mon Feb 04 2013 Than Ngo - 4.8.4-11 +- backport: fix security flaw was found in the way QSharedMemory class, CVE-2013-0254 + +* Sat Jan 26 2013 Rex Dieter 1:4.8.4-10 +- rebuild (icu) + +* Thu Jan 24 2013 Rex Dieter 1:4.8.4-9 +- make qtchooser support non-conflicting + +* Mon Jan 21 2013 Adam Tkac - 1:4.8.4-8 +- rebuild due to "jpeg8-ABI" feature drop + +* Wed Jan 09 2013 Rex Dieter 4.8.4-7 +- add qtchooser support (disabled by default) + +* Mon Jan 07 2013 Rex Dieter 4.8.4-6 +- blacklist unauthorized SSL certificates by Türktrust + +* Fri Jan 04 2013 Rex Dieter 1:4.8.4-5 +- QGtkStyle was unable to detect the current GTK+ theme (#702493, QTBUG-5545)) + +* Fri Jan 04 2013 Rex Dieter 1:4.8.4-4 +- QSslSocket may report incorrect errors when certificate verification fails + +* Thu Jan 03 2013 Rex Dieter 1:4.8.4-3 +- -x11: %%exclude %%{_qt4_plugindir}/designer/libqwebview.so + +* Sun Dec 16 2012 Rex Dieter 1:4.8.4-2 +- -designer-plugin-webkit subpkg (#887501) +- fix/prune/changelog + +* Thu Nov 29 2012 Rex Dieter 1:4.8.4-1 +- 4.8.4 + +* Wed Oct 31 2012 Than Ngo - 1:4.8.3-8 +- add poll support to fix QAbstractSocket errors with more than + 1024 file descriptors, thanks Florian for the patch + +* Wed Oct 24 2012 Rex Dieter 1:4.8.3-7 +- Crash in Qt script (QTBUG-27322) + +* Tue Oct 23 2012 Rex Dieter 1:4.8.3-6 +- fix/respin qdevice_pri patch + +* Mon Oct 22 2012 Rex Dieter 1:4.8.3-5 +- QDir::homePath() should account for an empty $HOME (QTBUG-4862, kde#249217, #694385) + +* Sat Oct 20 2012 Rex Dieter 1:4.8.3-4 +- $RPM_LD_FLAGS should be propagated to qmake's defaults (#868554) + +* Fri Sep 28 2012 Rex Dieter 1:4.8.3-3 +- find qdevice.pri even for installed qt builds + +* Thu Sep 27 2012 Rex Dieter 1:4.8.3-2 +- upstream disable-SSL-compression patch + +* Thu Sep 13 2012 Rex Dieter - 1:4.8.3-1 +- qt-4.8.3 final +- revert QtScript-JIT commit + +* Tue Sep 04 2012 Rex Dieter 4.8.2-6 +- revert "fix QtScript JIT crash" patch, causes frequent segmentation faults (#853587) + +* Mon Aug 13 2012 Rex Dieter 4.8.2-5 +- fix QtScript JIT crash (QTBUG-23871, kde#297661) + +* Thu Jul 05 2012 Rex Dieter 4.8.2-4 +- text cursor blinks not in the current cell (kde#296490) + +* Tue Jun 19 2012 Than Ngo - 4.8.2-3 +- fix bz#810500, fix crash in assistant + +* Tue May 29 2012 Than Ngo - 4.8.2-2 +- fix bz#820767, lrelease-qt4 tries to run qmake not qmake-qt4 + +* Tue May 22 2012 Than Ngo - 4.8.2-1 +- 4.8.2 + +* Fri May 18 2012 Than Ngo - 4.8.1-15 +- add rhel/fedora condition + +* Thu May 17 2012 Rex Dieter 4.8.1-14 +- Can't build 32bit Qt release application on 64bit (#822710) + +* Wed May 16 2012 Than Ngo - 4.8.1-13 +- add upstream patch to fix crash on big endian machine + +* Fri May 11 2012 Rex Dieter 4.8.1-12 +- enable debuginfo in libQt3Support + +* Fri May 11 2012 Rex Dieter 4.8.1-11 +- lrelease-qt4 tries to run qmake not qmake-qt4 (#820767) + +* Thu May 10 2012 Rex Dieter 4.8.1-10 +- Requires: qt-settings (f17+) + +* Tue May 08 2012 Rex Dieter 4.8.1-9 +- rebuild (libtiff) + +* Thu May 03 2012 Than Ngo - 4.8.1-8 +- add rhel/fedora condition + +* Wed Apr 18 2012 Than Ngo - 4.8.1-7 +- add rhel condition + +* Tue Apr 17 2012 Rex Dieter 4.8.1-6 +- omit qdbusconnection warnings in release/no-debug mode + +* Tue Apr 03 2012 Jaroslav Reznik - 4.8.1-5 +- Fix a crash in cursorToX() when new block is added (QTBUG-24718) + +* Fri Mar 30 2012 Than Ngo - 4.8.1-4 +- Fix QTgaHandler::canRead() not obeying image plugin specs + +* Thu Mar 29 2012 Rex Dieter 4.8.1-3 +- Header file name mismatch in qt-devel i686 (#808087) + +* Thu Mar 29 2012 Than Ngo - 4.8.1-2 +- add correct flags + +* Wed Mar 28 2012 Than Ngo - 4.8.1-1 +- 4.8.1 + +* Wed Feb 22 2012 Rex Dieter 4.8.0-10 +- -demos: Requires: -doc (#795859) + +* Mon Feb 20 2012 Than Ngo - 4.8.0-9 +- get rid of timestamp which causes multilib problem + +* Tue Jan 24 2012 Than Ngo - 4.8.0-8 +- disable Using gold linker, g++ doesn't support flags gold linker +- fix gcc-4.7 issue + +* Tue Jan 10 2012 Rex Dieter 4.8.0-7 +- improved filter_event patch (kde#275469) + +* Mon Jan 09 2012 Than Ngo - 4.8.0-6 +- bz#772128, CVE-2011-3922, Stack-based buffer overflow in embedded harfbuzz code + +* Tue Dec 27 2011 Rex Dieter 4.8.0-5 +- fix qvfb + +* Tue Dec 27 2011 Rex Dieter 4.8.0-4 +- filter event patch, avoid "ghost entries in kde taskbar" problem (kde#275469) + +* Tue Dec 20 2011 Rex Dieter 4.8.0-3 +- don't spam if libicu is not present at runtime (#759923) + +* Mon Dec 19 2011 Dan Horák 4.8.0-2 +- add missing method for QBasicAtomicPointer on s390(x) + +* Thu Dec 15 2011 Jaroslav Reznik 4.8.0-1 +- 4.8.0 + +* Mon Dec 12 2011 Jaroslav Reznik 4.8.0-0.29.rc1 +- Fixes the position of misplaced mouse input (QTBUG-22420) + +* Sun Dec 04 2011 Rex Dieter 4.8.0-0.28.rc1 +- Control whether icu support is built (#759923) + +* Sat Dec 03 2011 Kevin Kofler 4.8.0-0.27.rc1 +- work around a MOC issue with Boost 1.48 headers (#756395) + +* Wed Nov 30 2011 Than Ngo - 4.8.0-0.26.rc1 +- workaround crash on ppc64 + +* Mon Nov 14 2011 Rex Dieter 4.8.0-0.25.rc1 +- BuildRequires: pkgconfig(libpng) +- -devel: drop Requires: libpng-devel libjpeg-devel +- qt4.macros: +%%_qt4_epoch, %%_qt4_evr + +* Thu Nov 03 2011 Rex Dieter 4.8.0-0.24.rc1 +- build tds sql driver with -fno-strict-aliasing + +* Fri Oct 28 2011 Rex Dieter 4.8.0-0.23.rc1 +- crash when using a visual with 24 bits per pixel (#749647,QTBUG-21754) + +* Fri Oct 28 2011 Kevin Kofler 4.8.0-0.22.rc1 +- fix FTBFS in QtWebKit's wtf library with GLib 2.31 + +* Thu Oct 27 2011 Kevin Kofler 4.8.0-0.21.rc1 +- fix missing NULL check in the toLocalFile patch (fixes Digikam segfault) + +* Thu Oct 27 2011 Rex Dieter 4.8.0-0.20.rc1 +- restore qt-4.7-compatible behavior to QUrl.toLocalFile (#749213) + +* Wed Oct 26 2011 Fedora Release Engineering - 1:4.8.0-0.19.rc1 +- Rebuilt for glibc bug#747377 + +* Mon Oct 24 2011 Than Ngo 4.8.0-0.18.rc1 +- bz#748297, update the URL of qt packages + +* Tue Oct 18 2011 Rex Dieter 4.8.0-0.17.rc1 +- Buttons in Qt applications not clickable when run under gnome-shell (#742658, QTBUG-21900) + +* Mon Oct 17 2011 Rex Dieter 4.8.0-0.16.rc1 +- Qt doesn't close orphaned file descriptors after printing (#746601, QTBUG-14724) + +* Sat Oct 15 2011 Rex Dieter 4.8.0-0.15.rc1 +- revert qlist.h commit that seems to induce crashes in qDeleteAll 4.8.0-0.14.rc1 +- pkgconfig-style deps + +* Thu Oct 13 2011 Rex Dieter 4.8.0-0.13.rc1 +- 4.8.0-rc1 + +* Mon Oct 03 2011 Rex Dieter 4.8.0-0.12.20111002 +- 20111002 4.8 branch snapshot + +* Sat Sep 17 2011 Rex Dieter 4.8.0-0.11.beta1 +- ./configure -webkit + +* Wed Sep 14 2011 Lukas Tinkl 1:4.8.0-0.10.beta1 +- fix missing CSS styles and JS functions in the generated HTML + documentation, omitted from the upstream tarball + +* Wed Aug 17 2011 Rex Dieter 1:4.8.0-0.9.beta1 +- -graphicssystem raster (#712617) +- drop sqlite_pkg option + +* Sun Jul 31 2011 Rex Dieter 1:4.8.0-0.8.beta1 +- macros.qt4: s|_qt47|_qt48| + +* Thu Jul 28 2011 Dan Horák 1:4.8.0-0.7.beta1 +- fix the outdated standalone copy of JavaScriptCore (s390) + +* Sat Jul 23 2011 Rex Dieter 1:4.8.0-0.6.beta1 +- fix QMAKE_LIBDIR_QT, for missing QT_SHARED define (#725183) + +* Wed Jul 20 2011 Rex Dieter 1:4.8.0-0.5.beta1 +- 4.8.0-beta1 +- drop webkit_packaged conditional +- drop old patches +- drop qvfb (for now, ftbfs) + +* Wed Jul 13 2011 Than Ngo - 1:4.8.0-0.4.tp +- move macros.* to -devel + +* Tue Jul 05 2011 Rex Dieter 1:4.8.0-0.3.tp +- Adding qt-sql-ibase driver for qt (#719002) +- qvfb subpackage (#718416) + +* Tue Jun 21 2011 Rex Dieter 1:4.8.0-0.2.tp +- fontconfig patch (#705348, QTBUG-19947) + +* Wed May 25 2011 Jaroslav Reznik 1:4.8.0-0.1.tp +- 4.8.0-tp +- drop phonon_internal, phonon_backend_packaged build options + +* Thu May 19 2011 Rex Dieter 1:4.7.3-3 +- omit %%{_qt4_plugindir}/designer/libqwebview.so too + +* Thu May 19 2011 Rex Dieter 1:4.7.3-2 +- omit bundled webkit on f16+ (in favor of separately packaged qtwebkit) + +* Thu May 05 2011 Jaroslav Reznik 1:4.7.3-1 +- 4.7.3 + +* Thu Apr 21 2011 Rex Dieter 1:4.7.2-9 +- -webkit-devel: move qt_webkit_version.pri here + +* Fri Apr 01 2011 Rex Dieter 1:4.7.2-8 +- -devel-private: qt-creator/QmlDesigner requires qt private headers (#657498) + +* Fri Mar 25 2011 Rex Dieter 1:4.7.2-7 +- followup patch for QTBUG-18338, blacklist fraudulent SSL certifcates + +* Fri Mar 25 2011 Rex Dieter 1:4.7.2-6 +- drop qt-designer-plugin-phonon + +* Fri Mar 25 2011 Than Ngo - 1:4.7.2-5 +- apply patch to fix QTBUG-18338, blacklist fraudulent SSL certifcates + +* Tue Mar 22 2011 Jaroslav Reznik 1:4.7.2-4 +- rebuild (mysql) + +* Fri Mar 11 2011 Dan Horák 1:4.7.2-3 +- workaround memory exhaustion during linking of libQtWebKit on s390 + +* Mon Mar 07 2011 Jaroslav Reznik 1:4.7.2-2 +- Fix QNetworkConfigurationManager crash due to null private pointer (#682656) + +* Tue Mar 01 2011 Jaroslav Reznik 1:4.7.2-1 +- 4.7.2 + +* Wed Feb 23 2011 Rex Dieter 1:4.7.1-18 +- libQtWebKit.so has no debug info (#667175) + +* Wed Feb 16 2011 Rex Dieter 1:4.7.1-17 +- Obsoletes: qt-sqlite < 1:4.7.1-16 + +* Tue Feb 15 2011 Rex Dieter 1:4.7.1-16 +- drop -sqlite subpkg, move into main (#677418) + +* Wed Feb 09 2011 Rex Dieter 1:4.7.1-15 +- -assistant subpkg (#660287) +- -config drop Obsoletes: qt-x11 (avoid/workaround #674326) +- -config unconditionally drop NoDisplay (since we're dropping the Obsoletes too) +- -designer-plugin-phonon subpkg (#672088) + +* Tue Feb 08 2011 Fedora Release Engineering - 1:4.7.1-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Wed Jan 26 2011 Rex Dieter 4.7.1-13 +- -config: fix Obsoletes for real this time + +* Wed Jan 26 2011 Rex Dieter 4.7.1-12 +- fix qt-config related Obsoletes/Provides + +* Wed Jan 26 2011 Rex Dieter 4.7.1-11 +- upstream fix for QTextCursor regression (QTBUG-15857, kde#249373) + +* Tue Jan 25 2011 Rex Dieter 4.7.1-10 +- -config subpkg +- qt-x11 pulls in phonon (#672088) +- qtconfig.desktop: drop NoDisplay (f15+ only, for now) + +* Thu Jan 20 2011 Rex Dieter 4.7.1-9.1 +- apply the Assistant QtWebKit dependency removal (#660287) everywhere + +* Thu Jan 06 2011 Rex Dieter 4.7.1-9 +- qsortfilterproxymodel fix (merge_request/934) + +* Tue Jan 04 2011 Rex Dieter 4.7.1-8 +- only do Requires: phonon-backend if using qt's phonon + +* Fri Dec 24 2010 Kevin Kofler 4.7.1-7 +- fix QTreeView crash triggered by KPackageKit (patch by David Faure) + +* Fri Dec 24 2010 Rex Dieter 4.7.1-6 +- rebuild (mysql) + +* Wed Dec 08 2010 Kevin Kofler 4.7.1-5 +- make the Assistant QtWebKit dependency removal (#660287) F15+ only for now +- fix QTextCursor crash in Lokalize and Psi (QTBUG-15857, kde#249373, #660028) +- add some more NULL checks to the glib_eventloop_nullcheck patch (#622164) + +* Mon Dec 06 2010 Than Ngo 4.7.1-4 +- bz#660287, using QTextBrowser in assistant to drop qtwebkit dependency + +* Tue Nov 23 2010 Rex Dieter - 4.7.1-3 +- Fails to create debug build of Qt projects on mingw (#653674, QTBUG-14467) + +* Mon Nov 22 2010 Than Ngo - 4.7.1-2 +- bz#528303, Reordering of Malayalam Rakar not working properly + +* Thu Nov 11 2010 Than Ngo - 4.7.1-1 +- 4.7.1 + +* Mon Oct 25 2010 Jaroslav Reznik - 4.7.0-8 +- QtWebKit, CVE-2010-1822: crash by processing certain SVG images (#640290) + +* Mon Oct 18 2010 Rex Dieter - 4.7.0-7 +- qt-devel contains residues from patch run (#639463) + +* Fri Oct 15 2010 Than Ngo - 4.7.0-6 +- apply patch to fix the color issue in 24bit mode (cirrus driver) + +* Thu Sep 30 2010 Rex Dieter - 4.7.0-5 +- Wrong Cursor when widget become native on X11 (QTBUG-6185) + +* Mon Sep 27 2010 Than Ngo - 4.7.0-4 +- apply upstream patch to fix QTreeView-regression (QTBUG-13567) + +* Thu Sep 23 2010 Than Ngo - 4.7.0-3 +- fix typo in license + +* Thu Sep 23 2010 Than Ngo - 4.7.0-2 +- fix bz#562049, bn-IN Incorrect rendering +- fix bz#562058, bn_IN init feature is not applied properly +- fix bz#631732, indic invalid syllable's are not recognized properly +- fix bz#636399, oriya script open type features are not applied properly + +* Tue Sep 21 2010 Than Ngo - 4.7.0-1 +- 4.7.0 + +* Thu Sep 09 2010 Rex Dieter - 4.7.0-0.31.rc1 +- -webkit-devel: add missing %%defattr +- -webkit: move qml/webkit bits here + +* Wed Sep 08 2010 Rex Dieter - 4.7.0-0.30.rc1 +- Crash in drawPixmap in Qt 4.7rc1 (#631845, QTBUG-12826) + +* Mon Aug 30 2010 Than Ngo - 4.7.0-0.29.rc1 +- drop the patch, it's already fixed in upstream + +* Thu Aug 26 2010 Than Ngo - 4.7.0-0.28.rc1 +- 4.7.0 rc1 + +* Thu Jul 08 2010 Rex Dieter - 4.7.0-0.26.beta2 +- rebase patches, avoiding use of patch fuzz +- omit old qt-copy/kde-qt patches, pending review +- omit kde4_plugin patch +- ftbfs:s/qml/qmlviewer, libQtMediaServices no longer included + +* Thu Jul 08 2010 Rex Dieter - 4.7.0-0.25.beta2 +- 4.7.0-beta2 + +* Thu Jul 01 2010 Rex Dieter - 4.7.0-0.24.beta1 +- X11Embed broken (rh#609757, QTBUG-10809) + +* Thu Jul 01 2010 Kevin Kofler - 4.7.0-0.23.beta1 +- use find_lang to package the qm files (#609749) +- put the qm files into the correct subpackages +- remove qvfb translations, we don't ship qvfb + +* Tue Jun 29 2010 Rex Dieter 4.7.0-0.20.beta1 +- avoid timestamps in uic-generated files to be multilib-friendly + +* Fri Jun 18 2010 Rex Dieter 4.7.0-0.19.beta1 +- revert -no-javascript-jit change, false-alarm (#604003) +- QtWebKit does not search correct plugin path(s) (#568860) +- QtWebKit browsers crash with flash-plugin (rh#605677,webkit#40567) +- drop qt-x11-opensource-src-4.5.0-gcc_hack.patch + +* Wed Jun 16 2010 Rex Dieter 4.7.0-0.18.beta1 +- -no-javascript-jit on i686 (#604003) + +* Wed Jun 16 2010 Karsten Hopp 4.7.0-0.17.beta1 +- add s390 and s390x to 3rdparty/webkit/JavaScriptCore/wtf/Platform.h and + 3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h + +* Fri Jun 11 2010 Rex Dieter - 4.7.0-0.16.beta1 +- scrub -lpulse-mainloop-glib from .prl files (#599844) +- scrub references to %%buildroot in .pc, .prl files + +* Thu May 27 2010 Rex Dieter - 4.7.0-0.15.beta1 +- Unsafe use of rand() in X11 (QTBUG-9793) + +* Fri May 21 2010 Rex Dieter - 4.7.0-0.14.beta1 +- drop -no-javascript-jit (webkit#35154) + +* Mon May 17 2010 Rex Dieter - 4.7.0-0.13.beta1 +- QT_GRAPHICSSYSTEM env support + +* Sun May 16 2010 Rex Dieter - 4.7.0-0.12.beta1 +- -webkit-devel: move Qt/qweb*.h here (#592680) + +* Fri May 07 2010 Rex Dieter - 4.7.0-0.11.beta1 +- -webkit-devel: Obsoletes: qt-devel ... (upgrade path) + +* Thu May 06 2010 Rex Dieter - 4.7.0-0.10.beta1 +- -webkit-devel: Provides: qt4-webkit-devel , Requires: %%name-devel + +* Thu May 06 2010 Rex Dieter - 4.7.0-0.9.beta1 +- 4.7.0-beta1 +- -webkit-devel : it lives! brainz! + +* Fri Apr 30 2010 Rex Dieter - 4.7.0-0.8.tp +- prepping for separate QtWebKit(-2.0) +- -webkit subpkg, Provides: QtWebKit ... +- -devel: Provides: QtWebKit-devel ... +- TODO: -webkit-devel (and see what breaks) + +* Wed Apr 28 2010 Rex Dieter - 4.7.0-0.7.tp +- own %%{_qt4_plugindir}/crypto + +* Sat Apr 03 2010 Kevin Kofler - 4.7.0-0.6.tp +- backport fix for QTBUG-9354 which breaks kdeutils build + +* Fri Apr 02 2010 Rex Dieter - 4.7.0-0.5.tp +- Associate text/vnd.trolltech.linguist with linguist (#579082) + +* Tue Mar 23 2010 Tom "spot" Callaway - 4.7.0-0.4.tp +- fix type cast issue on sparc64 + +* Sun Mar 21 2010 Kevin Kofler - 4.7.0-0.3.tp +- also strip -lpulse from .prl files (fixes PyQt4 QtMultimedia binding build) + +* Tue Mar 16 2010 Rex Dieter - 4.7.0-0.2.tp +- qt-4.7.0-tp +- macros.qt4 : +%%_qt4_importdir +- don't strip libs from pkgconfig files, Libs.private is now used properly +- add -lphonon to stripped libs instead of brutally hacking out + QMAKE_PRL_LIBS altogether (#520323) +- qt-assistant-adp packaged separately now, not included here + +* Sat Mar 13 2010 Kevin Kofler - 4.6.2-7 +- BR alsa-lib-devel (for QtMultimedia) + +* Sat Mar 13 2010 Kevin Kofler - 4.6.2-6 +- Provides: qt-assistant-adp(-devel) + +* Fri Mar 05 2010 Than Ngo - 4.6.2-5 +- Make tablet detection work with new wacom drivers (#569132) + +* Mon Mar 01 2010 Rex Dieter - 4.6.2-4 +- fix 64bit platform logic, use linux-g++-64 everywhere except x86_64 (#569542) + +* Sun Feb 28 2010 Kevin Kofler - 4.6.2-3 +- fix CUPS patch not to crash if currentPPD is NULL (#566304) + +* Tue Feb 16 2010 Rex Dieter - 4.6.2-2 +- macros.qt4: s/qt45/qt46/ + +* Mon Feb 15 2010 Rex Dieter - 4.6.2-1 +- 4.6.2 + +* Fri Feb 05 2010 Rex Dieter - 4.6.1-3 +- improve cups support (#523846, kde#180051#c22) + +* Tue Jan 19 2010 Rex Dieter - 4.6.1-2 +- drop bitmap_font_speed patch, rejected upstream + +* Tue Jan 19 2010 Than Ngo - 4.6.1-1 +- 4.6.1 + +* Mon Jan 11 2010 Rex Dieter - 4.6.0-5 +- bitmap_font_speed patch (QTBUG-7255) + +* Sat Jan 09 2010 Rex Dieter - 4.6.0-4 +- Fix crash when QGraphicsItem destructor deletes other QGraphicsItem (kde-qt cec34b01) +- Fix a crash in KDE/Plasma with QGraphicsView. TopLevel list of items (kde-qt 63839f0c) + +* Wed Dec 23 2009 Kevin Kofler - 4.6.0-3 +- disable QtWebKit JavaScript JIT again, incompatible with SELinux (#549994) + +* Sat Dec 05 2009 Kevin Kofler - 4.6.0-2 +- own %%{_qt4_plugindir}/gui_platform + +* Tue Dec 01 2009 Than Ngo - 4.6.0-1 +- 4.6.0 + +* Tue Nov 17 2009 Rex Dieter - 4.6.0-0.6.rc1 +- qt-4.6.0-rc1 + +* Sat Nov 14 2009 Rex Dieter - 4.6.0-0.5.beta1 +- -tds: Add package with TDS sqldriver (#537586) +- add arch'd provides for sql drivers + +* Sun Nov 08 2009 Rex Dieter - 4.6.0-0.4.beta1 +- -x11: Requires: %%{name}-sqlite%{?_isa} + +* Mon Oct 26 2009 Rex Dieter - 4.6.0-0.3.beta1 +- kde-qt patches (as of 20091026) + +* Fri Oct 16 2009 Than Ngo - 4.6.0-0.2.beta1 +- subpackage sqlite plugin, add Require on qt-sqlite in qt-x11 + for assistant +- build/install qdoc3 again + +* Wed Oct 14 2009 Rex Dieter - 4.6.0-0.1.beta1 +- qt-4.6.0-beta1 +- no kde-qt patches (yet) + +* Sat Oct 10 2009 Than Ngo - 4.5.3-4 +- fix translation build issue +- rhel cleanup + +* Tue Oct 06 2009 Jaroslav Reznik - 4.5.3-3 +- disable JavaScriptCore JIT, SE Linux crashes (#527079) + +* Fri Oct 02 2009 Than Ngo - 4.5.3-2 +- cleanup patches +- if ! phonon_internal, exclude more/all phonon headers +- qt-devel must Requires: phonon-devel (#520323) + +* Thu Oct 01 2009 Rex Dieter - 4.5.3-1 +- qt-4.5.3 + +* Tue Sep 29 2009 Rex Dieter - 4.5.2-21 +- switch to external/kde phonon + +* Mon Sep 28 2009 Rex Dieter - 4.5.2-20 +- use internal Qt Assistant/Designer icons +- -devel: move designer.qch,linguist.qch here +- move ownership of %%_qt4_docdir, %%_qt4_docdir/qch to main pkg + +* Sun Sep 20 2009 Rex Dieter - 4.5.2-19 +- Missing Qt Designer icon (#476605) + +* Fri Sep 11 2009 Rex Dieter - 4.5.2-18 +- drop gcc -fno-var-tracking-assignments hack (#522576) + +* Fri Sep 11 2009 Than Ngo - 4.5.2-17 +- drop useless check for ossl patch, the patch works fine with old ossl + +* Wed Sep 09 2009 Than Ngo - 4.5.2-16 +- add a correct system_ca_certificates patch + +* Tue Sep 08 2009 Rex Dieter - 4.5.2-15 +- use system ca-certificates (#521911) + +* Tue Sep 01 2009 Than Ngo - 4.5.2-14 +- drop fedora < 9 support +- only apply ossl patch for fedora > 11 + +* Mon Aug 31 2009 Than Ngo - 4.5.2-13 +- fix for CVE-2009-2700 + +* Thu Aug 27 2009 Rex Dieter 4.5.2-12 +- use platform linux-g++ everywhere (ie, drop linux-g++-64 on 64 bit), + avoids plugin/linker weirdness (bug #478481) + +* Wed Aug 26 2009 Tomas Mraz - 1:4.5.2-11 +- rebuilt with new openssl + +* Thu Aug 20 2009 Than Ngo - 4.5.2-10 +- switch to kde-qt branch + +* Tue Aug 18 2009 Than Ngo - 4.5.2-9 +- security fix for CVE-2009-1725 (bz#513813) + +* Sun Aug 16 2009 Than Ngo - 4.5.2-8 +- fix phonon-backend-gstreamer for using pulsaudio (#513421) + +* Fri Aug 14 2009 Rex Dieter 4.5.2-7 +- kde-qt: 287-qmenu-respect-minwidth +- kde-qt: 0288-more-x-keycodes (#475247) + +* Wed Aug 05 2009 Rex Dieter 4.5.2-6 +- use linker scripts for _debug targets (#510246) +- tighten deps using %%{?_isa} +- -x11: Requires(post,postun): /sbin/ldconfig + +* Thu Jul 30 2009 Than Ngo - 4.5.2-5 +- apply upstream patch to fix issue in Copy and paste + +* Sun Jul 26 2009 Fedora Release Engineering - 1:4.5.2-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Thu Jul 02 2009 Than Ngo - 4.5.2-3 +- pregenerate PNG, drop BR on GraphicsMagick (bz#509244) + +* Fri Jun 26 2009 Kevin Kofler - 4.5.2-2 +- take current qt-copy-patches snapshot (20090626) +- disable patches which are already in 4.5.2 +- fix the qt-copy patch 0274-shm-native-image-fix.diff to apply against 4.5.2 + +* Thu Jun 25 2009 Lukáš Tinkl - 4.5.2-1 +- Qt 4.5.2 + +* Sun Jun 07 2009 Rex Dieter - 4.5.1-18 +- phonon-backend-gstreamer pkg, with icons +- optimize (icon-mostly) scriptlets + +* Sun Jun 07 2009 Than Ngo - 4.5.1-17 +- drop the hack, apply patch to install Global header, gstreamer.desktop + and dbus services file + +* Sat Jun 06 2009 Rex Dieter - 4.5.1-16 +- install awol Phonon/Global header + +* Fri Jun 05 2009 Kevin Kofler - 4.5.1-15 +- apply Phonon PulseAudio patch (needed for the xine-lib backend) + +* Fri Jun 05 2009 Than Ngo - 4.5.1-14 +- enable phonon and gstreamer-backend + +* Sat May 30 2009 Rex Dieter - 4.5.1-13 +- -doc: Obsoletes: qt-doc < 1:4.5.1-4 (workaround bug #502401) + +* Sat May 23 2009 Rex Dieter - 4.5.1-12 +- +phonon_internal macro to toggle packaging of qt's phonon (default off) + +* Fri May 22 2009 Rex Dieter - 4.5.1-11 +- qt-copy-patches-20090522 + +* Wed May 20 2009 Rex Dieter - 4.5.1-10.2 +- full (non-bootstrap) build + +* Wed May 20 2009 Rex Dieter - 4.5.1-10.1 +- allow for minimal bootstrap build (*cough* arm *cough*) + +* Wed May 06 2009 Rex Dieter - 4.5.1-10 +- improved kde4_plugins patch, skip expensive/unneeded canonicalPath + +* Wed May 06 2009 Rex Dieter - 4.5.1-9 +- include kde4 plugin path by default (#498809) + +* Mon May 04 2009 Rex Dieter - 4.5.1-8 +- fix invalid assumptions about mysql_config --libs (bug #440673) +- fix %%files breakage from 4.5.1-5 + +* Wed Apr 29 2009 Rex Dieter - 4.5.1-7 +- -devel: Provides: qt4-devel%%{?_isa} ... + +* Mon Apr 27 2009 Than Ngo - 4.5.1-6 +- drop useless hunk of qt-x11-opensource-src-4.5.1-enable_ft_lcdfilter.patch + +* Mon Apr 27 2009 Rex Dieter - 4.5.1-5 +- -devel: Provides: *-static for libQtUiTools.a + +* Fri Apr 24 2009 Rex Dieter - 4.5.1-4 +- qt-doc noarch +- qt-demos, qt-examples (split from -doc) +- (cosmetic) re-order subpkgs in alphabetical order +- drop unused profile.d bits + +* Fri Apr 24 2009 Rex Dieter - 4.5.1-3 +- enable FT_LCD_FILTER (uses freetype subpixel filters if available at runtime) + +* Fri Apr 24 2009 Than Ngo - 4.5.1-2 +- apply upstream patch to fix the svg rendering regression + +* Thu Apr 23 2009 Than Ngo - 4.5.1-1 +- 4.5.1 + +* Tue Apr 14 2009 Rex Dieter - 4.5.0-14 +- fix vrgb/vgbr corruption, disable QT_USE_FREETYPE_LCDFILTER (#490377) + +* Fri Apr 10 2009 Than Ngo - 4.5.0-13 +- unneeded executable permissions for profile.d scripts + +* Wed Apr 01 2009 Kevin Kofler - 4.5.0-12 +- fix inline asm in qatomic (de)ref (i386/x86_64), should fix Kolourpaint crash + +* Mon Mar 30 2009 Rex Dieter - 4.5.0-11 +- qt fails to build on ia64 (#492174) + +* Wed Mar 25 2009 Rex Dieter - 4.5.0-10 +- qt-copy-patches-20090325 + +* Tue Mar 24 2009 Than Ngo - 4.5.0-9 +- lrelease only shows warning when duplicate messages found in *.ts( #491514) + +* Fri Mar 20 2009 Rex Dieter - 4.5.0-8 +- qt-copy-patches-20090319 + +* Thu Mar 19 2009 Rex Dieter - 4.5.0-7 +- include more phonon bits, attempt to fix/provide phonon bindings + for qtscriptgenerator, PyQt, ... + +* Tue Mar 17 2009 Than Ngo - 4.5.0-6 +- fix lupdate segfault (#486866) + +* Sat Mar 14 2009 Dennis Gilmore - 4.5.0-5 +- add patch for sparc64. +- _Atomic_word is not always an int + +* Tue Mar 10 2009 Rex Dieter - 4.5.0-4 +- macros.qt4: %%_qt45 +- cleanup more phonon-related left-overs + +* Wed Mar 04 2009 Rex Dieter - 4.5.0-3 +- -no-phonon-backend +- include qdoc3 +- move designer plugins to runtime (#487622) + +* Tue Mar 03 2009 Rex Dieter - 4.5.0-2 +- License: LGPLv2 with exceptions or GPLv3 with exceptions +- BR: gstreamer-devel +- drop qgtkstyle patch (no longer needed) +- -x11: move libQtScriptTools here (linked with libQtGui) + +* Tue Mar 03 2009 Than Ngo - 4.5.0-1 +- 4.5.0 + +* Fri Feb 27 2009 Rex Dieter - 1:4.5.0-0.8.20090224 +- 20090224 snapshot +- adjust pkgconfig hackery + +* Wed Feb 25 2009 Fedora Release Engineering - 1:4.5.0-0.7.rc1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Sun Feb 22 2009 Rex Dieter 4.5.0-0.5.rc1 +- revert license, change won't land until official 4.5.0 release +- workaround broken qhostaddress.h (#485677) +- Provides: qgtkstyle = 0.1 + +* Fri Feb 20 2009 Rex Dieter 4.5.0-0.4.rc1 +- saner versioned Obsoletes +- -gtkstyle, Obsoletes: qgtkstyle < 0.1 +- enable phonon support and associated hackery + +* Mon Feb 16 2009 Than Ngo 4.5.0-0.3.rc1 +- fix callgrindChildExitCode is uninitialzed + +* Sun Feb 15 2009 Rex Dieter - 4.5.0-0.2.rc1 +- qt-copy-patches-20090215 +- License: +LGPLv2 + +* Wed Feb 11 2009 Than Ngo - 4.5.0-0.rc1.0 +- 4.5.0 rc1 + +* Thu Feb 05 2009 Rex Dieter 4.4.3-16 +- track branches/qt-copy/4.4, and backout previous trunk(qt45) ones + +* Mon Feb 02 2009 Than Ngo 4.4.3-15 +- disable 0269,0270,0271 patches, it causes issue in systray + +* Thu Jan 29 2009 Rex Dieter - 4.4.3-14 +- qt-copy-patches-20090129 + +* Mon Jan 26 2009 Rex Dieter - 4.4.3-13 +- Provides: qt4%%{?_isa} = %%version-%%release +- add %%_qt4 to macros.qt4 + +* Thu Jan 22 2009 Rex Dieter - 4.4.3-12 +- respin (mysql) + +* Fri Jan 16 2009 Kevin Kofler - 4.4.3-11 +- rebuild for new OpenSSL + +* Mon Jan 12 2009 Rex Dieter - 4.4.3-10 +- drop qt-x11-opensource-src-4.3.4-no-hardcoded-font-aliases.patch (#447298), + in favor of qt-copy's 0263-fix-fontconfig-handling.diff + +* Mon Jan 12 2009 Than Ngo - 4.4.3-9 +- qt-copy-patches-20090112 + +* Tue Dec 30 2008 Rex Dieter 4.4.3-8 +- qt-copy-patches-20081225 + +* Fri Dec 12 2008 Rex Dieter 4.4.3-7 +- rebuild for pkgconfig deps + +* Wed Nov 12 2008 Rex Dieter 4.4.3-6 +- qt-copy-patches-20081112 + +* Tue Nov 11 2008 Than Ngo 4.4.3-5 +- drop 0256-fix-recursive-backingstore-sync-crash.diff, it's + included in qt-copy-pathes-20081110 + +* Mon Nov 10 2008 Rex Dieter 4.4.3-4 +- qt-copy-patches-20081110 + +* Mon Nov 10 2008 Than Ngo 4.4.3-3 +- apply 0256-fix-recursive-backingstore-sync-crash.diff + +* Thu Nov 06 2008 Than Ngo 4.4.3-2 +- bz#468814, immodule selection behavior is unpredictable without QT_IM_MODULE, + patch from Peng Wu +- backport fix from 4.5 + +* Sun Sep 28 2008 Rex Dieter 4.4.3-1 +- 4.4.3 + +* Wed Sep 24 2008 Rex Dieter 4.4.2-2 +- omit systray patch (for now) + +* Sat Sep 20 2008 Than Ngo 4.4.2-1 +- 4.4.2 + +* Mon Sep 08 2008 Rex Dieter - 4.4.1-3 +- apply QMAKEPATH portion of multilib patch only if needed +- qt-copy-patches-20080908 + +* Wed Aug 06 2008 Than Ngo - 4.4.1-2 +- fix license tag +- fix Obsoletes: qt-sqlite (missing epoch) + +* Tue Aug 05 2008 Than Ngo - 4.4.1-1 +- 4.4.1 + +* Tue Aug 05 2008 Rex Dieter 4.4.0-17 +- fold -sqlite subpkg into main (#454930) + +* Wed Jul 23 2008 Rex Dieter 4.4.0-16 +- qt-copy-patches-20080723 (kde#162793) +- omit deprecated phonon bits + +* Sat Jul 19 2008 Rex Dieter 4.4.0-15 +- fix/workaround spec syntax + +* Sat Jul 19 2008 Rex Dieter 4.4.0-14 +- macros.qt4: fix %%_qt4_datadir, %%_qt4_translationdir + +* Thu Jul 17 2008 Rex Dieter 4.4.0-13 +- (re)fix qconfig-multilib.h for sparc64 + +* Fri Jul 11 2008 Rex Dieter 4.4.0-12 +- qt-copy-patches-20080711 + +* Mon Jun 23 2008 Rex Dieter 4.4.0-11 +- fix dbus conditional (#452487) + +* Sat Jun 14 2008 Rex Dieter 4.4.0-10 +- strip -lsqlite3 from .pc files (#451490) + +* Sat Jun 14 2008 Kevin Kofler 4.4.0-9 +- restore -qt4 suffixes + +* Fri Jun 13 2008 Than Ngo 4.4.0-8 +- drop qt wrapper, make symlinks to /usr/bin + +* Tue Jun 10 2008 Than Ngo 4.4.0-7 +- fix #450310, multilib issue + +* Fri Jun 06 2008 Rex Dieter 4.4.0-6 +- qt-copy-patches-20080606 +- drop BR: libungif-devel (not used) +- move libQtXmlPatters, -x11 -> main +- move qdbuscpp2xml, qdbusxml2cpp, xmlpatters, -x11 -> -devel + +* Tue May 27 2008 Kevin Kofler 4.4.0-5 +- under GNOME, default to QGtkStyle if available + +* Mon May 19 2008 Kevin Kofler 4.4.0-4 +- don't hardcode incorrect font substitutions (#447298) + +* Fri May 16 2008 Rex Dieter 4.4.0-3 +- qt-copy-patches-20080516 + +* Tue May 13 2008 Kevin Kofler 4.4.0-2 +- revert _qt4_bindir change for now, needs more work (#446167) + +* Tue May 06 2008 Rex Dieter 4.4.0-1 +- qt-4.4.0