-
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
use separate crates for different entry points (#2)
* skip building `aarch64-unknown-linux-musl` target I GIVE UP Has something to do with cross-compiling OpenSSL. I don't think all the cross-compiling env vars are propagated to the custom build script in `openssl-sys` crate.
- Loading branch information
Showing
79 changed files
with
833,548 additions
and
6 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
# Set the default behavior, in case people don't have core.autocrlf set. | ||
* text=auto | ||
|
||
# Explicitly declare text files you want to always be normalized and converted | ||
# to native line endings on checkout. | ||
*.py text eol=lf | ||
*.rst text eol=lf | ||
*.sh text eol=lf | ||
*.cpp text eol=lf | ||
*.hpp text eol=lf | ||
*.patch text eol=lf |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
# These are supported funding model platforms | ||
|
||
github: 2bndy5 |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
_extends: .github |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,193 @@ | ||
name: Binary executable builds | ||
|
||
permissions: | ||
contents: read | ||
|
||
on: | ||
push: | ||
branches: [main] | ||
tags: | ||
- v[0-9]+.* | ||
pull_request: | ||
branches: [main] | ||
|
||
env: | ||
CARGO_INCREMENTAL: 0 | ||
CARGO_NET_GIT_FETCH_WITH_CLI: true | ||
CARGO_NET_RETRY: 10 | ||
CARGO_TERM_COLOR: always | ||
RUST_BACKTRACE: 1 | ||
RUSTFLAGS: -D warnings | ||
RUSTUP_MAX_RETRIES: 10 | ||
|
||
defaults: | ||
run: | ||
shell: bash | ||
|
||
jobs: | ||
|
||
create-assets: | ||
name: ${{ matrix.target }} | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
include: | ||
- target: aarch64-unknown-linux-gnu | ||
os: ubuntu-latest | ||
## I GIVE UP! For this target, OpenSSL needs to be cross compiled | ||
## which is driven by openssl-sys crate's custom build script... | ||
## Linux users with aarch64 (aka ARM64) using musl C lib can go fish (or build from source). | ||
# - target: aarch64-unknown-linux-musl | ||
# os: ubuntu-latest | ||
- target: x86_64-unknown-linux-gnu | ||
os: ubuntu-latest | ||
- target: x86_64-unknown-linux-musl | ||
os: ubuntu-latest | ||
- target: aarch64-apple-darwin | ||
os: macos-latest | ||
- target: x86_64-apple-darwin | ||
os: macos-latest | ||
- target: x86_64-pc-windows-msvc | ||
os: windows-latest | ||
runs-on: ${{ matrix.os }} | ||
permissions: | ||
contents: write | ||
steps: | ||
- name: Calculate Release Version | ||
id: calc-version | ||
run: | | ||
if [ "${{ github.event_name }}" = "pull_request" ]; then | ||
short_sha=$(echo "${{ github.sha }}" | awk '{print substr($0,0,5)}') | ||
echo "RELEASE_VERSION=nightly-$(date '+%Y-%m-%d')-$short_sha" >> $GITHUB_OUTPUT | ||
else | ||
echo "RELEASE_VERSION=${{ github.ref_name }}" >> $GITHUB_OUTPUT | ||
fi | ||
- name: Install native OpenSSL on Linux | ||
if: runner.os == 'Linux' && !(startsWith(matrix.target, 'aarch64') || endsWith(matrix.target, 'musl')) | ||
run: sudo apt-get install -y pkg-config libssl-dev | ||
- name: Install GCC for aarch64 (for cross-compiling openssl) | ||
if: runner.os == 'Linux' && startsWith(matrix.target, 'aarch64') | ||
run: | | ||
sudo apt-get update | ||
sudo apt-get install gcc-aarch64-linux-gnu binutils-aarch64-linux-gnu | ||
if [[ "${{matrix.target}}" == *musl ]]; then | ||
sudo apt-get install musl-dev musl-tools | ||
fi | ||
- name: Install musl-gcc (for compiling OpenSSL) | ||
if: matrix.target == 'x86_64-unknown-linux-musl' | ||
run: sudo apt-get install musl-tools | ||
|
||
- name: Calculate openssl-vendored | ||
shell: bash | ||
id: is-openssl-vendored | ||
run: | | ||
case "${{ matrix.target }}" in | ||
"aarch64-apple-darwin" | "x86_64-apple-darwin" | "aarch64-unknown-linux-gnu" | "aarch64-unknown-linux-musl" | "x86_64-unknown-linux-musl") | ||
echo "enabled=--features openssl-vendored" >> $GITHUB_OUTPUT | ||
;; | ||
*) | ||
echo "enabled=" >> $GITHUB_OUTPUT | ||
;; | ||
esac | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
|
||
- name: Setup Rust | ||
uses: dtolnay/rust-toolchain@stable | ||
with: | ||
target: ${{ matrix.target }} | ||
|
||
# problems with cross-compiling linux with musl | ||
- run: echo "RUSTFLAGS=-D warnings -C target-feature=+crt-static -C link-self-contained=yes" >> "${GITHUB_ENV}" | ||
if: contains(matrix.target, '-linux-musl') | ||
- run: | | ||
echo "CC=aarch64-linux-gnu-gcc" >> "$GITHUB_ENV" | ||
echo "CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_LINKER=aarch64-linux-gnu-gcc" >> "$GITHUB_ENV" | ||
if: matrix.target == 'aarch64-unknown-linux-musl' | ||
- name: Build | ||
env: | ||
# problems with cross-compiling aarch64 linux with gnu | ||
CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER: /usr/bin/aarch64-linux-gnu-gcc | ||
run: cargo build --manifest-path cpp-linter-cli/Cargo.toml --release --bin cpp-linter-cli --target ${{ matrix.target }} ${{ steps.is-openssl-vendored.outputs.enabled }} | ||
|
||
- name: Prepare artifacts [Windows] | ||
shell: bash | ||
if: matrix.os == 'windows-latest' | ||
id: prep-artifacts-windows | ||
run: | | ||
release_dir="cpp-linter-cli-${{ steps.calc-version.outputs.RELEASE_VERSION }}" | ||
artifact_path="cpp-linter-cli-${{ steps.calc-version.outputs.RELEASE_VERSION }}-${{ matrix.target }}.zip" | ||
echo "ARTIFACT_PATH=$artifact_path" >> $GITHUB_OUTPUT | ||
mkdir $release_dir | ||
cp target/${{ matrix.target }}/release/cpp-linter-cli.exe $release_dir/ | ||
cp LICENSE $release_dir/ | ||
7z a -tzip $artifact_path $release_dir/ | ||
- name: Prepare artifacts [Unix] | ||
shell: bash | ||
id: prep-artifacts-unix | ||
if: matrix.os != 'windows-latest' | ||
run: | | ||
release_dir="cpp-linter-cli-${{ steps.calc-version.outputs.RELEASE_VERSION }}" | ||
artifact_path="cpp-linter-cli-${{ steps.calc-version.outputs.RELEASE_VERSION }}-${{ matrix.target }}.tar.gz" | ||
echo "ARTIFACT_PATH=$artifact_path" >> $GITHUB_OUTPUT | ||
mkdir $release_dir | ||
cp target/${{ matrix.target }}/release/cpp-linter-cli $release_dir/ | ||
cp LICENSE $release_dir | ||
tar -czvf $artifact_path $release_dir/ | ||
- name: Upload artifacts | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: ${{ steps.prep-artifacts-unix.outputs.ARTIFACT_PATH || steps.prep-artifacts-windows.outputs.ARTIFACT_PATH }} | ||
path: ${{ steps.prep-artifacts-unix.outputs.ARTIFACT_PATH || steps.prep-artifacts-windows.outputs.ARTIFACT_PATH }} | ||
if-no-files-found: error | ||
|
||
create-release: | ||
if: startswith(github.ref, 'refs/tags') | ||
runs-on: ubuntu-latest | ||
needs: [create-assets] | ||
permissions: | ||
contents: write | ||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
persist-credentials: false | ||
- name: Install Rust | ||
run: rustup update stable --no-self-update | ||
- run: cargo package | ||
- name: Create a Github Release | ||
if: ${{ startsWith(github.ref, 'refs/tags/v') }} | ||
env: | ||
GH_TOKEN: ${{ github.token }} | ||
run: gh release create ${{ github.ref_name }} --generate-notes | ||
- run: cargo publish | ||
working-directory: cpp-linter-lib | ||
env: | ||
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} | ||
|
||
upload-assets: | ||
needs: [create-release] | ||
runs-on: ubuntu-latest | ||
strategy: | ||
matrix: | ||
target: | ||
- aarch64-unknown-linux-gnu | ||
# skip this target due to cross-compiling OpenSSL for musl C lib | ||
# - aarch64-unknown-linux-musl | ||
- x86_64-unknown-linux-gnu | ||
- x86_64-unknown-linux-musl | ||
- aarch64-apple-darwin | ||
- x86_64-apple-darwin | ||
- x86_64-pc-windows-msvc | ||
steps: | ||
- name: Download build asset | ||
uses: actions/download-artifact@v4 | ||
with: | ||
name: cpp-linter-cli-${{ matrix.target }} | ||
path: dist | ||
- name: Upload release assets | ||
env: | ||
GH_TOKEN: ${{ github.token }} | ||
run: gh release upload ${{ github.ref_name }} dist/cpp-linter-cli${{ contains(matrix.target, 'windows') || '.exe' }}%#%cpp-linter-cli_${{ matrix.target }} --clobber |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
name: Docs | ||
|
||
on: [push, workflow_dispatch] | ||
|
||
jobs: | ||
build: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
|
||
- uses: actions/setup-python@v5 | ||
with: | ||
python-version: 3.x | ||
|
||
- name: Install docs dependencies | ||
working-directory: cpp-linter-py | ||
run: pip install -r docs/requirements.txt | ||
|
||
- name: Build docs | ||
working-directory: cpp-linter-py | ||
run: sphinx-build docs docs/_build/html | ||
|
||
- name: upload docs build as artifact | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: "cpp-linter-py-docs" | ||
path: cpp-linter-py/docs/_build/html | ||
|
||
- name: upload to github pages | ||
# only publish doc changes from main branch | ||
if: github.ref == 'refs/heads/main' | ||
uses: peaceiris/actions-gh-pages@v3 | ||
with: | ||
github_token: ${{ secrets.GITHUB_TOKEN }} | ||
publish_dir: cpp-linter-py/docs/_build/html |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
name: Pre-commit | ||
|
||
on: | ||
push: | ||
pull_request: | ||
types: opened | ||
|
||
jobs: | ||
check-source-files: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- uses: actions/setup-python@v5 | ||
with: | ||
python-version: '3.x' | ||
- run: python3 -m pip install pre-commit | ||
- run: pre-commit run --all-files |
Oops, something went wrong.