Skip to content

Commit b4ddf26

Browse files
oetikerclaude
andcommitted
feat: build for illumos, and keep customer identifiers out of the repo
Adds x86_64-unknown-illumos as a cross-compilation target (official cross-rs image) and to the release matrix. tvision-rs's os-clipboard feature is dropped on illumos only, because arboard pulls in Wayland, which does not build there; the OSC 52 clipboard path remains, which is the one that works over ssh anyway. Also removes a customer's identifiers from tracked files. They had reached the published mdBook and a unit test, while the corresponding config file was already gitignored for exactly that reason. The stale controller handoff was entirely customer-operational and is dropped; its content moves to a private wiki. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
1 parent 9b94541 commit b4ddf26

12 files changed

Lines changed: 61 additions & 194 deletions

File tree

.github/workflows/release.yml

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,10 +100,17 @@ jobs:
100100
os: ubuntu-latest
101101
archive: tar.gz
102102
cross: true
103+
rustflags: "-C target-feature=+crt-static"
103104
- target: aarch64-unknown-linux-musl
104105
os: ubuntu-latest
105106
archive: tar.gz
106107
cross: true
108+
rustflags: "-C target-feature=+crt-static"
109+
- target: x86_64-unknown-illumos
110+
os: ubuntu-latest
111+
archive: tar.gz
112+
cross: true
113+
rustflags: ""
107114
- target: x86_64-apple-darwin
108115
os: macos-latest
109116
archive: tar.gz
@@ -123,14 +130,14 @@ jobs:
123130
with:
124131
targets: ${{ matrix.target }}
125132

126-
- name: Install cross (Linux musl)
133+
- name: Install cross (Linux musl, illumos)
127134
if: matrix.cross
128135
run: cargo install cross --git https://github.com/cross-rs/cross
129136

130137
- name: Build binary
131138
run: |
132139
if [ "${{ matrix.cross }}" = "true" ]; then
133-
RUSTFLAGS="-C target-feature=+crt-static" cross build --release --target ${{ matrix.target }}
140+
RUSTFLAGS="${{ matrix.rustflags }}" cross build --release --target ${{ matrix.target }}
134141
else
135142
cargo build --release --target ${{ matrix.target }}
136143
fi

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,10 @@
1010
docs/book/
1111
.claude
1212
*~
13+
# Customer directory configs: real base DNs, bind DNs, Samba SIDs and uid/gid
14+
# ranges. This repo is public — these live only on the host they serve.
1315
examples/ds-carbo-feh.toml
16+
examples/ds-fugu-speag.toml
1417

1518
# SDD / superpowers scratch artifacts
1619
.superpowers/

CHANGES.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,12 @@ All notable changes to eDAPtor are documented here. The format follows
88

99
### New
1010

11+
- **illumos / OmniOS builds.** Releases now include an
12+
`x86_64-unknown-illumos` binary, so eDAPtor runs on illumos hosts such as
13+
OmniOS. The OS-native clipboard is not compiled in on that platform (its
14+
Wayland dependency does not build there); clipboard copy falls back to OSC 52,
15+
which is what works over ssh regardless.
16+
1117
### Changed
1218

1319
### Fixed

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,17 @@ oid = "0.3"
2323
unicode-width = "0.2"
2424
# tvision-rs is the TUI framework driving the edaptor browser (tree / leaf list / entry form).
2525
# 0.14.0: native InputLine masking + RevealEye/MaskedInput (replaces the local password mirror).
26+
27+
# tvision-rs's default `os-clipboard` feature pulls arboard -> wl-clipboard-rs ->
28+
# wayland-backend, which cannot compile on illumos. Dropping it leaves the OSC 52
29+
# rung of the clipboard chain — the one that actually works over ssh, which is how
30+
# edaptor is driven on illumos. Every other platform keeps the native clipboard.
31+
[target.'cfg(not(target_os = "illumos"))'.dependencies]
2632
tvision-rs = "0.14.0"
2733

34+
[target.'cfg(target_os = "illumos")'.dependencies]
35+
tvision-rs = { version = "0.14.0", default-features = false }
36+
2837
[dev-dependencies]
2938
tempfile = "3"
3039

Cross.toml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,13 @@ image = "ghcr.io/cross-rs/x86_64-unknown-linux-musl:main"
77
[target.aarch64-unknown-linux-musl]
88
image = "ghcr.io/cross-rs/aarch64-unknown-linux-musl:main"
99

10+
# illumos (e.g. OmniOS). NOTE: unlike the musl targets this is a dynamically
11+
# linked binary — illumos has no static libc, so do NOT pass +crt-static here.
12+
# Pinned to 0.2.5 deliberately (unlike the musl images' :main) — the illumos
13+
# image is newer and less exercised upstream, so it is not floated. Do not
14+
# "fix" this to match the musl targets.
15+
[target.x86_64-unknown-illumos]
16+
image = "ghcr.io/cross-rs/x86_64-unknown-illumos:0.2.5"
17+
1018
[build.env]
1119
passthrough = ["RUSTFLAGS"]

docs/controller-handoff.md

Lines changed: 0 additions & 173 deletions
This file was deleted.

docs/src/configuration/overview.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ Add a `[meta]` block to make a config identifiable in the picker:
2929

3030
```toml
3131
[meta]
32-
name = "carbo-link production"
33-
description = "dc=carbo-link,dc=com via ldapi (ds-carbo-feh)"
32+
name = "example-corp production"
33+
description = "dc=example,dc=com via ldapi (ds-example)"
3434
```
3535

3636
Both fields are optional.

docs/src/getting-started/installation.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,13 @@ self-contained `musl` release binaries can be produced without vendoring a TLS
2323
library; pre-built static binaries will be published via GitHub Releases once
2424
the project is pushed.
2525

26+
The release workflow's build matrix is configured to produce binaries for
27+
Linux (`x86_64`/`aarch64`, static musl), macOS (Intel and Apple Silicon),
28+
Windows, and **illumos** (`x86_64`, e.g. OmniOS) — but no release has shipped
29+
yet, so no binaries have actually been published for any of these targets. The
30+
illumos binary is dynamically linked — illumos has no static libc — and links
31+
only against base system libraries.
32+
2633
## Configuration file
2734

2835
eDAPtor reads a single TOML configuration file. Point it at one explicitly with

docs/superpowers/plans/2026-06-09-config-discovery.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,8 @@ fn meta_config_parses_both_fields() {
5858
let cfg: Config = toml::from_str(
5959
r#"
6060
[meta]
61-
name = "carbo-link production"
62-
description = "dc=carbo-link,dc=com via ldapi"
61+
name = "example-corp production"
62+
description = "dc=example,dc=com via ldapi"
6363
[server]
6464
uri = "ldap://x"
6565
base_dn = "dc=x"
@@ -69,10 +69,10 @@ fn meta_config_parses_both_fields() {
6969
"#,
7070
)
7171
.unwrap();
72-
assert_eq!(cfg.meta.name.as_deref(), Some("carbo-link production"));
72+
assert_eq!(cfg.meta.name.as_deref(), Some("example-corp production"));
7373
assert_eq!(
7474
cfg.meta.description.as_deref(),
75-
Some("dc=carbo-link,dc=com via ldapi")
75+
Some("dc=example,dc=com via ldapi")
7676
);
7777
}
7878

@@ -678,8 +678,8 @@ Add a `[meta]` block to make a config identifiable in the picker:
678678

679679
```toml
680680
[meta]
681-
name = "carbo-link production"
682-
description = "dc=carbo-link,dc=com via ldapi (ds-carbo-feh)"
681+
name = "example-corp production"
682+
description = "dc=example,dc=com via ldapi (ds-example)"
683683
```
684684

685685
Both fields are optional.

0 commit comments

Comments
 (0)