Show compiler name (directly from inputs rather than from 'desc'.
Fix testing of C++11, C++14.
Allow for CSTD override to override with -std=gnu11 for languages
whose headers are not -std=c11 compatible.
Show c/c++ std being tested from github yaml file in the name.
The ubuntu-20.04 machine has php 7.4 and 8.0 installed.
configure.ac always looks for newer versions over older versions of php.
To prevent always testing 8.0, remove all versions and just install the
required version.
Github Actions enhancements.
Adds gcc-11 testing.
Refactor Github Actions by breaking up into more steps (Install Dependencies, Configure, Build, Test, Install SWIG).
Fix Octave test
There is too much cruft to wade through to find compiler warnings.
I check these once in a while for all compilers.
We could alternatively use -Werr, but at the risk of more broken builds.
It's useful to see the configure step by itself, so split it out
from the installation of prerequisites.
The make install is verbose, put it in it's own step
Move checking of the errors test-suite and ccache checks from
the Build to Test step.
This seems to be broken and sporadically results in "Text file busy"
errors when the tests are run actually in parallel, as is the case in
GitHub CI environment.
Exit early if there is version of the PR newer than the one that we are
about to start building, to avoid wasting 3.5 hours of AppVeyor build
time on the outdated PR versions.
The snippet doing this was copied from
https://github.com/appveyor/ci/issues/38#issuecomment-70628826
(thanks to Tony Kelman). An alternative to doing this could be enabling
the "Rolling builds" option in the AppVeyor UI, see
https://www.appveyor.com/docs/build-configuration/#rolling-builds
but this method seems to work well in practice and is more explicit.
Don't add the builds known/allowed to fail and don't add all the
variations of Python builds, there are just too many of those, but do
add mostly all the rest, with the exceptions below:
Builds using JavaScript backend with node <= 10 had to be disabled as
well, as they just seem to be broken and there is no real motivation in
supporting these ancient versions.
Builds using D can't be run currently due to incompatibility between the
ancient dmd version being used and the earliest support Ubuntu version
(18.04) on GitHub Actions and not supporting newer versions in SWIG.
Builds using Scilab had to be disabled as running the test suite
reliably hangs. This would need to be debugged by somebody motivated in
doing it.
Note that some builds need to be run under Ubuntu 18.04 (Bionic) and not
the default 20.04 (Focal) as they use old dependencies that don't exist
in Focal any longer. In the future we ought to switch to using newer
versions of these dependencies.
It is not available out of the box in GitHub environment, unlike under
Travis CI, so install it ourselves.
Note that we do it manually because installing the rael-gc/rvm PPA
doesn't seem to work with weird failures in GitHub Actions environment.
We also can't use gpg2 --recv-keys in this environment as it doesn't
work, apparently due to a firewall.
This is probably not the greatest idea, and it would be better to change
the generated code to avoid these tests instead, but it was already done
like this for several tests, so just add two more of them that generate
warnings such as
../../member_funcptr_galore_wrap.cxx: In function ‘SwigV8ReturnValue _wrap_MemberFuncPtrs_aaa6(const SwigV8Arguments&)’:
../../member_funcptr_galore_wrap.cxx:3495:90: error: type qualifiers ignored on cast result type [-Werror=ignored-qualifiers]
3495 | result = (int)((MemberFuncPtrs const *)arg1)->aaa6((short (Funcs::*const )(bool) const)arg2);
| ^~~~
when using gcc 9.
This is similar to the previous commit, but in the other direction, with
the warning being generated for the implicitly-declared copy ctor due to
having an explicitly-declared assignment operator.
And the fix is different too because we need to have an assignment
operator in this test, so define the copy ctor explicitly too.
Defining a copy ctor results in -Werror=deprecated-copy when using
implicitly-generated assignment operator with recent gcc versions, so
simply remove this copy ctor, which was apparently never needed anyhow,
to avoid it and rely on the compiler generating both the copy ctor and
assignment operator implicitly.
This results in passing empty argument to configure which, in turn,
triggers "WARNING: you should use --build, --host, --target" from it as
this argument is apparently misinterpreted as the host name.
Executables can't be produced without this option using clang available
under Ubuntu 20.04, as linking fails with a lot of errors of the form
/usr/bin/ld: Swig/wrapfunc.o: relocation R_X86_64_32S against `.rodata'
can not be used when making a PIE object; recompile with -fPIE
They are supposed to be set to gcc-$GCC and g++-$GCC respectively, if
the suffix is defined, so do it.
Also use "compiler", rather than "CC", in the matrix for consistency
with .travis.yml and to avoid confusion between this property, which may
be empty, and CC environment variable, which is supposed to be always
defined.
Finally, show the path and the version of the compiler being used: this
was also done under Travis CI and there doesn't seem to be any reason
not to do it here.