Compare commits

..

No commits in common. "master" and "v1.3" have entirely different histories.
master ... v1.3

4 changed files with 78 additions and 51 deletions

View file

@ -1,5 +1,9 @@
name: Build foo.exe name: Build foo.exe
description: Build foo.exe (on Cygwin) description: Build foo.exe (on Cygwin)
inputs:
platform:
description: Target platform
required: true
runs: runs:
using: composite using: composite
steps: steps:
@ -10,6 +14,7 @@ runs:
echo "$src_dir" echo "$src_dir"
src_dir="$( cygpath -ua "$src_dir" )" src_dir="$( cygpath -ua "$src_dir" )"
cd -- "$src_dir" cd -- "$src_dir"
clang++ --version arch=
clang++ -std=c++14 -o foo.exe foo.cpp [ '${{ matrix.platform }}' == 'x86' ] && arch=-m32
clang++ $arch -std=c++14 -o foo.exe foo.cpp
shell: C:\tools\cygwin\bin\bash.exe --login --norc -eo pipefail -o igncr '{0}' shell: C:\tools\cygwin\bin\bash.exe --login --norc -eo pipefail -o igncr '{0}'

View file

@ -13,14 +13,14 @@ jobs:
strategy: strategy:
matrix: matrix:
platform: [x86, x64] platform: [x86, x64]
os: [ubuntu-18.04, ubuntu-20.04, ubuntu-22.04, windows-2019, windows-2022] os: [ubuntu-18.04, ubuntu-20.04, ubuntu-latest, windows-2016, windows-2019, windows-latest]
runs-on: '${{ matrix.os }}' runs-on: '${{ matrix.os }}'
name: 'Test: ${{ matrix.os }} / ${{ matrix.platform }}' name: 'Test: ${{ matrix.os }} / ${{ matrix.platform }}'
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v3 uses: actions/checkout@v2
- name: Clean up PATH - name: Clean up PATH
uses: egor-tensin/cleanup-path@v3 uses: egor-tensin/cleanup-path@v1
if: runner.os == 'Windows' if: runner.os == 'Windows'
- name: Set up Clang - name: Set up Clang
uses: ./ uses: ./
@ -37,30 +37,19 @@ jobs:
versions: versions:
strategy: strategy:
matrix: matrix:
os: [ubuntu-18.04, ubuntu-20.04, ubuntu-22.04] os: [ubuntu-18.04, ubuntu-20.04]
version: ['3.9', '4.0', 4, '5.0', 5, '6.0', 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] version: ['3.9', '4.0', 4, '5.0', 5, '6.0', 6, 7, 8, 9, 10, 11, 12, 13]
exclude: exclude:
- {os: ubuntu-20.04, version: '3.9'} - {os: ubuntu-20.04, version: '3.9'}
- {os: ubuntu-20.04, version: '4.0'} - {os: ubuntu-20.04, version: '4.0'}
- {os: ubuntu-20.04, version: 4} - {os: ubuntu-20.04, version: 4}
- {os: ubuntu-20.04, version: '5.0'} - {os: ubuntu-20.04, version: '5.0'}
- {os: ubuntu-20.04, version: 5} - {os: ubuntu-20.04, version: 5}
- {os: ubuntu-22.04, version: '3.9'}
- {os: ubuntu-22.04, version: '4.0'}
- {os: ubuntu-22.04, version: 4}
- {os: ubuntu-22.04, version: '5.0'}
- {os: ubuntu-22.04, version: 5}
- {os: ubuntu-22.04, version: '6.0'}
- {os: ubuntu-22.04, version: 6}
- {os: ubuntu-22.04, version: 7}
- {os: ubuntu-22.04, version: 8}
- {os: ubuntu-22.04, version: 9}
- {os: ubuntu-22.04, version: 10}
runs-on: '${{ matrix.os }}' runs-on: '${{ matrix.os }}'
name: 'Version: ${{ matrix.os }} / ${{ matrix.version }}' name: 'Version: ${{ matrix.os }} / ${{ matrix.version }}'
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v3 uses: actions/checkout@v2
- id: setup - id: setup
name: Set up Clang name: Set up Clang
uses: ./ uses: ./
@ -82,22 +71,23 @@ jobs:
cygwin: cygwin:
strategy: strategy:
matrix: matrix:
platform: [x86, x64]
hardlinks: [0, 1] hardlinks: [0, 1]
runs-on: windows-latest runs-on: windows-latest
name: 'Cygwin: hardlinks${{ matrix.hardlinks }}' name: 'Cygwin: ${{ matrix.platform }} / hardlinks${{ matrix.hardlinks }}'
# As of January 2023, clang simply doesn't work on Cygwin.
# It's also marked "Unmaintained" in the installer.
continue-on-error: true
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v3 uses: actions/checkout@v2
- name: Clean up PATH - name: Clean up PATH
uses: egor-tensin/cleanup-path@v3 uses: egor-tensin/cleanup-path@v1
- name: Install Cygwin - name: Install Cygwin
uses: egor-tensin/setup-cygwin@v4 uses: egor-tensin/setup-cygwin@v3
with:
platform: '${{ matrix.platform }}'
- name: Set up Clang - name: Set up Clang
uses: ./ uses: ./
with: with:
platform: '${{ matrix.platform }}'
cygwin: 1 cygwin: 1
cc: 1 cc: 1
hardlinks: '${{ matrix.hardlinks }}' hardlinks: '${{ matrix.hardlinks }}'

View file

@ -61,26 +61,25 @@ The `version` parameter value is not checked for being an available version for
the current distribution. the current distribution.
The supported versions for a particular distribution are those found in that The supported versions for a particular distribution are those found in that
distro's repositories & those in the LLVM repository. distro's repositories & those in the LLVM repository.
For example, you can find the list of available versions as of January 2023 For example, the supported versions for Bionic & Focal as of August 2021 are
below. listed below.
| `version` | Bionic | Focal | Jammy | `version` | Bionic | Focal
| --------- | ------ | ----- | ----- | --------- | ------ | -----
| 3.9 | ✓ | | | 3.9 | ✓ |
| 4.0 | ✓ | | | 4.0 | ✓ |
| 5.0 | ✓ | | | 5.0 | ✓ |
| 6.0 | ✓ | ✓ | | 6.0 | ✓ | ✓
| 7 | ✓ | ✓ | | 7 | ✓ | ✓
| 8 | ✓ | ✓ | | 8 | ✓ | ✓
| 9 | ✓ | ✓ | | 9 | ✓ | ✓
| 10 | ✓ | ✓ | | 10 | ✓ | ✓
| 11 | ✓ | ✓ | ✓ | 11 | ✓ | ✓
| 12 | ✓ | ✓ | ✓ | 12 | ✓ | ✓
| 13 | ✓ | ✓ | ✓ | 13 | ✓ | ✓
| 14 | ✓ | ✓ | ✓
| 15 | ✓ | ✓ | ✓
This table should be updated periodically; it's a work-in-progress. This table is not definitive; I expect more future versions to be made
available, especially for Focal.
On Windows and Cygwin, the `version` parameter is ignored. On Windows and Cygwin, the `version` parameter is ignored.

View file

@ -75,6 +75,15 @@ runs:
} }
} }
function Get-DistroVersion {
if (!(Get-Command lsb_release -ErrorAction SilentlyContinue)) {
throw "Couldn't find lsb_release; LLVM only provides repositories for Debian/Ubuntu"
}
$distro = lsb_release -is
$version = lsb_release -sr
"$distro-$version"
}
function Format-UpstreamVersion { function Format-UpstreamVersion {
param( param(
[Parameter(Mandatory=$true)] [Parameter(Mandatory=$true)]
@ -98,12 +107,25 @@ runs:
[string] $Version [string] $Version
) )
if (!(Get-Command lsb_release -ErrorAction SilentlyContinue)) { $distro = Get-DistroVersion
throw "Couldn't find lsb_release; LLVM only provides repositories for Debian/Ubuntu"
}
$codename = lsb_release -sc
"deb http://apt.llvm.org/$codename/ llvm-toolchain-$codename-$Version main" switch -Wildcard -CaseSensitive ($distro) {
'Debian-9*' { "deb http://apt.llvm.org/stretch/ llvm-toolchain-stretch-$Version main" }
'Debian-10*' { "deb http://apt.llvm.org/buster/ llvm-toolchain-buster-$Version main" }
'Debian-11*' { "deb http://apt.llvm.org/bullseye/ llvm-toolchain-bullseye-$Version main" }
'Debian-unstable' { "deb http://apt.llvm.org/unstable/ llvm-toolchain-$Version main" }
'Debian-testing' { "deb http://apt.llvm.org/unstable/ llvm-toolchain-$Version main" }
'Ubuntu-16.04' { "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-$Version main" }
'Ubuntu-18.04' { "deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-$Version main" }
'Ubuntu-18.10' { "deb http://apt.llvm.org/cosmic/ llvm-toolchain-cosmic-$Version main" }
'Ubuntu-19.04' { "deb http://apt.llvm.org/disco/ llvm-toolchain-disco-$Version main" }
'Ubuntu-19.10' { "deb http://apt.llvm.org/eoan/ llvm-toolchain-eoan-$Version main" }
'Ubuntu-20.04' { "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-$Version main" }
'Ubuntu-20.10' { "deb http://apt.llvm.org/groovy/ llvm-toolchain-groovy-$Version main" }
'Ubuntu-21.04' { "deb http://apt.llvm.org/hirsute/ llvm-toolchain-hirsute-$Version main" }
default { throw "Unsupported distribution: $distro" }
}
} }
function Add-UpstreamRepo { function Add-UpstreamRepo {
@ -124,6 +146,7 @@ runs:
$pkg_clang = 'clang' $pkg_clang = 'clang'
$pkg_llvm = 'llvm' $pkg_llvm = 'llvm'
$pkg_gxx = 'g++' $pkg_gxx = 'g++'
$additional_deps = @()
if (!$latest) { if (!$latest) {
$pkg_version = Format-UpstreamVersion $version $pkg_version = Format-UpstreamVersion $version
@ -134,11 +157,21 @@ runs:
$clang = "$clang-$pkg_version" $clang = "$clang-$pkg_version"
$clangxx = "$clangxx-$pkg_version" $clangxx = "$clangxx-$pkg_version"
if ($pkg_version -eq '13') {
# On both Bionic and Focal, the following error occurs otherwise:
#
# The following packages have unmet dependencies:
# llvm-13 : Depends: libomp5-13 (>= 8) but it is not going to be installed
# E: Unable to correct problems, you have held broken packages.
$additional_deps += 'libomp5-13'
}
} }
if (!$x64) { if (!$x64) {
$pkg_gxx = 'g++-multilib' $pkg_gxx = 'g++-multilib'
} }
$packages = $pkg_clang,$pkg_llvm,$pkg_gxx $packages = $pkg_clang,$pkg_llvm,$pkg_gxx
$packages += $additional_deps
Install-Package $packages Install-Package $packages
} elseif ($cygwin_host) { } elseif ($cygwin_host) {
@ -165,8 +198,8 @@ runs:
throw "Sorry, installing Clang is unsupported on $os" throw "Sorry, installing Clang is unsupported on $os"
} }
echo "clang=$clang" >> $env:GITHUB_OUTPUT echo "::set-output name=clang::$clang"
echo "clangxx=$clangxx" >> $env:GITHUB_OUTPUT echo "::set-output name=clangxx::$clangxx"
shell: pwsh shell: pwsh
- run: | - run: |