Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
This is to validate that our build scripts work with our documented
minimum version of Perl (5.14). This is the newest version of Ubuntu
on which Travis supports use of perl this old.
Contra the documentation, Trusty-based build workers’ default perl is
5.18, not 5.14. Travis doesn’t support use of the `perl: VERSION`
build matrix parameter in a `language:c` build, and it doesn’t support
use of the `compiler:` parameter in a `language:perl` build.
The least terrible kludge I can come up with is to continue using
`language:c`, manually download and install the precompiled perl 5.14
binaries that Travis _would_ use for `perl:5.14`, and then manually
activate the appropriate perlbrew environment. (We can’t use
$PERLBREW_ROOT/etc/bashrc because it’s, well, a bash script,
and our build scripts are _sh_ scripts.)
There is a pretty strong argument that no one should be using
perl < 5.18 anymore: 5.18 is the oldest version with randomized
hashes, which are a critical security fix for anyone processing
untrusted input with Perl. But the input to all our Perl scripts
is our own source or object code, so that’s not an issue for us.
In fact, we could go even earlier, since we’re not actually _using_
the Unicode support that motivated my selection of 5.14 as the
minimum. Opinions solicited.
Since this means we have to have an install script again, also use it
to install perltidy and perlcritic when DISTCHECK=1, add configuration
files for both tools, and run perlcritic from the distcheck-hook.
(This doesn’t *do* anything yet, of course, since there aren’t any
Perl scripts yet.) Quibbles with my formatting and linting choices
are also solicited.
|
|
This works kind-of the same way as the Coverity driver: we retrieve a
shell script directly from codecov.io and execute it. This is how
codecov.io currently recommends one upload coverage reports, and means
we do not need to worry about whether ‘pip’ works. In fact, we no
longer need an install script at all.
pip is removed from the cache set, and the after-success script is
moved to the script: tag so that coverage upload failures are flagged
in the Travis dashboard.
|
|
CI builds on OSX were broken in several different ways.
- Nothing we asked for via Homebrew was getting installed, because of
a bug in the xcode9.4 build image that Travis uses as its default.
This is fixed in newer build images, so bump us up to xcode12.3.
(N.B. I don’t know which versions of xcode and/or macos we *ought*
to be compiling against, I just picked the newest one.)
For more detail about the bug, see
<https://travis-ci.community/t/macos-build-fails-because-of-homebrew-bundle-unknown-command/7296>.
- The current generation of Xcode tools doesn’t support fat-binary
compilation anymore. Also, clang doesn’t wanna see --coverage on
its command line, ever. Use a more appropriate set of options for
the new toolchain.
- ‘pip install --user’ put codecov in a weird place that wasn’t on
$PATH. The easiest fix, since we’re running in a scratch virtual
machine anyway, is to install it globally.
- Don’t install things that are already installed, because Homebrew
is painfully slow. Note: Homebrew gcc *is* already installed, but
it’s broken. Including ‘gcc’ in the packages list costs 150 seconds
of wall time(!) but it does fix the problem, so we’ll deal.
|
|
Since we might not want to keep the build scripts as a combination of
sh + awk forever, move most of them to a new top-level directory and
rename them without any .sh or .awk suffixes. This directory is named
build-aux, consistent with the recommendations in the autoconf manual,
and all of the .m4 files extending autoconf move there as well.
The shell scripts in test/ remain there, so that all of the tests stay
together, and they keep their .sh suffix, because this is how Automake
knows that they are not C programs.
|