PowerShell works (after a steep development curve), but one property of
it stuck and kept causing unresolvable usability issues: With
`$ErrorActionPreference=Stop`, it does abort on failures, but shows only
the first line of the error message. In `Continue` mode, it shows the
full error message, but doesn't stop on all errors. Another issue is
PowerShell considering any stderr output as if the command failed (this
has been improved in 7.2 (2021-Nov), but fixed versions aren't running
in CI and will not be for a long time in all test images.)
Thus, we're going with bash.
Also:
- use `-j2` with autotools tests, making them finish 5-15 minutes per
job faster.
- omit `POSIX_PATH_PREFIX`.
- use `WINDIR`.
- prefer forward slashes.
Follow-up to: 75078a415d #11999
Ref: #12444
Fixes #12560
Closes #12572
153 lines
4.3 KiB
YAML
153 lines
4.3 KiB
YAML
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
|
#
|
|
# SPDX-License-Identifier: curl
|
|
|
|
name: Linux AWS-LC
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
- '*/ci'
|
|
paths-ignore:
|
|
- '**/*.md'
|
|
- '.azure-pipelines.yml'
|
|
- '.circleci/**'
|
|
- '.cirrus.yml'
|
|
- 'appveyor.*'
|
|
- 'packages/**'
|
|
- 'plan9/**'
|
|
- 'projects/**'
|
|
- 'winbuild/**'
|
|
pull_request:
|
|
branches:
|
|
- master
|
|
paths-ignore:
|
|
- '**/*.md'
|
|
- '.azure-pipelines.yml'
|
|
- '.circleci/**'
|
|
- '.cirrus.yml'
|
|
- 'appveyor.*'
|
|
- 'packages/**'
|
|
- 'plan9/**'
|
|
- 'projects/**'
|
|
- 'winbuild/**'
|
|
|
|
concurrency:
|
|
# Hardcoded workflow filename as workflow name above is just Linux again
|
|
group: awslc-${{ github.event.pull_request.number || github.sha }}
|
|
cancel-in-progress: true
|
|
|
|
permissions: {}
|
|
|
|
env:
|
|
MAKEFLAGS: -j 3
|
|
awslc-version: 1.13.0
|
|
|
|
jobs:
|
|
autoconf:
|
|
name: awslc (autoconf)
|
|
runs-on: 'ubuntu-latest'
|
|
timeout-minutes: 30
|
|
|
|
steps:
|
|
- run: |
|
|
sudo apt-get update --yes
|
|
sudo apt-get install --yes libtool autoconf automake pkg-config stunnel4
|
|
# ensure we don't pick up openssl in this build
|
|
sudo apt remove --yes libssl-dev
|
|
sudo python3 -m pip install impacket
|
|
name: 'install prereqs and impacket'
|
|
|
|
- name: cache awslc
|
|
uses: actions/cache@v3
|
|
id: cache-awslc
|
|
env:
|
|
cache-name: cache-awslc
|
|
with:
|
|
path: /home/runner/awslc
|
|
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ env.awslc-version }}
|
|
|
|
- name: build awslc
|
|
if: steps.cache-awslc.outputs.cache-hit != 'true'
|
|
run: |
|
|
curl -LOsSf --retry 6 --retry-connrefused --max-time 999 \
|
|
https://github.com/awslabs/aws-lc/archive/refs/tags/v${{ env.awslc-version }}.tar.gz
|
|
tar xzf v${{ env.awslc-version }}.tar.gz
|
|
mkdir aws-lc-${{ env.awslc-version }}-build
|
|
cd aws-lc-${{ env.awslc-version }}-build
|
|
cmake -DCMAKE_INSTALL_PREFIX=$HOME/awslc ../aws-lc-${{ env.awslc-version }}
|
|
cmake --build . --parallel
|
|
cmake --install .
|
|
|
|
- uses: actions/checkout@v4
|
|
|
|
- run: autoreconf -fi
|
|
name: 'autoreconf'
|
|
|
|
- run: |
|
|
mkdir build
|
|
cd build
|
|
../configure --enable-warnings --enable-werror --with-openssl=$HOME/awslc
|
|
cd ..
|
|
name: 'configure out-of-tree'
|
|
|
|
- run: make -C build V=1
|
|
name: 'make'
|
|
|
|
- run: make -C build V=1 examples
|
|
name: 'make examples'
|
|
|
|
- run: make -C build V=1 -C tests
|
|
name: 'make tests'
|
|
|
|
- run: make -C build V=1 test-ci
|
|
name: 'run tests'
|
|
|
|
cmake:
|
|
name: awslc (cmake)
|
|
runs-on: 'ubuntu-latest'
|
|
timeout-minutes: 15
|
|
|
|
steps:
|
|
- run: |
|
|
sudo apt-get update
|
|
sudo apt-get install cmake stunnel4
|
|
# ensure we don't pick up openssl in this build
|
|
sudo apt remove --yes libssl-dev
|
|
sudo python3 -m pip install impacket
|
|
name: 'install prereqs and impacket'
|
|
|
|
- name: cache awslc
|
|
uses: actions/cache@v3
|
|
id: cache-awslc
|
|
env:
|
|
cache-name: cache-awslc
|
|
with:
|
|
path: /home/runner/awslc
|
|
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ env.awslc-version }}
|
|
|
|
- name: build awslc
|
|
if: steps.cache-awslc.outputs.cache-hit != 'true'
|
|
run: |
|
|
curl -LOsSf --retry 6 --retry-connrefused --max-time 999 \
|
|
https://github.com/awslabs/aws-lc/archive/refs/tags/v${{ env.awslc-version }}.tar.gz
|
|
tar xzf v${{ env.awslc-version }}.tar.gz
|
|
mkdir aws-lc-${{ env.awslc-version }}-build
|
|
cd aws-lc-${{ env.awslc-version }}-build
|
|
cmake -DCMAKE_INSTALL_PREFIX=$HOME/awslc ../aws-lc-${{ env.awslc-version }}
|
|
cmake --build . --parallel
|
|
cmake --install .
|
|
|
|
- uses: actions/checkout@v4
|
|
|
|
# CMAKE_COMPILE_WARNING_AS_ERROR is available in cmake 3.24 or later
|
|
- run: cmake -Bbuild -DOPENSSL_ROOT_DIR=$HOME/awslc -DBUILD_SHARED_LIBS=ON -DCMAKE_COMPILE_WARNING_AS_ERROR=ON .
|
|
name: 'cmake generate out-of-tree'
|
|
|
|
- run: cmake --build build --parallel
|
|
name: 'cmake build'
|
|
|
|
- run: cmake --install build --prefix $HOME/curl --strip
|
|
name: 'cmake install'
|