For whatever reason the existing limit of 200MB is no longer enough, resulting in a significant number of cache misses, which results in partial rebuilds taking far longer than they should.
Problem: msbuild uses timestamps to determine what needs to be rebuilt, and git doesn't track files' last modified time, so everything is always fully rebuilt.
Solution: This commit adds an sqlite database that tracks C/C++ files and their md5 hashes. If a file's hash hasn't changed, then it doesn't need to be rebuilt, so its last modified time is backdated 20 years. The 20 years is an arbitrarily chosen amount of time and has no special significance.
The chocolatey package manager seems to semi-frequently have 503 errors. Ideally there's a way to cache these packages on Windows rather than re-downloading them every time.
This also removes the separate WML_tests.cmd scripts from VC14 and VC16, now instead using the same run_wml_tests script as the linux jobs.
There is currently no caching of the Windows jobs, since msbuild unfortunately uses timestamps rather than more complete information like scons/ccache in order to determine if things need to be rebuilt. Since git doesn't preserve any sort of last modified timestamp, the cloned repo into the travis job is always "newer" than the cached compiled output, and therefore wesnoth is always fully rebuilt.
Ideally, assuming this sticks around and gets out of early access from travis, we could then use just travis instead of travis and appveyor.
Of note:
* The image now created by Dockerfile-base-mingw is available on wesnoth's Docker Hub.
* Strict building is disabled, as there are a couple warnings that show up when crosscompiling.
Steps:
1) added `brew install libffi`, was told it was already installed and to try reinstalling.
2) changed to `brew reinstall libffi`, was told it was "keg only" and was provided the PKG_CONFIG export statement.
3) added export statement, seems to work.
Homebrew should really install libffi implicitly when we install anything
that depends on it. But let's try to work around the problem by installing
it explicitly.
Use unbuffer to work around a travis issue when a secret is set in .travis.yml: https://github.com/travis-ci/travis-ci/issues/7967
As a bonus colored output of for example cmake now works again.
Also streamline test execution.
This adds running the WML schema validation in travis. It also updates the schema itself and fixes a few WML errors so that core and all campaigns under all difficulties pass the schema validation.
Travis now also makes use of this to set the optimization level for the -O0 builds, rather than extra_flags_*. This additionally fixes an issue where using -O0 in the release build with LTO resulted in the individual *.o files being compiled with -O0, but LTO then still linked with release's default -O3.
(cherry-picked from commit 63ff641662)
Note: UBSan at least does seem to take a fairly significant amount of extra time to compile and run the WML tests with.
(cherry-picked from commit 92f74c39f6)
This allows having multiple Dockerfile-base-* files without also needing to add a separate Dockerfile-travis-* file due to the FROM line changing.
(cherry-picked from commit 3f67c2fbf0)
This makes it simpler in the future to have branches that have dependencies that are different from master, rather than having a single image with all necessary dependencies installed, which may at some point end up not being possible to do.
(cherry-picked from commit 1bb5fdf283)
utils/travis/install_deps.sh - no longer executes anything outside of the osx if block.
utils/travis/exit_wrapper.sh - I honestly don't know why this exists.
utils/travis/test_wrapper.sh - No longer used as of 7ca5a0df64.
(cherry-picked from commit 344b5c56b9)
This removes the -g option from the xcode travis build, since debugging information isn't needed and the increased size was causing the cache to timeout when compressing and uploading it. ccache max cache size is also decreased from 2 GBs to 200 MBs, which matches the linux+cmake builds. Fixes#2670.
(cherry-picked from commit b801140344)