awslc.yml 4.6 KB

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