summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Filesystem: Use "birth time" to avoid confusion with Unix ctimeThiago Macieira2017-08-0515-186/+229
| | | | | | | | | | | The Unix stat fields "st_ctime" and "st_ctim" mean "change time", the last time that the file/inode status fields were changed. It does not mean "creation time". So this commit splits all of the internal API to "birth" and "metadata change" instead of "creation" to avoid the conflict. Change-Id: I149e0540c00745fe8119fffd1463fe78b619649e Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Move platform-specific code from QFSFileEngine to QFileSystemEngineThiago Macieira2017-08-055-162/+178
| | | | | Change-Id: I8d96dea9955d4c749b99fffd14cd9395174ba005 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Introduce QFileInfo::birthTime and metadataChangeTimeThiago Macieira2017-08-053-17/+65
| | | | | | | | | | | | | | | | | | | | [ChangeLog][QtCore][QFileInfo] Deprecated created() because it could return one of three different file times depending on the OS and filesystem type, without the ability to determine which one is which. It is replaced by metadataChangeTime() and birthTime(). [ChangeLog][QtCore][QFileInfo] Added QFileInfo::metadataChangeTime(), which returns the time the file's metadata was last changed, if it is known, and falling back to the same value as lastModified() otherwise. On Unix systems, this corresponds to the file's ctime. [ChangeLog][QtCore][QFileInfo] Added QFileInfo::birthTime(), which returns the file's birth time if it is known, an invalid QDateTime otherwise. This function is supported on Windows and on some Unix systems. Change-Id: I0031aa609e714ae983c3fffd1467bd8b3e3a593d Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* QFileSystemEngine::renameFile: use calls that don't overwriteThiago Macieira2017-08-044-1/+57
| | | | | | | | | | | | | | | | | The renameat2(2) Linux system call, new in 3.16, allows for the atomic renaming of a file if and only if it won't clobber an existing file. None of the Linux libcs have enabled this syscall as an API, so we use syscall(3) to place the call. If your libc has SYS_renameat2 but your kernel doesn't support it, we'll keep issuing the unknown syscall, every time. Users in that situation should upgrade (3.16 is from 2014). On Darwin, there's a similar renameatx_np (guessing "np" stands for "non-portable"). I haven't found anything similar on the other BSDs. Change-Id: I1eba2b016de74620bfc8fffd14ccb4e455a3ec9e Reviewed-by: David Faure <david.faure@kdab.com>
* Allow QSettings to synchronize non-atomicallyThiago Macieira2017-08-044-14/+143
| | | | | | | | | | | | | | | | | | | | This is required so that one can use QSettings in situations that temporary files or renaming may not work. [ChangeLog][QtCore][QSettings] Added setAtomicSyncRequired(), which allows one to use QSettings with config files in unwriteable directories or in Alternate Data Streams on NTFS on Windows. This used to work before Qt 5.4, but remains a non-default behavior due to the potential of data corruption. Task-number: QTBUG-47379 Change-Id: I81480fdb578d4d43b3fcfffd14d4f77112f0402f Reviewed-by: Jesus Fernandez <Jesus.Fernandez@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Kai Koehne <kai.koehne@qt.io> Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
* Support Alternate Data Streams in QSaveFileThiago Macieira2017-08-042-5/+92
| | | | | | | | | | | | | | | | We can't use MoveFile to do atomic commits on an ADS, so QSaveFile needs to detect when the target name is ADS and then use the direct fallback mode. [ChangeLog][QtCore][QSaveFile] Saving to Alternate Data Streams on NTFS on Windows is now possible, but requires setDirectWriteFallback(true). Task-number: QTBUG-47379 Change-Id: I81480fdb578d4d43b3fcfffd14d4bc062ae1750d Reviewed-by: Kai Koehne <kai.koehne@qt.io> Reviewed-by: David Faure <david.faure@kdab.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* QTemporaryFileName: use the random data more wiselyThiago Macieira2017-08-041-46/+32
| | | | | | | | | | | | | | | | First, instead of getting 32 bits of random for every character, we can get reasonable randomness with just 10 bits, so we can replace 3 characters per get32() call. A typical template with six X will only need 64 bits of random data. Second, using the PID is not random at all. The reason why mktemp used to use it is irrelevant (probably because applications failed to seed rand()). Either way, we don't need nor want the PID anymore. And because the code is completely rewritten, the UCB copyright no longer applies. Change-Id: I84e45059a888497fb55ffffd14d2d4cfe159abca Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QFile::rename: use QTemporaryFileName instead of QTemporaryFileThiago Macieira2017-08-041-24/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This means the workaround for Linux's behavior now works even if QTemporaryFile is disabled. We also avoid the creation of an otherwise unused temporary file just so we can take its name. Tested with tests/manual/filetest. Strace shows: renameat2(AT_FDCWD, "a", AT_FDCWD, "/var/run/media/tjmaciei/B852-6088/a.EBG705", RENAME_NOREPLACE) = 0 renameat2(AT_FDCWD, "/var/run/media/tjmaciei/B852-6088/a.EBG705", AT_FDCWD, "A", RENAME_NOREPLACE) = 0 Before it was: open("/var/run/media/tjmaciei/B852-6088/a.VuL412", O_RDWR|O_CREAT|O_EXCL|O_CLOEXEC, 0600) = 4 fcntl(4, F_SETFD, FD_CLOEXEC) = 0 lseek(4, 0, SEEK_SET) = 0 rename("a", "/var/run/media/tjmaciei/B852-6088/a.VuL412") = 0 stat("A", 0x7fff13260f00) = -1 ENOENT (No such file or directory) close(4) = 0 renameat2(AT_FDCWD, "/var/run/media/tjmaciei/B852-6088/a.VuL412", AT_FDCWD, "A", RENAME_NOREPLACE) = 0 (the absolute path comes from fd61059d359f0bee1c37d6bf08bf4b83381658ca and it seems it was needed for Symbian) Change-Id: I1eba2b016de74620bfc8fffd14ccc7c4ded009c8 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Long live QTemporaryFileName!Thiago Macieira2017-08-044-166/+112
| | | | | | | | | | | So we can use it in QTemporaryFile, QTemporaryDir and QFile::rename() [ChangeLog][QtCore][QTemporaryDir] The class now supports the "XXXXXX" replacement token anywhere in the template, not just at the end. This behavior is similar to what QTemporaryFile supports. Change-Id: I1eba2b016de74620bfc8fffd14ccb645729de170 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* QTemporaryFile: split the template parsing and generationThiago Macieira2017-08-041-62/+59
| | | | | | | | | | | | | | | | | This makes the code more reusable by the unnamed file feature. This commit removes the backwards compatibility in using sequential file names if the first one failed. Since 5483b30868e44bc0799d7a1998f1907775, there are at least three random characters, so the chance of collision is 1 in 52³ = 140608. That commit also did not take a system failure into account. If we ended up getting EEXIST for all attempts, we'd attempt on average 26³*53³ file creations. For that reason, I've added an upper limit in the number of attempts to create a file. Change-Id: I1eba2b016de74620bfc8fffd14cc7e31c6e50558 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* QTemporaryFile: give the engine access to the template nameThiago Macieira2017-08-043-15/+13
| | | | | | | | | | | Instead of storing it in d->fileEntry. The QFSFileEngine methods may try to use it before the file entry is filled with the actual file name and that's no good. This change is using a reference to avoid keeping an extra QString reference and to avoid going out of sync. Change-Id: I1eba2b016de74620bfc8fffd14cca9e340e4b1e2 Reviewed-by: Kai Koehne <kai.koehne@qt.io> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* QTemporaryFile: add a simpler rename() (non-virtual) overrideThiago Macieira2017-08-042-0/+36
| | | | | | | | | | | | | | | | Calling the parent version is still ok, but if you call the new one you get a bit of benefit. Since we control the file name, we don't have to worry about a case-changing renaming (by choice). We also know that the file is a regular one, because we created it. [ChangeLog][Important Behavior Changes][QTemporaryFile] rename() no longer attempts to do block copying, as that usually indicates a mistake in the user's code. Instead, either create the temporary file in the same directory as the new name to be, or use QSaveFile. Change-Id: I1eba2b016de74620bfc8fffd14ccaac0cdb9fe87 Reviewed-by: David Faure <david.faure@kdab.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* QFSFileEngine: make rename() on Unix not overwriteThiago Macieira2017-08-046-12/+73
| | | | | | | | | | | | | | | The rename(2) system call overwrites, so instead of using it, we try to use the link/unlink pair. This works for regular cases, but can fail if trying to change case in case-insensitive filesystems, if we're operating on a non-Unix filesystem (FAT) or, on Linux, if the file doesn't belong to the calling user (BSDs permit this). For those cases, we fall back to rename(2). That means there's a race condition if a new file is created there. But we at least reduce the likelihood of that happening for regular files. Change-Id: I1eba2b016de74620bfc8fffd14ccb38fd929e5aa Reviewed-by: David Faure <david.faure@kdab.com>
* Implement conversion from nullptr QVariant to QString and QByteArrayAllan Sandfeld Jensen2017-08-042-2/+22
| | | | | | | | | A nullptr QVariant should become a null QString or QByteArray, since null strings have previous in our APIs represented the null value in the absence of a dedicated null metatype. Change-Id: I3b8f6386ece314d7c196959fbcf042c4fe0508a0 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Add a test that we can read SQL time-stampsEdward Welbourne2017-08-041-0/+21
| | | | | | | | | Based on a test-case from Israel Lins Albuquerque, that my planned fixes to our parsing of ISODate date-times would break. Change-Id: I5658df9c7daed59d43aa5574df25d4d9eac4677d Reviewed-by: Israel Lins Albuquerque <israelins85@yahoo.com.br> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Clean-up in QDateTime's parsing of ISODate{,WithMs}Edward Welbourne2017-08-042-7/+19
| | | | | | | | | | | | | | | | | | | | Actually check that there's a T where ISO 8601 wants it (instead of just skipping over whatever's there), with something after it; move some declarations later; add some comments; and use the QStringRef API more cleanly (so that it's easier to see what's going on). Simplify a loop condition to avoid the need for a post-loop fix-up. This incidentally prevents an assertion failure (which brought the mess to my attention) parsing a short string as an ISO date-time; if there's a T with nothing after it, we won't try to read at index -1 in the following text. (The actual fail seen had a Z where the T should have been, with nothing after it.) Add tests for invalid ISOdate cases that triggered the assertion. Change-Id: Ided9adf62a56d98f144bdf91b40f918e22bd82cd Reviewed-by: Israel Lins Albuquerque <israelins85@yahoo.com.br> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* GLSL 1.00 ES must be selected using "#version 100"Kevin Ottens2017-08-042-4/+4
| | | | | | | | I was mistaken before, the "es" part for that version isn't optional, it *must* be omitted. Change-Id: I9e83d2317523fb0a905e40b95a56033cf693b93b Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* QVariants of null pointers should be nullAllan Sandfeld Jensen2017-08-043-6/+43
| | | | | | | | | | | Changes the QVariant::isNull() implementation for pointer types so they return true if null. [ChangeLog][QVariant] QVariants containing pointers will now return true on isNull() if the contained pointer is null. Change-Id: I8aa0dab482403837073fb2f376a46126cc3bc6b2 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* glib dispatcher: ensure all window system events are flushedGatis Paeglis2017-08-042-57/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ... when QCoreApplication::processEvents() returns. This is the expected behavior according to the documentation. Checked also the QUnixEventDispatcherQPA dispatcher, which did work according to the documentation. The sequence of events that causes the bad behavior: 1) XCB plugin sends a signals whenever there are new XCB events available for processing. This signal is connected to QXcbConnection::processXcbEvents, which will cause XCB events to be added to the QWindowSystemInterface (QWSI) event queue. 2) When QCoreApplication::processEvents() is called, glib event dispatcher does one iteration on all attached event sources. First it checks which sources are ready, and after that starts dispatching events from each source that reported to be ready. 3) In the case when there are no events in QWSI event queue, the source that handles QWSI event dispatcing returns 'false'; If at the same iteration the source that sends posted events (via QCoreApplication::sendPostedEvents()) has returned 'true' and one of the posted events is to call QXcbConnection::processXcbEvents (due to signal from step 1) then we get an assert in the following code: QCoreApplication::processEvents(); Q_ASSERT(QWindowSystemInterface::windowSystemEventsQueued() == 0); This happens because QXcbConnection::processXcbEvents has posted new events, but they were not dispatched in this iteration. They would be dispatched in the next iteration. Events being dispatched on subsequent iteration doesn't really matter for Qt application, but is inconsistent from API point of view. If we were populating QWSI queue from non-Gui thread, then it would be possible that windowSystemEventsQueued() != 0, but that is not the case on XCB (don't know about other platforms). The issue could be fixed by always returning true from "check source" and then simply dispatch 0 events at "dispatch" step if there isn't any in the queue. But a better solution is to remove the event source all together. It is completely unnecessary to have this indirection, when we can handle QWSI event dispatch directly from Qt (like we do, for example, in QUnixEventDispatcherQPA and QWinRTEventDispatcher). Not having Glib event source for QWSI events would have also avoided issues that were fixed by fbb485d4f6985643b27da3cc6c5b5f960c32e74d. Note, after this re-factoring QWindowSystemInterface::nonUserInputEventsQueued is now unused, but I left it in as the API by itself is all right. Task-number: QTBUG-62297 Change-Id: Ia245b835676bd87e63bf02b67036b42a3b1593cc Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Long live qEnvironmentVariable()Thiago Macieira2017-08-044-20/+173
| | | | | | | | | | | | | | | | [ChangeLog][QtCore] Added qEnvironmentVariable, which returns the value of an environment variable in a QString, while qgetenv continues to be used to return it in a QByteArray. For Unix, since most environment variables seem to contain path names, qEnvironmentVariable will do the same as QFile::decodeName, which means NFC/NFD conversion on Apple OSes. I opted not to #include <qfile.h> from qglobal.cpp to implement that QFile::decodeName functionality, so qglobal.cpp doesn't depend on corelib/io and to avoid possible recursions. Task-number: QTBUG-41006 Change-Id: I14839ba5678944c2864bffff141794b8aaa7aa28 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Ignore thaiZWJ failure on RHEL 7.2Simon Hausmann2017-08-041-0/+2
| | | | | | | | The test fails when the system harfbuzz (version 1.3.2) is installed. Change-Id: Id18a5a3c503f64ef56567d71655e433a46908b3f Task-number: QTQAINFRA-1363 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
* Fix Q(Quick)Window on eglfsLaszlo Agocs2017-08-031-6/+3
| | | | | | | | | | | The call to QPlatformWindow::setRect (for storing into d->rect) was in the wrong place. It has to be the potentially-overridden value. Amends 3a31c708790ba2bb3cf3dab32a17a83659a1acde Task-number: QTBUG-57608 Change-Id: Id3c35e2dc178f7bd2f9643e8ae4754c8f2f39240 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* uic: Add -no-stringliteral optionAlexander Volkov2017-08-037-18/+40
| | | | | | | | | | | | | ... and use it when building shared libraries and plugins. It prevents application crashes in cases when libraries and plugins are unloaded and their strings are still used by the main application. Task-number: QTBUG-51602 Change-Id: I4af79183f18c5ed6142d55af02a36fe4334f3fee Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Support all QImage formats in native pixmap conversionEirik Aavitsland2017-08-031-2/+5
| | | | | | | | | | The conversion fallback did not catch all the more recently added QImage formats, leading to corrupt pixmaps or crashes. Also alpha channels were needlessly thrown away if present. Change-Id: I38588035aa9bf37b77398489981df65201cf0340 Reviewed-by: Jake Petroules <jake.petroules@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Change EDID parsing qCWarnings to qCDebugsLaszlo Agocs2017-08-032-3/+3
| | | | | | | | | | | Avoid polluting the output by default. Unfortunately there are various systems (modern Fedora with XWayland, VMWare) where parsing will fail for some not yet known reason. Showing warnings on each and every Qt application startup is not desirable, especially since not having the EDID data available is far from being critical. Change-Id: Ibaca7db4d897e705819f7c359f8de41b9be862a6 Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
* Ignore tests that fail on OpenNebulaFrederik Gladhorn2017-08-033-0/+13
| | | | | | | | | | | These tests need fixing, but they are already partially blacklisted and need investigation once the switch is completed. Task-number: QTQAINFRA-1292 Task-number: QTQAINFRA-1355 Task-number: QTQAINFRA-1362 Change-Id: Ic50d0c4a01ee7e72be1129d418eff244ba783185 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* QSslSocket: stabilize triggering for writeAlex Trotsenko2017-08-032-1/+11
| | | | | | | | | | | | | | | | | QSslSocket::writeData() accumulates outgoing data. It might be called multiple times during the event processing (most likely from the long loops which serialize the data). As this function produces a notification event on each call, it's possible to get a huge number of slot invocations on the next event loop run, when we are interested in a single flush. So, this patch protects the code against uncontrolled signal emission that results in the lesser resource usage. Change-Id: If7cf5b0e239abf0bd88a0dfaa8c1183cbd49e5ed Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Markus Goetz (Woboq GmbH) <markus@woboq.com>
* xcb: don't rely on _NET_WORKAREA for available geometry on multi-head systemsGatis Paeglis2017-08-024-2/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On X11, QScreen::availableGeometry() is broken with multi-head systems, and there doesn't seem to be a real fix for this due to limitation in the protocol and therefore support in WMs (more details in the patch). In Gnome this issue is more visible because on this DE the _NET_WORKAREA rectangle represents the intersection of the available geometries on all monitors. This results in a big area of "dead space" on the secondary screen, when primary screen is positioned lower in the virtual space. If menu is opened by clicking in this dead space, the menu is awfully misplaced (qmenu uses availableGeometry() to calculate the position of menu). On Ubuntu with Unity (same is true for KDE Neon+Kwin and LUbuntu+Openbox), _NET_WORKAREA returns a bounding rectangle containing all monitors. Which does not cause the menu misplacement as "dead space" is outside clickable area. But this does not mean that the QScreen::availableGeometry() reported values are correct. With the same setup as described above, QScreen::availableGeometry() thinks that we have a tool panel on the right screen, when in reality it is on the left screen. AwesomeWM for example does not set _NET_WORKAREA at all, which means QScreen::availableGeometry() == QScreen::geometry(). I am not aware that it would cause any issues for popup/menu window positioning in Qt (Qt positions these windows manually by bypassing WM (via Qt::BypassWindowManagerHint) and using availableGeometry for calculations. With this patch, we would take the same code path as if _NET_WORKAREA was not set (where we know that_NET_WORKAREA is cleary wrong). The solution here is to recognize _NET_WORKAREA as true available geometry only in specific cases (cases where the meaning is cleary defined by the specification) and adjust the documentation accordingly. Not knowing the true available geometry on X11 is mitigated by WMs. Window manager can position windows as it wants. WMs are smart enough not to place windows on top of reserved areas at edges (even if user has explicitly requested this via setGeometry based on inaccurate information from availableGeometry()). [ChangeLog][Platform Specific Changes][Linux] The _NET_WORKAREA atom is used for calculating QScreen::availableGeometry() only on systems with one monitor. In all other cases QScreen::availableGeometry() is equal to QScreen::geometry(). To restore the legacy behavior with untrustworthy values in QScreen::availableGeometry() set QT_RELY_ON_NET_WORKAREA_ATOM=1 environment variable. Task-number: QTBUG-60513 Task-number: QTBUG-29278 Task-number: QTBUG-43768 Task-number: QTBUG-18380 Change-Id: I7e0f62f81d1444991b8a6c007c2527d8f96088c2 Reviewed-by: Uli Schlachter <psychon@znc.in> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Merge "Merge remote-tracking branch 'origin/5.9' into dev" into refs/staging/devFrederik Gladhorn2017-08-02399-6509/+2440
|\
| * Merge remote-tracking branch 'origin/5.9' into devOswald Buddenhagen2017-08-02399-6509/+2440
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/plugins/platforms/xcb/qxcbconnection.h src/plugins/platforms/xcb/qxcbconnection_xi2.cpp src/plugins/sqldrivers/sqlite/qsql_sqlite.cpp src/plugins/styles/mac/qmacstyle_mac.mm src/widgets/widgets/qdockarealayout.cpp src/widgets/widgets/qmainwindow.cpp src/widgets/widgets/qmainwindowlayout.cpp src/widgets/widgets/qmainwindowlayout_p.h tests/auto/corelib/tools/qlocale/tst_qlocale.cpp tests/auto/other/macnativeevents/BLACKLIST tests/auto/widgets/widgets/qmenu/BLACKLIST Change-Id: Ic8e724b80a65e7b1af25511b0e674d209265e567
| | * ANGLE: Fix build for newer MinGW versionsOliver Wolff2017-08-026-1/+98
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Availability of D3D11_QUERY_DATA_TIMESTAMP_DISJOINT depends on the used MinGW version so that the check for MINGW is not sufficient. The newly added configure test can be used for every toolset. Task-number: QTBUG-57916 Change-Id: Ia9cb48f3e673841101a93cbc8ea23aff9547f639 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Kai Koehne <kai.koehne@qt.io>
| | * configure: clean up projects of remaining non-inline testsOswald Buddenhagen2017-08-027-8/+0
| | | | | | | | | | | | | | | | | | | | | remove redundant and wholly ineffective CONFIG manipulations. Change-Id: I3836369a0eb32abfe985c7619c0f7c8037ad82e2 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| | * configure: un-namespace remaining non-inline configure testsOswald Buddenhagen2017-08-0223-19/+19
| | | | | | | | | | | | | | | | | | | | | only few tests remain, and many of these were mis-classified anyway. Change-Id: Ic3bc96928a0c79fe77b9ec10e6508d4822f18df2 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| | * configure: Add a feature to write tests in the .json fileThiago Macieira2017-08-02205-5468/+1007
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We're adding a lot of unnecessary files that end up later as cargo-cult, for at most a handful of lines. So instead move the testcases directly into the .json file. The following sources were not inlined, because multiple tests share them, and the inlining infra does not support that (yet): - avx512 - openssl - gnu-libiconv/sun-libiconv (there is also a command line option to select the exact variant, which makes it hard/impossible to properly coalesce the library sources) The following sources were not inlined because of "complications": - verifyspec contains a lengthy function in the project file - stl contains lots of code in the source file - xlocalescanprint includes a private header from the source tree via a relative path, which we can't do, as the test's physical location is variable. - corewlan uses objective c++, which the inline system doesn't support reduce_relocs and reduce_exports now create libraries with main(), which is weird enough, but doesn't hurt. Done-with: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Change-Id: Ic3a088f9f08a4fd7ae91fffd14ce8a262021cca0 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
| | * configure: remove redundant parts of xcb_xkb testOswald Buddenhagen2017-08-021-9/+0
| | | | | | | | | | | | | | | | | | | | | | | | testing the non-xkb xcb parts is unnecessary, as we already did that separately. Change-Id: I452cc746315117a0169f0e0c764fe7e0229437e9 Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
| | * configure: dispose of which.testOswald Buddenhagen2017-08-022-42/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | just use 'which' and be done with it. the script was rather arcane, and worked around deficiencies of cygwin (no longer relevant) and solaris (assumed to be somewhat sane meanwhile). Change-Id: I2e11ea3c87ac06a85604ac8d58d8fee95eae2e15 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| | * configure: standardize handling of 64 bit atomicsOswald Buddenhagen2017-08-023-15/+6
| | | | | | | | | | | | | | | | | | | | | | | | replace the custom QT_NO_STD_ATOMIC64 with a regular public feature, and give libatomic an empty source rather than using a separate config test. Change-Id: Iaf4a7f4c4874f61bf93aa58fe41843a86baf1ab7 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| | * configure: prune dead tests::journaldOswald Buddenhagen2017-08-021-5/+0
| | | | | | | | | | | | | | | | | | | | | libraries::journald is the actually used one. Change-Id: I2da4ae106dd1041cdb269e05def93523ed5011b2 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| | * configure: modernize dbus testOswald Buddenhagen2017-08-021-6/+1
| | | | | | | | | | | | | | | | | | | | | | | | remove useless define and ifdef/error, and check for a more appropriate function. Change-Id: I1a1622cc157c49ebb6787068ade7b33e45e228ca Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| | * configure: remove check for ancient libpng < 1.0.17Oswald Buddenhagen2017-08-021-4/+0
| | | | | | | | | | | | | | | | | | | | | that's just noise nowadays. Change-Id: Ife75ebcc67de45db76265b1a8fb3b8130ff58c0f Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| | * configure: prune checks for ancient compilers from some testsOswald Buddenhagen2017-08-022-9/+0
| | | | | | | | | | | | | | | | | | | | | | | | these would be caught by the central verifyspec test, if we even got that far. Change-Id: I3eda80c4614b94f869d907f0a40166f4914ea692 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| | * configure: remove support for obsolete platformsOswald Buddenhagen2017-08-026-20/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - #error hack for MIPSpro compiler from unix/clock-* - irix exclusions from unix/*iconv - hpux defines from unix/{getifaddrs,ipv6ifname} (the obsolete hpuxi-g++-64 spec would add them automatically anyway) Change-Id: Ib227e5626c0e8c8f6faebf76c312d77955f80b92 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| | * configure: don't force debug build for arch & cpu feature testsOswald Buddenhagen2017-08-0210-20/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | amends b4525b3407, which gives no indication for why this was done. judging by other tests, it wasn't cargo-culted. i presume it was just about disabling debug-and-release, and the debug choice was arbitrary. the central system nowadays does the same, just that it uses release. amends 1533bfc5fc, which certainly _was_ cargo-culted from the former. as a side effect, this removes some other CONFIG manipulations which are handled centrally or are wholly ineffective nowadays. Change-Id: Ib9af2837925a2f19af05506e798a26d363635735 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| | * configure: get rid of indirect #defines in gl testsOswald Buddenhagen2017-08-025-12/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | in the gles tests, use #ifdef __APPLE__ directly instead of defining BUILD_ON_MAC. this is consistent with the desktop gl test, less magic, and corresponds with the later usage (which does #ifdef Q_OS_MAC). amends f3d82a89. in the desktop gl test, clean out the dead Q_OS_MAC define from the project file (added in 45dc5852 concurrently to the more direct fix in 864815ef). Change-Id: Ieebad3c7e87218b887f61485c331b93eadfcf406 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io> Reviewed-by: Jake Petroules <jake.petroules@qt.io>
| | * configure: factor out $$qtConfScalarOrList()Oswald Buddenhagen2017-08-021-10/+15
| | | | | | | | | | | | | | | | | | | | | we'll need it in more places. Change-Id: Ia7e3d9ea4a27cc01294bde4cafe6721eb9f59343 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| | * Add a Q_FALLTHROUGHJesus Fernandez2017-08-021-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | CID 11161 (#1 of 1): Missing break in switch (MISSING_BREAK) unterminated_case: The case for value Qt::BottomToolBarArea is not terminated by a 'break' statement. Coverity-Id: 11161 Change-Id: Ie254d0339e41a58004632e9997febac4a1ab4edd Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
| | * Ignore hanging tst_qinputdialog::getInt/getDouble() test on macOS 10.12Simon Hausmann2017-08-021-0/+16
| | | | | | | | | | | | | | | | | | Change-Id: I495cd98144ba9145e44a9ee5cb8748ae97a6166f Task-number: QTQAINFRA-1356 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| | * Ignore failures of showMinimizedKeepsFocus/activateWindow on macOS 10.12Simon Hausmann2017-08-021-0/+3
| | | | | | | | | | | | | | | | | | Change-Id: I1b5823b48c5dd5bebb8172fd696fc521b7de75b2 Task-number: QTQAINFRA-1359 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
| | * Ignore failures of submenuTearOffDontClose on macOS 10.12Simon Hausmann2017-08-021-0/+1
| | | | | | | | | | | | | | | | | | Change-Id: Ie3409da033325aea832907579d4d61dfd3610e7a Task-number: QTQAINFRA-1358 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
| | * Fix precisions check for using fast transformsAllan Sandfeld Jensen2017-08-021-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | The coordinates need to be representable in signed 16-bit not unsigned. Task-number: QTBUG-62251 Change-Id: I1d4aaa2fb90b8f428380277d5b4e416a4672ee6a Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>