This adds a 3rd matrix to be built by Travis. The new matrix "checks"
the NixPkgs evaluation so the other 2 can save their resources for
building. Hopefully, this will lead to less "out of space" errors that
seem to be happening with Travis. Also adds folding.
This makes the detection of core modules a bit more robust by checking
the module inclusion in a pure Perl interpreter. This ensures that any
extra path in the `nix-generate-from-cpan` script's `PERL5LIB` does not
affect the generated package expression.
Looks like --show-trace wasn't as useful as I'd hoped. Also, because checking
nixos options is cheaper than checking the tarball, it makes sense to check the
options first to fail faster.
This will at least catch simple errors in default values and is fairly
cheap, in terms of resource and time consumption, and adds very little
additional output unless there's a failure.
Find-tarballs was failing on some `requireFile` that was fixed-output
but didn't specify `outputHashMode`. Apparently, nix is fine with that
and uses the "flat" default, although that's undocumented.
This commit includes a substantial refactoring of
`nix-generate-from-cpan`. This somewhat simplifies the code through the
use of the CPAN::Meta module while adding the following features:
- The program now takes an optional maintainer on the command line that
is subsequently added into the generated package.
- An attempt is made to convert the license specified inside the
META.json or META.yaml file to a license in `stdenv.lib.licenses`.
- An attempt is made to disambiguate attribute names of packages whose
name is a reserved word in Nix.
- Write logging output using Log::Log4perl.
- Print module RSS feed URL. The RSS feed, hosted by MetaCPAN, can be
used to track updates to the module.
Tarballs.nixos.org is now stored in an S3 bucket rather than an EBS
volume. Redirects are used to simulate symlinks.
The function find-tarballs.nix now filters out fetchzip, fetchpatch
and the like.
Travis builds sometimes fail because Travis doesn't have much memory.
When it happens, the failure reason is often hard to see in the logs and
is confusing (especially for new contributors).
Try to detect OOM errors in dmesg and give a warning when it happens.