Skip to content
Merged
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
12 changes: 6 additions & 6 deletions .github/actions/setup-rust/action.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -14,9 +14,9 @@ inputs:
required: false
default: "common"
cargo-tools:
description: Space-separated cargo bin tools to install.
description: Comma-separated cargo bin tools to install.
required: false
default: "cargo-deny cargo-audit cargo-machete cargo-nextest"
default: ""
cache-key:
description: Extra cache key suffix.
required: false
Expand All@@ -32,7 +32,7 @@ runs:
set -euxo pipefail
sudo apt-get update -qq
# base
pkgs=(build-essential pkg-config curl git ca-certificates gettext xdg-utils libssl-dev)
pkgs=(build-essential pkg-config curl git ca-certificates gettext xdg-utils libssl-dev dbus-daemon imagemagick 7zip desktop-file-utils)
for bundle in ${{ inputs.system-libs }}; do
case "$bundle" in
common) ;;
Expand DownExpand Up@@ -60,7 +60,7 @@ runs:
rustup default "${{ inputs.toolchain }}"
else
# picks rust-toolchain.toml automatically
rustup show active-toolchain || rustup toolchain install stable
rustup show
fi
rustc -V
cargo -V
Expand All@@ -81,7 +81,7 @@ runs:

# cargo helpers — taiki-e/install-action is precompiled & fast
- name: install cargo tools
# taiki-e/install-action pinned to commit SHA (v2.44.x range)
uses: taiki-e/install-action@9ca1734d8940023f074414ee621fd530c4ce10f2
if: inputs.cargo-tools != ''
uses: taiki-e/install-action@84f5ac3124727fb3d284d4d22ee9ab3654fd09a6
with:
tool: ${{ inputs.cargo-tools }}
57 changes: 40 additions & 17 deletions .github/workflows/ci.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -26,6 +26,21 @@ env:
ENABLE_MIRI: "false"

jobs:
configuration:
runs-on: ubuntu-24.04
outputs:
project-kind: ${{ steps.settings.outputs.project-kind }}
enable-semver: ${{ steps.settings.outputs.enable-semver }}
enable-miri: ${{ steps.settings.outputs.enable-miri }}
steps:
- id: settings
run: |
{
echo "project-kind=$PROJECT_KIND"
echo "enable-semver=$ENABLE_SEMVER"
echo "enable-miri=$ENABLE_MIRI"
} >> "$GITHUB_OUTPUT"

shellcheck:
runs-on: ubuntu-24.04
steps:
Expand All@@ -39,7 +54,7 @@ jobs:
if [ "${#scripts[@]}" -eq 0 ]; then echo "no shell scripts"; exit 0; fi
shellcheck -e SC1091 -S warning "${scripts[@]}"
fmt:
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
- uses: ./.github/actions/setup-rust
Expand All@@ -49,7 +64,7 @@ jobs:
- run: cargo fmt --all -- --check

clippy:
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
- uses: ./.github/actions/setup-rust
Expand All@@ -59,55 +74,59 @@ jobs:
- run: cargo clippy --workspace --all-targets --all-features -- -D warnings

test:
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
- uses: ./.github/actions/setup-rust
with:
system-libs: ${{ env.SYSTEM_LIBS }}
cache-key: test
cargo-tools: cargo-nextest
# /tmp is noexec on hosts — skip --doc explicitly
- name: nextest (fallback to cargo test)
run: |
set -euxo pipefail
if command -v cargo-nextest >/dev/null 2>&1; then
cargo nextest run --all-features --workspace
dbus-run-session -- cargo nextest run --all-features --workspace --locked
else
cargo test --all-features --tests --workspace
dbus-run-session -- cargo test --all-features --tests --workspace --locked
fi

deny:
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
- uses: ./.github/actions/setup-rust
with:
system-libs: common
cache-key: deny
cargo-tools: cargo-deny
- run: cargo deny check advisories bans licenses sources

audit:
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
- uses: ./.github/actions/setup-rust
with:
system-libs: common
cache-key: audit
cargo-tools: cargo-audit
- run: cargo audit -D warnings

machete:
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
- uses: ./.github/actions/setup-rust
with:
system-libs: common
cache-key: machete
cargo-tools: cargo-machete
- run: cargo machete --with-metadata

doc:
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
env:
RUSTDOCFLAGS: "-D warnings"
steps:
Expand All@@ -120,8 +139,9 @@ jobs:

semver-checks:
# libs only
if: ${{ env.ENABLE_SEMVER == 'true' }}
runs-on: ubuntu-24.04
needs: configuration
if: ${{ needs.configuration.outputs.enable-semver == 'true' }}
runs-on: ubuntu-26.04
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
with: { fetch-depth: 0 }
Expand All@@ -134,8 +154,9 @@ jobs:

miri:
# pure-Rust libs only
if: ${{ env.ENABLE_MIRI == 'true' }}
runs-on: ubuntu-24.04
needs: configuration
if: ${{ needs.configuration.outputs.enable-miri == 'true' }}
runs-on: ubuntu-26.04
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
- uses: ./.github/actions/setup-rust
Expand All@@ -150,7 +171,8 @@ jobs:

complexity:
# apps only — CCN + duplication
if: ${{ env.PROJECT_KIND == 'app' }}
needs: configuration
if: ${{ needs.configuration.outputs.project-kind == 'app' }}
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
Expand DownExpand Up@@ -195,8 +217,9 @@ jobs:

budgets:
# apps only — binary size + idle RSS
if: ${{ env.PROJECT_KIND == 'app' }}
runs-on: ubuntu-24.04
needs: configuration
if: ${{ needs.configuration.outputs.project-kind == 'app' }}
runs-on: ubuntu-26.04
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
- uses: ./.github/actions/setup-rust
Expand DownExpand Up@@ -239,7 +262,7 @@ jobs:
atspi-smoke:
# opt-in via label ci:atspi
if: ${{ contains(github.event.pull_request.labels.*.name, 'ci:atspi') }}
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
- uses: ./.github/actions/setup-rust
Expand Down
29 changes: 18 additions & 11 deletions .github/workflows/rust-quality.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -8,7 +8,7 @@ on:

jobs:
quality:
runs-on: ubuntu-latest
runs-on: ubuntu-26.04
timeout-minutes: 30
env:
CARGO_TERM_COLOR: always
Expand All@@ -22,45 +22,52 @@ jobs:
sudo apt-get install -y --no-install-recommends \
build-essential pkg-config \
libgtk-4-dev libadwaita-1-dev libwebkitgtk-6.0-dev \
libgirepository1.0-dev \
gettext
libssl-dev gettext dbus-daemon \
imagemagick 7zip desktop-file-utils xdg-utils

- name: Verify native library requirements
run: pkg-config --print-errors --exists 'gtk4 >= 4.22' 'libadwaita-1 >= 1.9' 'webkitgtk-6.0 >= 2.50'

- name: Install Rust toolchain (pinned via rust-toolchain.toml)
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy
run: rustup show

- uses: Swatinem/rust-cache@v2

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

- name: clippy (deny warnings)
run: cargo clippy --workspace --all-targets --locked -- -D warnings
run: cargo clippy --workspace --all-targets --all-features --locked -- -D warnings

- name: build (release, locked)
run: cargo build --release --workspace --locked

- name: test (release)
run: cargo test --release --workspace --locked
run: dbus-run-session -- cargo test --release --workspace --locked

- name: cargo-deny (licences + advisories)
uses: EmbarkStudios/cargo-deny-action@v2
with:
command: check
arguments: --all-features

- name: Install cargo-machete
uses: taiki-e/install-action@84f5ac3124727fb3d284d4d22ee9ab3654fd09a6
with:
tool: cargo-machete

- name: cargo-machete (unused deps)
uses: bnjbvr/cargo-machete@v0.7.0
run: cargomachete --with-metadata

- name: i18n POT freshness
run: |
if ! command -v xtr >/dev/null 2>&1; then
cargo install --locked xtr
fi
bash scripts/update-translations.sh
if ! git diff --quiet -- po/biglinux-webapps.pot; then
git show HEAD:po/biglinux-webapps.pot | sed '/^"POT-Creation-Date:/d' > "$RUNNER_TEMP/committed.pot"
sed '/^"POT-Creation-Date:/d' po/biglinux-webapps.pot > "$RUNNER_TEMP/generated.pot"
if ! diff -u "$RUNNER_TEMP/committed.pot" "$RUNNER_TEMP/generated.pot"; then
echo "::error::POT is stale; run scripts/update-translations.sh and commit."
git --no-pager diff -- po/biglinux-webapps.pot | head -200
exit 1
fi
15 changes: 7 additions & 8 deletions Cargo.lock

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

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line numberDiff line numberDiff line change
Expand Up@@ -39,7 +39,7 @@ clap = { version = "4", features = ["derive"] }
reqwest = { version = "0.12", default-features = false, features = ["native-tls", "blocking", "gzip"] }
scraper = "0.26"
url = "2"
gettextrs = { package = "gettext-rs", version = "0.7", features = ["gettext-system"] }
gettextrs = { package = "gettext-rs", version = "0.8", features = ["gettext-system"] }
toml = "0.8"
tempfile = "3"

Expand Down
7 changes: 5 additions & 2 deletions README.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -59,10 +59,13 @@ Requires a Rust toolchain (pinned in `rust-toolchain.toml`) plus the GTK4 /
libadwaita / WebKitGTK 6.0 dev libraries.

```bash
cargo build --release --workspace --locked
./target/release/big-webapps-gui
./scripts/build-local.sh
./target/local/bin/big-webapps-gui
```

This builds the binaries and current gettext catalogs under `target/local`.
Requires `msgfmt` from gettext. System-installed files are unchanged.

Other binaries: `big-webapps-viewer` (WebKit window), `big-webapps-exec`
(launcher shim).

Expand Down
Loading
Loading