recvfrom: don't assume memory layout #89
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
on: [push, pull_request] | |
name: Stable | |
env: | |
RUSTFLAGS: "-D warnings" | |
TOOLCHAIN: "stable" | |
jobs: | |
quiche: | |
runs-on: ubuntu-latest | |
# Only run on "pull_request" event for external PRs. This is to avoid | |
# duplicate builds for PRs created from internal branches. | |
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v3 | |
with: | |
submodules: 'recursive' | |
- name: Install stable toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: ${{ env.TOOLCHAIN }} | |
components: clippy | |
override: true | |
- name: Run cargo test | |
uses: actions-rs/cargo@v1 | |
with: | |
command: test | |
args: --verbose --all-targets --features=ffi,qlog | |
# Need to run doc tests separately. | |
# (https://github.com/rust-lang/cargo/issues/6669) | |
- name: Run cargo doc test | |
uses: actions-rs/cargo@v1 | |
with: | |
command: test | |
args: --verbose --doc --features=ffi,qlog | |
- name: Run cargo package | |
uses: actions-rs/cargo@v1 | |
with: | |
command: package | |
args: --verbose --workspace --exclude=quiche_apps --allow-dirty | |
- name: Run cargo clippy | |
uses: actions-rs/cargo@v1 | |
with: | |
command: clippy | |
args: --features=ffi,qlog -- -D warnings | |
- name: Run cargo clippy on examples | |
uses: actions-rs/cargo@v1 | |
with: | |
command: clippy | |
args: --examples --features=ffi,qlog -- -D warnings | |
- name: Run cargo doc | |
uses: actions-rs/cargo@v1 | |
with: | |
command: doc | |
args: --no-deps --all-features --document-private-items | |
- name: Build C examples | |
run: | | |
sudo apt-get install libev-dev uthash-dev | |
make -C quiche/examples | |
quiche_macos: | |
runs-on: macos-latest | |
# Only run on "pull_request" event for external PRs. This is to avoid | |
# duplicate builds for PRs created from internal branches. | |
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v3 | |
with: | |
submodules: 'recursive' | |
- name: Install stable toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: ${{ env.TOOLCHAIN }} | |
override: true | |
- name: Run cargo test | |
uses: actions-rs/cargo@v1 | |
with: | |
command: test | |
args: --verbose --all-targets --features ffi,qlog | |
- name: Build C examples | |
run: | | |
brew install libev uthash | |
make -C quiche/examples | |
quiche_ios: | |
runs-on: macos-latest | |
strategy: | |
matrix: | |
target: ["x86_64-apple-ios", "aarch64-apple-ios"] | |
# Only run on "pull_request" event for external PRs. This is to avoid | |
# duplicate builds for PRs created from internal branches. | |
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v3 | |
with: | |
submodules: 'recursive' | |
- name: Install stable toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: ${{ env.TOOLCHAIN }} | |
target: ${{ matrix.target }} | |
override: true | |
- name: Remove cdylib from iOS build | |
run: | | |
sed -i -e 's/, "cdylib"//g' quiche/Cargo.toml | |
- name: Run cargo build | |
uses: actions-rs/cargo@v1 | |
with: | |
command: build | |
args: --target=${{ matrix.target }} --verbose | |
quiche_windows: | |
runs-on: windows-2019 | |
strategy: | |
matrix: | |
target: ["x86_64-pc-windows-msvc", "i686-pc-windows-msvc", "x86_64-pc-windows-gnu", "i686-pc-windows-gnu"] | |
# Only run on "pull_request" event for external PRs. This is to avoid | |
# duplicate builds for PRs created from internal branches. | |
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v3 | |
with: | |
submodules: 'recursive' | |
- name: Install stable toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: ${{ env.TOOLCHAIN }}-${{ matrix.target }} | |
target: ${{ matrix.target }} | |
override: true | |
- name: Set up MinGW for 64 bit | |
if: matrix.target == 'x86_64-pc-windows-gnu' | |
uses: bwoodsend/[email protected] | |
with: | |
tag: 12.2.0-16.0.0-10.0.0-msvcrt-r5 | |
- name: Set up MinGW for 32 bit | |
if: matrix.target == 'i686-pc-windows-gnu' | |
uses: bwoodsend/[email protected] | |
with: | |
architecture: i686 | |
tag: 12.2.0-16.0.0-10.0.0-msvcrt-r5 | |
- name: Install dependencies | |
uses: crazy-max/ghaction-chocolatey@v2 | |
with: | |
args: install nasm | |
- name: Run cargo build | |
if: endsWith(matrix.target, '-gnu') | |
uses: actions-rs/cargo@v1 | |
with: | |
command: build | |
args: --target=${{ matrix.target }} --verbose --all-targets --features=ffi,qlog | |
- name: Run cargo test | |
if: endsWith(matrix.target, '-msvc') | |
uses: actions-rs/cargo@v1 | |
with: | |
command: test | |
args: --target=${{ matrix.target }} --verbose --all-targets --features=ffi,qlog | |
quiche_multiarch: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
target: ["aarch64-unknown-linux-gnu","armv7-unknown-linux-gnueabihf","i686-unknown-linux-gnu"] | |
# Only run on "pull_request" event for external PRs. This is to avoid | |
# duplicate builds for PRs created from internal branches. | |
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v3 | |
with: | |
submodules: 'recursive' | |
- name: Run cargo test | |
uses: actions-rs/cargo@v1 | |
with: | |
command: test | |
args: --target=${{ matrix.target }} --verbose --all-targets --features=ffi,qlog | |
use-cross: true | |
http3_test: | |
runs-on: ubuntu-latest | |
# Only run on "pull_request" event for external PRs. This is to avoid | |
# duplicate builds for PRs created from internal branches. | |
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v3 | |
with: | |
submodules: 'recursive' | |
- name: Install stable toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: ${{ env.TOOLCHAIN }} | |
override: true | |
- name: Run cargo test | |
uses: actions-rs/cargo@v1 | |
with: | |
command: test | |
args: --no-run --verbose --manifest-path=tools/http3_test/Cargo.toml | |
- name: Run cargo clippy | |
uses: actions-rs/cargo@v1 | |
with: | |
command: clippy | |
args: --manifest-path=tools/http3_test/Cargo.toml -- -D warnings | |
nginx: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
version: ["1.16.1"] | |
# Only run on "pull_request" event for external PRs. This is to avoid | |
# duplicate builds for PRs created from internal branches. | |
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v3 | |
with: | |
submodules: 'recursive' | |
- name: Install stable toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: ${{ env.TOOLCHAIN }} | |
override: true | |
- name: Install dependencies | |
run: sudo apt-get install libpcre3-dev zlib1g-dev | |
- name: Download NGINX sources | |
run: curl -O https://nginx.org/download/nginx-${{ matrix.version }}.tar.gz | |
- name: Extract NGINX sources | |
run: tar xzf nginx-${{ matrix.version }}.tar.gz | |
- name: Build NGINX | |
run: | | |
cd nginx-${{ matrix.version }} && | |
patch -p01 < ../nginx/nginx-1.16.patch && | |
./configure --with-http_ssl_module --with-http_v2_module --with-http_v3_module --with-openssl="${{ github.workspace }}/quiche/deps/boringssl" --with-quiche="${{ github.workspace }}" --with-debug && | |
make -j`nproc` && | |
objs/nginx -V | |
docker: | |
runs-on: ubuntu-latest | |
# Only run on "pull_request" event for external PRs. This is to avoid | |
# duplicate builds for PRs created from internal branches. | |
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v3 | |
with: | |
submodules: 'recursive' | |
- name: Build Docker images | |
run: make docker-build | |
android_ndk_lts: | |
runs-on: ubuntu-latest | |
env: | |
NDK_LTS_VER: "25" | |
API_LEVEL: "21" | |
strategy: | |
matrix: | |
target: ["aarch64-linux-android","armv7-linux-androideabi","x86_64-linux-android","i686-linux-android"] | |
include: | |
- target: "aarch64-linux-android" | |
arch: "arm64-v8a" | |
- target: "armv7-linux-androideabi" | |
arch: "armeabi-v7a" | |
- target: "x86_64-linux-android" | |
arch: "x86_64" | |
- target: "i686-linux-android" | |
arch: "x86" | |
# Only run on "pull_request" event for external PRs. This is to avoid | |
# duplicate builds for PRs created from internal branches. | |
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v3 | |
with: | |
submodules: 'recursive' | |
- name: Install stable toolchain for the target | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: ${{ env.TOOLCHAIN }} | |
target: ${{ matrix.target }} | |
override: true | |
- name: Install cargo-ndk | |
uses: actions-rs/[email protected] | |
with: | |
crate: cargo-ndk | |
- name: Download NDK | |
run: curl --http1.1 -O https://dl.google.com/android/repository/android-ndk-r${{ env.NDK_LTS_VER }}-linux.zip | |
- name: Extract NDK | |
run: unzip -q android-ndk-r${{ env.NDK_LTS_VER }}-linux.zip | |
- name: Run cargo ndk | |
uses: actions-rs/cargo@v1 | |
with: | |
command: ndk | |
args: -t ${{ matrix.arch }} -p ${{ env.API_LEVEL }} -- build --verbose --features ffi | |
env: | |
ANDROID_NDK_HOME: ${{ github.workspace }}/android-ndk-r${{ env.NDK_LTS_VER }} |