trigger:
branches:
include:
- - 'master'
- - '*/ci'
+ - 'master'
+ - '*/ci'
paths:
exclude:
- - '.circleci/*'
- - '.cirrus.yml'
- - '.github/*'
- - '.github/workflows/*'
- - 'appveyor.yml'
- - 'packages/*'
- - 'plan9/*'
+ - '.circleci/*'
+ - '.cirrus.yml'
+ - '.github/*'
+ - '.github/workflows/*'
+ - 'appveyor.yml'
+ - 'packages/*'
+ - 'plan9/*'
pr:
branches:
include:
- - 'master'
+ - 'master'
paths:
exclude:
- - '.circleci/*'
- - '.cirrus.yml'
- - '.github/*'
- - '.github/workflows/*'
- - 'appveyor.yml'
- - 'packages/*'
- - 'plan9/*'
+ - '.circleci/*'
+ - '.cirrus.yml'
+ - '.github/*'
+ - '.github/workflows/*'
+ - 'appveyor.yml'
+ - 'packages/*'
+ - 'plan9/*'
variables:
MAKEFLAGS: '-j 2'
stages:
-##########################################
-### Linux jobs first
-##########################################
-
-- stage: linux
- dependsOn: []
- jobs:
- - job: ubuntu
- # define defaults to make sure variables are always expanded/replaced
- variables:
- install: ''
- configure: ''
- tests: '!433'
- timeoutInMinutes: 60
- pool:
- vmImage: 'ubuntu-latest'
- strategy:
- matrix:
- default:
- name: default
- install:
- configure: --enable-debug --with-openssl
- disable_ipv6:
- name: w/o IPv6
- configure: --disable-ipv6 --with-openssl
- disable_http_smtp_imap:
- name: w/o HTTP/SMTP/IMAP
- configure: --disable-http --disable-smtp --disable-imap --without-ssl
- disable_thredres:
- name: sync resolver
- configure: --disable-threaded-resolver --with-openssl
- https_only:
- name: HTTPS only
- configure: --disable-dict --disable-file --disable-ftp --disable-gopher --disable-imap --disable-ldap --disable-pop3 --disable-rtmp --disable-rtsp --disable-scp --disable-sftp --disable-smb --disable-smtp --disable-telnet --disable-tftp --with-openssl
- torture:
- name: torture
- install: libnghttp2-dev
- configure: --enable-debug --disable-shared --disable-threaded-resolver --with-openssl
- tests: -n -t --shallow=25 !FTP
- steps:
- - script: sudo apt-get update && sudo apt-get install -y stunnel4 python3-impacket libzstd-dev libbrotli-dev $(install)
- displayName: 'apt install'
- retryCountOnTaskFailure: 3
-
- - script: autoreconf -fi && ./configure --enable-warnings --enable-werror $(configure)
- displayName: 'configure $(name)'
-
- - script: make V=1 && make V=1 examples && cd tests && make V=1
- displayName: 'compile'
-
- - script: make V=1 test-ci
- displayName: 'test'
- env:
- AZURE_ACCESS_TOKEN: "$(System.AccessToken)"
- TFLAGS: "-ac /usr/bin/curl -r $(tests)"
-
-- stage: scanbuild
- dependsOn: []
- jobs:
- - job: ubuntu
- timeoutInMinutes: 30
- pool:
- vmImage: 'ubuntu-latest'
- steps:
- - script: sudo apt-get update && sudo apt-get install -y clang-tools clang libssl-dev libssh2-1-dev libpsl-dev libbrotli-dev libzstd-dev
- displayName: 'apt install'
- retryCountOnTaskFailure: 3
-
- - script: autoreconf -fi
- displayName: 'autoreconf'
-
- - script: scan-build ./configure --enable-debug --enable-werror --with-openssl --with-libssh2
- displayName: 'configure'
- env:
- CC: "clang"
- CCX: "clang++"
-
- - script: scan-build --status-bugs make
- displayName: 'make'
-
- - script: scan-build --status-bugs make examples
- displayName: 'make examples'
-
-##########################################
-### Windows jobs below
-##########################################
-
-- stage: windows
- dependsOn: []
- variables:
- agent.preferPowerShellOnContainers: true
- jobs:
- - job: msys2
- # define defaults to make sure variables are always expanded/replaced
+ ##########################################
+ ### Linux jobs first
+ ##########################################
+
+ - stage: linux
+ dependsOn: []
+ jobs:
+ - job: ubuntu
+ # define defaults to make sure variables are always expanded/replaced
+ variables:
+ install: ''
+ configure: ''
+ tests: '!433'
+ timeoutInMinutes: 60
+ pool:
+ vmImage: 'ubuntu-latest'
+ strategy:
+ matrix:
+ default:
+ name: default
+ install:
+ configure: --enable-debug --with-openssl
+ disable_ipv6:
+ name: w/o IPv6
+ configure: --disable-ipv6 --with-openssl
+ disable_http_smtp_imap:
+ name: w/o HTTP/SMTP/IMAP
+ configure: --disable-http --disable-smtp --disable-imap --without-ssl
+ disable_thredres:
+ name: sync resolver
+ configure: --disable-threaded-resolver --with-openssl
+ https_only:
+ name: HTTPS only
+ configure: --disable-dict --disable-file --disable-ftp --disable-gopher --disable-imap --disable-ldap --disable-pop3 --disable-rtmp --disable-rtsp --disable-scp --disable-sftp --disable-smb --disable-smtp --disable-telnet --disable-tftp --with-openssl
+ torture:
+ name: torture
+ install: libnghttp2-dev
+ configure: --enable-debug --disable-shared --disable-threaded-resolver --with-openssl
+ tests: -n -t --shallow=25 !FTP
+ steps:
+ - script: sudo apt-get update && sudo apt-get install -y stunnel4 python3-impacket libzstd-dev libbrotli-dev $(install)
+ displayName: 'apt install'
+ retryCountOnTaskFailure: 3
+
+ - script: autoreconf -fi && ./configure --enable-warnings --enable-werror $(configure)
+ displayName: 'configure $(name)'
+
+ - script: make V=1 && make V=1 examples && cd tests && make V=1
+ displayName: 'compile'
+
+ - script: make V=1 test-ci
+ displayName: 'test'
+ env:
+ AZURE_ACCESS_TOKEN: "$(System.AccessToken)"
+ TFLAGS: "-ac /usr/bin/curl -r $(tests)"
+
+ - stage: scanbuild
+ dependsOn: []
+ jobs:
+ - job: ubuntu
+ timeoutInMinutes: 30
+ pool:
+ vmImage: 'ubuntu-latest'
+ steps:
+ - script: sudo apt-get update && sudo apt-get install -y clang-tools clang libssl-dev libssh2-1-dev libpsl-dev libbrotli-dev libzstd-dev
+ displayName: 'apt install'
+ retryCountOnTaskFailure: 3
+
+ - script: autoreconf -fi
+ displayName: 'autoreconf'
+
+ - script: scan-build ./configure --enable-debug --enable-werror --with-openssl --with-libssh2
+ displayName: 'configure'
+ env:
+ CC: "clang"
+ CCX: "clang++"
+
+ - script: scan-build --status-bugs make
+ displayName: 'make'
+
+ - script: scan-build --status-bugs make examples
+ displayName: 'make examples'
+
+ ##########################################
+ ### Windows jobs below
+ ##########################################
+
+ - stage: windows
+ dependsOn: []
variables:
- container_img: ''
- container_cmd: ''
- configure: ''
- tests: ''
- timeoutInMinutes: 120
- pool:
- vmImage: 'windows-2019'
- strategy:
- matrix:
- mingw32_openssl:
- name: 32-bit OpenSSL/libssh2
- container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys2-mingw32:ltsc2019
- container_cmd: C:\msys64\usr\bin\sh
- prepare: pacman -S --needed --noconfirm --noprogressbar libssh2-devel mingw-w64-i686-libssh2
- configure: --host=i686-w64-mingw32 --build=i686-w64-mingw32 --prefix=/mingw32 --enable-debug --enable-werror --with-libssh2 --with-openssl
- tests: "~571"
- mingw64_openssl:
- name: 64-bit OpenSSL/libssh2
- container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys2-mingw64:ltsc2019
- container_cmd: C:\msys64\usr\bin\sh
- prepare: pacman -S --needed --noconfirm --noprogressbar libssh2-devel mingw-w64-x86_64-libssh2
- configure: --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --prefix=/mingw64 --enable-debug --enable-werror --with-libssh2 --with-openssl
- tests: "~571"
- mingw64_libssh:
- name: 64-bit OpenSSL/libssh
- container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys2-mingw64:ltsc2019
- container_cmd: C:\msys64\usr\bin\sh
- prepare: pacman -S --needed --noconfirm --noprogressbar libssh-devel mingw-w64-x86_64-libssh
- configure: --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --prefix=/mingw64 --enable-debug --enable-werror --with-libssh --with-openssl
- tests: "~571 ~614"
- mingw32:
- name: 32-bit w/o zlib
- container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys2-mingw32:ltsc2019
- container_cmd: C:\msys64\usr\bin\sh
- configure: --host=i686-w64-mingw32 --build=i686-w64-mingw32 --prefix=/mingw32 --enable-debug --enable-werror --without-zlib --without-ssl
- tests: "!203 !1143"
- mingw64:
- name: 64-bit w/o zlib
- container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys2-mingw64:ltsc2019
- container_cmd: C:\msys64\usr\bin\sh
- configure: --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --prefix=/mingw64 --enable-debug --enable-werror --without-zlib --without-ssl
- tests: "!203 !1143"
- mingw32_schannel:
- name: 32-bit Schannel/SSPI/WinIDN/libssh2
- container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys2-mingw32:ltsc2019
- container_cmd: C:\msys64\usr\bin\sh
- prepare: pacman -S --needed --noconfirm --noprogressbar libssh2-devel mingw-w64-i686-libssh2
- configure: --host=i686-w64-mingw32 --build=i686-w64-mingw32 --prefix=/mingw32 --enable-debug --enable-werror --enable-sspi --with-schannel --with-winidn --with-libssh2
- tests: "~571"
- mingw64_schannel:
- name: 64-bit Schannel/SSPI/WinIDN/libssh2
- container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys2-mingw64:ltsc2019
- container_cmd: C:\msys64\usr\bin\sh
- prepare: pacman -S --needed --noconfirm --noprogressbar libssh2-devel mingw-w64-x86_64-libssh2
- configure: --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --prefix=/mingw64 --enable-debug --enable-werror --enable-sspi --with-schannel --with-winidn --with-libssh2
- tests: "~571"
- mingw32_schannel_nozlib:
- name: 32-bit Schannel/SSPI/WinIDN w/o zlib
- container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys2-mingw32:ltsc2019
- container_cmd: C:\msys64\usr\bin\sh
- configure: --host=i686-w64-mingw32 --build=i686-w64-mingw32 --prefix=/mingw32 --enable-debug --enable-werror --enable-sspi --with-schannel --with-winidn --without-zlib
- tests: "!203 !1143"
- mingw64_schannel_nozlib:
- name: 64-bit Schannel/SSPI/WinIDN w/o zlib
- container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys2-mingw64:ltsc2019
- container_cmd: C:\msys64\usr\bin\sh
- configure: --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --prefix=/mingw64 --enable-debug --enable-werror --enable-sspi --with-schannel --with-winidn --without-zlib
- tests: "!203 !1143"
- container:
- image: $(container_img)
- env:
- MSYS2_PATH_TYPE: inherit
- steps:
- - script: $(container_cmd) -l -c "cd $(echo '%cd%') && $(prepare)"
- displayName: 'prepare'
- condition: variables.prepare
- retryCountOnTaskFailure: 3
-
- - script: $(container_cmd) -l -c "cd $(echo '%cd%') && autoreconf -fi && ./configure $(configure)"
- displayName: 'configure $(name)'
-
- - script: $(container_cmd) -l -c "cd $(echo '%cd%') && make V=1 && make V=1 examples && cd tests && make V=1"
- displayName: 'compile'
-
- - script: $(container_cmd) -l -c "cd $(echo '%cd%') && make V=1 install && PATH=/usr/bin:/bin find . -type f -path '*/.libs/*.exe' -print -execdir mv -t .. {} \;"
- displayName: 'install'
-
- - script: $(container_cmd) -l -c "cd $(echo '%cd%') && make V=1 test-ci"
- displayName: 'test'
- env:
- AZURE_ACCESS_TOKEN: "$(System.AccessToken)"
- TFLAGS: "-ac /usr/bin/curl.exe !IDN !SCP ~612 $(tests)"
+ agent.preferPowerShellOnContainers: true
+ jobs:
+ - job: msys2
+ # define defaults to make sure variables are always expanded/replaced
+ variables:
+ container_img: ''
+ container_cmd: ''
+ configure: ''
+ tests: ''
+ timeoutInMinutes: 120
+ pool:
+ vmImage: 'windows-2019'
+ strategy:
+ matrix:
+ mingw32_openssl:
+ name: 32-bit OpenSSL/libssh2
+ container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys2-mingw32:ltsc2019
+ container_cmd: C:\msys64\usr\bin\sh
+ prepare: pacman -S --needed --noconfirm --noprogressbar libssh2-devel mingw-w64-i686-libssh2
+ configure: --host=i686-w64-mingw32 --build=i686-w64-mingw32 --prefix=/mingw32 --enable-debug --enable-werror --with-libssh2 --with-openssl
+ tests: "~571"
+ mingw64_openssl:
+ name: 64-bit OpenSSL/libssh2
+ container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys2-mingw64:ltsc2019
+ container_cmd: C:\msys64\usr\bin\sh
+ prepare: pacman -S --needed --noconfirm --noprogressbar libssh2-devel mingw-w64-x86_64-libssh2
+ configure: --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --prefix=/mingw64 --enable-debug --enable-werror --with-libssh2 --with-openssl
+ tests: "~571"
+ mingw64_libssh:
+ name: 64-bit OpenSSL/libssh
+ container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys2-mingw64:ltsc2019
+ container_cmd: C:\msys64\usr\bin\sh
+ prepare: pacman -S --needed --noconfirm --noprogressbar libssh-devel mingw-w64-x86_64-libssh
+ configure: --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --prefix=/mingw64 --enable-debug --enable-werror --with-libssh --with-openssl
+ tests: "~571 ~614"
+ mingw32:
+ name: 32-bit w/o zlib
+ container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys2-mingw32:ltsc2019
+ container_cmd: C:\msys64\usr\bin\sh
+ configure: --host=i686-w64-mingw32 --build=i686-w64-mingw32 --prefix=/mingw32 --enable-debug --enable-werror --without-zlib --without-ssl
+ tests: "!203 !1143"
+ mingw64:
+ name: 64-bit w/o zlib
+ container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys2-mingw64:ltsc2019
+ container_cmd: C:\msys64\usr\bin\sh
+ configure: --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --prefix=/mingw64 --enable-debug --enable-werror --without-zlib --without-ssl
+ tests: "!203 !1143"
+ mingw32_schannel:
+ name: 32-bit Schannel/SSPI/WinIDN/libssh2
+ container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys2-mingw32:ltsc2019
+ container_cmd: C:\msys64\usr\bin\sh
+ prepare: pacman -S --needed --noconfirm --noprogressbar libssh2-devel mingw-w64-i686-libssh2
+ configure: --host=i686-w64-mingw32 --build=i686-w64-mingw32 --prefix=/mingw32 --enable-debug --enable-werror --enable-sspi --with-schannel --with-winidn --with-libssh2
+ tests: "~571"
+ mingw64_schannel:
+ name: 64-bit Schannel/SSPI/WinIDN/libssh2
+ container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys2-mingw64:ltsc2019
+ container_cmd: C:\msys64\usr\bin\sh
+ prepare: pacman -S --needed --noconfirm --noprogressbar libssh2-devel mingw-w64-x86_64-libssh2
+ configure: --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --prefix=/mingw64 --enable-debug --enable-werror --enable-sspi --with-schannel --with-winidn --with-libssh2
+ tests: "~571"
+ mingw32_schannel_nozlib:
+ name: 32-bit Schannel/SSPI/WinIDN w/o zlib
+ container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys2-mingw32:ltsc2019
+ container_cmd: C:\msys64\usr\bin\sh
+ configure: --host=i686-w64-mingw32 --build=i686-w64-mingw32 --prefix=/mingw32 --enable-debug --enable-werror --enable-sspi --with-schannel --with-winidn --without-zlib
+ tests: "!203 !1143"
+ mingw64_schannel_nozlib:
+ name: 64-bit Schannel/SSPI/WinIDN w/o zlib
+ container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys2-mingw64:ltsc2019
+ container_cmd: C:\msys64\usr\bin\sh
+ configure: --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --prefix=/mingw64 --enable-debug --enable-werror --enable-sspi --with-schannel --with-winidn --without-zlib
+ tests: "!203 !1143"
+ container:
+ image: $(container_img)
+ env:
+ MSYS2_PATH_TYPE: inherit
+ steps:
+ - script: $(container_cmd) -l -c "cd $(echo '%cd%') && $(prepare)"
+ displayName: 'prepare'
+ condition: variables.prepare
+ retryCountOnTaskFailure: 3
+
+ - script: $(container_cmd) -l -c "cd $(echo '%cd%') && autoreconf -fi && ./configure $(configure)"
+ displayName: 'configure $(name)'
+
+ - script: $(container_cmd) -l -c "cd $(echo '%cd%') && make V=1 && make V=1 examples && cd tests && make V=1"
+ displayName: 'compile'
+
+ - script: $(container_cmd) -l -c "cd $(echo '%cd%') && make V=1 install && PATH=/usr/bin:/bin find . -type f -path '*/.libs/*.exe' -print -execdir mv -t .. {} \;"
+ displayName: 'install'
+
+ - script: $(container_cmd) -l -c "cd $(echo '%cd%') && make V=1 test-ci"
+ displayName: 'test'
+ env:
+ AZURE_ACCESS_TOKEN: "$(System.AccessToken)"
+ TFLAGS: "-ac /usr/bin/curl.exe !IDN !SCP ~612 $(tests)"
# There are problem linking with LibreSSL on the CI boxes that prevent this
# from working.
- #macos-x86-http-libressl-http2:
- # jobs:
- # - macos-x86-http-libressl-http2
+ # macos-x86-http-libressl-http2:
+ # jobs:
+ # - macos-x86-http-libressl-http2
macos-x86-http-torture:
jobs:
configure_script:
- autoreconf -fi
# Building with the address sanitizer is causing unexplainable test issues due to timeouts
- #- case `uname -r` in
- # 12.2*)
- # export CC=clang;
- # export CFLAGS="-fsanitize=address,undefined,signed-integer-overflow -fno-sanitize-recover=undefined,integer -Wformat -Werror=format-security -Werror=array-bounds -g";
- # export CXXFLAGS="-fsanitize=address,undefined -fno-sanitize-recover=undefined,integer -Wformat -Werror=format-security -Werror=array-bounds -g";
- # export LDFLAGS="-fsanitize=address,undefined -fno-sanitize-recover=undefined,integer" ;;
- # esac
+ # - case `uname -r` in
+ # 12.2*)
+ # export CC=clang;
+ # export CFLAGS="-fsanitize=address,undefined,signed-integer-overflow -fno-sanitize-recover=undefined,integer -Wformat -Werror=format-security -Werror=array-bounds -g";
+ # export CXXFLAGS="-fsanitize=address,undefined -fno-sanitize-recover=undefined,integer -Wformat -Werror=format-security -Werror=array-bounds -g";
+ # export LDFLAGS="-fsanitize=address,undefined -fno-sanitize-recover=undefined,integer" ;;
+ # esac
- ./configure --prefix="${HOME}"/install --enable-debug --with-openssl --with-libssh2 --with-brotli --with-gssapi --with-libidn2 --enable-manual --enable-ldap --enable-ldaps --with-librtmp --with-libpsl --with-nghttp2 || { tail -300 config.log; false; }
compile_script:
- make V=1 && make V=1 examples && cd tests && make V=1
#
# Docs: https://github.com/UnicornGlobal/spellcheck-github-actions
matrix:
-- name: Markdown
- expect_match: false
- apsell:
- mode: en
- dictionary:
- wordlists:
- - wordlist.txt
- output: wordlist.dic
- encoding: utf-8
- pipeline:
- - pyspelling.filters.markdown:
- markdown_extensions:
- - markdown.extensions.extra:
- - pyspelling.filters.html:
- comments: true
- attributes:
- - title
- - alt
- ignores:
- - ':matches(code, pre)'
- - 'code'
- - 'pre'
- - 'strong'
- - 'em'
- sources:
- - '**/*.md|!docs/BINDINGS.md'
+ - name: Markdown
+ expect_match: false
+ apsell:
+ mode: en
+ dictionary:
+ wordlists:
+ - wordlist.txt
+ output: wordlist.dic
+ encoding: utf-8
+ pipeline:
+ - pyspelling.filters.markdown:
+ markdown_extensions:
+ - markdown.extensions.extra:
+ - pyspelling.filters.html:
+ comments: true
+ attributes:
+ - title
+ - alt
+ ignores:
+ - ':matches(code, pre)'
+ - 'code'
+ - 'pre'
+ - 'strong'
+ - 'em'
+ sources:
+ - '**/*.md|!docs/BINDINGS.md'
on:
push:
branches:
- - master
- - '*/ci'
+ - master
+ - '*/ci'
paths-ignore:
- - '**/*.md'
- - '.azure-pipelines.yml'
- - '.circleci/**'
- - '.cirrus.yml'
- - 'appveyor.yml'
- - 'packages/**'
- - 'plan9/**'
- - 'projects/**'
- - 'winbuild/**'
+ - '**/*.md'
+ - '.azure-pipelines.yml'
+ - '.circleci/**'
+ - '.cirrus.yml'
+ - 'appveyor.yml'
+ - 'packages/**'
+ - 'plan9/**'
+ - 'projects/**'
+ - 'winbuild/**'
pull_request:
branches:
- - master
+ - master
paths-ignore:
- - '**/*.md'
- - '.azure-pipelines.yml'
- - '.circleci/**'
- - '.cirrus.yml'
- - 'appveyor.yml'
- - 'packages/**'
- - 'plan9/**'
- - 'projects/**'
- - 'winbuild/**'
+ - '**/*.md'
+ - '.azure-pipelines.yml'
+ - '.circleci/**'
+ - '.cirrus.yml'
+ - 'appveyor.yml'
+ - 'packages/**'
+ - 'plan9/**'
+ - 'projects/**'
+ - 'winbuild/**'
concurrency:
# Hardcoded workflow filename as workflow name above is just Linux again
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'
+ - 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)
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'
+ - 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'
on:
push:
branches:
- - master
- - '*/ci'
+ - master
+ - '*/ci'
paths-ignore:
- - '**/*.md'
- - '.azure-pipelines.yml'
- - '.circleci/**'
- - '.cirrus.yml'
- - 'appveyor.yml'
- - 'docs/**'
- - 'packages/**'
- - 'plan9/**'
- - 'projects/**'
- - 'tests/data/**'
- - 'winbuild/**'
+ - '**/*.md'
+ - '.azure-pipelines.yml'
+ - '.circleci/**'
+ - '.cirrus.yml'
+ - 'appveyor.yml'
+ - 'docs/**'
+ - 'packages/**'
+ - 'plan9/**'
+ - 'projects/**'
+ - 'tests/data/**'
+ - 'winbuild/**'
pull_request:
branches:
- - master
+ - master
paths-ignore:
- - '**/*.md'
- - '.azure-pipelines.yml'
- - '.circleci/**'
- - '.cirrus.yml'
- - 'appveyor.yml'
- - 'docs/**'
- - 'packages/**'
- - 'plan9/**'
- - 'projects/**'
- - 'tests/data/**'
- - 'winbuild/**'
+ - '**/*.md'
+ - '.azure-pipelines.yml'
+ - '.circleci/**'
+ - '.cirrus.yml'
+ - 'appveyor.yml'
+ - 'docs/**'
+ - 'packages/**'
+ - 'plan9/**'
+ - 'projects/**'
+ - 'tests/data/**'
+ - 'winbuild/**'
schedule:
- cron: '0 0 * * 4'
permissions:
security-events: write
steps:
- - name: Checkout repository
- uses: actions/checkout@v4
+ - name: Checkout repository
+ uses: actions/checkout@v4
- # Initializes the CodeQL tools for scanning.
- - name: Initialize CodeQL
- uses: github/codeql-action/init@v2
- with:
- languages: cpp
- queries: security-extended
+ # Initializes the CodeQL tools for scanning.
+ - name: Initialize CodeQL
+ uses: github/codeql-action/init@v2
+ with:
+ languages: cpp
+ queries: security-extended
- # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
- # If this step fails, then you should remove it and run the build manually (see below)
- - name: Autobuild
- uses: github/codeql-action/autobuild@v2
+ # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
+ # If this step fails, then you should remove it and run the build manually (see below)
+ - name: Autobuild
+ uses: github/codeql-action/autobuild@v2
- # ℹ️ Command-line programs to run using the OS shell.
- # 📚 https://git.io/JvXDl
+ # ℹ️ Command-line programs to run using the OS shell.
+ # 📚 https://git.io/JvXDl
- # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
- # and modify them (or add more) to build your code if your project
- # uses a compiled language
+ # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
+ # and modify them (or add more) to build your code if your project
+ # uses a compiled language
- #- run: |
- # make bootstrap
- # make release
+ # - run: |
+ # make bootstrap
+ # make release
- - name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@v2
+ - name: Perform CodeQL Analysis
+ uses: github/codeql-action/analyze@v2
on:
push:
branches:
- - master
- - '*/ci'
+ - master
+ - '*/ci'
paths:
- - 'lib/**'
- - 'src/**'
- - 'include/**'
+ - 'lib/**'
+ - 'src/**'
+ - 'include/**'
pull_request:
branches:
- - master
- - 'lib/**'
- - 'src/**'
- - 'include/**'
+ - master
+ - 'lib/**'
+ - 'src/**'
+ - 'include/**'
jobs:
codespell:
on:
push:
branches:
- - master
+ - master
paths:
- - '*.ac'
- - '**/*.m4'
- - '**/CMakeLists.txt'
- - 'lib/curl_config.h.cmake'
- - 'scripts/cmp-config.pl'
+ - '*.ac'
+ - '**/*.m4'
+ - '**/CMakeLists.txt'
+ - 'lib/curl_config.h.cmake'
+ - 'scripts/cmp-config.pl'
pull_request:
branches:
- - master
+ - master
paths:
- - '*.ac'
- - '**/*.m4'
- - '**/CMakeLists.txt'
- - 'lib/curl_config.h.cmake'
- - 'scripts/cmp-config.pl'
+ - '*.ac'
+ - '**/*.m4'
+ - '**/CMakeLists.txt'
+ - 'lib/curl_config.h.cmake'
+ - 'scripts/cmp-config.pl'
permissions: {}
check:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v4
- - name: run configure --with-openssl
- run: |
- autoreconf -fi
- ./configure --with-openssl
+ - name: run configure --with-openssl
+ run: |
+ autoreconf -fi
+ ./configure --with-openssl
- - name: run cmake
- run: |
- mkdir build && cd build && cmake ..
+ - name: run cmake
+ run: |
+ mkdir build && cd build && cmake ..
- - name: compare generated curl_config.h files
- run: ./scripts/cmp-config.pl lib/curl_config.h build/lib/curl_config.h
+ - name: compare generated curl_config.h files
+ run: ./scripts/cmp-config.pl lib/curl_config.h build/lib/curl_config.h
on:
push:
branches:
- - master
- - '*/ci'
+ - master
+ - '*/ci'
pull_request:
branches:
- - master
+ - master
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- - uses: actions/checkout@v4
-
- - run: sudo apt-get purge -y curl libcurl4 libcurl4-doc
- name: 'remove preinstalled curl libcurl4{-doc}'
-
- - run: autoreconf -fi
- name: 'autoreconf'
-
- - run: ./configure --without-ssl
- name: 'configure'
-
- - run: make V=1 && make V=1 clean
- name: 'make and clean'
-
- - run: ./maketgz 99.98.97
- name: 'maketgz'
-
- - uses: actions/upload-artifact@v3
- with:
- name: 'release-tgz'
- path: 'curl-99.98.97.tar.gz'
-
- - run: |
- echo "::stop-commands::$(uuidgen)"
- tar xvf curl-99.98.97.tar.gz
- pushd curl-99.98.97
- ./configure --prefix=$HOME/temp --without-ssl
- make
- make TFLAGS=1 test
- make install
- popd
- # basic check of the installed files
- bash scripts/installcheck.sh $HOME/temp
- rm -rf curl-99.98.97
- name: 'verify in-tree configure build including install'
+ - uses: actions/checkout@v4
+
+ - run: sudo apt-get purge -y curl libcurl4 libcurl4-doc
+ name: 'remove preinstalled curl libcurl4{-doc}'
+
+ - run: autoreconf -fi
+ name: 'autoreconf'
+
+ - run: ./configure --without-ssl
+ name: 'configure'
+
+ - run: make V=1 && make V=1 clean
+ name: 'make and clean'
+
+ - run: ./maketgz 99.98.97
+ name: 'maketgz'
+
+ - uses: actions/upload-artifact@v3
+ with:
+ name: 'release-tgz'
+ path: 'curl-99.98.97.tar.gz'
+
+ - run: |
+ echo "::stop-commands::$(uuidgen)"
+ tar xvf curl-99.98.97.tar.gz
+ pushd curl-99.98.97
+ ./configure --prefix=$HOME/temp --without-ssl
+ make
+ make TFLAGS=1 test
+ make install
+ popd
+ # basic check of the installed files
+ bash scripts/installcheck.sh $HOME/temp
+ rm -rf curl-99.98.97
+ name: 'verify in-tree configure build including install'
verify-out-of-tree-docs:
runs-on: ubuntu-latest
timeout-minutes: 30
needs: maketgz-and-verify-in-tree
steps:
- - uses: actions/download-artifact@v3
- with:
- name: 'release-tgz'
-
- - run: |
- echo "::stop-commands::$(uuidgen)"
- tar xvf curl-99.98.97.tar.gz
- touch curl-99.98.97/docs/{cmdline-opts,libcurl}/Makefile.inc
- mkdir build
- pushd build
- ../curl-99.98.97/configure --without-ssl
- make
- make TFLAGS='-p 1 1139' test
- popd
- rm -rf build
- rm -rf curl-99.98.97
- name: 'verify out-of-tree configure build including docs'
+ - uses: actions/download-artifact@v3
+ with:
+ name: 'release-tgz'
+
+ - run: |
+ echo "::stop-commands::$(uuidgen)"
+ tar xvf curl-99.98.97.tar.gz
+ touch curl-99.98.97/docs/{cmdline-opts,libcurl}/Makefile.inc
+ mkdir build
+ pushd build
+ ../curl-99.98.97/configure --without-ssl
+ make
+ make TFLAGS='-p 1 1139' test
+ popd
+ rm -rf build
+ rm -rf curl-99.98.97
+ name: 'verify out-of-tree configure build including docs'
verify-out-of-tree-autotools-debug:
runs-on: ubuntu-latest
timeout-minutes: 30
needs: maketgz-and-verify-in-tree
steps:
- - uses: actions/download-artifact@v3
- with:
- name: 'release-tgz'
-
- - run: |
- echo "::stop-commands::$(uuidgen)"
- tar xvf curl-99.98.97.tar.gz
- pushd curl-99.98.97
- mkdir build
- pushd build
- ../configure --without-ssl --enable-debug "--prefix=${PWD}/pkg"
- make -j3
- make -j3 TFLAGS=1279 test
- make -j3 install
- name: 'verify out-of-tree autotools debug build'
+ - uses: actions/download-artifact@v3
+ with:
+ name: 'release-tgz'
+
+ - run: |
+ echo "::stop-commands::$(uuidgen)"
+ tar xvf curl-99.98.97.tar.gz
+ pushd curl-99.98.97
+ mkdir build
+ pushd build
+ ../configure --without-ssl --enable-debug "--prefix=${PWD}/pkg"
+ make -j3
+ make -j3 TFLAGS=1279 test
+ make -j3 install
+ name: 'verify out-of-tree autotools debug build'
verify-out-of-tree-cmake:
runs-on: ubuntu-latest
timeout-minutes: 30
needs: maketgz-and-verify-in-tree
steps:
- - uses: actions/download-artifact@v3
- with:
- name: 'release-tgz'
-
- - run: |
- echo "::stop-commands::$(uuidgen)"
- tar xvf curl-99.98.97.tar.gz
- pushd curl-99.98.97
- mkdir build
- pushd build
- cmake ..
- make
- name: 'verify out-of-tree cmake build'
+ - uses: actions/download-artifact@v3
+ with:
+ name: 'release-tgz'
+
+ - run: |
+ echo "::stop-commands::$(uuidgen)"
+ tar xvf curl-99.98.97.tar.gz
+ pushd curl-99.98.97
+ mkdir build
+ pushd build
+ cmake ..
+ make
+ name: 'verify out-of-tree cmake build'
on:
push:
branches:
- - master
- - '*/ci'
+ - master
+ - '*/ci'
paths-ignore:
- - '**/*.md'
- - '**/CMakeLists.txt'
- - '.azure-pipelines.yml'
- - '.circleci/**'
- - '.cirrus.yml'
- - 'appveyor.yml'
- - 'CMake/**'
- - 'packages/**'
- - 'plan9/**'
- - 'projects/**'
- - 'tests/data/**'
- - 'winbuild/**'
+ - '**/*.md'
+ - '**/CMakeLists.txt'
+ - '.azure-pipelines.yml'
+ - '.circleci/**'
+ - '.cirrus.yml'
+ - 'appveyor.yml'
+ - 'CMake/**'
+ - 'packages/**'
+ - 'plan9/**'
+ - 'projects/**'
+ - 'tests/data/**'
+ - 'winbuild/**'
pull_request:
branches:
- - master
+ - master
paths-ignore:
- - '**/*.md'
- - '**/CMakeLists.txt'
- - '.azure-pipelines.yml'
- - '.circleci/**'
- - '.cirrus.yml'
- - 'appveyor.yml'
- - 'CMake/**'
- - 'packages/**'
- - 'plan9/**'
- - 'projects/**'
- - 'tests/data/**'
- - 'winbuild/**'
+ - '**/*.md'
+ - '**/CMakeLists.txt'
+ - '.azure-pipelines.yml'
+ - '.circleci/**'
+ - '.cirrus.yml'
+ - 'appveyor.yml'
+ - 'CMake/**'
+ - 'packages/**'
+ - 'plan9/**'
+ - 'projects/**'
+ - 'tests/data/**'
+ - 'winbuild/**'
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
# this must not ever run on any other branch than master
push:
branches:
- - master
+ - master
concurrency:
# this should not run in parallel, so just run one at a time
pull-requests: write
steps:
- - uses: actions/labeler@v5
- with:
- repo-token: "${{ secrets.GITHUB_TOKEN }}"
+ - uses: actions/labeler@v5
+ with:
+ repo-token: "${{ secrets.GITHUB_TOKEN }}"
on:
push:
branches:
- - master
- - '*/ci'
+ - master
+ - '*/ci'
paths:
- - '.github/workflows/linkcheck.yml'
- - '**.md'
+ - '.github/workflows/linkcheck.yml'
+ - '**.md'
pull_request:
branches:
- - master
+ - master
paths:
- - '.github/workflows/linkcheck.yml'
- - '**.md'
+ - '.github/workflows/linkcheck.yml'
+ - '**.md'
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
check:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4
- - uses: gaurav-nelson/github-action-markdown-link-check@v1
- with:
- use-quiet-mode: 'yes'
+ - uses: actions/checkout@v4
+ - uses: gaurav-nelson/github-action-markdown-link-check@v1
+ with:
+ use-quiet-mode: 'yes'
on:
push:
branches:
- - master
- - '*/ci'
+ - master
+ - '*/ci'
paths-ignore:
- - '**/*.md'
- - '.azure-pipelines.yml'
- - '.circleci/**'
- - '.cirrus.yml'
- - 'appveyor.yml'
- - 'packages/**'
- - 'plan9/**'
- - 'projects/**'
- - 'winbuild/**'
+ - '**/*.md'
+ - '.azure-pipelines.yml'
+ - '.circleci/**'
+ - '.cirrus.yml'
+ - 'appveyor.yml'
+ - 'packages/**'
+ - 'plan9/**'
+ - 'projects/**'
+ - 'winbuild/**'
pull_request:
branches:
- - master
+ - master
paths-ignore:
- - '**/*.md'
- - '.azure-pipelines.yml'
- - '.circleci/**'
- - '.cirrus.yml'
- - 'appveyor.yml'
- - 'packages/**'
- - 'plan9/**'
- - 'projects/**'
- - 'winbuild/**'
+ - '**/*.md'
+ - '.azure-pipelines.yml'
+ - '.circleci/**'
+ - '.cirrus.yml'
+ - 'appveyor.yml'
+ - 'packages/**'
+ - 'plan9/**'
+ - 'projects/**'
+ - 'winbuild/**'
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
fail-fast: false
matrix:
build:
- - name: bearssl
- install_packages: zlib1g-dev valgrind
- install_steps: bearssl pytest
- configure: LDFLAGS="-Wl,-rpath,$HOME/bearssl/lib" --with-bearssl=$HOME/bearssl --enable-debug
- singleuse: --unit
-
- - name: bearssl-clang
- install_packages: zlib1g-dev clang
- install_steps: bearssl
- configure: CC=clang LDFLAGS="-Wl,-rpath,$HOME/bearssl/lib" --with-bearssl=$HOME/bearssl --enable-debug
- singleuse: --unit
-
- - name: libressl
- install_packages: zlib1g-dev valgrind
- install_steps: libressl pytest
- configure: LDFLAGS="-Wl,-rpath,$HOME/libressl/lib" --with-openssl=$HOME/libressl --enable-debug
- singleuse: --unit
-
- - name: libressl-clang
- install_packages: zlib1g-dev clang
- install_steps: libressl
- configure: CC=clang LDFLAGS="-Wl,-rpath,$HOME/libressl/lib" --with-openssl=$HOME/libressl --enable-debug
- singleuse: --unit
-
- - name: mbedtls
- install_packages: libnghttp2-dev valgrind
- install_steps: mbedtls pytest
- configure: LDFLAGS="-Wl,-rpath,$HOME/mbedtls/lib" --with-mbedtls=$HOME/mbedtls --enable-debug
- singleuse: --unit
-
- - name: mbedtls-clang
- install_packages: libnghttp2-dev clang
- install_steps: mbedtls
- configure: CC=clang LDFLAGS="-Wl,-rpath,$HOME/mbedtls/lib" --with-mbedtls=$HOME/mbedtls --enable-debug
- singleuse: --unit
-
- - name: msh3
- install_packages: zlib1g-dev valgrind
- install_steps: quictls msh3
- configure: LDFLAGS="-Wl,-rpath,$HOME/msh3/lib -Wl,-rpath,$HOME/quictls/lib" --with-msh3=$HOME/msh3 --with-openssl=$HOME/quictls --enable-debug
- singleuse: --unit
-
- - name: openssl3
- install_packages: zlib1g-dev valgrind
- install_steps: gcc-11 openssl3 pytest
- configure: CFLAGS=-std=gnu89 LDFLAGS="-Wl,-rpath,$HOME/openssl3/lib64" --with-openssl=$HOME/openssl3 --enable-debug --enable-websockets
- singleuse: --unit
-
- - name: openssl3-O3
- install_packages: zlib1g-dev valgrind
- install_steps: gcc-11 openssl3
- configure: CFLAGS=-O3 LDFLAGS="-Wl,-rpath,$HOME/openssl3/lib64" --with-openssl=$HOME/openssl3 --enable-debug --enable-websockets
- singleuse: --unit
-
- - name: openssl3-clang
- install_packages: zlib1g-dev clang
- install_steps: openssl3
- configure: CC=clang LDFLAGS="-Wl,-rpath,$HOME/openssl3/lib64" --with-openssl=$HOME/openssl3 --enable-debug --enable-websockets
- singleuse: --unit
-
- - name: address-sanitizer
- install_packages: zlib1g-dev libssh2-1-dev clang libssl-dev libubsan1 libasan8 libtsan2
- install_steps: pytest
- configure: >
- CC=clang
- CFLAGS="-fsanitize=address,undefined,signed-integer-overflow -fno-sanitize-recover=undefined,integer -Wformat -Werror=format-security -Werror=array-bounds -g"
- LDFLAGS="-fsanitize=address,undefined -fno-sanitize-recover=undefined,integer"
- LIBS="-ldl -lubsan"
- --with-openssl --enable-debug --enable-websockets
- singleuse: --unit
-
- - name: memory-sanitizer
- install_packages: clang
- install_steps:
- configure: >
- CC=clang
- CFLAGS="-fsanitize=memory -Wformat -Werror=format-security -Werror=array-bounds -g"
- LDFLAGS="-fsanitize=memory"
- LIBS="-ldl"
- --without-ssl --without-zlib --without-brotli --without-zstd --without-libpsl --without-nghttp2 --enable-debug --enable-websocketsx
- singleuse: --unit
-
- - name: event-based
- install_packages: libssh-dev valgrind
- configure: --enable-debug --disable-shared --disable-threaded-resolver --with-libssh --with-openssl
- tflags: -n -e '!TLS-SRP'
- singleuse: --unit
-
- - name: hyper
- install_steps: rust hyper valgrind
- configure: LDFLAGS="-Wl,-rpath,$HOME/hyper/target/debug" --with-openssl --with-hyper=$HOME/hyper --enable-debug --enable-websockets
- singleuse: --unit
-
- - name: rustls
- install_steps: rust rustls pytest valgrind
- configure: --with-rustls=$HOME/rustls --enable-debug
- singleuse: --unit
-
- - name: Intel compiler - without SSL
- install_packages: zlib1g-dev valgrind
- install_steps: intel
- configure: CC=icc --enable-debug --without-ssl
- singleuse: --unit
-
- - name: Intel compiler - OpenSSL
- install_packages: zlib1g-dev libssl-dev valgrind
- install_steps: intel
- configure: CC=icc --enable-debug --with-openssl
- singleuse: --unit
-
- - name: Slackware-openssl-with-gssapi-gcc
- # These are essentially the same flags used to build the curl Slackware package
- # https://ftpmirror.infania.net/slackware/slackware64-current/source/n/curl/curl.SlackBuild
- configure: --with-openssl --with-libssh2 --with-gssapi --enable-ares --enable-static=no --without-ca-bundle --with-ca-path=/etc/ssl/certs
- # Docker Hub image that `container-job` executes in
- container: 'andy5995/slackware-build-essential:15.0'
-
- - name: Alpine MUSL
- configure: --enable-debug --enable-websockets --with-ssl --with-libssh2 --with-libidn2 --with-gssapi --enable-ldap --with-libpsl
- container: 'alpine:3.18'
- singleuse: --unit
+ - name: bearssl
+ install_packages: zlib1g-dev valgrind
+ install_steps: bearssl pytest
+ configure: LDFLAGS="-Wl,-rpath,$HOME/bearssl/lib" --with-bearssl=$HOME/bearssl --enable-debug
+ singleuse: --unit
+
+ - name: bearssl-clang
+ install_packages: zlib1g-dev clang
+ install_steps: bearssl
+ configure: CC=clang LDFLAGS="-Wl,-rpath,$HOME/bearssl/lib" --with-bearssl=$HOME/bearssl --enable-debug
+ singleuse: --unit
+
+ - name: libressl
+ install_packages: zlib1g-dev valgrind
+ install_steps: libressl pytest
+ configure: LDFLAGS="-Wl,-rpath,$HOME/libressl/lib" --with-openssl=$HOME/libressl --enable-debug
+ singleuse: --unit
+
+ - name: libressl-clang
+ install_packages: zlib1g-dev clang
+ install_steps: libressl
+ configure: CC=clang LDFLAGS="-Wl,-rpath,$HOME/libressl/lib" --with-openssl=$HOME/libressl --enable-debug
+ singleuse: --unit
+
+ - name: mbedtls
+ install_packages: libnghttp2-dev valgrind
+ install_steps: mbedtls pytest
+ configure: LDFLAGS="-Wl,-rpath,$HOME/mbedtls/lib" --with-mbedtls=$HOME/mbedtls --enable-debug
+ singleuse: --unit
+
+ - name: mbedtls-clang
+ install_packages: libnghttp2-dev clang
+ install_steps: mbedtls
+ configure: CC=clang LDFLAGS="-Wl,-rpath,$HOME/mbedtls/lib" --with-mbedtls=$HOME/mbedtls --enable-debug
+ singleuse: --unit
+
+ - name: msh3
+ install_packages: zlib1g-dev valgrind
+ install_steps: quictls msh3
+ configure: LDFLAGS="-Wl,-rpath,$HOME/msh3/lib -Wl,-rpath,$HOME/quictls/lib" --with-msh3=$HOME/msh3 --with-openssl=$HOME/quictls --enable-debug
+ singleuse: --unit
+
+ - name: openssl3
+ install_packages: zlib1g-dev valgrind
+ install_steps: gcc-11 openssl3 pytest
+ configure: CFLAGS=-std=gnu89 LDFLAGS="-Wl,-rpath,$HOME/openssl3/lib64" --with-openssl=$HOME/openssl3 --enable-debug --enable-websockets
+ singleuse: --unit
+
+ - name: openssl3-O3
+ install_packages: zlib1g-dev valgrind
+ install_steps: gcc-11 openssl3
+ configure: CFLAGS=-O3 LDFLAGS="-Wl,-rpath,$HOME/openssl3/lib64" --with-openssl=$HOME/openssl3 --enable-debug --enable-websockets
+ singleuse: --unit
+
+ - name: openssl3-clang
+ install_packages: zlib1g-dev clang
+ install_steps: openssl3
+ configure: CC=clang LDFLAGS="-Wl,-rpath,$HOME/openssl3/lib64" --with-openssl=$HOME/openssl3 --enable-debug --enable-websockets
+ singleuse: --unit
+
+ - name: address-sanitizer
+ install_packages: zlib1g-dev libssh2-1-dev clang libssl-dev libubsan1 libasan8 libtsan2
+ install_steps: pytest
+ configure: >
+ CC=clang
+ CFLAGS="-fsanitize=address,undefined,signed-integer-overflow -fno-sanitize-recover=undefined,integer -Wformat -Werror=format-security -Werror=array-bounds -g"
+ LDFLAGS="-fsanitize=address,undefined -fno-sanitize-recover=undefined,integer"
+ LIBS="-ldl -lubsan"
+ --with-openssl --enable-debug --enable-websockets
+ singleuse: --unit
+
+ - name: memory-sanitizer
+ install_packages: clang
+ install_steps:
+ configure: >
+ CC=clang
+ CFLAGS="-fsanitize=memory -Wformat -Werror=format-security -Werror=array-bounds -g"
+ LDFLAGS="-fsanitize=memory"
+ LIBS="-ldl"
+ --without-ssl --without-zlib --without-brotli --without-zstd --without-libpsl --without-nghttp2 --enable-debug --enable-websocketsx
+ singleuse: --unit
+
+ - name: event-based
+ install_packages: libssh-dev valgrind
+ configure: --enable-debug --disable-shared --disable-threaded-resolver --with-libssh --with-openssl
+ tflags: -n -e '!TLS-SRP'
+ singleuse: --unit
+
+ - name: hyper
+ install_steps: rust hyper valgrind
+ configure: LDFLAGS="-Wl,-rpath,$HOME/hyper/target/debug" --with-openssl --with-hyper=$HOME/hyper --enable-debug --enable-websockets
+ singleuse: --unit
+
+ - name: rustls
+ install_steps: rust rustls pytest valgrind
+ configure: --with-rustls=$HOME/rustls --enable-debug
+ singleuse: --unit
+
+ - name: Intel compiler - without SSL
+ install_packages: zlib1g-dev valgrind
+ install_steps: intel
+ configure: CC=icc --enable-debug --without-ssl
+ singleuse: --unit
+
+ - name: Intel compiler - OpenSSL
+ install_packages: zlib1g-dev libssl-dev valgrind
+ install_steps: intel
+ configure: CC=icc --enable-debug --with-openssl
+ singleuse: --unit
+
+ - name: Slackware-openssl-with-gssapi-gcc
+ # These are essentially the same flags used to build the curl Slackware package
+ # https://ftpmirror.infania.net/slackware/slackware64-current/source/n/curl/curl.SlackBuild
+ configure: --with-openssl --with-libssh2 --with-gssapi --enable-ares --enable-static=no --without-ca-bundle --with-ca-path=/etc/ssl/certs
+ # Docker Hub image that `container-job` executes in
+ container: 'andy5995/slackware-build-essential:15.0'
+
+ - name: Alpine MUSL
+ configure: --enable-debug --enable-websockets --with-ssl --with-libssh2 --with-libidn2 --with-gssapi --enable-ldap --with-libpsl
+ container: 'alpine:3.18'
+ singleuse: --unit
steps:
- - if: matrix.build.container == null
- run: |
- sudo apt-get update
- sudo apt-get install libtool autoconf automake pkg-config stunnel4 libpsl-dev libbrotli-dev libzstd-dev ${{ matrix.build.install_packages }}
- sudo python3 -m pip install impacket
- name: 'install prereqs and impacket'
-
- - if: startsWith(matrix.build.container, 'alpine')
- run: |
- apk add --no-cache build-base autoconf automake libtool perl openssl-dev libssh2-dev zlib-dev brotli-dev zstd-dev libidn2-dev openldap-dev heimdal-dev libpsl-dev py3-impacket py3-asn1 py3-six py3-pycryptodomex perl-time-hires openssh stunnel sudo git
- name: 'install dependencies'
-
- - uses: actions/checkout@v4
-
- - if: contains(matrix.build.install_steps, 'gcc-11')
- run: |
- sudo add-apt-repository ppa:ubuntu-toolchain-r/ppa
- sudo apt-get update
- sudo apt-get install gcc-11
- sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 100
- sudo update-alternatives --set gcc /usr/bin/gcc-11
- gcc --version
- name: 'install gcc-11'
-
- - name: cache bearssl
- if: contains(matrix.build.install_steps, 'bearssl')
- uses: actions/cache@v3
- id: cache-bearssl
- env:
- cache-name: cache-bearssl
- with:
- path: /home/runner/bearssl
- key: ${{ runner.os }}-build-${{ env.cache-name }}-bearssl-${{ env.bearssl-version }}
-
- - name: 'build bearssl'
- if: contains(matrix.build.install_steps, 'bearssl') && steps.cache-bearssl.outputs.cache-hit != 'true'
- run: |
- curl -LOsSf --retry 6 --retry-connrefused --max-time 999 https://bearssl.org/bearssl-${{ env.bearssl-version }}.tar.gz
- tar -xzf bearssl-${{ env.bearssl-version }}.tar.gz
- cd bearssl-${{ env.bearssl-version }}
- make
- mkdir -p $HOME/bearssl/lib $HOME/bearssl/include
- cp inc/*.h $HOME/bearssl/include
- cp build/libbearssl.* $HOME/bearssl/lib
-
- - name: cache libressl
- if: contains(matrix.build.install_steps, 'libressl')
- uses: actions/cache@v3
- id: cache-libressl
- env:
- cache-name: cache-libressl
- with:
- path: /home/runner/libressl
- key: ${{ runner.os }}-build-${{ env.cache-name }}-libressl-${{ env.libressl-version }}
-
- - name: 'build libressl'
- if: contains(matrix.build.install_steps, 'libressl') && steps.cache-libressl.outputs.cache-hit != 'true'
- run: |
- git clone --quiet --depth=1 -b ${{ env.libressl-version }} https://github.com/libressl-portable/portable.git libressl-git
- cd libressl-git
- ./autogen.sh
- ./configure --prefix=$HOME/libressl
- make install
-
- - name: cache mbedtls
- if: contains(matrix.build.install_steps, 'mbedtls')
- uses: actions/cache@v3
- id: cache-mbedtls
- env:
- cache-name: cache-mbedtls
- with:
- path: /home/runner/mbedtls
- key: ${{ runner.os }}-build-${{ env.cache-name }}-mbedtls-${{ env.mbedtls-version }}
-
- - name: 'build mbedtls'
- if: contains(matrix.build.install_steps, 'mbedtls') && steps.cache-mbedtls.outputs.cache-hit != 'true'
- run: |
- git clone --quiet --depth=1 -b ${{ env.mbedtls-version }} https://github.com/ARMmbed/mbedtls
- cd mbedtls
- make DESTDIR=$HOME/mbedtls install
-
- - name: cache openssl3
- if: contains(matrix.build.install_steps, 'openssl3')
- uses: actions/cache@v3
- id: cache-openssl3
- env:
- cache-name: cache-openssl3
- with:
- path: /home/runner/openssl3
- key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ env.openssl3-version }}
-
- - name: 'install openssl3'
- if: contains(matrix.build.install_steps, 'openssl3') && steps.cache-openssl3.outputs.cache-hit != 'true'
- run: |
- git clone --quiet --depth=1 -b ${{ env.openssl3-version }} https://github.com/openssl/openssl
- cd openssl
- ./config enable-tls1_3 --prefix=$HOME/openssl3
- make -j1 install_sw
-
- - name: cache quictls
- if: contains(matrix.build.install_steps, 'quictls')
- uses: actions/cache@v3
- id: cache-quictls
- env:
- cache-name: cache-quictls
- with:
- path: /home/runner/quictls
- key: ${{ runner.os }}-build-${{ env.cache-name }}-quictls-${{ env.quictls-version }}
-
- - name: 'build quictls'
- if: contains(matrix.build.install_steps, 'quictls') && steps.cache-quictls.outputs.cache-hit != 'true'
- run: |
- git clone --quiet --depth=1 -b openssl-${{ env.quictls-version }} https://github.com/quictls/openssl
- cd openssl
- ./config enable-tls1_3 --prefix=$HOME/quictls --libdir=$HOME/quictls/lib
- make -j1 install_sw
-
- - name: cache msh3
- if: contains(matrix.build.install_steps, 'msh3')
- uses: actions/cache@v3
- id: cache-msh3
- env:
- cache-name: cache-msh3
- with:
- path: /home/runner/msh3
- key: ${{ runner.os }}-build-${{ env.cache-name }}-msh3-${{ env.msh3-version }}
-
- - name: 'build msh3'
- if: contains(matrix.build.install_steps, 'msh3') && steps.cache-msh3.outputs.cache-hit != 'true'
- run: |
- git clone --quiet -b ${{ env.msh3-version }} --depth=1 --recursive https://github.com/nibanks/msh3
- cd msh3 && mkdir build && cd build
- cmake -G 'Unix Makefiles' -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=$HOME/msh3 ..
- cmake --build .
- cmake --install .
-
- - if: contains(matrix.build.install_steps, 'rust')
- run: |
- cd $HOME
- curl -sSf --compressed https://sh.rustup.rs/ | sh -s -- -y
- source $HOME/.cargo/env
- rustup toolchain install nightly
- name: 'install rust'
-
- - name: cache rustls
- if: contains(matrix.build.install_steps, 'rustls')
- uses: actions/cache@v3
- id: cache-rustls
- env:
- cache-name: cache-rustls
- with:
- path: /home/runner/rustls
- key: ${{ runner.os }}-build-${{ env.cache-name }}-rustls-${{ env.rustls-version }}
-
- - name: 'build rustls'
- if: contains(matrix.build.install_steps, 'rustls') && steps.cache-rustls.outputs.cache-hit != 'true'
- run: |
- git clone --quiet --depth=1 -b ${{ env.rustls-version }} --recursive https://github.com/rustls/rustls-ffi.git
- cd rustls-ffi
- make DESTDIR=$HOME/rustls install
-
- - if: contains(matrix.build.install_steps, 'hyper')
- run: |
- cd $HOME
- git clone --quiet --depth=1 https://github.com/hyperium/hyper.git
- cd $HOME/hyper
- RUSTFLAGS="--cfg hyper_unstable_ffi" cargo +nightly rustc --features client,http1,http2,ffi -Z unstable-options --crate-type cdylib
- echo "LD_LIBRARY_PATH=$HOME/hyper/target/debug:/usr/local/lib" >> $GITHUB_ENV
- name: 'install hyper'
-
- - if: contains(matrix.build.install_steps, 'intel')
- run: |
- cd /tmp
- curl -sSf --compressed https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | sudo apt-key add -
- sudo add-apt-repository "deb https://apt.repos.intel.com/oneapi all main"
- sudo apt install --no-install-recommends intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic
- source /opt/intel/oneapi/setvars.sh
- printenv >> $GITHUB_ENV
- name: 'install Intel compilers'
-
- - if: contains(matrix.build.install_steps, 'pytest')
- run: |
- sudo apt-get install apache2 apache2-dev libnghttp2-dev
- sudo python3 -m pip install -r tests/http/requirements.txt
- name: 'install pytest and apach2-dev'
-
- - name: cache mod_h2
- if: contains(matrix.build.install_steps, 'pytest')
- uses: actions/cache@v3
- id: cache-mod_h2
- env:
- cache-name: cache-mod_h2
- with:
- path: /home/runner/mod_h2
- key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ env.mod_h2-version }}
-
- - name: 'build mod_h2'
- if: contains(matrix.build.install_steps, 'pytest') && steps.cache-mod_h2.outputs.cache-hit != 'true'
- run: |
- cd $HOME
- git clone --quiet --depth=1 -b ${{ env.mod_h2-version }} https://github.com/icing/mod_h2
- cd mod_h2
- autoreconf -fi
- ./configure
- make
-
- - name: 'install mod_h2'
- if: contains(matrix.build.install_steps, 'pytest')
- run: |
- cd $HOME/mod_h2
- sudo make install
-
- - run: autoreconf -fi
- name: 'autoreconf'
-
- - run: ./configure --enable-warnings --enable-werror ${{ matrix.build.configure }}
- name: 'configure'
-
- - run: make V=1
- name: 'make'
-
- - run: |
- git config --global --add safe.directory "*"
- ./scripts/singleuse.pl ${{ matrix.build.singleuse }} lib/.libs/libcurl.a
- name: single-use function check
-
- - run: ./src/curl -V
- name: 'check curl -V output'
-
- - run: make V=1 examples
- name: 'make examples'
-
- - run: make V=1 -C tests
- name: 'make tests'
-
- - run: make V=1 test-ci
- name: 'run tests'
- env:
- TFLAGS: "${{ matrix.build.tflags }}"
-
- - if: contains(matrix.build.install_steps, 'pytest')
- # run for `tests` directory, so pytest does not pick up any other
- # packages we might have built here
- run:
- pytest -v tests
- name: 'run pytest'
- env:
- TFLAGS: "${{ matrix.build.tflags }}"
- CURL_CI: github
+ - if: matrix.build.container == null
+ run: |
+ sudo apt-get update
+ sudo apt-get install libtool autoconf automake pkg-config stunnel4 libpsl-dev libbrotli-dev libzstd-dev ${{ matrix.build.install_packages }}
+ sudo python3 -m pip install impacket
+ name: 'install prereqs and impacket'
+
+ - if: startsWith(matrix.build.container, 'alpine')
+ run: |
+ apk add --no-cache build-base autoconf automake libtool perl openssl-dev libssh2-dev zlib-dev brotli-dev zstd-dev libidn2-dev openldap-dev heimdal-dev libpsl-dev py3-impacket py3-asn1 py3-six py3-pycryptodomex perl-time-hires openssh stunnel sudo git
+ name: 'install dependencies'
+
+ - uses: actions/checkout@v4
+
+ - if: contains(matrix.build.install_steps, 'gcc-11')
+ run: |
+ sudo add-apt-repository ppa:ubuntu-toolchain-r/ppa
+ sudo apt-get update
+ sudo apt-get install gcc-11
+ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 100
+ sudo update-alternatives --set gcc /usr/bin/gcc-11
+ gcc --version
+ name: 'install gcc-11'
+
+ - name: cache bearssl
+ if: contains(matrix.build.install_steps, 'bearssl')
+ uses: actions/cache@v3
+ id: cache-bearssl
+ env:
+ cache-name: cache-bearssl
+ with:
+ path: /home/runner/bearssl
+ key: ${{ runner.os }}-build-${{ env.cache-name }}-bearssl-${{ env.bearssl-version }}
+
+ - name: 'build bearssl'
+ if: contains(matrix.build.install_steps, 'bearssl') && steps.cache-bearssl.outputs.cache-hit != 'true'
+ run: |
+ curl -LOsSf --retry 6 --retry-connrefused --max-time 999 https://bearssl.org/bearssl-${{ env.bearssl-version }}.tar.gz
+ tar -xzf bearssl-${{ env.bearssl-version }}.tar.gz
+ cd bearssl-${{ env.bearssl-version }}
+ make
+ mkdir -p $HOME/bearssl/lib $HOME/bearssl/include
+ cp inc/*.h $HOME/bearssl/include
+ cp build/libbearssl.* $HOME/bearssl/lib
+
+ - name: cache libressl
+ if: contains(matrix.build.install_steps, 'libressl')
+ uses: actions/cache@v3
+ id: cache-libressl
+ env:
+ cache-name: cache-libressl
+ with:
+ path: /home/runner/libressl
+ key: ${{ runner.os }}-build-${{ env.cache-name }}-libressl-${{ env.libressl-version }}
+
+ - name: 'build libressl'
+ if: contains(matrix.build.install_steps, 'libressl') && steps.cache-libressl.outputs.cache-hit != 'true'
+ run: |
+ git clone --quiet --depth=1 -b ${{ env.libressl-version }} https://github.com/libressl-portable/portable.git libressl-git
+ cd libressl-git
+ ./autogen.sh
+ ./configure --prefix=$HOME/libressl
+ make install
+
+ - name: cache mbedtls
+ if: contains(matrix.build.install_steps, 'mbedtls')
+ uses: actions/cache@v3
+ id: cache-mbedtls
+ env:
+ cache-name: cache-mbedtls
+ with:
+ path: /home/runner/mbedtls
+ key: ${{ runner.os }}-build-${{ env.cache-name }}-mbedtls-${{ env.mbedtls-version }}
+
+ - name: 'build mbedtls'
+ if: contains(matrix.build.install_steps, 'mbedtls') && steps.cache-mbedtls.outputs.cache-hit != 'true'
+ run: |
+ git clone --quiet --depth=1 -b ${{ env.mbedtls-version }} https://github.com/ARMmbed/mbedtls
+ cd mbedtls
+ make DESTDIR=$HOME/mbedtls install
+
+ - name: cache openssl3
+ if: contains(matrix.build.install_steps, 'openssl3')
+ uses: actions/cache@v3
+ id: cache-openssl3
+ env:
+ cache-name: cache-openssl3
+ with:
+ path: /home/runner/openssl3
+ key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ env.openssl3-version }}
+
+ - name: 'install openssl3'
+ if: contains(matrix.build.install_steps, 'openssl3') && steps.cache-openssl3.outputs.cache-hit != 'true'
+ run: |
+ git clone --quiet --depth=1 -b ${{ env.openssl3-version }} https://github.com/openssl/openssl
+ cd openssl
+ ./config enable-tls1_3 --prefix=$HOME/openssl3
+ make -j1 install_sw
+
+ - name: cache quictls
+ if: contains(matrix.build.install_steps, 'quictls')
+ uses: actions/cache@v3
+ id: cache-quictls
+ env:
+ cache-name: cache-quictls
+ with:
+ path: /home/runner/quictls
+ key: ${{ runner.os }}-build-${{ env.cache-name }}-quictls-${{ env.quictls-version }}
+
+ - name: 'build quictls'
+ if: contains(matrix.build.install_steps, 'quictls') && steps.cache-quictls.outputs.cache-hit != 'true'
+ run: |
+ git clone --quiet --depth=1 -b openssl-${{ env.quictls-version }} https://github.com/quictls/openssl
+ cd openssl
+ ./config enable-tls1_3 --prefix=$HOME/quictls --libdir=$HOME/quictls/lib
+ make -j1 install_sw
+
+ - name: cache msh3
+ if: contains(matrix.build.install_steps, 'msh3')
+ uses: actions/cache@v3
+ id: cache-msh3
+ env:
+ cache-name: cache-msh3
+ with:
+ path: /home/runner/msh3
+ key: ${{ runner.os }}-build-${{ env.cache-name }}-msh3-${{ env.msh3-version }}
+
+ - name: 'build msh3'
+ if: contains(matrix.build.install_steps, 'msh3') && steps.cache-msh3.outputs.cache-hit != 'true'
+ run: |
+ git clone --quiet -b ${{ env.msh3-version }} --depth=1 --recursive https://github.com/nibanks/msh3
+ cd msh3 && mkdir build && cd build
+ cmake -G 'Unix Makefiles' -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=$HOME/msh3 ..
+ cmake --build .
+ cmake --install .
+
+ - if: contains(matrix.build.install_steps, 'rust')
+ run: |
+ cd $HOME
+ curl -sSf --compressed https://sh.rustup.rs/ | sh -s -- -y
+ source $HOME/.cargo/env
+ rustup toolchain install nightly
+ name: 'install rust'
+
+ - name: cache rustls
+ if: contains(matrix.build.install_steps, 'rustls')
+ uses: actions/cache@v3
+ id: cache-rustls
+ env:
+ cache-name: cache-rustls
+ with:
+ path: /home/runner/rustls
+ key: ${{ runner.os }}-build-${{ env.cache-name }}-rustls-${{ env.rustls-version }}
+
+ - name: 'build rustls'
+ if: contains(matrix.build.install_steps, 'rustls') && steps.cache-rustls.outputs.cache-hit != 'true'
+ run: |
+ git clone --quiet --depth=1 -b ${{ env.rustls-version }} --recursive https://github.com/rustls/rustls-ffi.git
+ cd rustls-ffi
+ make DESTDIR=$HOME/rustls install
+
+ - if: contains(matrix.build.install_steps, 'hyper')
+ run: |
+ cd $HOME
+ git clone --quiet --depth=1 https://github.com/hyperium/hyper.git
+ cd $HOME/hyper
+ RUSTFLAGS="--cfg hyper_unstable_ffi" cargo +nightly rustc --features client,http1,http2,ffi -Z unstable-options --crate-type cdylib
+ echo "LD_LIBRARY_PATH=$HOME/hyper/target/debug:/usr/local/lib" >> $GITHUB_ENV
+ name: 'install hyper'
+
+ - if: contains(matrix.build.install_steps, 'intel')
+ run: |
+ cd /tmp
+ curl -sSf --compressed https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | sudo apt-key add -
+ sudo add-apt-repository "deb https://apt.repos.intel.com/oneapi all main"
+ sudo apt install --no-install-recommends intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic
+ source /opt/intel/oneapi/setvars.sh
+ printenv >> $GITHUB_ENV
+ name: 'install Intel compilers'
+
+ - if: contains(matrix.build.install_steps, 'pytest')
+ run: |
+ sudo apt-get install apache2 apache2-dev libnghttp2-dev
+ sudo python3 -m pip install -r tests/http/requirements.txt
+ name: 'install pytest and apach2-dev'
+
+ - name: cache mod_h2
+ if: contains(matrix.build.install_steps, 'pytest')
+ uses: actions/cache@v3
+ id: cache-mod_h2
+ env:
+ cache-name: cache-mod_h2
+ with:
+ path: /home/runner/mod_h2
+ key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ env.mod_h2-version }}
+
+ - name: 'build mod_h2'
+ if: contains(matrix.build.install_steps, 'pytest') && steps.cache-mod_h2.outputs.cache-hit != 'true'
+ run: |
+ cd $HOME
+ git clone --quiet --depth=1 -b ${{ env.mod_h2-version }} https://github.com/icing/mod_h2
+ cd mod_h2
+ autoreconf -fi
+ ./configure
+ make
+
+ - name: 'install mod_h2'
+ if: contains(matrix.build.install_steps, 'pytest')
+ run: |
+ cd $HOME/mod_h2
+ sudo make install
+
+ - run: autoreconf -fi
+ name: 'autoreconf'
+
+ - run: ./configure --enable-warnings --enable-werror ${{ matrix.build.configure }}
+ name: 'configure'
+
+ - run: make V=1
+ name: 'make'
+
+ - run: |
+ git config --global --add safe.directory "*"
+ ./scripts/singleuse.pl ${{ matrix.build.singleuse }} lib/.libs/libcurl.a
+ name: single-use function check
+
+ - run: ./src/curl -V
+ name: 'check curl -V output'
+
+ - run: make V=1 examples
+ name: 'make examples'
+
+ - run: make V=1 -C tests
+ name: 'make tests'
+
+ - run: make V=1 test-ci
+ name: 'run tests'
+ env:
+ TFLAGS: "${{ matrix.build.tflags }}"
+
+ - if: contains(matrix.build.install_steps, 'pytest')
+ # run for `tests` directory, so pytest does not pick up any other
+ # packages we might have built here
+ run:
+ pytest -v tests
+ name: 'run pytest'
+ env:
+ TFLAGS: "${{ matrix.build.tflags }}"
+ CURL_CI: github
on:
push:
branches:
- - master
- - '*/ci'
+ - master
+ - '*/ci'
paths-ignore:
- - '**/*.md'
- - '**/CMakeLists.txt'
- - '.azure-pipelines.yml'
- - '.circleci/**'
- - '.cirrus.yml'
- - 'appveyor.yml'
- - 'CMake/**'
- - 'packages/**'
- - 'plan9/**'
- - 'projects/**'
- - 'winbuild/**'
+ - '**/*.md'
+ - '**/CMakeLists.txt'
+ - '.azure-pipelines.yml'
+ - '.circleci/**'
+ - '.cirrus.yml'
+ - 'appveyor.yml'
+ - 'CMake/**'
+ - 'packages/**'
+ - 'plan9/**'
+ - 'projects/**'
+ - 'winbuild/**'
pull_request:
branches:
- - master
+ - master
paths-ignore:
- - '**/*.md'
- - '**/CMakeLists.txt'
- - '.azure-pipelines.yml'
- - '.circleci/**'
- - '.cirrus.yml'
- - 'appveyor.yml'
- - 'CMake/**'
- - 'packages/**'
- - 'plan9/**'
- - 'projects/**'
- - 'winbuild/**'
+ - '**/*.md'
+ - '**/CMakeLists.txt'
+ - '.azure-pipelines.yml'
+ - '.circleci/**'
+ - '.cirrus.yml'
+ - 'appveyor.yml'
+ - 'CMake/**'
+ - 'packages/**'
+ - 'plan9/**'
+ - 'projects/**'
+ - 'winbuild/**'
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
fail-fast: false
matrix:
build:
- - name: Linux i686
- install_packages: gcc-11-i686-linux-gnu libssl-dev:i386 zlib1g-dev:i386 libpsl-dev:i386 libbrotli-dev:i386 libzstd-dev:i386
- configure: --enable-debug --enable-websockets --with-openssl --host=i686-linux-gnu CC=i686-linux-gnu-gcc-11 PKG_CONFIG_PATH=/usr/lib/i386-linux-gnu/pkgconfig CPPFLAGS=-I/usr/include/i386-linux-gnu LDFLAGS=-L/usr/lib/i386-linux-gnu
+ - name: Linux i686
+ install_packages: gcc-11-i686-linux-gnu libssl-dev:i386 zlib1g-dev:i386 libpsl-dev:i386 libbrotli-dev:i386 libzstd-dev:i386
+ configure: --enable-debug --enable-websockets --with-openssl --host=i686-linux-gnu CC=i686-linux-gnu-gcc-11 PKG_CONFIG_PATH=/usr/lib/i386-linux-gnu/pkgconfig CPPFLAGS=-I/usr/include/i386-linux-gnu LDFLAGS=-L/usr/lib/i386-linux-gnu
steps:
- - run: |
- sudo dpkg --add-architecture i386
- sudo apt-get update -y
- sudo apt-get install -y --no-install-suggests --no-install-recommends libtool autoconf automake pkg-config stunnel4 ${{ matrix.build.install_packages }}
- sudo python3 -m pip install impacket
- name: 'install prereqs'
+ - run: |
+ sudo dpkg --add-architecture i386
+ sudo apt-get update -y
+ sudo apt-get install -y --no-install-suggests --no-install-recommends libtool autoconf automake pkg-config stunnel4 ${{ matrix.build.install_packages }}
+ sudo python3 -m pip install impacket
+ name: 'install prereqs'
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v4
- - run: autoreconf -fi
- name: 'autoreconf'
+ - run: autoreconf -fi
+ name: 'autoreconf'
- - run: ./configure --enable-warnings --enable-werror ${{ matrix.build.configure }}
- name: 'configure'
+ - run: ./configure --enable-warnings --enable-werror ${{ matrix.build.configure }}
+ name: 'configure'
- - run: make V=1
- name: 'make'
+ - run: make V=1
+ name: 'make'
- - run: ./src/curl -V
- name: 'check curl -V output'
+ - run: ./src/curl -V
+ name: 'check curl -V output'
- - run: make V=1 examples
- name: 'make examples'
+ - run: make V=1 examples
+ name: 'make examples'
- - run: make V=1 -C tests
- name: 'make tests'
+ - run: make V=1 -C tests
+ name: 'make tests'
- - run: make V=1 test-ci
- name: 'run tests'
- env:
- TFLAGS: "${{ matrix.build.tflags }}"
+ - run: make V=1 test-ci
+ name: 'run tests'
+ env:
+ TFLAGS: "${{ matrix.build.tflags }}"
on:
push:
branches:
- - master
- - '*/ci'
+ - master
+ - '*/ci'
paths-ignore:
- - '**/*.md'
- - '.azure-pipelines.yml'
- - '.circleci/**'
- - '.cirrus.yml'
- - 'appveyor.yml'
- - 'packages/**'
- - 'plan9/**'
- - 'projects/**'
- - 'winbuild/**'
+ - '**/*.md'
+ - '.azure-pipelines.yml'
+ - '.circleci/**'
+ - '.cirrus.yml'
+ - 'appveyor.yml'
+ - 'packages/**'
+ - 'plan9/**'
+ - 'projects/**'
+ - 'winbuild/**'
pull_request:
branches:
- - master
+ - master
paths-ignore:
- - '**/*.md'
- - '.azure-pipelines.yml'
- - '.circleci/**'
- - '.cirrus.yml'
- - 'appveyor.yml'
- - 'packages/**'
- - 'plan9/**'
- - 'projects/**'
- - 'winbuild/**'
+ - '**/*.md'
+ - '.azure-pipelines.yml'
+ - '.circleci/**'
+ - '.cirrus.yml'
+ - 'appveyor.yml'
+ - 'packages/**'
+ - 'plan9/**'
+ - 'projects/**'
+ - 'winbuild/**'
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
fail-fast: false
matrix:
build:
- - name: normal
- install: nghttp2
- configure: --without-ssl --enable-websockets
- macosx-version-min: 10.9
- - name: debug
- install: nghttp2
- configure: --enable-debug --without-ssl --enable-websockets
- macosx-version-min: 10.9
- - name: libssh2
- install: nghttp2 libssh2
- configure: --enable-debug --with-libssh2 --without-ssl --enable-websockets
- macosx-version-min: 10.9
- - name: libssh-c-ares
- install: openssl nghttp2 libssh
- configure: --enable-debug --with-libssh --with-openssl=/usr/local/opt/openssl --enable-ares --enable-websockets
- macosx-version-min: 10.9
- - name: libssh
- install: openssl nghttp2 libssh
- configure: --enable-debug --with-libssh --with-openssl=/usr/local/opt/openssl --enable-websockets
- macosx-version-min: 10.9
- - name: c-ares
- install: nghttp2
- configure: --enable-debug --enable-ares --without-ssl --enable-websockets
- macosx-version-min: 10.9
- - name: HTTP only
- install: nghttp2
- configure: |
- --enable-debug \
- --enable-maintainer-mode \
- --disable-alt-svc \
- --disable-dict \
- --disable-file \
- --disable-ftp \
- --disable-gopher \
- --disable-imap \
- --disable-ldap \
- --disable-pop3 \
- --disable-rtmp \
- --disable-rtsp \
- --disable-scp \
- --disable-sftp \
- --disable-shared \
- --disable-smb \
- --disable-smtp \
- --disable-telnet \
- --disable-tftp \
- --disable-unix-sockets \
- --without-brotli \
- --without-gssapi \
- --without-libidn2 \
- --without-libpsl \
- --without-librtmp \
- --without-libssh2 \
- --without-nghttp2 \
- --without-ntlm-auth \
- --without-ssl \
- --without-zlib \
- --without-zstd
- macosx-version-min: 10.15
- - name: SecureTransport http2
- install: nghttp2
- configure: --enable-debug --with-secure-transport --enable-websockets
- macosx-version-min: 10.8
- - name: gcc SecureTransport
- configure: CC=gcc-12 --enable-debug --with-secure-transport --enable-websockets
- macosx-version-min: 10.8
- - name: OpenSSL http2
- install: nghttp2 openssl
- configure: --enable-debug --with-openssl=/usr/local/opt/openssl --enable-websockets
- macosx-version-min: 10.9
- - name: LibreSSL http2
- install: nghttp2 libressl
- configure: --enable-debug --with-openssl=/usr/local/opt/libressl --enable-websockets
- macosx-version-min: 10.9
- - name: torture
- install: nghttp2 openssl
- configure: --enable-debug --disable-shared --disable-threaded-resolver --with-openssl=/usr/local/opt/openssl --enable-websockets
- tflags: -n -t --shallow=25 !FTP
- macosx-version-min: 10.9
- - name: torture-ftp
- install: nghttp2 openssl
- configure: --enable-debug --disable-shared --disable-threaded-resolver --with-openssl=/usr/local/opt/openssl --enable-websockets
- tflags: -n -t --shallow=20 FTP
- macosx-version-min: 10.9
- - name: macOS 10.15
- install: nghttp2 libssh2 openssl
- configure: --enable-debug --disable-ldap --with-openssl=/usr/local/opt/openssl --enable-websockets
- macosx-version-min: 10.15
+ - name: normal
+ install: nghttp2
+ configure: --without-ssl --enable-websockets
+ macosx-version-min: 10.9
+ - name: debug
+ install: nghttp2
+ configure: --enable-debug --without-ssl --enable-websockets
+ macosx-version-min: 10.9
+ - name: libssh2
+ install: nghttp2 libssh2
+ configure: --enable-debug --with-libssh2 --without-ssl --enable-websockets
+ macosx-version-min: 10.9
+ - name: libssh-c-ares
+ install: openssl nghttp2 libssh
+ configure: --enable-debug --with-libssh --with-openssl=/usr/local/opt/openssl --enable-ares --enable-websockets
+ macosx-version-min: 10.9
+ - name: libssh
+ install: openssl nghttp2 libssh
+ configure: --enable-debug --with-libssh --with-openssl=/usr/local/opt/openssl --enable-websockets
+ macosx-version-min: 10.9
+ - name: c-ares
+ install: nghttp2
+ configure: --enable-debug --enable-ares --without-ssl --enable-websockets
+ macosx-version-min: 10.9
+ - name: HTTP only
+ install: nghttp2
+ configure: |
+ --enable-debug \
+ --enable-maintainer-mode \
+ --disable-alt-svc \
+ --disable-dict \
+ --disable-file \
+ --disable-ftp \
+ --disable-gopher \
+ --disable-imap \
+ --disable-ldap \
+ --disable-pop3 \
+ --disable-rtmp \
+ --disable-rtsp \
+ --disable-scp \
+ --disable-sftp \
+ --disable-shared \
+ --disable-smb \
+ --disable-smtp \
+ --disable-telnet \
+ --disable-tftp \
+ --disable-unix-sockets \
+ --without-brotli \
+ --without-gssapi \
+ --without-libidn2 \
+ --without-libpsl \
+ --without-librtmp \
+ --without-libssh2 \
+ --without-nghttp2 \
+ --without-ntlm-auth \
+ --without-ssl \
+ --without-zlib \
+ --without-zstd
+
+ macosx-version-min: 10.15
+ - name: SecureTransport http2
+ install: nghttp2
+ configure: --enable-debug --with-secure-transport --enable-websockets
+ macosx-version-min: 10.8
+ - name: gcc SecureTransport
+ configure: CC=gcc-12 --enable-debug --with-secure-transport --enable-websockets
+ macosx-version-min: 10.8
+ - name: OpenSSL http2
+ install: nghttp2 openssl
+ configure: --enable-debug --with-openssl=/usr/local/opt/openssl --enable-websockets
+ macosx-version-min: 10.9
+ - name: LibreSSL http2
+ install: nghttp2 libressl
+ configure: --enable-debug --with-openssl=/usr/local/opt/libressl --enable-websockets
+ macosx-version-min: 10.9
+ - name: torture
+ install: nghttp2 openssl
+ configure: --enable-debug --disable-shared --disable-threaded-resolver --with-openssl=/usr/local/opt/openssl --enable-websockets
+ tflags: -n -t --shallow=25 !FTP
+ macosx-version-min: 10.9
+ - name: torture-ftp
+ install: nghttp2 openssl
+ configure: --enable-debug --disable-shared --disable-threaded-resolver --with-openssl=/usr/local/opt/openssl --enable-websockets
+ tflags: -n -t --shallow=20 FTP
+ macosx-version-min: 10.9
+ - name: macOS 10.15
+ install: nghttp2 libssh2 openssl
+ configure: --enable-debug --disable-ldap --with-openssl=/usr/local/opt/openssl --enable-websockets
+ macosx-version-min: 10.15
steps:
- - run: echo libtool autoconf automake pkg-config ${{ matrix.build.install }} | xargs -Ix -n1 echo brew '"x"' > /tmp/Brewfile
- name: 'brew bundle'
+ - run: echo libtool autoconf automake pkg-config ${{ matrix.build.install }} | xargs -Ix -n1 echo brew '"x"' > /tmp/Brewfile
+ name: 'brew bundle'
- # Run this command with retries because of spurious failures seen
- # while running the tests, for example
- # https://github.com/curl/curl/runs/4095721123?check_suite_focus=true
- - run: "while [[ $? == 0 ]]; do for i in 1 2 3; do brew update && brew bundle install --no-lock --file /tmp/Brewfile && break 2 || { echo Error: wait to try again; sleep 10; } done; false Too many retries; done"
- name: 'brew install'
+ # Run this command with retries because of spurious failures seen
+ # while running the tests, for example
+ # https://github.com/curl/curl/runs/4095721123?check_suite_focus=true
+ - run: "while [[ $? == 0 ]]; do for i in 1 2 3; do brew update && brew bundle install --no-lock --file /tmp/Brewfile && break 2 || { echo Error: wait to try again; sleep 10; } done; false Too many retries; done"
+ name: 'brew install'
- - run: |
- case "${{ matrix.build.install }}" in
- *openssl*)
- ;;
- *)
- if test -d /usr/local/include/openssl; then
- brew unlink openssl
- fi;;
- esac
- name: 'brew unlink openssl'
+ - run: |
+ case "${{ matrix.build.install }}" in
+ *openssl*)
+ ;;
+ *)
+ if test -d /usr/local/include/openssl; then
+ brew unlink openssl
+ fi;;
+ esac
+ name: 'brew unlink openssl'
- - run: python3 -m pip install impacket
- name: 'pip3 install'
+ - run: python3 -m pip install impacket
+ name: 'pip3 install'
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v4
- - run: autoreconf -fi
- name: 'autoreconf'
+ - run: autoreconf -fi
+ name: 'autoreconf'
- - run: ./configure --enable-warnings --enable-werror ${{ matrix.build.configure }}
- name: 'configure'
- env:
- CFLAGS: "-mmacosx-version-min=${{ matrix.build.macosx-version-min }}"
+ - run: ./configure --enable-warnings --enable-werror ${{ matrix.build.configure }}
+ name: 'configure'
+ env:
+ CFLAGS: "-mmacosx-version-min=${{ matrix.build.macosx-version-min }}"
- - run: make V=1
- name: 'make'
+ - run: make V=1
+ name: 'make'
- - run: make V=1 examples
- name: 'make examples'
+ - run: make V=1 examples
+ name: 'make examples'
- - run: make V=1 -C tests
- name: 'make tests'
+ - run: make V=1 -C tests
+ name: 'make tests'
- - run: make V=1 test-ci
- name: 'run tests'
- env:
- TFLAGS: "${{ matrix.build.tflags }} ~1452"
+ - run: make V=1 test-ci
+ name: 'run tests'
+ env:
+ TFLAGS: "${{ matrix.build.tflags }} ~1452"
cmake:
name: cmake ${{ matrix.compiler.CC }} ${{ matrix.build.name }}
fail-fast: false
matrix:
compiler:
- - CC: clang
- CXX: clang++
- CFLAGS: "-mmacosx-version-min=10.15 -Wno-deprecated-declarations"
- - CC: gcc-12
- CXX: g++-12
- CFLAGS: "-mmacosx-version-min=10.15 -Wno-error=undef -Wno-error=conversion"
+ - CC: clang
+ CXX: clang++
+ CFLAGS: "-mmacosx-version-min=10.15 -Wno-deprecated-declarations"
+ - CC: gcc-12
+ CXX: g++-12
+ CFLAGS: "-mmacosx-version-min=10.15 -Wno-error=undef -Wno-error=conversion"
build:
- - name: OpenSSL
- install: nghttp2 openssl
- generate: -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -DCMAKE_OSX_DEPLOYMENT_TARGET=10.9
- - name: LibreSSL
- install: nghttp2 libressl
- generate: -DOPENSSL_ROOT_DIR=/usr/local/opt/libressl -DCURL_DISABLE_LDAP=ON -DCURL_DISABLE_LDAPS=ON -DCMAKE_UNITY_BUILD=ON
- - name: libssh2
- install: nghttp2 openssl libssh2
- generate: -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -DCURL_USE_LIBSSH2=ON -DBUILD_SHARED_LIBS=ON -DBUILD_STATIC_LIBS=ON
- - name: GnuTLS
- install: gnutls
- generate: -DCURL_USE_GNUTLS=ON -DCURL_USE_OPENSSL=OFF -DCURL_DISABLE_LDAP=ON -DCURL_DISABLE_LDAPS=ON -DCMAKE_SHARED_LINKER_FLAGS=-L/usr/local/lib -DCMAKE_EXE_LINKER_FLAGS=-L/usr/local/lib
+ - name: OpenSSL
+ install: nghttp2 openssl
+ generate: -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -DCMAKE_OSX_DEPLOYMENT_TARGET=10.9
+ - name: LibreSSL
+ install: nghttp2 libressl
+ generate: -DOPENSSL_ROOT_DIR=/usr/local/opt/libressl -DCURL_DISABLE_LDAP=ON -DCURL_DISABLE_LDAPS=ON -DCMAKE_UNITY_BUILD=ON
+ - name: libssh2
+ install: nghttp2 openssl libssh2
+ generate: -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -DCURL_USE_LIBSSH2=ON -DBUILD_SHARED_LIBS=ON -DBUILD_STATIC_LIBS=ON
+ - name: GnuTLS
+ install: gnutls
+ generate: -DCURL_USE_GNUTLS=ON -DCURL_USE_OPENSSL=OFF -DCURL_DISABLE_LDAP=ON -DCURL_DISABLE_LDAPS=ON -DCMAKE_SHARED_LINKER_FLAGS=-L/usr/local/lib -DCMAKE_EXE_LINKER_FLAGS=-L/usr/local/lib
steps:
- - run: echo libtool autoconf automake pkg-config ${{ matrix.build.install }} | xargs -Ix -n1 echo brew '"x"' > /tmp/Brewfile
- name: 'brew bundle'
-
- - run: "while [[ $? == 0 ]]; do for i in 1 2 3; do brew update && brew bundle install --no-lock --file /tmp/Brewfile && break 2 || { echo Error: wait to try again; sleep 10; } done; false Too many retries; done"
- name: 'brew install'
-
- - run: |
- case "${{ matrix.build.install }}" in
- *openssl*)
- ;;
- *)
- if test -d /usr/local/include/openssl; then
- brew unlink openssl
- fi;;
- esac
- name: 'brew unlink openssl'
-
- - uses: actions/checkout@v4
-
- - run: cmake -S. -Bbuild -DCURL_WERROR=ON -DPICKY_COMPILER=ON ${{ matrix.build.generate }}
- name: 'cmake generate'
-
- - run: cmake --build build
- name: 'cmake build'
+ - run: echo libtool autoconf automake pkg-config ${{ matrix.build.install }} | xargs -Ix -n1 echo brew '"x"' > /tmp/Brewfile
+ name: 'brew bundle'
+
+ - run: "while [[ $? == 0 ]]; do for i in 1 2 3; do brew update && brew bundle install --no-lock --file /tmp/Brewfile && break 2 || { echo Error: wait to try again; sleep 10; } done; false Too many retries; done"
+ name: 'brew install'
+
+ - run: |
+ case "${{ matrix.build.install }}" in
+ *openssl*)
+ ;;
+ *)
+ if test -d /usr/local/include/openssl; then
+ brew unlink openssl
+ fi;;
+ esac
+ name: 'brew unlink openssl'
+
+ - uses: actions/checkout@v4
+
+ - run: cmake -S. -Bbuild -DCURL_WERROR=ON -DPICKY_COMPILER=ON ${{ matrix.build.generate }}
+ name: 'cmake generate'
+
+ - run: cmake --build build
+ name: 'cmake build'
on:
push:
branches:
- - master
- - '*/ci'
+ - master
+ - '*/ci'
paths:
- - 'docs/libcurl/curl_*.3'
- - 'docs/libcurl/opts/*.3'
+ - 'docs/libcurl/curl_*.3'
+ - 'docs/libcurl/opts/*.3'
pull_request:
branches:
- - master
+ - master
paths:
- - 'docs/libcurl/curl_*.3'
- - 'docs/libcurl/opts/*.3'
+ - 'docs/libcurl/curl_*.3'
+ - 'docs/libcurl/opts/*.3'
jobs:
verify:
on:
push:
branches:
- - master
- - '*/ci'
+ - master
+ - '*/ci'
paths-ignore:
- - '**/*.md'
- - '**/CMakeLists.txt'
- - '.azure-pipelines.yml'
- - '.circleci/**'
- - '.cirrus.yml'
- - 'appveyor.yml'
- - 'CMake/**'
- - 'packages/**'
- - 'plan9/**'
- - 'projects/**'
- - 'winbuild/**'
+ - '**/*.md'
+ - '**/CMakeLists.txt'
+ - '.azure-pipelines.yml'
+ - '.circleci/**'
+ - '.cirrus.yml'
+ - 'appveyor.yml'
+ - 'CMake/**'
+ - 'packages/**'
+ - 'plan9/**'
+ - 'projects/**'
+ - 'winbuild/**'
pull_request:
branches:
- - master
+ - master
paths-ignore:
- - '**/*.md'
- - '**/CMakeLists.txt'
- - '.azure-pipelines.yml'
- - '.circleci/**'
- - '.cirrus.yml'
- - 'appveyor.yml'
- - 'CMake/**'
- - 'packages/**'
- - 'plan9/**'
- - 'projects/**'
- - 'winbuild/**'
+ - '**/*.md'
+ - '**/CMakeLists.txt'
+ - '.azure-pipelines.yml'
+ - '.circleci/**'
+ - '.cirrus.yml'
+ - 'appveyor.yml'
+ - 'CMake/**'
+ - 'packages/**'
+ - 'plan9/**'
+ - 'projects/**'
+ - 'winbuild/**'
concurrency:
# Hardcoded workflow filename as workflow name above is just Linux again
fail-fast: false
matrix:
build:
- - name: quictls
- configure: >-
- PKG_CONFIG_PATH="$HOME/nghttpx/lib/pkgconfig" LDFLAGS="-Wl,-rpath,$HOME/nghttpx/lib"
- --with-ngtcp2=$HOME/nghttpx --enable-warnings --enable-werror --enable-debug --disable-ntlm
- --with-test-nghttpx="$HOME/nghttpx/bin/nghttpx"
- --with-openssl=$HOME/nghttpx
- - name: gnutls
- configure: >-
- PKG_CONFIG_PATH="$HOME/nghttpx/lib/pkgconfig" LDFLAGS="-Wl,-rpath,$HOME/nghttpx/lib"
- --with-ngtcp2=$HOME/nghttpx --enable-warnings --enable-werror --enable-debug
- --with-test-nghttpx="$HOME/nghttpx/bin/nghttpx"
- --with-gnutls=$HOME/nghttpx
- - name: wolfssl
- configure: >-
- PKG_CONFIG_PATH="$HOME/nghttpx/lib/pkgconfig" LDFLAGS="-Wl,-rpath,$HOME/nghttpx/lib"
- --with-ngtcp2=$HOME/nghttpx --enable-warnings --enable-werror --enable-debug
- --with-test-nghttpx="$HOME/nghttpx/bin/nghttpx"
- --with-wolfssl=$HOME/nghttpx
+ - name: quictls
+ configure: >-
+ PKG_CONFIG_PATH="$HOME/nghttpx/lib/pkgconfig" LDFLAGS="-Wl,-rpath,$HOME/nghttpx/lib"
+ --with-ngtcp2=$HOME/nghttpx --enable-warnings --enable-werror --enable-debug --disable-ntlm
+ --with-test-nghttpx="$HOME/nghttpx/bin/nghttpx"
+ --with-openssl=$HOME/nghttpx
+ - name: gnutls
+ configure: >-
+ PKG_CONFIG_PATH="$HOME/nghttpx/lib/pkgconfig" LDFLAGS="-Wl,-rpath,$HOME/nghttpx/lib"
+ --with-ngtcp2=$HOME/nghttpx --enable-warnings --enable-werror --enable-debug
+ --with-test-nghttpx="$HOME/nghttpx/bin/nghttpx"
+ --with-gnutls=$HOME/nghttpx
+ - name: wolfssl
+ configure: >-
+ PKG_CONFIG_PATH="$HOME/nghttpx/lib/pkgconfig" LDFLAGS="-Wl,-rpath,$HOME/nghttpx/lib"
+ --with-ngtcp2=$HOME/nghttpx --enable-warnings --enable-werror --enable-debug
+ --with-test-nghttpx="$HOME/nghttpx/bin/nghttpx"
+ --with-wolfssl=$HOME/nghttpx
steps:
- - run: |
- sudo apt-get update
- sudo apt-get install libtool autoconf automake pkg-config stunnel4 \
- libpsl-dev libbrotli-dev libzstd-dev zlib1g-dev libev-dev libc-ares-dev \
- nettle-dev libp11-kit-dev libtspi-dev libunistring-dev guile-2.2-dev libtasn1-bin \
- libtasn1-6-dev libidn2-0-dev gawk gperf libtss2-dev dns-root-data bison gtk-doc-tools \
- texinfo texlive texlive-extra-utils autopoint libev-dev \
- apache2 apache2-dev libnghttp2-dev
- name: 'install prereqs and impacket, pytest, crypto, apache2'
-
- - name: cache quictls
- uses: actions/cache@v3
- id: cache-quictls-no-deprecated
- env:
- cache-name: cache-quictls-no-deprecated
- with:
- path: /home/runner/quictls
- key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ env.quictls-version }}
-
- - if: steps.cache-quictls-no-deprecated.outputs.cache-hit != 'true'
- run: |
- cd $HOME
- git clone --quiet --depth=1 -b openssl-${{ env.quictls-version }} https://github.com/quictls/openssl quictls
- cd quictls
- ./config no-deprecated --prefix=$HOME/nghttpx --libdir=$HOME/nghttpx/lib
- make
- name: 'build quictls'
-
- - run: |
- cd $HOME/quictls
- make -j1 install_sw
- name: 'install quictls'
-
-
- - name: cache gnutls
- uses: actions/cache@v3
- id: cache-gnutls
- env:
- cache-name: cache-gnutls
- with:
- path: /home/runner/gnutls
- key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ env.gnutls-version }}
-
- - if: steps.cache-gnutls.outputs.cache-hit != 'true'
- run: |
- cd $HOME
- git clone --quiet --depth=1 -b ${{ env.gnutls-version }} https://github.com/gnutls/gnutls.git
- cd gnutls
- ./bootstrap
- ./configure --prefix=$HOME/nghttpx \
- PKG_CONFIG_PATH="$HOME/nghttpx/lib/pkgconfig" LDFLAGS="-Wl,-rpath,$HOME/nghttpx/lib -L$HOME/nghttpx/lib" \
- --with-included-libtasn1 --with-included-unistring \
- --disable-guile --disable-doc --disable-tests --disable-tools
- make
- name: 'build gnutls'
-
- - run: |
- cd $HOME/gnutls
- make install
- name: 'install gnutls'
-
-
- - name: cache wolfssl
- uses: actions/cache@v3
- id: cache-wolfssl
- env:
- cache-name: cache-wolfssl
- with:
- path: /home/runner/wolfssl
- key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ env.wolfssl-version }}
-
- - if: steps.cache-wolfssl.outputs.cache-hit != 'true' || ${{ env.wolfssl-version }} == 'master'
- run: |
- cd $HOME
- rm -rf wolfssl
- git clone --quiet --depth=1 -b ${{ env.wolfssl-version }} https://github.com/wolfSSL/wolfssl.git
- cd wolfssl
- ./autogen.sh
- ./configure --enable-all --enable-quic --prefix=$HOME/nghttpx
- make
- name: 'build wolfssl'
-
- - run: |
- cd $HOME/wolfssl
- make install
- name: 'install wolfssl'
-
-
- - name: cache nghttp3
- uses: actions/cache@v3
- id: cache-nghttp3
- env:
- cache-name: cache-nghttp3
- with:
- path: /home/runner/nghttp3
- key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ env.nghttp3-version }}
-
- - if: steps.cache-nghttp3.outputs.cache-hit != 'true'
- run: |
- cd $HOME
- git clone --quiet --depth=1 -b ${{ env.nghttp3-version }} https://github.com/ngtcp2/nghttp3
- cd nghttp3
- autoreconf -fi
- ./configure --prefix=$HOME/nghttpx PKG_CONFIG_PATH="$HOME/nghttpx/lib/pkgconfig" --enable-lib-only
- make
- name: 'build nghttp3'
-
- - run: |
- cd $HOME/nghttp3
- make install
- name: 'install nghttp3'
-
- # depends on all other cached libs built so far
- - run: |
- git clone --quiet --depth=1 -b ${{ env.ngtcp2-version }} https://github.com/ngtcp2/ngtcp2
- cd ngtcp2
- autoreconf -fi
- ./configure --prefix=$HOME/nghttpx PKG_CONFIG_PATH="$HOME/nghttpx/lib/pkgconfig" --enable-lib-only --with-openssl --with-gnutls --with-wolfssl
- make install
- name: 'install ngtcp2'
-
- # depends on all other cached libs built so far
- - run: |
- git clone --quiet --depth=1 -b ${{ env.nghttp2-version }} https://github.com/nghttp2/nghttp2
- cd nghttp2
- autoreconf -fi
- ./configure --prefix=$HOME/nghttpx PKG_CONFIG_PATH="$HOME/nghttpx/lib/pkgconfig" --enable-http3
- make install
- name: 'install nghttp2'
-
- - name: cache mod_h2
- uses: actions/cache@v3
- id: cache-mod_h2
- env:
- cache-name: cache-mod_h2
- with:
- path: /home/runner/mod_h2
- key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ env.mod_h2-version }}
-
- - if: steps.cache-mod_h2.outputs.cache-hit != 'true'
- run: |
- cd $HOME
- git clone --quiet --depth=1 -b ${{ env.mod_h2-version }} https://github.com/icing/mod_h2
- cd mod_h2
- autoreconf -fi
- ./configure
- make
- name: 'build mod_h2'
-
- - run: |
- cd $HOME/mod_h2
- sudo make install
- name: 'install mod_h2'
-
- - uses: actions/checkout@v4
-
- - run: |
- sudo python3 -m pip install -r tests/requirements.txt -r tests/http/requirements.txt
- name: 'install python test prereqs'
-
- - run: autoreconf -fi
- name: 'autoreconf'
-
- - run: ./configure ${{ matrix.build.configure }}
- name: 'configure'
-
- - run: make V=1
- name: 'make'
-
- - run: make V=1 examples
- name: 'make examples'
-
- - run: make V=1 -C tests
- name: 'make tests'
-
- - run: make V=1 test-ci
- name: 'run tests'
- env:
- TFLAGS: "${{ matrix.build.tflags }}"
-
- - run: pytest -v tests
- name: 'run pytest'
- env:
- TFLAGS: "${{ matrix.build.tflags }}"
- CURL_CI: github
+ - run: |
+ sudo apt-get update
+ sudo apt-get install libtool autoconf automake pkg-config stunnel4 \
+ libpsl-dev libbrotli-dev libzstd-dev zlib1g-dev libev-dev libc-ares-dev \
+ nettle-dev libp11-kit-dev libtspi-dev libunistring-dev guile-2.2-dev libtasn1-bin \
+ libtasn1-6-dev libidn2-0-dev gawk gperf libtss2-dev dns-root-data bison gtk-doc-tools \
+ texinfo texlive texlive-extra-utils autopoint libev-dev \
+ apache2 apache2-dev libnghttp2-dev
+ name: 'install prereqs and impacket, pytest, crypto, apache2'
+
+ - name: cache quictls
+ uses: actions/cache@v3
+ id: cache-quictls-no-deprecated
+ env:
+ cache-name: cache-quictls-no-deprecated
+ with:
+ path: /home/runner/quictls
+ key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ env.quictls-version }}
+
+ - if: steps.cache-quictls-no-deprecated.outputs.cache-hit != 'true'
+ run: |
+ cd $HOME
+ git clone --quiet --depth=1 -b openssl-${{ env.quictls-version }} https://github.com/quictls/openssl quictls
+ cd quictls
+ ./config no-deprecated --prefix=$HOME/nghttpx --libdir=$HOME/nghttpx/lib
+ make
+ name: 'build quictls'
+
+ - run: |
+ cd $HOME/quictls
+ make -j1 install_sw
+ name: 'install quictls'
+
+
+ - name: cache gnutls
+ uses: actions/cache@v3
+ id: cache-gnutls
+ env:
+ cache-name: cache-gnutls
+ with:
+ path: /home/runner/gnutls
+ key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ env.gnutls-version }}
+
+ - if: steps.cache-gnutls.outputs.cache-hit != 'true'
+ run: |
+ cd $HOME
+ git clone --quiet --depth=1 -b ${{ env.gnutls-version }} https://github.com/gnutls/gnutls.git
+ cd gnutls
+ ./bootstrap
+ ./configure --prefix=$HOME/nghttpx \
+ PKG_CONFIG_PATH="$HOME/nghttpx/lib/pkgconfig" LDFLAGS="-Wl,-rpath,$HOME/nghttpx/lib -L$HOME/nghttpx/lib" \
+ --with-included-libtasn1 --with-included-unistring \
+ --disable-guile --disable-doc --disable-tests --disable-tools
+ make
+ name: 'build gnutls'
+
+ - run: |
+ cd $HOME/gnutls
+ make install
+ name: 'install gnutls'
+
+
+ - name: cache wolfssl
+ uses: actions/cache@v3
+ id: cache-wolfssl
+ env:
+ cache-name: cache-wolfssl
+ with:
+ path: /home/runner/wolfssl
+ key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ env.wolfssl-version }}
+
+ - if: steps.cache-wolfssl.outputs.cache-hit != 'true' || ${{ env.wolfssl-version }} == 'master'
+ run: |
+ cd $HOME
+ rm -rf wolfssl
+ git clone --quiet --depth=1 -b ${{ env.wolfssl-version }} https://github.com/wolfSSL/wolfssl.git
+ cd wolfssl
+ ./autogen.sh
+ ./configure --enable-all --enable-quic --prefix=$HOME/nghttpx
+ make
+ name: 'build wolfssl'
+
+ - run: |
+ cd $HOME/wolfssl
+ make install
+ name: 'install wolfssl'
+
+
+ - name: cache nghttp3
+ uses: actions/cache@v3
+ id: cache-nghttp3
+ env:
+ cache-name: cache-nghttp3
+ with:
+ path: /home/runner/nghttp3
+ key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ env.nghttp3-version }}
+
+ - if: steps.cache-nghttp3.outputs.cache-hit != 'true'
+ run: |
+ cd $HOME
+ git clone --quiet --depth=1 -b ${{ env.nghttp3-version }} https://github.com/ngtcp2/nghttp3
+ cd nghttp3
+ autoreconf -fi
+ ./configure --prefix=$HOME/nghttpx PKG_CONFIG_PATH="$HOME/nghttpx/lib/pkgconfig" --enable-lib-only
+ make
+ name: 'build nghttp3'
+
+ - run: |
+ cd $HOME/nghttp3
+ make install
+ name: 'install nghttp3'
+
+ # depends on all other cached libs built so far
+ - run: |
+ git clone --quiet --depth=1 -b ${{ env.ngtcp2-version }} https://github.com/ngtcp2/ngtcp2
+ cd ngtcp2
+ autoreconf -fi
+ ./configure --prefix=$HOME/nghttpx PKG_CONFIG_PATH="$HOME/nghttpx/lib/pkgconfig" --enable-lib-only --with-openssl --with-gnutls --with-wolfssl
+ make install
+ name: 'install ngtcp2'
+
+ # depends on all other cached libs built so far
+ - run: |
+ git clone --quiet --depth=1 -b ${{ env.nghttp2-version }} https://github.com/nghttp2/nghttp2
+ cd nghttp2
+ autoreconf -fi
+ ./configure --prefix=$HOME/nghttpx PKG_CONFIG_PATH="$HOME/nghttpx/lib/pkgconfig" --enable-http3
+ make install
+ name: 'install nghttp2'
+
+ - name: cache mod_h2
+ uses: actions/cache@v3
+ id: cache-mod_h2
+ env:
+ cache-name: cache-mod_h2
+ with:
+ path: /home/runner/mod_h2
+ key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ env.mod_h2-version }}
+
+ - if: steps.cache-mod_h2.outputs.cache-hit != 'true'
+ run: |
+ cd $HOME
+ git clone --quiet --depth=1 -b ${{ env.mod_h2-version }} https://github.com/icing/mod_h2
+ cd mod_h2
+ autoreconf -fi
+ ./configure
+ make
+ name: 'build mod_h2'
+
+ - run: |
+ cd $HOME/mod_h2
+ sudo make install
+ name: 'install mod_h2'
+
+ - uses: actions/checkout@v4
+
+ - run: |
+ sudo python3 -m pip install -r tests/requirements.txt -r tests/http/requirements.txt
+ name: 'install python test prereqs'
+
+ - run: autoreconf -fi
+ name: 'autoreconf'
+
+ - run: ./configure ${{ matrix.build.configure }}
+ name: 'configure'
+
+ - run: make V=1
+ name: 'make'
+
+ - run: make V=1 examples
+ name: 'make examples'
+
+ - run: make V=1 -C tests
+ name: 'make tests'
+
+ - run: make V=1 test-ci
+ name: 'run tests'
+ env:
+ TFLAGS: "${{ matrix.build.tflags }}"
+
+ - run: pytest -v tests
+ name: 'run pytest'
+ env:
+ TFLAGS: "${{ matrix.build.tflags }}"
+ CURL_CI: github
on:
push:
branches:
- - master
- - '*/ci'
+ - master
+ - '*/ci'
paths:
- - '.github/workflows/proselint.yml'
- - '**.md'
+ - '.github/workflows/proselint.yml'
+ - '**.md'
pull_request:
branches:
- - master
+ - master
paths:
- - '.github/workflows/proselint.yml'
- - '**.md'
+ - '.github/workflows/proselint.yml'
+ - '**.md'
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
check:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v4
- - name: install prereqs
- run: sudo apt-get install python3-proselint
+ - name: install prereqs
+ run: sudo apt-get install python3-proselint
- # config file help: https://github.com/amperser/proselint/
- - name: create proselint config
- run: |
- cat <<JSON > $HOME/.proselintrc
- {
- "checks": {
- "typography.diacritical_marks": false,
- "typography.symbols": false,
- "annotations.misc": false
+ # config file help: https://github.com/amperser/proselint/
+ - name: create proselint config
+ run: |
+ cat <<JSON > $HOME/.proselintrc
+ {
+ "checks": {
+ "typography.diacritical_marks": false,
+ "typography.symbols": false,
+ "annotations.misc": false
+ }
}
- }
- JSON
+ JSON
- - name: check prose
- run: a=`git ls-files '*.md' | grep -v docs/CHECKSRC.md` && proselint $a README
+ - name: check prose
+ run: a=`git ls-files '*.md' | grep -v docs/CHECKSRC.md` && proselint $a README
- # This is for CHECKSRC and files with aggressive exclamation mark needs
- - name: create second proselint config
- run: |
- cat <<JSON > $HOME/.proselintrc
- {
- "checks": {
- "typography.diacritical_marks": false,
- "typography.symbols": false,
- "typography.exclamation": false,
- "annotations.misc": false
+ # This is for CHECKSRC and files with aggressive exclamation mark needs
+ - name: create second proselint config
+ run: |
+ cat <<JSON > $HOME/.proselintrc
+ {
+ "checks": {
+ "typography.diacritical_marks": false,
+ "typography.symbols": false,
+ "typography.exclamation": false,
+ "annotations.misc": false
+ }
}
- }
- JSON
+ JSON
- - name: check special prose
- run: a=docs/CHECKSRC.md && proselint $a
+ - name: check special prose
+ run: a=docs/CHECKSRC.md && proselint $a
on:
push:
branches:
- - master
- - '*/ci'
+ - master
+ - '*/ci'
paths-ignore:
- - '**/*.md'
- - '**/CMakeLists.txt'
- - '.azure-pipelines.yml'
- - '.circleci/**'
- - '.cirrus.yml'
- - 'appveyor.yml'
- - 'CMake/**'
- - 'packages/**'
- - 'plan9/**'
- - 'projects/**'
- - 'winbuild/**'
+ - '**/*.md'
+ - '**/CMakeLists.txt'
+ - '.azure-pipelines.yml'
+ - '.circleci/**'
+ - '.cirrus.yml'
+ - 'appveyor.yml'
+ - 'CMake/**'
+ - 'packages/**'
+ - 'plan9/**'
+ - 'projects/**'
+ - 'winbuild/**'
pull_request:
branches:
- - master
+ - master
paths-ignore:
- - '**/*.md'
- - '**/CMakeLists.txt'
- - '.azure-pipelines.yml'
- - '.circleci/**'
- - '.cirrus.yml'
- - 'appveyor.yml'
- - 'CMake/**'
- - 'packages/**'
- - 'plan9/**'
- - 'projects/**'
- - 'winbuild/**'
+ - '**/*.md'
+ - '**/CMakeLists.txt'
+ - '.azure-pipelines.yml'
+ - '.circleci/**'
+ - '.cirrus.yml'
+ - 'appveyor.yml'
+ - 'CMake/**'
+ - 'packages/**'
+ - 'plan9/**'
+ - 'projects/**'
+ - 'winbuild/**'
concurrency:
# Hardcoded workflow filename as workflow name above is just Linux again
fail-fast: false
matrix:
build:
- - name: quiche
- install: >-
- libpsl-dev libbrotli-dev libzstd-dev zlib1g-dev libev-dev libc-ares-dev
- install_steps: pytest
- configure: >-
- LDFLAGS="-Wl,-rpath,/home/runner/quiche/target/release"
- --with-openssl=/home/runner/quiche/quiche/deps/boringssl/src
- --enable-debug
- --with-quiche=/home/runner/quiche/target/release
- --with-test-nghttpx="$HOME/nghttpx/bin/nghttpx"
- --with-ca-fallback
+ - name: quiche
+ install: >-
+ libpsl-dev libbrotli-dev libzstd-dev zlib1g-dev libev-dev libc-ares-dev
+ install_steps: pytest
+ configure: >-
+ LDFLAGS="-Wl,-rpath,/home/runner/quiche/target/release"
+ --with-openssl=/home/runner/quiche/quiche/deps/boringssl/src
+ --enable-debug
+ --with-quiche=/home/runner/quiche/target/release
+ --with-test-nghttpx="$HOME/nghttpx/bin/nghttpx"
+ --with-ca-fallback
steps:
- - run: |
- sudo apt-get update
- sudo apt-get install libtool autoconf automake pkg-config stunnel4 ${{ matrix.build.install }}
- sudo apt-get install apache2 apache2-dev libnghttp2-dev
- name: 'install prereqs and impacket, pytest, crypto'
-
- - name: cache nghttpx
- uses: actions/cache@v3
- id: cache-nghttpx
- env:
- cache-name: cache-nghttpx
- with:
- path: /home/runner/nghttpx
- key: ${{ runner.os }}-build-${{ env.cache-name }}-openssl-${{ env.openssl-version }}-nghttp3-${{ env.nghttp3-version }}-ngtcp2-${{ env.ngtcp2-version }}-nghttp2-${{ env.nghttp2-version }}
-
- - if: steps.cache-nghttpx.outputs.cache-hit != 'true'
- run: |
- git clone --quiet --depth=1 -b openssl-${{ env.openssl-version }} https://github.com/quictls/openssl
- cd openssl
- ./config --prefix=$HOME/nghttpx --libdir=$HOME/nghttpx/lib
- make -j1 install_sw
- name: 'install quictls'
-
- - if: steps.cache-nghttpx.outputs.cache-hit != 'true'
- run: |
- git clone --quiet --depth=1 -b ${{ env.nghttp3-version }} https://github.com/ngtcp2/nghttp3
- cd nghttp3
- autoreconf -fi
- ./configure --prefix=$HOME/nghttpx PKG_CONFIG_PATH="$HOME/nghttpx/lib/pkgconfig" --enable-lib-only
- make install
- name: 'install nghttp3'
-
- - if: steps.cache-nghttpx.outputs.cache-hit != 'true'
- run: |
- git clone --quiet --depth=1 -b ${{ env.ngtcp2-version }} https://github.com/ngtcp2/ngtcp2
- cd ngtcp2
- autoreconf -fi
- ./configure --prefix=$HOME/nghttpx PKG_CONFIG_PATH="$HOME/nghttpx/lib/pkgconfig" --enable-lib-only --with-openssl
- make install
- name: 'install ngtcp2'
-
- - if: steps.cache-nghttpx.outputs.cache-hit != 'true'
- run: |
- git clone --quiet --depth=1 -b ${{ env.nghttp2-version }} https://github.com/nghttp2/nghttp2
- cd nghttp2
- autoreconf -fi
- ./configure --prefix=$HOME/nghttpx PKG_CONFIG_PATH="$HOME/nghttpx/lib/pkgconfig" --enable-http3
- make install
- name: 'install nghttp2'
-
- - name: cache quiche
- uses: actions/cache@v3
- id: cache-quiche
- env:
- cache-name: cache-quiche
- with:
- path: /home/runner/quiche
- key: ${{ runner.os }}-build-${{ env.cache-name }}-quiche-${{ env.quiche-version }}
-
- - if: steps.cache-quiche.outputs.cache-hit != 'true'
- run: |
- cd $HOME
- git clone --quiet --depth=1 -b ${{ env.quiche-version }} --recursive https://github.com/cloudflare/quiche.git
- cd quiche
- #### Work-around https://github.com/curl/curl/issues/7927 #######
- #### See https://github.com/alexcrichton/cmake-rs/issues/131 ####
- sed -i -e 's/cmake = "0.1"/cmake = "=0.1.45"/' quiche/Cargo.toml
-
- cargo build -v --package quiche --release --features ffi,pkg-config-meta,qlog --verbose
- mkdir -v quiche/deps/boringssl/src/lib
- ln -vnf $(find target/release -name libcrypto.a -o -name libssl.a) quiche/deps/boringssl/src/lib/
-
- # include dir
- # /home/runner/quiche/quiche/deps/boringssl/src/include
- # lib dir
- # /home/runner/quiche/quiche/deps/boringssl/src/lib
- name: 'build quiche and boringssl'
-
- - name: cache mod_h2
- uses: actions/cache@v3
- id: cache-mod_h2
- env:
- cache-name: cache-mod_h2
- with:
- path: /home/runner/mod_h2
- key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ env.mod_h2-version }}
-
- - if: steps.cache-mod_h2.outputs.cache-hit != 'true'
- run: |
- cd $HOME
- git clone --quiet --depth=1 -b ${{ env.mod_h2-version }} https://github.com/icing/mod_h2
- cd mod_h2
- autoreconf -fi
- ./configure
- make
- name: 'build mod_h2'
-
- - run: |
- cd $HOME/mod_h2
- sudo make install
- name: 'install mod_h2'
-
- - uses: actions/checkout@v4
-
- - run: |
- sudo python3 -m pip install -r tests/requirements.txt -r tests/http/requirements.txt
- name: 'install python test prereqs'
-
- - run: autoreconf -fi
- name: 'autoreconf'
-
- - run: ./configure ${{ matrix.build.configure }}
- name: 'configure'
-
- - run: make V=1
- name: 'make'
-
- - run: make V=1 examples
- name: 'make examples'
-
- - run: make V=1 -C tests
- name: 'make tests'
-
- - run: make V=1 test-ci
- name: 'run tests'
- env:
- TFLAGS: "${{ matrix.build.tflags }}"
-
- - run: pytest -v tests
- name: 'run pytest'
- env:
- TFLAGS: "${{ matrix.build.tflags }}"
- CURL_CI: github
+ - run: |
+ sudo apt-get update
+ sudo apt-get install libtool autoconf automake pkg-config stunnel4 ${{ matrix.build.install }}
+ sudo apt-get install apache2 apache2-dev libnghttp2-dev
+ name: 'install prereqs and impacket, pytest, crypto'
+
+ - name: cache nghttpx
+ uses: actions/cache@v3
+ id: cache-nghttpx
+ env:
+ cache-name: cache-nghttpx
+ with:
+ path: /home/runner/nghttpx
+ key: ${{ runner.os }}-build-${{ env.cache-name }}-openssl-${{ env.openssl-version }}-nghttp3-${{ env.nghttp3-version }}-ngtcp2-${{ env.ngtcp2-version }}-nghttp2-${{ env.nghttp2-version }}
+
+ - if: steps.cache-nghttpx.outputs.cache-hit != 'true'
+ run: |
+ git clone --quiet --depth=1 -b openssl-${{ env.openssl-version }} https://github.com/quictls/openssl
+ cd openssl
+ ./config --prefix=$HOME/nghttpx --libdir=$HOME/nghttpx/lib
+ make -j1 install_sw
+ name: 'install quictls'
+
+ - if: steps.cache-nghttpx.outputs.cache-hit != 'true'
+ run: |
+ git clone --quiet --depth=1 -b ${{ env.nghttp3-version }} https://github.com/ngtcp2/nghttp3
+ cd nghttp3
+ autoreconf -fi
+ ./configure --prefix=$HOME/nghttpx PKG_CONFIG_PATH="$HOME/nghttpx/lib/pkgconfig" --enable-lib-only
+ make install
+ name: 'install nghttp3'
+
+ - if: steps.cache-nghttpx.outputs.cache-hit != 'true'
+ run: |
+ git clone --quiet --depth=1 -b ${{ env.ngtcp2-version }} https://github.com/ngtcp2/ngtcp2
+ cd ngtcp2
+ autoreconf -fi
+ ./configure --prefix=$HOME/nghttpx PKG_CONFIG_PATH="$HOME/nghttpx/lib/pkgconfig" --enable-lib-only --with-openssl
+ make install
+ name: 'install ngtcp2'
+
+ - if: steps.cache-nghttpx.outputs.cache-hit != 'true'
+ run: |
+ git clone --quiet --depth=1 -b ${{ env.nghttp2-version }} https://github.com/nghttp2/nghttp2
+ cd nghttp2
+ autoreconf -fi
+ ./configure --prefix=$HOME/nghttpx PKG_CONFIG_PATH="$HOME/nghttpx/lib/pkgconfig" --enable-http3
+ make install
+ name: 'install nghttp2'
+
+ - name: cache quiche
+ uses: actions/cache@v3
+ id: cache-quiche
+ env:
+ cache-name: cache-quiche
+ with:
+ path: /home/runner/quiche
+ key: ${{ runner.os }}-build-${{ env.cache-name }}-quiche-${{ env.quiche-version }}
+
+ - if: steps.cache-quiche.outputs.cache-hit != 'true'
+ run: |
+ cd $HOME
+ git clone --quiet --depth=1 -b ${{ env.quiche-version }} --recursive https://github.com/cloudflare/quiche.git
+ cd quiche
+ #### Work-around https://github.com/curl/curl/issues/7927 #######
+ #### See https://github.com/alexcrichton/cmake-rs/issues/131 ####
+ sed -i -e 's/cmake = "0.1"/cmake = "=0.1.45"/' quiche/Cargo.toml
+
+ cargo build -v --package quiche --release --features ffi,pkg-config-meta,qlog --verbose
+ mkdir -v quiche/deps/boringssl/src/lib
+ ln -vnf $(find target/release -name libcrypto.a -o -name libssl.a) quiche/deps/boringssl/src/lib/
+
+ # include dir
+ # /home/runner/quiche/quiche/deps/boringssl/src/include
+ # lib dir
+ # /home/runner/quiche/quiche/deps/boringssl/src/lib
+ name: 'build quiche and boringssl'
+
+ - name: cache mod_h2
+ uses: actions/cache@v3
+ id: cache-mod_h2
+ env:
+ cache-name: cache-mod_h2
+ with:
+ path: /home/runner/mod_h2
+ key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ env.mod_h2-version }}
+
+ - if: steps.cache-mod_h2.outputs.cache-hit != 'true'
+ run: |
+ cd $HOME
+ git clone --quiet --depth=1 -b ${{ env.mod_h2-version }} https://github.com/icing/mod_h2
+ cd mod_h2
+ autoreconf -fi
+ ./configure
+ make
+ name: 'build mod_h2'
+
+ - run: |
+ cd $HOME/mod_h2
+ sudo make install
+ name: 'install mod_h2'
+
+ - uses: actions/checkout@v4
+
+ - run: |
+ sudo python3 -m pip install -r tests/requirements.txt -r tests/http/requirements.txt
+ name: 'install python test prereqs'
+
+ - run: autoreconf -fi
+ name: 'autoreconf'
+
+ - run: ./configure ${{ matrix.build.configure }}
+ name: 'configure'
+
+ - run: make V=1
+ name: 'make'
+
+ - run: make V=1 examples
+ name: 'make examples'
+
+ - run: make V=1 -C tests
+ name: 'make tests'
+
+ - run: make V=1 test-ci
+ name: 'run tests'
+ env:
+ TFLAGS: "${{ matrix.build.tflags }}"
+
+ - run: pytest -v tests
+ name: 'run pytest'
+ env:
+ TFLAGS: "${{ matrix.build.tflags }}"
+ CURL_CI: github
on:
push:
branches:
- - master
- - '*/ci'
+ - master
+ - '*/ci'
pull_request:
branches:
- - master
+ - master
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
check:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4
- - name: REUSE Compliance Check
- uses: fsfe/reuse-action@v2
+ - uses: actions/checkout@v4
+ - name: REUSE Compliance Check
+ uses: fsfe/reuse-action@v2
on:
push:
branches:
- - master
+ - master
paths:
- - '**.md'
- - '**.3'
- - '**.1'
- - '**/spellcheck.yml'
- - '**/spellcheck.yaml'
- - '**/wordlist.txt'
+ - '**.md'
+ - '**.3'
+ - '**.1'
+ - '**/spellcheck.yml'
+ - '**/spellcheck.yaml'
+ - '**/wordlist.txt'
pull_request:
branches:
- - master
+ - master
paths:
- - '**.md'
- - '**.3'
- - '**.1'
- - '**/spellcheck.yml'
- - '**/spellcheck.yaml'
- - '**/wordlist.txt'
+ - '**.md'
+ - '**.3'
+ - '**.1'
+ - '**/spellcheck.yml'
+ - '**/spellcheck.yaml'
+ - '**/wordlist.txt'
permissions: {}
check:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v4
- - name: install pandoc
- run: sudo apt-get install pandoc
+ - name: install pandoc
+ run: sudo apt-get install pandoc
- - name: build curl.1
- run: |
- autoreconf -fi
- ./configure --without-ssl
- make -C docs
+ - name: build curl.1
+ run: |
+ autoreconf -fi
+ ./configure --without-ssl
+ make -C docs
- - name: strip "uncheckable" sections from .3 pages
- run: find docs -name "*.3" -size +40c | sed 's/\.3//' | xargs -t -n1 -I OO ./.github/scripts/cleanspell.pl OO.3 OO.33
+ - name: strip "uncheckable" sections from .3 pages
+ run: find docs -name "*.3" -size +40c | sed 's/\.3//' | xargs -t -n1 -I OO ./.github/scripts/cleanspell.pl OO.3 OO.33
- - name: convert .3 man pages to markdown
- run: find docs -name "*.33" -size +40c | sed 's/\.33//' | xargs -t -n1 -I OO pandoc -f man -t markdown OO.33 -o OO.md
+ - name: convert .3 man pages to markdown
+ run: find docs -name "*.33" -size +40c | sed 's/\.33//' | xargs -t -n1 -I OO pandoc -f man -t markdown OO.33 -o OO.md
- - name: convert .1 man pages to markdown
- run: find docs -name "*.1" -size +40c | sed 's/\.1//' | xargs -t -n1 -I OO pandoc OO.1 -o OO.md
+ - name: convert .1 man pages to markdown
+ run: find docs -name "*.1" -size +40c | sed 's/\.1//' | xargs -t -n1 -I OO pandoc OO.1 -o OO.md
- - name: trim the curl.1 markdown file
- run: |
- perl -pi -e 's/^ .*//' docs/curl.md
- perl -pi -e 's/\-\-[\a-z0-9-]*//ig' docs/curl.md
- perl -pi -e 's!https://[a-z0-9%/.-]*!!ig' docs/curl.md
+ - name: trim the curl.1 markdown file
+ run: |
+ perl -pi -e 's/^ .*//' docs/curl.md
+ perl -pi -e 's/\-\-[\a-z0-9-]*//ig' docs/curl.md
+ perl -pi -e 's!https://[a-z0-9%/.-]*!!ig' docs/curl.md
- - name: setup the custom wordlist
- run: grep -v '^#' .github/scripts/spellcheck.words > wordlist.txt
+ - name: setup the custom wordlist
+ run: grep -v '^#' .github/scripts/spellcheck.words > wordlist.txt
- - name: Check Spelling
- uses: rojopolis/spellcheck-github-actions@v0
- with:
- config_path: .github/scripts/spellcheck.yaml
+ - name: Check Spelling
+ uses: rojopolis/spellcheck-github-actions@v0
+ with:
+ config_path: .github/scripts/spellcheck.yaml
on:
push:
branches:
- - master
- - '*/ci'
+ - master
+ - '*/ci'
paths:
- - 'docs/libcurl/curl_*.3'
+ - 'docs/libcurl/curl_*.3'
pull_request:
branches:
- - master
+ - master
paths:
- - 'docs/libcurl/curl_*.3'
+ - 'docs/libcurl/curl_*.3'
jobs:
verify:
on:
push:
branches:
- - master
- - '*/ci'
+ - master
+ - '*/ci'
paths-ignore:
- - '**/*.md'
- - '**/CMakeLists.txt'
- - '.azure-pipelines.yml'
- - '.circleci/**'
- - '.cirrus.yml'
- - 'appveyor.yml'
- - 'CMake/**'
- - 'packages/**'
- - 'plan9/**'
- - 'projects/**'
- - 'winbuild/**'
+ - '**/*.md'
+ - '**/CMakeLists.txt'
+ - '.azure-pipelines.yml'
+ - '.circleci/**'
+ - '.cirrus.yml'
+ - 'appveyor.yml'
+ - 'CMake/**'
+ - 'packages/**'
+ - 'plan9/**'
+ - 'projects/**'
+ - 'winbuild/**'
pull_request:
branches:
- - master
+ - master
paths-ignore:
- - '**/*.md'
- - '**/CMakeLists.txt'
- - '.azure-pipelines.yml'
- - '.circleci/**'
- - '.cirrus.yml'
- - 'appveyor.yml'
- - 'CMake/**'
- - 'packages/**'
- - 'plan9/**'
- - 'projects/**'
- - 'winbuild/**'
+ - '**/*.md'
+ - '**/CMakeLists.txt'
+ - '.azure-pipelines.yml'
+ - '.circleci/**'
+ - '.cirrus.yml'
+ - 'appveyor.yml'
+ - 'CMake/**'
+ - 'packages/**'
+ - 'plan9/**'
+ - 'projects/**'
+ - 'winbuild/**'
concurrency:
# Hardcoded workflow filename as workflow name above is just Linux again
fail-fast: false
matrix:
build:
- - name: torture
- install: libpsl-dev libbrotli-dev libzstd-dev zlib1g-dev libnghttp2-dev libssh2-1-dev libc-ares-dev
- configure: --with-openssl --enable-debug --enable-ares --enable-websockets
- tflags: -n -t --shallow=25 !FTP
- - name: torture-ftp
- install: libpsl-dev libbrotli-dev libzstd-dev zlib1g-dev libnghttp2-dev libssh2-1-dev libc-ares-dev
- configure: --with-openssl --enable-debug --enable-ares
- tflags: -n -t --shallow=20 FTP
+ - name: torture
+ install: libpsl-dev libbrotli-dev libzstd-dev zlib1g-dev libnghttp2-dev libssh2-1-dev libc-ares-dev
+ configure: --with-openssl --enable-debug --enable-ares --enable-websockets
+ tflags: -n -t --shallow=25 !FTP
+ - name: torture-ftp
+ install: libpsl-dev libbrotli-dev libzstd-dev zlib1g-dev libnghttp2-dev libssh2-1-dev libc-ares-dev
+ configure: --with-openssl --enable-debug --enable-ares
+ tflags: -n -t --shallow=20 FTP
steps:
- - run: |
- sudo apt-get update
- sudo apt-get install libtool autoconf automake pkg-config stunnel4 ${{ matrix.build.install }}
- sudo python3 -m pip install impacket
- name: 'install prereqs and impacket'
+ - run: |
+ sudo apt-get update
+ sudo apt-get install libtool autoconf automake pkg-config stunnel4 ${{ matrix.build.install }}
+ sudo python3 -m pip install impacket
+ name: 'install prereqs and impacket'
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v4
- - run: autoreconf -fi
- name: 'autoreconf'
+ - run: autoreconf -fi
+ name: 'autoreconf'
- - run: ./configure --enable-warnings --enable-werror ${{ matrix.build.configure }}
- name: 'configure'
+ - run: ./configure --enable-warnings --enable-werror ${{ matrix.build.configure }}
+ name: 'configure'
- - run: make V=1
- name: 'make'
+ - run: make V=1
+ name: 'make'
- - run: make V=1 -C tests
- name: 'make tests'
+ - run: make V=1 -C tests
+ name: 'make tests'
- - run: make V=1 test-torture
- name: 'run tests'
- env:
- TFLAGS: "${{ matrix.build.tflags }}"
+ - run: make V=1 test-torture
+ name: 'run tests'
+ env:
+ TFLAGS: "${{ matrix.build.tflags }}"
on:
push:
branches:
- - master
- - '*/ci'
+ - master
+ - '*/ci'
paths-ignore:
- - '**/*.md'
- - '**/CMakeLists.txt'
- - '.azure-pipelines.yml'
- - '.circleci/**'
- - '.cirrus.yml'
- - 'appveyor.yml'
- - 'CMake/**'
- - 'packages/**'
- - 'plan9/**'
- - 'projects/**'
- - 'winbuild/**'
+ - '**/*.md'
+ - '**/CMakeLists.txt'
+ - '.azure-pipelines.yml'
+ - '.circleci/**'
+ - '.cirrus.yml'
+ - 'appveyor.yml'
+ - 'CMake/**'
+ - 'packages/**'
+ - 'plan9/**'
+ - 'projects/**'
+ - 'winbuild/**'
pull_request:
branches:
- - master
+ - master
paths-ignore:
- - '**/*.md'
- - '**/CMakeLists.txt'
- - '.azure-pipelines.yml'
- - '.circleci/**'
- - '.cirrus.yml'
- - 'appveyor.yml'
- - 'CMake/**'
- - 'packages/**'
- - 'plan9/**'
- - 'projects/**'
- - 'winbuild/**'
+ - '**/*.md'
+ - '**/CMakeLists.txt'
+ - '.azure-pipelines.yml'
+ - '.circleci/**'
+ - '.cirrus.yml'
+ - 'appveyor.yml'
+ - 'CMake/**'
+ - 'packages/**'
+ - 'plan9/**'
+ - 'projects/**'
+ - 'winbuild/**'
concurrency:
# Hardcoded workflow filename as workflow name above is just Linux again
fail-fast: false
matrix:
build:
- - name: wolfssl (configured with --enable-all)
- install:
- configure: LDFLAGS="-Wl,-rpath,$HOME/wssl/lib" --with-wolfssl=$HOME/wssl --enable-debug
- wolfssl-configure: --enable-all
- - name: wolfssl (configured with --enable-opensslextra)
- install:
- configure: LDFLAGS="-Wl,-rpath,$HOME/wssl/lib" --with-wolfssl=$HOME/wssl --enable-debug
- wolfssl-configure: --enable-opensslextra
+ - name: wolfssl (configured with --enable-all)
+ install:
+ configure: LDFLAGS="-Wl,-rpath,$HOME/wssl/lib" --with-wolfssl=$HOME/wssl --enable-debug
+ wolfssl-configure: --enable-all
+ - name: wolfssl (configured with --enable-opensslextra)
+ install:
+ configure: LDFLAGS="-Wl,-rpath,$HOME/wssl/lib" --with-wolfssl=$HOME/wssl --enable-debug
+ wolfssl-configure: --enable-opensslextra
steps:
- - run: |
- sudo apt-get update
- sudo apt-get install libtool autoconf automake pkg-config stunnel4 ${{ matrix.build.install }}
- sudo python3 -m pip install impacket
- name: 'install prereqs and impacket'
+ - run: |
+ sudo apt-get update
+ sudo apt-get install libtool autoconf automake pkg-config stunnel4 ${{ matrix.build.install }}
+ sudo python3 -m pip install impacket
+ name: 'install prereqs and impacket'
- - run: |
- WOLFSSL_VER=5.6.3
- curl -LOsSf --retry 6 --retry-connrefused --max-time 999 https://github.com/wolfSSL/wolfssl/archive/v$WOLFSSL_VER-stable.tar.gz
- tar -xzf v$WOLFSSL_VER-stable.tar.gz
- cd wolfssl-$WOLFSSL_VER-stable
- ./autogen.sh
- ./configure --enable-tls13 ${{ matrix.build.wolfssl-configure }} --enable-harden --prefix=$HOME/wssl
- make install
- name: 'install wolfssl'
+ - run: |
+ WOLFSSL_VER=5.6.3
+ curl -LOsSf --retry 6 --retry-connrefused --max-time 999 https://github.com/wolfSSL/wolfssl/archive/v$WOLFSSL_VER-stable.tar.gz
+ tar -xzf v$WOLFSSL_VER-stable.tar.gz
+ cd wolfssl-$WOLFSSL_VER-stable
+ ./autogen.sh
+ ./configure --enable-tls13 ${{ matrix.build.wolfssl-configure }} --enable-harden --prefix=$HOME/wssl
+ make install
+ name: 'install wolfssl'
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v4
- - run: autoreconf -fi
- name: 'autoreconf'
+ - run: autoreconf -fi
+ name: 'autoreconf'
- - run: ./configure --enable-warnings --enable-werror ${{ matrix.build.configure }}
- name: 'configure'
+ - run: ./configure --enable-warnings --enable-werror ${{ matrix.build.configure }}
+ name: 'configure'
- - run: make V=1
- name: 'make'
+ - run: make V=1
+ name: 'make'
- - run: make V=1 examples
- name: 'make examples'
+ - run: make V=1 examples
+ name: 'make examples'
- - run: make V=1 -C tests
- name: 'make tests'
+ - run: make V=1 -C tests
+ name: 'make tests'
- - run: make V=1 test-ci
- name: 'run tests'
- env:
- TFLAGS: "${{ matrix.build.tflags }}"
+ - run: make V=1 test-ci
+ name: 'run tests'
+ env:
+ TFLAGS: "${{ matrix.build.tflags }}"