|
8 | 8 | strategy: |
9 | 9 | fail-fast: false # Ensure all jobs run even if one fails |
10 | 10 | matrix: |
11 | | - os: ["ubuntu-latest", "ubuntu-22.04"] |
12 | | - perl: ["5.40" ] #, "5.38", "5.36", "5.34", "5.32", "5.30", "5.28", "5.26", "5.24", "5.22", "5.20", "5.18", "5.16", "5.14", "5.12"] |
| 11 | + os: ["ubuntu-latest"] |
| 12 | + perl: ["5.40"] #, "5.38", "5.36", "5.34", "5.32", "5.30", "5.28", "5.26", "5.24", "5.22", "5.20", "5.18", "5.16", "5.14", "5.12"] |
13 | 13 | gcc: ["13", "11", "9"] # Different GCC versions to test |
14 | 14 |
|
15 | 15 | name: Perl ${{ matrix.perl }} with GCC-${{ matrix.gcc }} on ${{ matrix.os }} |
16 | 16 |
|
17 | 17 | steps: |
18 | 18 | - uses: actions/checkout@v4 |
19 | 19 |
|
20 | | - # Install the requested GCC version |
21 | | - - name: Install GCC-${{ matrix.gcc }} |
| 20 | + # Install the requested GCC version and dependencies |
| 21 | + - name: Install GCC-${{ matrix.gcc }} and Dependencies |
22 | 22 | run: | |
23 | 23 | sudo apt update |
24 | | - sudo apt install -y gcc-${{ matrix.gcc }} g++-${{ matrix.gcc }} |
25 | | - echo "Using GCC version:" |
26 | | - gcc-${{ matrix.gcc }} --version |
| 24 | + sudo apt install -y gcc-${{ matrix.gcc }} g++-${{ matrix.gcc }} build-essential libgomp1 curl |
27 | 25 |
|
28 | | - # Set the selected GCC version as default |
29 | | - - name: Configure GCC-${{ matrix.gcc }} |
| 26 | + # Switch GCC at the OS level using update-alternatives |
| 27 | + - name: Set GCC-${{ matrix.gcc }} as Default |
30 | 28 | run: | |
31 | 29 | sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-${{ matrix.gcc }} 100 |
32 | 30 | sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-${{ matrix.gcc }} 100 |
33 | | - export CC=/usr/bin/gcc-${{ matrix.gcc }} |
34 | | - export CXX=/usr/bin/g++-${{ matrix.gcc }} |
| 31 | + sudo update-alternatives --set gcc /usr/bin/gcc-${{ matrix.gcc }} |
| 32 | + sudo update-alternatives --set g++ /usr/bin/g++-${{ matrix.gcc }} |
| 33 | + |
| 34 | + export CC=/usr/bin/gcc |
| 35 | + export CXX=/usr/bin/g++ |
35 | 36 | echo "CC=$CC" >> $GITHUB_ENV |
36 | 37 | echo "CXX=$CXX" >> $GITHUB_ENV |
37 | 38 |
|
38 | | - # Install Perl with the selected GCC |
39 | | - - name: Set up Perl |
40 | | - uses: shogo82148/actions-setup-perl@v1 |
41 | | - with: |
42 | | - perl-version: ${{ matrix.perl }} |
43 | | - distribution: "default" |
44 | | - install-option: "-Dcc=${{ env.CC }}" |
| 39 | + echo "Using system GCC version:" |
| 40 | + gcc --version |
45 | 41 |
|
46 | | - - run: perl -V |
47 | | - - run: perl -v |
| 42 | + # Install Perlbrew |
| 43 | + - name: Install Perlbrew |
| 44 | + run: | |
| 45 | + curl -L https://install.perlbrew.pl | bash |
| 46 | + echo 'export PERLBREW_ROOT=$HOME/perl5/perlbrew' >> $HOME/.bashrc |
| 47 | + echo 'source $HOME/perl5/perlbrew/etc/bashrc' >> $HOME/.bashrc |
| 48 | + export PERLBREW_ROOT=$HOME/perl5/perlbrew |
| 49 | + export PATH="$PERLBREW_ROOT/bin:$PATH" |
| 50 | + source $HOME/perl5/perlbrew/etc/bashrc |
| 51 | + perlbrew available |
| 52 | +
|
| 53 | + # Install and Use the Requested Perl Version |
| 54 | + - name: Install Perl ${{ matrix.perl }} with GCC-${{ matrix.gcc }} |
| 55 | + run: | |
| 56 | + export PERLBREW_ROOT=$HOME/perl5/perlbrew |
| 57 | + export PATH="$PERLBREW_ROOT/bin:$PATH" |
| 58 | + source $HOME/perl5/perlbrew/etc/bashrc |
| 59 | +
|
| 60 | + perlbrew install perl-${{ matrix.perl }} -Dcc=$CC |
| 61 | + perlbrew use perl-${{ matrix.perl }} |
| 62 | +
|
| 63 | + perl -V |
| 64 | + perl -v |
48 | 65 |
|
49 | 66 | # Install Required Perl Modules |
50 | 67 | - name: Install Required Perl Modules |
51 | 68 | run: | |
52 | | - cpanm --verbose --notest Inline::C |
53 | | - cpanm --verbose Alien::OpenMP |
| 69 | + export PERLBREW_ROOT=$HOME/perl5/perlbrew |
| 70 | + export PATH="$PERLBREW_ROOT/bin:$PATH" |
| 71 | + source $HOME/perl5/perlbrew/etc/bashrc |
| 72 | + perlbrew use perl-${{ matrix.perl }} |
| 73 | +
|
| 74 | + cpanm --verbose --notest Module::Build Inline::C Alien::OpenMP |
0 commit comments