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
16 changes: 14 additions & 2 deletions .github/workflows/ci-pr-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -128,8 +128,20 @@ jobs:
sudo apt-get update
sudo apt-get install --yes cabextract xdg-utils desktop-file-utils shared-mime-info

- name: Test installer and launcher lifecycle
run: make test
- name: Test while a separate wineserver process runs
run: |
separate_wine_dir="$(mktemp -d /tmp/ableton-separate-wine.XXXXXX)"
cp -- "$(command -v sleep)" "$separate_wine_dir/wineserver"
"$separate_wine_dir/wineserver" 7200 &
separate_wine_pid=$!
stop_separate_wine() {
kill "$separate_wine_pid" 2>/dev/null || true
wait "$separate_wine_pid" 2>/dev/null || true
}
trap stop_separate_wine EXIT
test "$(cat "/proc/$separate_wine_pid/comm")" = wineserver
make test
kill -0 "$separate_wine_pid"

# These are properties of the built runtime, so `make test` cannot assert
# them: its suites are all host-side. The tarball exists by this point, so
Expand Down
25 changes: 21 additions & 4 deletions BUILDING.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,10 +52,15 @@ Use one component directly when a full install is not needed:
./scripts/installer.sh link status
```

Preview any supported operation without changing files:
Preview an update while preserving current files:

```bash
./scripts/installer.sh plan update
```

Validate the paths and records for an uninstall request:

```bash
./scripts/installer.sh plan uninstall --delete-prefix
```

Expand All @@ -72,6 +77,8 @@ make test

`make check` inspects the pointer changes and tests their limits with difficult input. Neither it nor `make verify` starts Wine or Live.

`scripts/test-installer-ui.sh` covers the installer's screen. It renders a fixed run and compares the result byte for byte with a golden transcript of the template. It replays a real pseudo-terminal through a small terminal simulator to check the `└─` to `├─` rewrite. It checks every adjoining box stroke for matching direction and weight. It also confirms that colour codes apply to text while each line keeps the terminal's default colour. The remaining checks confirm that every tree glyph comes from `scripts/lib/ui.sh` and every sentence comes from the dictionary.

Verify all pinned build and packaging inputs:

```bash
Expand Down Expand Up @@ -115,12 +122,22 @@ After a successful `./build.sh`, create the single-file installer:

This writes `dist/ableton-wine-setup-<version>.run` and its SHA-256 file. Packaging refuses a build that lacks the required sanitizer result or fails the runtime audit.

To try a script change with the Wine runtime you already built, pack a development installer from the current contents of `dist/`:

```bash
./scripts/make-installer.sh --dev
```

This command writes `dist/ableton-wine-setup-<version>-dev.run` and skips the BUILD-INFO, digest, and attestation checks. Publish only the release `.run`.

The packer builds the `.run` header from `scripts/setup-run-header.sh` and inserts `scripts/lib/ui.sh` at the `@UI_LIB@` marker, so the banner and the action menu render before the installer unpacks the kit. `./scripts/make-installer.sh --render-header --version V --payload-sha S` prints that assembled header. The test suites use it to build stub installers.

## Current configuration

The installer saves the runtime root, Wine prefix, selected Live major version, and Link mode. For these values, a command-line option overrides an exported `ABLETON_*` variable, which overrides the saved XDG configuration and then the default.
The installer saves the runtime root, the ableton-linux prefix, the selected Live major version, and the Link mode. For these values, a command-line option overrides an exported `ABLETON_*` variable, which overrides the saved XDG configuration and then the default.

- `ABLETON_WINE_ROOT` selects the Wine runtime. The default is `~/.local/opt/wine-d2d1-nspa-11.13`; the Nix package's launchers and shipped scripts default to their own store path instead.
- `ABLETON_WINEPREFIX` selects the Wine prefix. The default is `~/.wine-ableton`.
- `ABLETON_WINEPREFIX` selects the ableton-linux prefix. The default is `~/.wine-ableton`.
- `ABLETON_LIVE_VERSION=11|12` selects a Live major version for the launcher.
- `ABLETON_LINK_MODE=off|session|always` controls when Ableton Link runs.

Expand All @@ -134,7 +151,7 @@ These environment variables change one launch without changing the saved install

- `ABLETON_LIVE_EXE` selects one exact Live executable.
- `ABLETON_LINK_MODE=off|session|always` selects the Link policy shared by the
installer, Live launcher, Max launcher, service, and uninstaller.
installer, Live launcher, Max launcher, and service.
- `ABLETON_LINKD` selects the Link daemon path. The generated user unit uses
this exact resolved path.
- `ABLETON_MAX_AUDIO_THREADS=auto|off|<number>` controls Live 12's audio thread
Expand Down
Loading