Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
39 changes: 18 additions & 21 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -86,14 +86,16 @@ jobs:
uses: actions-rs/clippy-check@v1
if: env.GITHUB_TOKEN != null
with:
args: --all-targets --features prometheus,alpha,binary-set-pixel,binary-sync-pixels,egui,winit,vnc,ndi -- -D warnings
args: --all-targets --features prometheus,binary-set-pixel,egui,winit,vnc,ndi -- -D warnings
token: ${{ secrets.GITHUB_TOKEN }}
- name: Run clippy (no default features)
run: cargo clippy --all-targets --no-default-features -- -D warnings
- name: Run clippy (all compatible features)
run: cargo clippy --all-targets --features prometheus,alpha,binary-set-pixel,binary-sync-pixels,egui,winit,vnc,ndi -- -D warnings
run: cargo clippy --all-targets --features prometheus,binary-set-pixel,egui,winit,vnc,ndi -- -D warnings
- name: Run clippy on the time-tracking feature (mutually exclusive with alpha and binary-sync-pixels)
run: cargo clippy --all-targets --features prometheus,binary-set-pixel,egui,winit,vnc,ndi,time-tracking -- -D warnings
- name: Run clippy (all compatible features for breakwater)
run: cargo clippy -p breakwater --features prometheus,alpha,binary-set-pixel,binary-sync-pixels,egui,winit,vnc,ndi -- -D warnings

run_rustdoc:
name: Run RustDoc
Expand Down Expand Up @@ -127,23 +129,16 @@ jobs:
run: sudo apt update && sudo apt install -y libvncserver-dev
- name: Install NDI SDK
uses: ./.github/actions/install-ndi
- name: Test with all features turned off
uses: actions-rs/cargo@v1
with:
command: test
args: --no-default-features --all-targets
# We can't use `--all-features`: `time-tracking` is mutually exclusive with `alpha` and
# `binary-sync-pixels`. So we test explicit, valid combinations.
- name: Run tests (no default features)
run: cargo test --all-targets --no-default-features
- name: Run tests (all compatible features)
run: cargo test --all-targets --features prometheus,binary-set-pixel,egui,winit,vnc,ndi
- name: Run tests on the time-tracking feature (mutually exclusive with alpha and binary-sync-pixels)
run: cargo test --all-targets --features prometheus,binary-set-pixel,egui,winit,vnc,ndi,time-tracking
- name: Test breakwater with all compatible features
uses: actions-rs/cargo@v1
with:
command: test
args: --features prometheus,alpha,binary-set-pixel,binary-sync-pixels,egui,winit,vnc,ndi --all-targets
run: cargo test -p breakwater --features prometheus,alpha,binary-set-pixel,binary-sync-pixels,egui,winit,vnc,ndi
- name: Test breakwater-parser with the time-tracking feature (mutually exclusive with alpha and binary-sync-pixels)
uses: actions-rs/cargo@v1
with:
command: test
args: --features prometheus,binary-set-pixel,egui,winit,vnc,ndi,time-tracking --all-targets
run: cargo test -p breakwater-parser --features time-tracking,binary-set-pixel

run_tests_for_feature_combinations:
name: Run tests for all feature combinations
Expand Down Expand Up @@ -209,16 +204,18 @@ jobs:
with:
command: build
args: --target=${{ matrix.target }} --no-default-features
- if: runner.os == 'Linux'
- name: Build on Linux (all compatible features)
if: runner.os == 'Linux'
uses: actions-rs/cargo@v1
with:
command: build
# ndi-sdk-sys (behind the ndi features) only supports Linux x86 (no aarch64) so far.
# We already run the tests on x86 Linux with all features above.
args: --target=${{ matrix.target }} --features prometheus,alpha,binary-set-pixel,binary-sync-pixels,egui,winit,vnc
args: --target=${{ matrix.target }} --features prometheus,binary-set-pixel,egui,winit,vnc
# I couldn't get pkg-config to work on macOS and Windows, so we omit the vnc and ndi feature
- if: runner.os == 'macOS' || runner.os == 'Windows'
- name: Build on Windows/MacOS (all compatible features)
if: runner.os == 'Windows' || runner.os == 'macOS'
uses: actions-rs/cargo@v1
with:
command: build
args: --target=${{ matrix.target }} --no-default-features --features prometheus,alpha,binary-set-pixel,binary-sync-pixels,egui,winit
args: --target=${{ matrix.target }} --no-default-features --features prometheus,binary-set-pixel,egui,winit
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@
.vscode/
statistics.json
/pixelflut/
worker-id
119 changes: 118 additions & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 5 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ members = [
"breakwater-parser",
"breakwater",
"breakwater-egui-overlay",
"breakwater-parser-c-bindings"
"breakwater-parser-c-bindings",
"breakwater-deich",
]
resolver = "2"

Expand Down Expand Up @@ -34,6 +35,7 @@ number_prefix = "0.4"
ndi-sdk-sys = "0.1.1"
page_size = "0.6"
pixelbomber = "1.1"
postcard = { version = "1.1", features = ["use-std"] }
prometheus_exporter = "0.8"
rstest = "0.26"
rusttype = "0.9"
Expand All @@ -48,12 +50,14 @@ tokio-stream = { version = "0.1", features = ["net"] }
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
trait-variant = "0.1"
uuid = { version = "1.23", features = ["v4", "serde"] }
vncserver = "0.2"
winit = "0.30"

# Uses the given path when used locally, and uses the specified version from crates.io when published.
breakwater-core = { path = "breakwater-core", version = "0.22.0", default-features = false }
breakwater-parser = { path = "breakwater-parser", version = "0.22.0", default-features = false }
breakwater = { path = "breakwater", version = "0.22.0", default-features = false }
breakwater-egui-overlay = { path = "breakwater-egui-overlay", version = "0.22.0", default-features = false }

[profile.dev]
Expand Down
40 changes: 40 additions & 0 deletions breakwater-deich/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
[package]
name = "breakwater-deich"
description = "Distributed Pixelflut server"
version.workspace = true
authors.workspace = true
license.workspace = true
edition.workspace = true
repository.workspace = true

[[bin]]
name = "breakwater-deich"
path = "src/main.rs"

[dependencies]
breakwater-parser = { workspace = true, features = ["time-tracking"] }
breakwater = { workspace = true, features = ["prometheus"] }

clap.workspace = true
color-eyre.workspace = true
postcard.workspace = true
prometheus_exporter.workspace = true
serde.workspace = true
tokio.workspace = true
tracing.workspace = true
uuid.workspace = true

[features]
# VNC and NDI require shared libraries to be installed, so we don't enable them by default
# Yes, egui and winit require a graphical environment, but most people getting started with
# breakwater will likely do that on a desktop, servers admins generally know what they are doing (tm).
default = ["egui", "winit"]

binary-set-pixel = ["breakwater/binary-set-pixel", "breakwater-parser/binary-set-pixel"]
egui = ["breakwater/egui"]
winit = ["breakwater/winit"]
vnc = ["breakwater/vnc"]
ndi = ["breakwater/ndi"]

[lints]
workspace = true
Loading
Loading