Skip to content

Commit cbd821f

Browse files
UnbreakableMJclaude
andcommitted
release: v0.8.3 — bin-per-target matrix + fix FreeBSD upload path
v0.8.2 shipped 6 of 9 expected release assets. Three silent "No files were found" upload warnings: 1. `BOOTRISCV64.EFI` + `BOOTLOONGARCH64.EFI` — targets end in `-unknown-none[-elf]` (bare-metal), so cargo emits a plain ELF named `zamak-uefi` with no `.efi` extension. The `*.efi` glob matched nothing. Added a `bin:` key to the matrix and upload the exact file per target (`.efi` for UEFI targets, no-ext for bare-metal). 2. `zamak-freebsd-x86_64` — the `cp target/release/zamak /tmp/zamak-freebsd/` ran inside the `vmactions/freebsd-vm` VM. `/tmp` isn't synced back to the runner. `target/` IS (it's inside the checkout), so upload directly from `target/release/zamak`. Also added `if-no-files-found: error` to every `upload-artifact@v4` step so future path drifts fail the job instead of silently skipping. 11 workspace crates bumped 0.8.2 → 0.8.3. No code changes. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 2854d30 commit cbd821f

15 files changed

Lines changed: 91 additions & 37 deletions

File tree

.forgejo/workflows/release.yml

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,22 @@ jobs:
1919
fail-fast: false
2020
matrix:
2121
include:
22+
# `bin` is the exact filename cargo emits:
23+
# `*-unknown-uefi` targets produce `.efi`; bare-metal
24+
# (`-unknown-none*`) targets produce an ELF with no
25+
# extension (just the bin-crate name `zamak-uefi`).
2226
- target: x86_64-unknown-uefi
2327
artifact: BOOTX64.EFI
28+
bin: zamak-uefi.efi
2429
- target: aarch64-unknown-uefi
2530
artifact: BOOTAA64.EFI
31+
bin: zamak-uefi.efi
2632
- target: riscv64gc-unknown-none-elf
2733
artifact: BOOTRISCV64.EFI
34+
bin: zamak-uefi
2835
- target: loongarch64-unknown-none
2936
artifact: BOOTLOONGARCH64.EFI
37+
bin: zamak-uefi
3038
# BOOTIA32.EFI (i686-unknown-uefi) is intentionally omitted:
3139
# zamak-uefi/src/paging.rs `compile_error!`s for
3240
# `target_arch = "x86"` because the IA-32 paging path was
@@ -46,7 +54,8 @@ jobs:
4654
- uses: actions/upload-artifact@v4
4755
with:
4856
name: ${{ matrix.artifact }}
49-
path: target/${{ matrix.target }}/release/*.efi
57+
path: target/${{ matrix.target }}/release/${{ matrix.bin }}
58+
if-no-files-found: error
5059

5160
# `bios-stage3` (zamak-bios.sys BIOS stage-3 binary) is intentionally
5261
# not built here. `cargo build -p zamak-bios --release` for the host
@@ -74,6 +83,7 @@ jobs:
7483
with:
7584
name: ${{ matrix.name }}
7685
path: target/release/zamak
86+
if-no-files-found: error
7787

7888
# Optional FreeBSD CLI build. Runs through `vmactions/freebsd-vm`,
7989
# matches the FreeBSD leg of the CI test matrix so the host CLI
@@ -94,12 +104,16 @@ jobs:
94104
run: |
95105
. $HOME/.cargo/env
96106
cargo build -p zamak-cli --release
97-
mkdir -p /tmp/zamak-freebsd
98-
cp target/release/zamak /tmp/zamak-freebsd/
107+
# `vmactions/freebsd-vm@v1` mounts the checkout into the VM
108+
# and syncs the workspace back on exit, so the binary built at
109+
# `target/release/zamak` ends up at the same relative path on
110+
# the runner filesystem. `/tmp` inside the VM is NOT synced —
111+
# the previous `cp /tmp/…` attempt silently dropped the artifact.
99112
- uses: actions/upload-artifact@v4
100113
with:
101114
name: zamak-freebsd-x86_64
102-
path: /tmp/zamak-freebsd/zamak
115+
path: target/release/zamak
116+
if-no-files-found: error
103117

104118
publish:
105119
runs-on: ubuntu-latest

.github/workflows/release.yml

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,22 @@ jobs:
1919
fail-fast: false
2020
matrix:
2121
include:
22+
# `bin` is the exact filename cargo emits:
23+
# `*-unknown-uefi` targets produce `.efi`; bare-metal
24+
# (`-unknown-none*`) targets produce an ELF with no
25+
# extension (just the bin-crate name `zamak-uefi`).
2226
- target: x86_64-unknown-uefi
2327
artifact: BOOTX64.EFI
28+
bin: zamak-uefi.efi
2429
- target: aarch64-unknown-uefi
2530
artifact: BOOTAA64.EFI
31+
bin: zamak-uefi.efi
2632
- target: riscv64gc-unknown-none-elf
2733
artifact: BOOTRISCV64.EFI
34+
bin: zamak-uefi
2835
- target: loongarch64-unknown-none
2936
artifact: BOOTLOONGARCH64.EFI
37+
bin: zamak-uefi
3038
# BOOTIA32.EFI (i686-unknown-uefi) is intentionally omitted:
3139
# zamak-uefi/src/paging.rs `compile_error!`s for
3240
# `target_arch = "x86"` because the IA-32 paging path was
@@ -46,7 +54,8 @@ jobs:
4654
- uses: actions/upload-artifact@v4
4755
with:
4856
name: ${{ matrix.artifact }}
49-
path: target/${{ matrix.target }}/release/*.efi
57+
path: target/${{ matrix.target }}/release/${{ matrix.bin }}
58+
if-no-files-found: error
5059

5160
# `bios-stage3` (zamak-bios.sys BIOS stage-3 binary) is intentionally
5261
# not built here. `cargo build -p zamak-bios --release` for the host
@@ -74,6 +83,7 @@ jobs:
7483
with:
7584
name: ${{ matrix.name }}
7685
path: target/release/zamak
86+
if-no-files-found: error
7787

7888
# Optional FreeBSD CLI build. Runs through `vmactions/freebsd-vm`,
7989
# matches the FreeBSD leg of the CI test matrix so the host CLI
@@ -94,12 +104,16 @@ jobs:
94104
run: |
95105
. $HOME/.cargo/env
96106
cargo build -p zamak-cli --release
97-
mkdir -p /tmp/zamak-freebsd
98-
cp target/release/zamak /tmp/zamak-freebsd/
107+
# `vmactions/freebsd-vm@v1` mounts the checkout into the VM
108+
# and syncs the workspace back on exit, so the binary built at
109+
# `target/release/zamak` ends up at the same relative path on
110+
# the runner filesystem. `/tmp` inside the VM is NOT synced —
111+
# the previous `cp /tmp/…` attempt silently dropped the artifact.
99112
- uses: actions/upload-artifact@v4
100113
with:
101114
name: zamak-freebsd-x86_64
102-
path: /tmp/zamak-freebsd/zamak
115+
path: target/release/zamak
116+
if-no-files-found: error
103117

104118
publish:
105119
runs-on: ubuntu-latest

CHANGELOG.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,32 @@ All dates use ISO 8601 format (YYYY-MM-DD).
1212

1313
## [Unreleased]
1414

15+
## [0.8.3] - 2026-04-24
16+
17+
Third release-workflow patch. v0.8.2 produced 6/9 expected assets
18+
on the GH Release page. Three artifacts (`BOOTRISCV64.EFI`,
19+
`BOOTLOONGARCH64.EFI`, `zamak-freebsd-x86_64`) failed to upload
20+
with silent `"No files were found"` warnings.
21+
22+
### Fixed
23+
24+
- **`build-artifacts` upload path** — was `*.efi`, but the two
25+
bare-metal targets (`riscv64gc-unknown-none-elf`,
26+
`loongarch64-unknown-none`) produce a plain ELF named
27+
`zamak-uefi` (no `.efi` extension). Added an explicit `bin:`
28+
matrix key per target — `zamak-uefi.efi` for the two UEFI
29+
targets, `zamak-uefi` for bare-metal — and point the upload
30+
at `target/<target>/release/<bin>` exactly.
31+
- **`cli-freebsd` upload path** — was `/tmp/zamak-freebsd/zamak`,
32+
which is VM-internal and not synced back to the runner.
33+
`vmactions/freebsd-vm@v1` DOES sync the `target/` directory
34+
out (it lives inside the checkout), so upload directly from
35+
`target/release/zamak` and drop the no-op `cp` into `/tmp`.
36+
- **All `upload-artifact@v4` steps** — added
37+
`if-no-files-found: error`. Future path drifts will fail the
38+
job instead of silently skipping the upload with a warning,
39+
so we don't release ship short again without noticing.
40+
1541
## [0.8.2] - 2026-04-24
1642

1743
Second release-workflow patch. v0.8.1 successfully published a GH

Cargo.lock

Lines changed: 10 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

zamak-bios/Cargo.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
[package]
44
name = "zamak-bios"
5-
version = "0.8.2"
5+
version = "0.8.3"
66
edition = "2021"
77
license = "GPL-3.0-or-later"
88

@@ -13,8 +13,8 @@ license = "GPL-3.0-or-later"
1313
smp = []
1414

1515
[dependencies]
16-
zamak-core = { path = "../zamak-core", version = "0.8.2" }
17-
zamak-theme = { path = "../zamak-theme", version = "0.8.2" }
16+
zamak-core = { path = "../zamak-core", version = "0.8.3" }
17+
zamak-theme = { path = "../zamak-theme", version = "0.8.3" }
1818
log = "0.4"
1919
x86_64 = { version = "0.15", default-features = false, features = ["instructions"] }
2020
limine-protocol = "0.5"

zamak-cli/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
[package]
44
name = "zamak-cli"
5-
version = "0.8.2"
5+
version = "0.8.3"
66
edition = "2021"
77
description = "Host-side CLI tool for ZAMAK bootloader (MBR install, config enrollment, SBOM)"
88
license = "GPL-3.0-or-later"

zamak-core/Cargo.toml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22

33
[package]
44
name = "zamak-core"
5-
version = "0.8.2"
5+
version = "0.8.3"
66
edition = "2021"
77
license = "GPL-3.0-or-later"
88

99
[dependencies]
10-
zamak-proto = { path = "../zamak-proto", version = "0.8.2" }
11-
zamak-macros = { path = "../zamak-macros", version = "0.8.2" }
12-
zamak-theme = { path = "../zamak-theme", version = "0.8.2" }
10+
zamak-proto = { path = "../zamak-proto", version = "0.8.3" }
11+
zamak-macros = { path = "../zamak-macros", version = "0.8.3" }
12+
zamak-theme = { path = "../zamak-theme", version = "0.8.3" }
1313
limine-protocol = "0.5"
1414
goblin = { version = "0.7", default-features = false, features = ["elf64", "elf32", "endian_fd", "alloc"] }
1515

zamak-decompressor/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
[package]
44
name = "zamak-decompressor"
5-
version = "0.8.2"
5+
version = "0.8.3"
66
edition = "2021"
77
description = "BIOS stage2 decompressor — inflates zamak-bios.sys to a fixed physical address"
88
license = "GPL-3.0-or-later"

zamak-macros/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
[package]
44
name = "zamak-macros"
5-
version = "0.8.2"
5+
version = "0.8.3"
66
edition = "2021"
77
description = "Procedural macros for ZAMAK bootloader safety annotations"
88
license = "GPL-3.0-or-later"

zamak-proto/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
[package]
44
name = "zamak-proto"
5-
version = "0.8.2"
5+
version = "0.8.3"
66
edition = "2021"
77
description = "Limine Protocol types and request/response structures for ZAMAK"
88
license = "GPL-3.0-or-later"

0 commit comments

Comments
 (0)