xref: /curl/.github/workflows/awslc.yml (revision 303bb878)
1# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
2#
3# SPDX-License-Identifier: curl
4
5name: Linux AWS-LC
6
7on:
8  push:
9    branches:
10      - master
11      - '*/ci'
12    paths-ignore:
13      - '**/*.md'
14      - '.azure-pipelines.yml'
15      - '.circleci/**'
16      - '.cirrus.yml'
17      - 'appveyor.*'
18      - 'packages/**'
19      - 'plan9/**'
20      - 'projects/**'
21      - 'winbuild/**'
22  pull_request:
23    branches:
24      - master
25    paths-ignore:
26      - '**/*.md'
27      - '.azure-pipelines.yml'
28      - '.circleci/**'
29      - '.cirrus.yml'
30      - 'appveyor.*'
31      - 'packages/**'
32      - 'plan9/**'
33      - 'projects/**'
34      - 'winbuild/**'
35
36concurrency:
37  # Hardcoded workflow filename as workflow name above is just Linux again
38  group: awslc-${{ github.event.pull_request.number || github.sha }}
39  cancel-in-progress: true
40
41permissions: {}
42
43env:
44  MAKEFLAGS: -j 3
45  awslc-version: 1.13.0
46
47jobs:
48  autoconf:
49    name: awslc (autoconf)
50    runs-on: 'ubuntu-latest'
51    timeout-minutes: 30
52
53    steps:
54      - run: |
55          sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list
56          sudo apt-get update
57          sudo apt-get install --yes libtool autoconf automake pkg-config stunnel4 libpsl-dev
58          # ensure we don't pick up openssl in this build
59          sudo apt remove --yes libssl-dev
60          sudo python3 -m pip install impacket
61        name: 'install prereqs and impacket'
62
63      - name: cache awslc
64        uses: actions/cache@v4
65        id: cache-awslc
66        env:
67          cache-name: cache-awslc
68        with:
69          path: /home/runner/awslc
70          key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ env.awslc-version }}
71
72      - name: build awslc
73        if: steps.cache-awslc.outputs.cache-hit != 'true'
74        run: |
75          curl -LOsSf --retry 6 --retry-connrefused --max-time 999 \
76            https://github.com/awslabs/aws-lc/archive/refs/tags/v${{ env.awslc-version }}.tar.gz
77          tar xzf v${{ env.awslc-version }}.tar.gz
78          mkdir aws-lc-${{ env.awslc-version }}-build
79          cd aws-lc-${{ env.awslc-version }}-build
80          cmake -DCMAKE_INSTALL_PREFIX=$HOME/awslc ../aws-lc-${{ env.awslc-version }}
81          cmake --build . --parallel
82          cmake --install .
83
84      - uses: actions/checkout@v4
85
86      - run: autoreconf -fi
87        name: 'autoreconf'
88
89      - run: |
90          mkdir build
91          cd build
92          ../configure --enable-warnings --enable-werror --with-openssl=$HOME/awslc
93          cd ..
94        name: 'configure out-of-tree'
95
96      - run: make -C build V=1
97        name: 'make'
98
99      - run: make -C build V=1 examples
100        name: 'make examples'
101
102      - run: make -C build V=1 -C tests
103        name: 'make tests'
104
105      - run: make -C build V=1 test-ci
106        name: 'run tests'
107
108  cmake:
109    name: awslc (cmake)
110    runs-on: 'ubuntu-latest'
111    timeout-minutes: 15
112
113    steps:
114      - run: |
115          sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list
116          sudo apt-get update
117          sudo apt-get install cmake stunnel4
118          # ensure we don't pick up openssl in this build
119          sudo apt remove --yes libssl-dev
120          sudo python3 -m pip install impacket
121        name: 'install prereqs and impacket'
122
123      - name: cache awslc
124        uses: actions/cache@v4
125        id: cache-awslc
126        env:
127          cache-name: cache-awslc
128        with:
129          path: /home/runner/awslc
130          key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ env.awslc-version }}
131
132      - name: build awslc
133        if: steps.cache-awslc.outputs.cache-hit != 'true'
134        run: |
135          curl -LOsSf --retry 6 --retry-connrefused --max-time 999 \
136            https://github.com/awslabs/aws-lc/archive/refs/tags/v${{ env.awslc-version }}.tar.gz
137          tar xzf v${{ env.awslc-version }}.tar.gz
138          mkdir aws-lc-${{ env.awslc-version }}-build
139          cd aws-lc-${{ env.awslc-version }}-build
140          cmake -DCMAKE_INSTALL_PREFIX=$HOME/awslc ../aws-lc-${{ env.awslc-version }}
141          cmake --build . --parallel
142          cmake --install .
143
144      - uses: actions/checkout@v4
145
146      - run: cmake -Bbuild -DCMAKE_UNITY_BUILD=ON -DCURL_WERROR=ON -DOPENSSL_ROOT_DIR=$HOME/awslc -DBUILD_SHARED_LIBS=ON .
147        name: 'cmake generate out-of-tree'
148
149      - run: cmake --build build --parallel
150        name: 'cmake build'
151
152      - run: cmake --install build --prefix $HOME/curl --strip
153        name: 'cmake install'
154