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