Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
c389032
build: initial commit
nuzzles Mar 9, 2024
49e4894
Update Cargo.toml
nuzzles Mar 9, 2024
c5153a8
Update rustfmt.toml
nuzzles Mar 9, 2024
25eb0e0
feat: remove dependabot
nuzzles Mar 9, 2024
c1fc370
refactor: fmt
nuzzles Mar 9, 2024
49e85ad
fix: copyright notice
nuzzles Mar 9, 2024
c7b4754
feat: cargo release
nuzzles Mar 9, 2024
d7946b6
docs: add warning
nuzzles Mar 9, 2024
712ec21
feat: publish on tags
nuzzles Mar 9, 2024
db6af54
docs: update badges
nuzzles Mar 9, 2024
05ac08a
build: pin versions
nuzzles Mar 9, 2024
670d29d
fix: wasm demo
nuzzles Mar 9, 2024
87e35d4
ci: pages release
nuzzles Mar 9, 2024
98491aa
build: initial author list
nuzzles Mar 9, 2024
d6ad412
build: badges
nuzzles Mar 9, 2024
393f974
refactor: imports_granularity
nuzzles Mar 9, 2024
b12f9b3
Update AUTHORS
nuzzles Mar 9, 2024
810e0eb
Update Cargo.toml
nuzzles Mar 9, 2024
0bd330b
Update Cargo.toml
nuzzles Mar 9, 2024
a9673b0
Update .github/copyright.sh
nuzzles Mar 9, 2024
e2a8814
Update .github/copyright.sh
nuzzles Mar 9, 2024
e8a3f7e
Update .github/workflows/pages-release.yml
nuzzles Mar 9, 2024
691abc6
Update examples/run_wasm/src/main.rs
nuzzles Mar 9, 2024
253960a
build: ignore example assets
nuzzles Mar 10, 2024
4440ff4
refactor: remove CI
nuzzles Mar 10, 2024
c61c739
build: release on latest main push instead
nuzzles Mar 11, 2024
63ac057
fix: .gitignore
nuzzles Mar 11, 2024
b176f73
fix: remove trunk
nuzzles Mar 11, 2024
c6911ad
docs: update the badge
nuzzles Mar 11, 2024
139febd
docs: update authors
nuzzles Mar 11, 2024
28f258d
docs: update title
nuzzles Mar 11, 2024
b7f3d07
Update examples/scenes/Cargo.toml
nuzzles Mar 11, 2024
b11b3ec
fix: pin to 0.19.3
nuzzles Mar 11, 2024
1d4c9eb
docs: update
nuzzles Mar 11, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions .github/copyright.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
#!/bin/bash

# If there are new files with headers that can't match the conditions here,
# then the files can be ignored by an additional glob argument via the -g flag.
# For example:
# -g "!src/special_file.rs"
# -g "!src/special_directory"

# Check all the standard Rust source files
output=$(rg "^// Copyright (19|20)[\d]{2} (.+ and )?the Vello Authors( and .+)?$\n^// SPDX-License-Identifier: Apache-2\.0 OR MIT$\n\n" --files-without-match --multiline -g "*.rs" -g "!{shader,src/cpu_shader}" -g "!integrations/vello_svg/src/geom.rs" .)

if [ -n "$output" ]; then
echo -e "The following files lack the correct copyright header:\n"
echo $output
echo -e "\n\nPlease add the following header:\n"
echo "// Copyright $(date +%Y) the Vello Authors"
echo "// SPDX-License-Identifier: Apache-2.0 OR MIT"
echo -e "\n... rest of the file ...\n"
exit 1
fi

# Check all the shaders, both WGSL and CPU shaders in Rust, as they also have Unlicense
output=$(rg "^// Copyright (19|20)[\d]{2} (.+ and )?the Vello Authors( and .+)?$\n^// SPDX-License-Identifier: Apache-2\.0 OR MIT OR Unlicense$\n\n" --files-without-match --multiline -g "{shader,src/cpu_shader}/**/*.{rs,wgsl}" .)

if [ -n "$output" ]; then
echo -e "The following shader files lack the correct copyright header:\n"
echo $output
echo -e "\n\nPlease add the following header:\n"
echo "// Copyright $(date +%Y) the Vello Authors"
echo "// SPDX-License-Identifier: Apache-2.0 OR MIT OR Unlicense"
echo -e "\n... rest of the file ...\n"
exit 1
fi

echo "All files have correct copyright headers."
exit 0

11 changes: 11 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"

- package-ecosystem: "cargo"
directory: "/"
schedule:
interval: "weekly"
172 changes: 172 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,172 @@
env:
# We aim to always test with the latest stable Rust toolchain, however we pin to a specific
# version like 1.70. Note that we only specify MAJOR.MINOR and not PATCH so that bugfixes still
# come automatically. If the version specified here is no longer the latest stable version,
# then please feel free to submit a PR that adjusts it along with the potential clippy fixes.
RUST_STABLE_VER: "1.76" # In quotes because otherwise (e.g.) 1.70 would be interpreted as 1.7


# Rationale
#
# We don't run clippy with --all-targets because then even --lib and --bins are compiled with
# dev dependencies enabled, which does not match how they would be compiled by users.
# A dev dependency might enable a feature of a regular dependency that we need, but testing
# with --all-targets would not catch that. Thus we split --lib & --bins into a separate step.

name: CI

on:
pull_request:
merge_group:

jobs:
rustfmt:
runs-on: ubuntu-latest
name: cargo fmt
steps:
- uses: actions/checkout@v4

- name: install stable toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ env.RUST_STABLE_VER }}
components: rustfmt

- name: cargo fmt
run: cargo fmt --all --check

- name: install ripgrep
run: |
sudo apt update
sudo apt install ripgrep

- name: check copyright headers
run: bash .github/copyright.sh

test-stable:
runs-on: ${{ matrix.os }}
strategy:
matrix:
# We use macos-14 as that is an arm runner. These have the virtgpu support we need
os: [windows-latest, macos-14, ubuntu-latest]
include:
- os: ubuntu-latest
gpu: 'yes'
- os: macos-14
gpu: 'yes'
- os: windows-latest
# TODO: The windows runners theoretically have CPU fallback for GPUs, but
# this failed in initial testing
gpu: 'no'
name: cargo clippy + test
steps:
- uses: actions/checkout@v4

- name: install stable toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ env.RUST_STABLE_VER }}
components: clippy

- name: restore cache
uses: Swatinem/rust-cache@v2

- name: Install native dependencies
if: matrix.os == 'ubuntu-latest'
run: sudo apt-get update; sudo apt-get install --no-install-recommends libasound2-dev libudev-dev

# Adapted from https://github.com/bevyengine/bevy/blob/b446374392adc70aceb92621b080d1a6cf7a7392/.github/workflows/validation-jobs.yml#L74-L79
- name: install xvfb, llvmpipe and lavapipe
if: matrix.os == 'ubuntu-latest'
# https://launchpad.net/~kisak/+archive/ubuntu/turtle
run: |
sudo apt-get update -y -qq
sudo add-apt-repository ppa:kisak/turtle -y
sudo apt-get update
sudo apt install -y xvfb libegl1-mesa libgl1-mesa-dri libxcb-xfixes0-dev mesa-vulkan-drivers

- name: cargo clippy (no default features)
run: cargo clippy --workspace --lib --bins --no-default-features -- -D warnings

- name: cargo clippy (no default features) (auxiliary)
run: cargo clippy --workspace --tests --benches --examples --no-default-features -- -D warnings

- name: cargo clippy (default features)
run: cargo clippy --workspace --lib --bins -- -D warnings

- name: cargo clippy (default features) (auxiliary)
run: cargo clippy --workspace --tests --benches --examples -- -D warnings

- name: cargo clippy (all features)
run: cargo clippy --workspace --lib --bins --all-features -- -D warnings

- name: cargo clippy (all features) (auxiliary)
run: cargo clippy --workspace --tests --benches --examples --all-features -- -D warnings

# At the time of writing, we don't have any tests. Nevertheless, it's better to still run this
- name: cargo test
run: cargo test --workspace --all-features
env:
VELLO_CI_GPU_SUPPORT: ${{ matrix.gpu }}

clippy-stable-wasm:
runs-on: ubuntu-latest
name: cargo test (wasm32)
steps:
- uses: actions/checkout@v4

- name: restore cache
uses: Swatinem/rust-cache@v2

- name: install stable toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ env.RUST_STABLE_VER }}
targets: wasm32-unknown-unknown
components: clippy

- name: cargo clippy (wasm)
run: cargo clippy --all-targets --target wasm32-unknown-unknown --workspace -- -D warnings

android-stable-check:
runs-on: ubuntu-latest
name: cargo check (aarch64-android)
steps:
- uses: actions/checkout@v4

- name: restore cache
uses: Swatinem/rust-cache@v2

- name: install stable toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ env.RUST_STABLE_VER }}
targets: aarch64-linux-android

- name: install cargo apk
run: cargo install cargo-apk

- name: cargo apk check (android)
run: cargo apk check -p with_winit --lib
env:
# This is a bit of a hack, but cargo apk doesn't seem to allow customising this
RUSTFLAGS: '-D warnings'

docs:
name: cargo doc
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [windows-latest, macos-latest, ubuntu-latest]
steps:
- uses: actions/checkout@v4

- name: install nightly toolchain
uses: dtolnay/rust-toolchain@nightly

- name: restore cache
uses: Swatinem/rust-cache@v2

# We test documentation using nightly to match docs.rs. This prevents potential breakages
- name: cargo doc
run: cargo doc --workspace --all-features --no-deps --document-private-items -Zunstable-options -Zrustdoc-scrape-examples
30 changes: 30 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries
# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html
Cargo.lock

# Generated by Cargo
# will have compiled files and executables
target/

# Generated by Trunk
dist/

# These are backup files generated by rustfmt
**/*.rs.bk

# Some people use VSCode
/.vscode/

# Some people use IntelliJ with Rust
/.idea/
*.iml

# Some people use pre-commit
.pre-commit-config.yaml
.pre-commit-config.yml

# Some people have Apple
.DS_Store

# Generated on wasm-pack failure
**/unsupported.js
36 changes: 36 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
[workspace]
resolver = "2"
members = ["examples/with_winit", "examples/run_wasm", "examples/scenes"]

[workspace.package]
edition = "2021"
version = "0.1.0"
license = "MIT OR Apache-2.0 AND MPL-2"
repository = "https://github.com/linebender/vello_svg"

[workspace.dependencies]
vello = "0.1"

[package]
name = "vello_svg"
description = "An SVG integration for vello."
categories = ["rendering", "graphics"]
keywords = ["2d", "vector-graphics", "vello", "svg"]
version.workspace = true
license.workspace = true
edition.workspace = true
repository.workspace = true

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
vello = { workspace = true }
usvg = "0.40"
image = { version = "0.24", default-features = false, features = [
"png",
"jpeg",
"gif",
] }


[target.'cfg(target_arch = "wasm32")'.dev-dependencies]
wasm-bindgen-test = "0.3"
Loading