Merge remote-tracking branch 'origin/5.9' into 5.10

Conflicts:
	tests/auto/network/socket/qudpsocket/tst_qudpsocket.cpp

Change-Id: Ib6dd965a7eb6f59103e276b3407739147ecd37b2
This commit is contained in:
Liang Qi 2018-01-07 14:45:46 +01:00
commit 24fba6744c
9 changed files with 50 additions and 13 deletions

View File

@ -157,10 +157,10 @@ rem Determine host spec
if "%PLATFORM%" == "" ( if "%PLATFORM%" == "" (
if not "%icl.exe%" == "" ( if not "%icl.exe%" == "" (
set PLATFORM=win32-icc set PLATFORM=win32-icc
) else if not "%clang-cl.exe%" == "" (
set PLATFORM=win32-clang-msvc
) else if not "%cl.exe%" == "" ( ) else if not "%cl.exe%" == "" (
set PLATFORM=win32-msvc set PLATFORM=win32-msvc
) else if not "%clang-cl.exe%" == "" (
set PLATFORM=win32-clang-msvc
) else if not "%g++.exe%" == "" ( ) else if not "%g++.exe%" == "" (
set PLATFORM=win32-g++ set PLATFORM=win32-g++
) else ( ) else (

View File

@ -54,3 +54,7 @@ macx-xcode:qtConfig(static): \
# feature, which allows Xcode to choose the Qt libraries to link to # feature, which allows Xcode to choose the Qt libraries to link to
# at build time, depending on the current Xcode SDK and configuration. # at build time, depending on the current Xcode SDK and configuration.
QMAKE_XCODE_LIBRARY_SUFFIX_SETTING = QT_LIBRARY_SUFFIX QMAKE_XCODE_LIBRARY_SUFFIX_SETTING = QT_LIBRARY_SUFFIX
xcode_copy_phase_strip_setting.name = COPY_PHASE_STRIP
xcode_copy_phase_strip_setting.value = NO
QMAKE_MAC_XCODE_SETTINGS += xcode_copy_phase_strip_setting

View File

@ -279,7 +279,6 @@ ProjectBuilderMakefileGenerator::writeSubDirs(QTextStream &t)
QString configName = (as_release ? "Release" : "Debug"); QString configName = (as_release ? "Release" : "Debug");
QMap<QString, QString> settings; QMap<QString, QString> settings;
settings.insert("COPY_PHASE_STRIP", (as_release ? "YES" : "NO"));
if(project->isActiveConfig("sdk") && !project->isEmpty("QMAKE_MAC_SDK")) if(project->isActiveConfig("sdk") && !project->isEmpty("QMAKE_MAC_SDK"))
settings.insert("SDKROOT", project->first("QMAKE_MAC_SDK").toQString()); settings.insert("SDKROOT", project->first("QMAKE_MAC_SDK").toQString());
{ {
@ -1493,7 +1492,6 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
settings.insert("PROVISIONING_PROFILE_SPECIFIER", project->first("QMAKE_PROVISIONING_PROFILE").toQString()); settings.insert("PROVISIONING_PROFILE_SPECIFIER", project->first("QMAKE_PROVISIONING_PROFILE").toQString());
} }
settings.insert("COPY_PHASE_STRIP", (as_release ? "YES" : "NO"));
settings.insert("APPLICATION_EXTENSION_API_ONLY", project->isActiveConfig("app_extension_api_only") ? "YES" : "NO"); settings.insert("APPLICATION_EXTENSION_API_ONLY", project->isActiveConfig("app_extension_api_only") ? "YES" : "NO");
// required for tvOS (and watchos), optional on iOS (deployment target >= iOS 6.0) // required for tvOS (and watchos), optional on iOS (deployment target >= iOS 6.0)
settings.insert("ENABLE_BITCODE", project->isActiveConfig("bitcode") ? "YES" : "NO"); settings.insert("ENABLE_BITCODE", project->isActiveConfig("bitcode") ? "YES" : "NO");

View File

@ -155,6 +155,20 @@ UnixMakefileGenerator::writeSubTargets(QTextStream &t, QList<MakefileGenerator::
} }
} }
static QString rfc1034Identifier(const QString &str)
{
QString s = str;
for (QChar &ch : s) {
const char c = ch.toLatin1();
const bool okChar = (c >= '0' && c <= '9') || (c >= 'A' && c <= 'Z')
|| (c >= 'a' && c <= 'z') || c == '-' || c == '.';
if (!okChar)
ch = QChar::fromLatin1('-');
}
return s;
}
void void
UnixMakefileGenerator::writeMakeParts(QTextStream &t) UnixMakefileGenerator::writeMakeParts(QTextStream &t)
{ {
@ -835,7 +849,7 @@ UnixMakefileGenerator::writeMakeParts(QTextStream &t)
if (bundleIdentifier.endsWith(".framework")) if (bundleIdentifier.endsWith(".framework"))
bundleIdentifier.chop(10); bundleIdentifier.chop(10);
// replace invalid bundle id characters // replace invalid bundle id characters
bundleIdentifier.replace('_', '-'); bundleIdentifier = rfc1034Identifier(bundleIdentifier);
commonSedArgs << "-e \"s,@BUNDLEIDENTIFIER@," << bundleIdentifier << ",g\" "; commonSedArgs << "-e \"s,@BUNDLEIDENTIFIER@," << bundleIdentifier << ",g\" ";
commonSedArgs << "-e \"s,\\$${PRODUCT_BUNDLE_IDENTIFIER}," << bundleIdentifier << ",g\" "; commonSedArgs << "-e \"s,\\$${PRODUCT_BUNDLE_IDENTIFIER}," << bundleIdentifier << ",g\" ";

View File

@ -324,7 +324,8 @@ void MingwMakefileGenerator::writeBuildRulesPart(QTextStream &t)
t << "\n\t" <<var("QMAKE_PRE_LINK"); t << "\n\t" <<var("QMAKE_PRE_LINK");
if(project->isActiveConfig("staticlib") && project->first("TEMPLATE") == "lib") { if(project->isActiveConfig("staticlib") && project->first("TEMPLATE") == "lib") {
t << "\n\t-$(DEL_FILE) $(DESTDIR_TARGET) 2>" << var("QMAKE_SHELL_NULL_DEVICE"); t << "\n\t-$(DEL_FILE) $(DESTDIR_TARGET) 2>" << var("QMAKE_SHELL_NULL_DEVICE");
if (project->values("OBJECTS").count() < var("QMAKE_LINK_OBJECT_MAX").toInt()) { const ProString &objmax = project->first("QMAKE_LINK_OBJECT_MAX");
if (objmax.isEmpty() || project->values("OBJECTS").count() < objmax.toInt()) {
t << "\n\t$(LIB) $(DESTDIR_TARGET) " << objectsLinkLine << " " ; t << "\n\t$(LIB) $(DESTDIR_TARGET) " << objectsLinkLine << " " ;
} else { } else {
t << "\n\t" << objectsLinkLine << " " ; t << "\n\t" << objectsLinkLine << " " ;

View File

@ -1203,7 +1203,7 @@ void QWindowsNativeFileDialogBase::onSelectionChange()
{ {
const QList<QUrl> current = selectedFiles(); const QList<QUrl> current = selectedFiles();
m_data.setSelectedFiles(current); m_data.setSelectedFiles(current);
qDebug() << __FUNCTION__ << current << current.size(); qCDebug(lcQpaDialogs) << __FUNCTION__ << current << current.size();
if (current.size() == 1) if (current.size() == 1)
emit currentChanged(current.front()); emit currentChanged(current.front());

View File

@ -295,11 +295,15 @@ private:
bool develMode = false; bool develMode = false;
bool debugWait = false; bool debugWait = false;
for (const char *arg : args) { for (int i = args.count() - 1; i >= 0; --i) {
if (strcmp(arg, "-qdevel") == 0) const char *arg = args.at(i);
if (strcmp(arg, "-qdevel") == 0) {
develMode = true; develMode = true;
if (strcmp(arg, "-qdebug") == 0) args.remove(i);
} else if (strcmp(arg, "-qdebug") == 0) {
debugWait = true; debugWait = true;
args.remove(i);
}
} }
if (develMode) { if (develMode) {
// Write a PID file to help runner // Write a PID file to help runner

View File

@ -18,12 +18,9 @@ osx
osx osx
[broadcasting] [broadcasting]
osx osx
ubuntu-16.04
[zeroLengthDatagram] [zeroLengthDatagram]
osx osx
[linkLocalIPv6] [linkLocalIPv6]
redhatenterpriselinuxworkstation-6.6 redhatenterpriselinuxworkstation-6.6
[pendingDatagramSize]
ubuntu-16.04
[readyReadForEmptyDatagram] [readyReadForEmptyDatagram]
ubuntu-16.04 ubuntu-16.04

View File

@ -126,12 +126,14 @@ protected slots:
private: private:
bool shouldSkipIpv6TestsForBrokenSetsockopt(); bool shouldSkipIpv6TestsForBrokenSetsockopt();
bool shouldWorkaroundLinuxKernelBug();
#ifdef SHOULD_CHECK_SYSCALL_SUPPORT #ifdef SHOULD_CHECK_SYSCALL_SUPPORT
bool ipv6SetsockoptionMissing(int level, int optname); bool ipv6SetsockoptionMissing(int level, int optname);
#endif #endif
QNetworkInterface interfaceForGroup(const QHostAddress &multicastGroup); QNetworkInterface interfaceForGroup(const QHostAddress &multicastGroup);
bool m_skipUnsupportedIPv6Tests; bool m_skipUnsupportedIPv6Tests;
bool m_workaroundLinuxKernelBug;
QList<QHostAddress> allAddresses; QList<QHostAddress> allAddresses;
QHostAddress multicastGroup4, multicastGroup6; QHostAddress multicastGroup4, multicastGroup6;
QVector<QHostAddress> linklocalMulticastGroups; QVector<QHostAddress> linklocalMulticastGroups;
@ -207,6 +209,16 @@ QNetworkInterface tst_QUdpSocket::interfaceForGroup(const QHostAddress &multicas
return ipv6if; return ipv6if;
} }
bool tst_QUdpSocket::shouldWorkaroundLinuxKernelBug()
{
#ifdef Q_OS_LINUX
const QVersionNumber version = QVersionNumber::fromString(QSysInfo::kernelVersion());
return version.majorVersion() == 4 && version.minorVersion() >= 6 && version.minorVersion() < 13;
#else
return false;
#endif
}
static QHostAddress makeNonAny(const QHostAddress &address, QHostAddress::SpecialAddress preferForAny = QHostAddress::LocalHost) static QHostAddress makeNonAny(const QHostAddress &address, QHostAddress::SpecialAddress preferForAny = QHostAddress::LocalHost)
{ {
if (address == QHostAddress::Any) if (address == QHostAddress::Any)
@ -276,6 +288,7 @@ void tst_QUdpSocket::initTestCase()
qDebug() << "Will use multicast groups" << multicastGroup4 << multicastGroup6 << linklocalMulticastGroups; qDebug() << "Will use multicast groups" << multicastGroup4 << multicastGroup6 << linklocalMulticastGroups;
m_workaroundLinuxKernelBug = shouldWorkaroundLinuxKernelBug();
if (EmulationDetector::isRunningArmOnX86()) if (EmulationDetector::isRunningArmOnX86())
QSKIP("This test is unreliable due to QEMU emulation shortcomings."); QSKIP("This test is unreliable due to QEMU emulation shortcomings.");
} }
@ -360,6 +373,9 @@ void tst_QUdpSocket::unconnectedServerAndClientTest()
void tst_QUdpSocket::broadcasting() void tst_QUdpSocket::broadcasting()
{ {
if (m_workaroundLinuxKernelBug)
QSKIP("This test can fail due to linux kernel bug");
QFETCH_GLOBAL(bool, setProxy); QFETCH_GLOBAL(bool, setProxy);
if (setProxy) { if (setProxy) {
#ifndef QT_NO_NETWORKPROXY #ifndef QT_NO_NETWORKPROXY
@ -805,6 +821,9 @@ void tst_QUdpSocket::bindAndConnectToHost()
void tst_QUdpSocket::pendingDatagramSize() void tst_QUdpSocket::pendingDatagramSize()
{ {
if (m_workaroundLinuxKernelBug)
QSKIP("This test can fail due to linux kernel bug");
QUdpSocket server; QUdpSocket server;
QVERIFY2(server.bind(), server.errorString().toLatin1().constData()); QVERIFY2(server.bind(), server.errorString().toLatin1().constData());