Skip to content
name: Auto-generate aws-lc-sys Bindings
on:
push:
branches:
- 'generate/aws-lc-sys-*'
env:
GIT_AUTHOR_NAME: "aws-lc-sys-bindings-generator"
GIT_AUTHOR_EMAIL: "aws-lc-github-bot@amazon.com"
GIT_COMMITTER_NAME: "aws-lc-sys-bindings-generator"
GIT_COMMITTER_EMAIL: "aws-lc-github-bot@amazon.com"
RUST_BACKTRACE: 1
# We can pin the version if nightly is too unstable.
# Otherwise, we test against the latest version.
RUST_NIGHTLY_TOOLCHAIN: nightly-2024-05-22
jobs:
collect-symbols-and-commit:
if: github.repository == 'aws/aws-lc-rs'
runs-on: ${{ matrix.os }}
strategy:
fail-fast: true
matrix:
os: [ ubuntu-latest, macos-12, macos-13-xlarge ]
steps:
- uses: actions/checkout@v4
with:
submodules: 'recursive'
ref: ${{ github.ref_name }}
- uses: dtolnay/rust-toolchain@stable
- uses: actions/setup-go@v4
with:
go-version: '>=1.20'
- name: Install current Bash on macOS
if: runner.os == 'macOS'
run: brew install bash coreutils
- name: No-prefix build for ${{ matrix.os }}
env:
AWS_LC_SYS_NO_PREFIX: "1"
run: |
cargo test -p aws-lc-sys --features bindgen
- name: Collect symbols
run: |
./scripts/build/collect_symbols.sh -c aws-lc-sys
- name: Commit & Push changes
run: ./scripts/ci/ci_add_commit_rebase_push.sh "Symbols from ${{ matrix.os }}"
collect-windows-symbols-and-commit:
if: github.repository == 'aws/aws-lc-rs'
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
target:
- 'aarch64-pc-windows-msvc'
- 'x86_64-pc-windows-msvc'
- 'x86_64-pc-windows-gnu'
- 'i686-pc-windows-msvc'
steps:
- uses: actions/checkout@v4
with:
submodules: 'recursive'
ref: ${{ github.ref_name }}
- uses: dtolnay/rust-toolchain@master
id: toolchain
with:
toolchain: stable
target: ${{ matrix.target }}
- if: contains(matrix.target, 'x86') || contains(matrix.target, 'i686')
uses: ilammy/setup-nasm@v1
- uses: actions/setup-go@v4
with:
go-version: '>=1.20'
- name: No-prefix build for ${{ matrix.target }}
env:
AWS_LC_SYS_NO_PREFIX: "1"
run: |
cargo ${{ (matrix.target == 'aarch64-pc-windows-msvc' && 'build') || 'test' }} -p aws-lc-sys --features bindgen --target ${{ matrix.target }}
- name: Collect symbols
shell: bash
run: |
./scripts/build/collect_symbols.sh -c aws-lc-sys -t ${{ matrix.target }}
- name: Commit & Push changes
shell: bash
run: ./scripts/ci/ci_add_commit_rebase_push.sh "Symbols from ${{ matrix.target }}"
collect-cross-symbols-and-commit:
if: github.repository == 'aws/aws-lc-rs'
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix:
target:
- aarch64-unknown-linux-gnu
- i686-unknown-linux-gnu
- aarch64-unknown-linux-musl
- x86_64-unknown-linux-musl
# collect symbols from additional platforms, although we won't generate bindings for them
- arm-unknown-linux-gnueabi
- armv7-unknown-linux-gnueabihf
- powerpc-unknown-linux-gnu
- powerpc64le-unknown-linux-gnu
steps:
- uses: actions/checkout@v4
with:
submodules: 'recursive'
ref: ${{ github.ref_name }}
- uses: dtolnay/rust-toolchain@stable
- uses: actions/setup-go@v4
with:
go-version: '>=1.20'
- name: Install cross
run: cargo install cross --locked --git https://github.com/cross-rs/cross
- name: No-prefix build for ${{ matrix.target }}
env:
AWS_LC_SYS_NO_PREFIX: "1"
run: |
cross test -p aws-lc-sys --features bindgen --target ${{ matrix.target }}
- name: Collect symbols
run: |
./scripts/build/collect_symbols.sh -c aws-lc-sys -t ${{ matrix.target }}
- name: Commit & Push changes
run: ./scripts/ci/ci_add_commit_rebase_push.sh "Symbols for ${{ matrix.target }}"
generate-headers-and-commit:
needs: [ collect-cross-symbols-and-commit, collect-symbols-and-commit, collect-windows-symbols-and-commit ]
if: github.repository == 'aws/aws-lc-rs'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: 'recursive'
ref: ${{ github.ref_name }}
- uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ env.RUST_NIGHTLY_TOOLCHAIN }}
- uses: dtolnay/rust-toolchain@stable
- uses: actions/setup-go@v4
with:
go-version: '>=1.20'
- name: Generate Prefix Headers
run: ./scripts/generate/_generate_prefix_headers.sh -c aws-lc-sys
- name: Update sys-crate metadata
run: ./scripts/ci/update_sys_crate_metadata.sh aws-lc-sys
- name: Commit & Push changes
run: ./scripts/ci/ci_add_commit_rebase_push.sh "Generated headers"
generate-bindings-and-commit:
needs: generate-headers-and-commit
if: github.repository == 'aws/aws-lc-rs'
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ ubuntu-latest, macos-12, macos-13-xlarge ]
steps:
- uses: actions/checkout@v4
with:
submodules: 'recursive'
ref: ${{ github.ref_name }}
- uses: dtolnay/rust-toolchain@stable
- name: Install current Bash on macOS
if: runner.os == 'macOS'
run: brew install bash coreutils
- name: Generate bindings for ${{ matrix.os }}
env:
AWS_LC_SYS_INTERNAL_BINDGEN: "1"
run: |
cargo test -p aws-lc-sys --features bindgen
- name: Commit & Push changes
run: ./scripts/ci/ci_add_commit_rebase_push.sh "Generated bindings from ${{ matrix.os }}"
generate-windows-bindings-and-commit:
needs: generate-headers-and-commit
if: github.repository == 'aws/aws-lc-rs'
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
target:
- 'aarch64-pc-windows-msvc'
- 'x86_64-pc-windows-msvc'
- 'x86_64-pc-windows-gnu'
- 'i686-pc-windows-msvc'
steps:
- uses: actions/checkout@v4
with:
submodules: 'recursive'
ref: ${{ github.ref_name }}
- uses: dtolnay/rust-toolchain@master
id: toolchain
with:
toolchain: stable
target: ${{ matrix.target }}
- if: contains(matrix.target, 'x86') || contains(matrix.target, 'i686')
uses: ilammy/setup-nasm@v1
- uses: actions/setup-go@v4
with:
go-version: '>=1.20'
- name: Generate bindings for ${{ matrix.target }}
env:
AWS_LC_SYS_INTERNAL_BINDGEN: "1"
run: |
cargo test -p aws-lc-sys --features bindgen --target ${{ matrix.target }}
- name: Commit & Push changes
run: ./scripts/ci/ci_add_commit_rebase_push.sh "Generated bindings for ${{ matrix.target }}"
generate-cross-bindings-and-commit:
needs: generate-headers-and-commit
if: github.repository == 'aws/aws-lc-rs'
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
target: [ aarch64-unknown-linux-gnu, i686-unknown-linux-gnu, aarch64-unknown-linux-musl, x86_64-unknown-linux-musl ]
steps:
- uses: actions/checkout@v4
with:
submodules: 'recursive'
ref: ${{ github.ref_name }}
- uses: dtolnay/rust-toolchain@stable
- name: Install cross
run: cargo install cross --locked --git https://github.com/cross-rs/cross
- name: Generate bindings for ${{ matrix.target }}
env:
AWS_LC_SYS_INTERNAL_BINDGEN: "1"
run: |
cross test -p aws-lc-sys --features bindgen --target ${{ matrix.target }}
- name: Commit & Push changes
run: ./scripts/ci/ci_add_commit_rebase_push.sh "Generated bindings for ${{ matrix.target }}"
collect-src-and-commit:
needs: generate-bindings-and-commit
if: github.repository == 'aws/aws-lc-rs'
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ ubuntu-latest, macos-12, macos-13-xlarge ]
steps:
- uses: actions/checkout@v3
with:
submodules: 'recursive'
ref: ${{ github.ref_name }}
- uses: dtolnay/rust-toolchain@stable
- name: Install current Bash on macOS
if: runner.os == 'macOS'
run: brew install bash coreutils
- name: Collect source from ${{ matrix.os }}
run: ./scripts/build/collect_build_src.sh
- name: Commit & Push changes
run: ./scripts/ci/ci_add_commit_rebase_push.sh "Collected source files from ${{ matrix.os }}"
collect-cross-src-and-commit:
needs: generate-cross-bindings-and-commit
if: github.repository == 'aws/aws-lc-rs'
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
target: [ aarch64-unknown-linux-gnu, i686-unknown-linux-gnu, aarch64-unknown-linux-musl, x86_64-unknown-linux-musl ]
steps:
- uses: actions/checkout@v4
with:
submodules: 'recursive'
ref: ${{ github.ref_name }}
- uses: dtolnay/rust-toolchain@stable
- name: Install cross
run: cargo install cross --locked --git https://github.com/cross-rs/cross
- name: Collect source for ${{ matrix.target }}
run: ./scripts/build/collect_build_src.sh -t ${{ matrix.target }}
- name: Commit & Push changes
run: ./scripts/ci/ci_add_commit_rebase_push.sh "Collected source files for ${{ matrix.target }}"