While trying to enable GitHub Actions to the Test-CSS distribution I received the following error:
! No MYMETA file is found after configure. Your toolchain is too old?
Configuring /home/runner/work/Test-CSS/Test-CSS ... N/A
! Configuring . failed. See /home/runner/.cpanm/work/1665208338.1655/build.log for details.
Error: Process completed with exit code 1.
Surprisingly this only happened on Linux and OSX. On Windows, where we use Strawberry Perl everything worked fine.
Showing error logs
The error message did not help much, so I added the following steps to the GitHub Actions configuration file, to display the content of the log files:
- name: Show Errors on Ubuntu
if: ${{ failure() && startsWith( matrix.runner, 'ubuntu-')}}
run: |
cat /home/runner/.cpanm/work/*/build.log
- name: Show Errors on OSX
if: ${{ failure() && startsWith( matrix.runner, 'macos-')}}
run: |
cat /Users/runner/.cpanm/work/*/build.log
Pushing out the changes triggered another run of the CI and this time I could see the content of the log file in the "Show Errors on Ubuntu" step:
...
Running Makefile.PL
Error: Can't locate File/ShareDir/Install.pm in @INC (you may need to install the File::ShareDir::Install module) (@INC contains: /home/runner/work/Test-CSS/Test-CSS/local/lib/perl5 /home/runner/work/_actions/shogo82148/actions-setup-perl/v1/scripts/lib /opt/hostedtoolcache/perl/5.32.1/x64/lib/site_perl/5.32.1/x86_64-linux /opt/hostedtoolcache/perl/5.32.1/x64/lib/site_perl/5.32.1 /opt/hostedtoolcache/perl/5.32.1/x64/lib/5.32.1/x86_64-linux /opt/hostedtoolcache/perl/5.32.1/x64/lib/5.32.1 .) at Makefile.PL line 7.
Error: BEGIN failed--compilation aborted at Makefile.PL line 7.
-> N/A
-> FAIL No MYMETA file is found after configure. Your toolchain is too old?
! Configuring . failed. See /home/runner/.cpanm/work/1665208877.1651/build.log for details.
Similar output could be seen from OSX.
Developer dependency
I assume this is a developer-only dependency so I included it among the other modules we need to install for the author tests and moved the installation of them before the installation of the run-time dependencies. The final configuration file is this:
name: Perl
on:
push:
pull_request:
jobs:
test:
strategy:
fail-fast: false
matrix:
runner: [ubuntu-latest, macos-latest, windows-latest]
perl: [ '5.32' ]
runs-on: ${{matrix.runner}}
name: OS ${{matrix.runner}} Perl ${{matrix.perl}}
steps:
- uses: actions/checkout@v2
- name: Set up perl
uses: shogo82148/actions-setup-perl@v1
with:
perl-version: ${{ matrix.perl }}
distribution: ${{ ( startsWith( matrix.runner, 'windows-' ) && 'strawberry' ) || 'default' }}
- name: Show Perl Version
run: |
perl -v
- name: cpanm version number
run: |
cpanm -v
- name: Install developer Dependencies
run: |
cpanm File::ShareDir::Install Test::CheckManifest Test::CPAN::Meta::JSON Test::CPAN::Meta Test::Pod
- name: Install Dependencies
run: |
cpanm --installdeps .
- name: Run tests
run: |
perl Makefile.PL
make
make test
- name: Show Errors on Ubuntu
if: ${{ failure() && startsWith( matrix.runner, 'ubuntu-')}}
run: |
cat /home/runner/.cpanm/work/*/build.log
- name: Show Errors on OSX
if: ${{ failure() && startsWith( matrix.runner, 'macos-')}}
run: |
cat /Users/runner/.cpanm/work/*/build.log