aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows')
-rw-r--r--.github/workflows/awslc.yml226
-rw-r--r--.github/workflows/badwords.yml27
-rw-r--r--.github/workflows/codeql-analysis.yml94
-rw-r--r--.github/workflows/codespell.yml36
-rw-r--r--.github/workflows/configure-vs-cmake.yml44
-rw-r--r--.github/workflows/distcheck.yml157
-rw-r--r--.github/workflows/fuzz.yml54
-rw-r--r--.github/workflows/hacktoberfest-accepted.yml2
-rw-r--r--.github/workflows/label.yml8
-rw-r--r--.github/workflows/linkcheck.yml27
-rw-r--r--.github/workflows/linux.yml786
-rw-r--r--.github/workflows/linux32.yml102
-rw-r--r--.github/workflows/macos.yml375
-rw-r--r--.github/workflows/man-examples.yml35
-rw-r--r--.github/workflows/ngtcp2-linux.yml468
-rw-r--r--.github/workflows/osslq-linux.yml233
-rw-r--r--.github/workflows/proselint.yml75
-rw-r--r--.github/workflows/quiche-linux.yml350
-rw-r--r--.github/workflows/reuse.yml12
-rw-r--r--.github/workflows/spellcheck.yml84
-rw-r--r--.github/workflows/synopsis.yml28
-rw-r--r--.github/workflows/torture.yml102
-rw-r--r--.github/workflows/wolfssl.yml124
23 files changed, 1920 insertions, 1529 deletions
diff --git a/.github/workflows/awslc.yml b/.github/workflows/awslc.yml
index 2c38ca0a3..485251641 100644
--- a/.github/workflows/awslc.yml
+++ b/.github/workflows/awslc.yml
@@ -7,31 +7,31 @@ name: Linux AWS-LC
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.*'
+ - '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.*'
+ - 'packages/**'
+ - 'plan9/**'
+ - 'projects/**'
+ - 'winbuild/**'
concurrency:
# Hardcoded workflow filename as workflow name above is just Linux again
@@ -51,58 +51,58 @@ jobs:
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 libpsl-dev
+ # 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@v4
+ 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)
@@ -110,43 +110,43 @@ jobs:
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@v4
+ 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'
diff --git a/.github/workflows/badwords.yml b/.github/workflows/badwords.yml
new file mode 100644
index 000000000..fc0b52001
--- /dev/null
+++ b/.github/workflows/badwords.yml
@@ -0,0 +1,27 @@
+# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
+#
+# SPDX-License-Identifier: curl
+
+name: badwords
+
+on:
+ # Trigger the workflow on push or pull requests, but only for the
+ # master branch
+ push:
+ branches:
+ - master
+ - '*/ci'
+ pull_request:
+ branches:
+ - master
+
+jobs:
+ check:
+
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v2
+
+ - name: check
+ run: ./.github/scripts/badwords.pl < .github/scripts/badwords.txt docs/*.md docs/libcurl/*.md docs/libcurl/opts/*.md
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
index f5f969491..f98e4da42 100644
--- a/.github/workflows/codeql-analysis.yml
+++ b/.github/workflows/codeql-analysis.yml
@@ -7,35 +7,35 @@ name: CodeQL
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.*'
+ - '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.*'
+ - 'docs/**'
+ - 'packages/**'
+ - 'plan9/**'
+ - 'projects/**'
+ - 'tests/data/**'
+ - 'winbuild/**'
schedule:
- cron: '0 0 * * 4'
@@ -50,31 +50,31 @@ jobs:
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@v3
+ 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@v3
- # ℹ️ 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@v3
diff --git a/.github/workflows/codespell.yml b/.github/workflows/codespell.yml
new file mode 100644
index 000000000..2b095dae7
--- /dev/null
+++ b/.github/workflows/codespell.yml
@@ -0,0 +1,36 @@
+# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
+#
+# SPDX-License-Identifier: curl
+
+name: Codespell
+
+on:
+ push:
+ branches:
+ - master
+ - '*/ci'
+ paths:
+ - 'lib/**'
+ - 'src/**'
+ - 'include/**'
+ pull_request:
+ branches:
+ - master
+ - 'lib/**'
+ - 'src/**'
+ - 'include/**'
+
+jobs:
+ codespell:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: install
+ run: |
+ sudo apt-get update
+ sudo apt-get install codespell
+
+ - name: spellcheck
+ run: codespell --skip src/tool_hugehelp.c -I .github/scripts/codespell-ignore.txt include src lib
diff --git a/.github/workflows/configure-vs-cmake.yml b/.github/workflows/configure-vs-cmake.yml
index 3131bc128..dc2273f73 100644
--- a/.github/workflows/configure-vs-cmake.yml
+++ b/.github/workflows/configure-vs-cmake.yml
@@ -6,23 +6,23 @@ name: configure-vs-cmake
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: {}
@@ -30,16 +30,16 @@ jobs:
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 --without-libpsl
- - 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
diff --git a/.github/workflows/distcheck.yml b/.github/workflows/distcheck.yml
index a63091bd9..15068b640 100644
--- a/.github/workflows/distcheck.yml
+++ b/.github/workflows/distcheck.yml
@@ -7,11 +7,11 @@ name: dist
on:
push:
branches:
- - master
- - '*/ci'
+ - master
+ - '*/ci'
pull_request:
branches:
- - master
+ - master
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
@@ -22,80 +22,101 @@ jobs:
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 --without-libpsl
+ 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@v4
+ 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 --without-libpsl
+ make
+ make test-ci
+ 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@v4
+ 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 --without-libpsl
+ make
+ make test-ci
+ 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@v4
+ 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" --without-libpsl
+ make -j3
+ make -j3 test-ci
+ 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@v4
+ 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'
diff --git a/.github/workflows/fuzz.yml b/.github/workflows/fuzz.yml
index 695e0def9..247a1c0ab 100644
--- a/.github/workflows/fuzz.yml
+++ b/.github/workflows/fuzz.yml
@@ -7,37 +7,37 @@ name: Fuzzer
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.*'
+ - '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.*'
+ - 'CMake/**'
+ - 'packages/**'
+ - 'plan9/**'
+ - 'projects/**'
+ - 'tests/data/**'
+ - 'winbuild/**'
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
diff --git a/.github/workflows/hacktoberfest-accepted.yml b/.github/workflows/hacktoberfest-accepted.yml
index 6363d1c51..3c4ecd87c 100644
--- a/.github/workflows/hacktoberfest-accepted.yml
+++ b/.github/workflows/hacktoberfest-accepted.yml
@@ -8,7 +8,7 @@ on:
# 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
diff --git a/.github/workflows/label.yml b/.github/workflows/label.yml
index 6a157d240..b874c31b5 100644
--- a/.github/workflows/label.yml
+++ b/.github/workflows/label.yml
@@ -21,8 +21,6 @@ jobs:
pull-requests: write
steps:
- - uses: actions/labeler@v5.0.0-beta.1
- with:
- repo-token: "${{ secrets.GITHUB_TOKEN }}"
- # This is documented but doesn't work yet:
- #dot: true
+ - uses: actions/labeler@v5
+ with:
+ repo-token: "${{ secrets.GITHUB_TOKEN }}"
diff --git a/.github/workflows/linkcheck.yml b/.github/workflows/linkcheck.yml
index 2301e3019..ba92efabb 100644
--- a/.github/workflows/linkcheck.yml
+++ b/.github/workflows/linkcheck.yml
@@ -7,17 +7,17 @@ name: Markdown links
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 }}
@@ -30,7 +30,12 @@ jobs:
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
+ name: checkout
+
+ - name: trim the cmdline docs markdown files
+ run: find docs/cmdline-opts -name "*.md" ! -name "_*" ! -name MANPAGE.md | xargs -n1 ./.github/scripts/cleancmd.pl
+
+ - uses: gaurav-nelson/github-action-markdown-link-check@v1
+ with:
+ use-quiet-mode: 'yes'
diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml
index 9cb9d16b2..b655c9637 100644
--- a/.github/workflows/linux.yml
+++ b/.github/workflows/linux.yml
@@ -7,31 +7,31 @@ name: Linux
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.*'
+ - '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.*'
+ - 'packages/**'
+ - 'plan9/**'
+ - 'projects/**'
+ - 'winbuild/**'
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
@@ -44,10 +44,10 @@ env:
bearssl-version: 0.6
libressl-version: v3.7.3
mbedtls-version: v3.5.0
- mod_h2-version: v2.0.21
+ mod_h2-version: v2.0.26
msh3-version: v0.6.0
openssl3-version: openssl-3.1.3
- quictls-version: OpenSSL_1_1_1w+quic
+ quictls-version: 3.1.4+quic
rustls-version: v0.10.0
jobs:
@@ -60,375 +60,375 @@ jobs:
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: 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/lib" --with-openssl=$HOME/openssl3 --enable-debug --enable-websockets
+ singleuse: --unit
+
+ - name: openssl3-O3
+ install_packages: zlib1g-dev valgrind
+ install_steps: gcc-11 openssl3
+ configure: CPPFLAGS=-DCURL_WARN_SIGN_CONVERSION CFLAGS=-O3 LDFLAGS="-Wl,-rpath,$HOME/openssl3/lib" --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/lib" --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 libpsl-dev
+ 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 ${{ env.quictls-version }} https://github.com/quictls/openssl
- cd openssl
- ./config enable-tls1_3 --prefix=$HOME/quictls
- 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@v4
+ 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@v4
+ 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@v4
+ 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@v4
+ 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 --prefix=$HOME/openssl3 --libdir=$HOME/openssl3/lib
+ make -j1 install_sw
+
+ - name: cache quictls
+ if: contains(matrix.build.install_steps, 'quictls')
+ uses: actions/cache@v4
+ 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 --prefix=$HOME/quictls --libdir=$HOME/quictls/lib
+ make -j1 install_sw
+
+ - name: cache msh3
+ if: contains(matrix.build.install_steps, 'msh3')
+ uses: actions/cache@v4
+ 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@v4
+ 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@v4
+ 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
diff --git a/.github/workflows/linux32.yml b/.github/workflows/linux32.yml
index 7c2d4cbf6..e3fca3d1d 100644
--- a/.github/workflows/linux32.yml
+++ b/.github/workflows/linux32.yml
@@ -7,35 +7,35 @@ name: Linux 32-bit
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.*'
+ - '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.*'
+ - 'CMake/**'
+ - 'packages/**'
+ - 'plan9/**'
+ - 'projects/**'
+ - 'winbuild/**'
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
@@ -55,39 +55,39 @@ jobs:
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 }}"
diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml
index e565f20e6..2f2d75397 100644
--- a/.github/workflows/macos.yml
+++ b/.github/workflows/macos.yml
@@ -7,31 +7,31 @@ name: macOS
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.*'
+ - '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.*'
+ - 'packages/**'
+ - 'plan9/**'
+ - 'projects/**'
+ - 'winbuild/**'
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
@@ -52,141 +52,142 @@ jobs:
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 --without-libpsl
+ 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 libpsl ${{ 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 }}
@@ -196,47 +197,47 @@ jobs:
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'
diff --git a/.github/workflows/man-examples.yml b/.github/workflows/man-examples.yml
new file mode 100644
index 000000000..6f0d1e8ae
--- /dev/null
+++ b/.github/workflows/man-examples.yml
@@ -0,0 +1,35 @@
+# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
+#
+# SPDX-License-Identifier: curl
+
+name: manpage examples
+
+on:
+ push:
+ branches:
+ - master
+ - '*/ci'
+ paths:
+ - 'docs/libcurl/curl_*.3'
+ - 'docs/libcurl/opts/*.3'
+ - '.github/scripts/verify-examples.pl'
+ pull_request:
+ branches:
+ - master
+ paths:
+ - 'docs/libcurl/curl_*.3'
+ - 'docs/libcurl/opts/*.3'
+ - '.github/scripts/verify-examples.pl'
+
+jobs:
+ verify:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: render nroff versions
+ run: autoreconf -fi && ./configure --without-ssl --without-libpsl && make -C docs
+
+ - name: verify examples
+ run: ./.github/scripts/verify-examples.pl docs/libcurl/curl*.3 docs/libcurl/opts/*.3
diff --git a/.github/workflows/ngtcp2-linux.yml b/.github/workflows/ngtcp2-linux.yml
index 0bc230aa4..19172b48f 100644
--- a/.github/workflows/ngtcp2-linux.yml
+++ b/.github/workflows/ngtcp2-linux.yml
@@ -7,35 +7,35 @@ name: ngtcp2-linux
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.*'
+ - '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.*'
+ - 'CMake/**'
+ - 'packages/**'
+ - 'plan9/**'
+ - 'projects/**'
+ - 'winbuild/**'
concurrency:
# Hardcoded workflow filename as workflow name above is just Linux again
@@ -46,13 +46,13 @@ permissions: {}
env:
MAKEFLAGS: -j 3
- quictls-version: 3.0.10+quic
- gnutls-version: 3.8.0
+ quictls-version: 3.1.4+quic
+ gnutls-version: 3.8.3
wolfssl-version: master
- nghttp3-version: v0.15.0
- ngtcp2-version: v0.19.1
- nghttp2-version: v1.56.0
- mod_h2-version: v2.0.21
+ nghttp3-version: v1.1.0
+ ngtcp2-version: v1.2.0
+ nghttp2-version: v1.59.0
+ mod_h2-version: v2.0.26
jobs:
autotools:
@@ -63,208 +63,208 @@ jobs:
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
- --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
- env:
- cache-name: cache-quictls
- with:
- path: /home/runner/quictls
- key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ env.quictls-version }}
-
- - if: steps.cache-quictls.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 --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@v4
+ 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@v4
+ 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@v4
+ 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@v4
+ 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@v4
+ 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
diff --git a/.github/workflows/osslq-linux.yml b/.github/workflows/osslq-linux.yml
new file mode 100644
index 000000000..997e35bab
--- /dev/null
+++ b/.github/workflows/osslq-linux.yml
@@ -0,0 +1,233 @@
+# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
+#
+# SPDX-License-Identifier: curl
+
+name: osslq-linux
+
+on:
+ push:
+ branches:
+ - master
+ - '*/ci'
+ paths-ignore:
+ - '**/*.md'
+ - '**/CMakeLists.txt'
+ - '.azure-pipelines.yml'
+ - '.circleci/**'
+ - '.cirrus.yml'
+ - 'appveyor.*'
+ - 'CMake/**'
+ - 'packages/**'
+ - 'plan9/**'
+ - 'projects/**'
+ - 'winbuild/**'
+ pull_request:
+ branches:
+ - master
+ paths-ignore:
+ - '**/*.md'
+ - '**/CMakeLists.txt'
+ - '.azure-pipelines.yml'
+ - '.circleci/**'
+ - '.cirrus.yml'
+ - 'appveyor.*'
+ - 'CMake/**'
+ - 'packages/**'
+ - 'plan9/**'
+ - 'projects/**'
+ - 'winbuild/**'
+
+concurrency:
+ # Hardcoded workflow filename as workflow name above is just Linux again
+ group: osslq-${{ github.event.pull_request.number || github.sha }}
+ cancel-in-progress: true
+
+permissions: {}
+
+env:
+ MAKEFLAGS: -j 3
+ openssl3-version: openssl-3.2.0
+ quictls-version: 3.1.4+quic
+ nghttp3-version: v1.1.0
+ ngtcp2-version: v1.2.0
+ nghttp2-version: v1.59.0
+ mod_h2-version: v2.0.26
+
+jobs:
+ autotools:
+ name: ${{ matrix.build.name }}
+ runs-on: 'ubuntu-latest'
+ timeout-minutes: 60
+ strategy:
+ fail-fast: false
+ matrix:
+ build:
+ - name: openssl-quic
+ configure: >-
+ PKG_CONFIG_PATH="$HOME/openssl3/lib/pkgconfig" LDFLAGS="-Wl,-rpath,$HOME/openssl3/lib"
+ --enable-warnings --enable-werror --enable-debug --disable-ntlm
+ --with-test-nghttpx="$HOME/nghttpx/bin/nghttpx"
+ --with-openssl=$HOME/openssl3 --with-openssl-quic
+ --with-nghttp3=$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 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: 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 --prefix=$HOME/openssl3 --libdir=$HOME/openssl3/lib
+ 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: 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 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
+ 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:
+ # 2500 and 25002 fail atm due to fin handling
+ TFLAGS: "!http/3"
+
+ - run: pytest -v tests
+ name: 'run pytest'
+ env:
+ TFLAGS: "${{ matrix.build.tflags }}"
+ CURL_CI: github
diff --git a/.github/workflows/proselint.yml b/.github/workflows/proselint.yml
index b01133c3b..871266722 100644
--- a/.github/workflows/proselint.yml
+++ b/.github/workflows/proselint.yml
@@ -7,17 +7,17 @@ name: proselint
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 }}
@@ -29,40 +29,41 @@ jobs:
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,
+ "security.password": 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
diff --git a/.github/workflows/quiche-linux.yml b/.github/workflows/quiche-linux.yml
index 90dec5e3a..40fc4d580 100644
--- a/.github/workflows/quiche-linux.yml
+++ b/.github/workflows/quiche-linux.yml
@@ -7,35 +7,35 @@ name: quiche
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.*'
+ - '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.*'
+ - 'CMake/**'
+ - 'packages/**'
+ - 'plan9/**'
+ - 'projects/**'
+ - 'winbuild/**'
concurrency:
# Hardcoded workflow filename as workflow name above is just Linux again
@@ -46,12 +46,12 @@ permissions: {}
env:
MAKEFLAGS: -j 3
- openssl-version: 3.0.10+quic
- nghttp3-version: v0.15.0
- ngtcp2-version: v0.19.1
- nghttp2-version: v1.56.0
- quiche-version: 0.17.2
- mod_h2-version: v2.0.21
+ openssl-version: 3.1.4+quic
+ nghttp3-version: v1.1.0
+ ngtcp2-version: v1.2.0
+ nghttp2-version: v1.59.0
+ quiche-version: 0.20.0
+ mod_h2-version: v2.0.26
jobs:
autotools:
@@ -62,149 +62,149 @@ jobs:
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@v4
+ 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@v4
+ 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@v4
+ 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
diff --git a/.github/workflows/reuse.yml b/.github/workflows/reuse.yml
index 0cb5295c7..27b33e2c8 100644
--- a/.github/workflows/reuse.yml
+++ b/.github/workflows/reuse.yml
@@ -8,11 +8,11 @@ name: REUSE compliance
on:
push:
branches:
- - master
- - '*/ci'
+ - master
+ - '*/ci'
pull_request:
branches:
- - master
+ - master
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
@@ -24,6 +24,6 @@ jobs:
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
diff --git a/.github/workflows/spellcheck.yml b/.github/workflows/spellcheck.yml
index 4793cf190..a619fcc04 100644
--- a/.github/workflows/spellcheck.yml
+++ b/.github/workflows/spellcheck.yml
@@ -6,24 +6,24 @@ name: spell
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: {}
@@ -31,36 +31,42 @@ jobs:
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 --without-libpsl
+ 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: trim the cmdline docs markdown files
+ run: find docs/cmdline-opts -name "*.md" ! -name "_*" ! -name MANPAGE.md | xargs -n1 ./.github/scripts/cleancmd.pl
- - name: Check Spelling
- uses: rojopolis/spellcheck-github-actions@v0
- with:
- config_path: .github/scripts/spellcheck.yaml
+ - name: trim the cmdline docs markdown _*.md files
+ run: find docs/cmdline-opts -name "_*.md" | xargs -n1 ./.github/scripts/cleancmd.pl --no-header
+
+ - 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
diff --git a/.github/workflows/synopsis.yml b/.github/workflows/synopsis.yml
new file mode 100644
index 000000000..0938f4bfc
--- /dev/null
+++ b/.github/workflows/synopsis.yml
@@ -0,0 +1,28 @@
+# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
+#
+# SPDX-License-Identifier: curl
+
+name: SYNOPSIS
+
+on:
+ push:
+ branches:
+ - master
+ - '*/ci'
+ paths:
+ - 'docs/libcurl/curl_*.3'
+ pull_request:
+ branches:
+ - master
+ paths:
+ - 'docs/libcurl/curl_*.3'
+
+jobs:
+ verify:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: verify-synopsis
+ run: ./.github/scripts/verify-synopsis.pl docs/libcurl/curl*.3
diff --git a/.github/workflows/torture.yml b/.github/workflows/torture.yml
index fa70eecd4..a50b37f14 100644
--- a/.github/workflows/torture.yml
+++ b/.github/workflows/torture.yml
@@ -7,35 +7,35 @@ name: Linux torture
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.*'
+ - '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.*'
+ - 'CMake/**'
+ - 'packages/**'
+ - 'plan9/**'
+ - 'projects/**'
+ - 'winbuild/**'
concurrency:
# Hardcoded workflow filename as workflow name above is just Linux again
@@ -56,37 +56,37 @@ jobs:
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 }}"
diff --git a/.github/workflows/wolfssl.yml b/.github/workflows/wolfssl.yml
index 48c831dd7..5aaf3d1bd 100644
--- a/.github/workflows/wolfssl.yml
+++ b/.github/workflows/wolfssl.yml
@@ -7,35 +7,35 @@ name: Linux wolfSSL
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.*'
+ - '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.*'
+ - 'CMake/**'
+ - 'packages/**'
+ - 'plan9/**'
+ - 'projects/**'
+ - 'winbuild/**'
concurrency:
# Hardcoded workflow filename as workflow name above is just Linux again
@@ -56,50 +56,50 @@ jobs:
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 libpsl-dev ${{ 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 }}"