Hi,
I built out some initial configurations that make use of AppVeyor to
provide some new Windows continuous integration builds. According to
our BuildBot master, we're down to just two wxMSW configurations that
only cover VC8 using nmake on 3.0 branch and master using Windows XP.
That's good, and we still need those, but I now have the following
configurations configured and running as well:
1. MSVC 2013 (12.0) - MSBuild, x64, DLL Release, STL=1
2. MSVC 2008 (9.0) - nmake, x86, release, STL=0
3. MSVC 2015 (14.0) - nmake, amd64, debug, STL=1
4. MinGW (GCC 4.8.1) - x86, debug, static, STL=0
5. MSYS2/MinGW32 (GCC 5.2.0) - x86, debug, shared, STL=0
6. Cygwin (GCC 4.9.3) - x86, debug, static, STL=0
You can see these builds running here right now:
https://ci.appveyor.com/project/tierra/wxwidgets
All builds are running on Windows Server 2012 R2 (x64). More info
about installed software is available here:
http://www.appveyor.com/docs/installed-software
AppVeyor has conflicting reports about max run time for builds. I've
seen both 40 minutes and 30 minutes in official docs, however, in
practice, it's left builds running for a full hour before killing
them. This is still a problem for us, specifically for GCC-based
builds, and especially because their VMs are restricted to just two
cores, so they aren't very powerful. I've been required to scale back
those GCC builds because of this.
So for right now, all builds are only compiling the library. They
don't compile or run tests yet, and they don't compile samples.
Additionally, the GCC-based builds trade off disabled features for
faster builds. Here's what I disabled for each GCC build:
MinGW: STC, Ribbon, Propgrid, and AUI
MSYS2: XRC (just this alone is the biggest build time factor)
Cygwin: HTML, RichText, and STC
I also just stuck with x86 builds for GCC, but maybe at least one of
those can be bumped to x64, probably the MSYS2 build since it's easy
to switch to MinGW64.
Also in the interest of speed, the GCC builds (except maybe MinGW
right now) are configured to pre-install system libraries like libpng,
libjpeg, libtiff, and libexpat, and don't compile the builtin versions
of these. Just the MSVC builds use the builtins.
Here's the main changes I made that make this all possible:
https://github.com/wxWidgets/wxWidgets/commit/209098848
You might notice that right now, I do have one configuration that is
failing (MinGW). I'd love it if someone investigated why GCC 4.8.1
doesn't like our "#if wxUSE_SOMETHING" checks even though it's fine
with them in the other builds.
It would also be nice if someone patched up the MSVC builds to also
compile and run tests since they're plenty fast enough to do so.
Also note that unlike Travis CI, AppVeyor only gives us one build at a
time, so the full time it takes to run one full build is longer than
Travis CI already, and we'll need to still keep this total down to
something reasonable (preferably under 3 hours I'd say).
All of these new configurations could, and should run against the 3.0
branch. I've left it enabled in the config, but I still haven't
actually backported the necessary script to run them.
Team Access:
Note that all configuration happens in the appveyor.yml config file in
the repo. There is nothing you need to touch on AppVeyor's site,
however, it might be necessary to cancel a build. Everyone with GitHub
commit access to wxWidgets should have the ability to cancel a build
if you login with your GitHub account.
If you would prefer though, it's ridiculously easy to pull these new
changes into your own forked repo, and enable AppVeyor on that repo.
Your builds will run completely independently from the main wxWidgets
builds.
--
Regards,
Bryan Petty