Phase 30: complete configurable installation and release qualification
This commit is contained in:
parent
afc049e2c8
commit
90eac33a71
18 changed files with 399 additions and 59 deletions
|
|
@ -263,3 +263,12 @@ regressions, scale/virtual endurance, benchmark-gate checks, Clang analysis and
|
|||
ASan/UBSan. Run `make benchmark benchmark-project` separately without contention
|
||||
or sanitizers for timing reports. Optional `make test-stress-plugins` requires
|
||||
installed LADSPA headers; `make test-stress` supports minimal builds too.
|
||||
|
||||
## Phase 30 installation layouts
|
||||
|
||||
`make test-install test-install-layout` verifies default and custom layouts in
|
||||
throwaway staging directories, C/C++ installed consumers, examples and exact
|
||||
removal. Override `PREFIX`, `exec_prefix`, `bindir`, `libdir`, `includedir`,
|
||||
`datarootdir`, `datadir`, `docdir`, `pkgconfigdir`, `licensedir`, `examplesdir` or
|
||||
`desktopdir` as needed. `DESTDIR` adds staging separately; pass the same layout
|
||||
to uninstall. See RELEASING.md for commands and RELEASE_NOTES.md for upgrades.
|
||||
|
|
|
|||
|
|
@ -53,3 +53,32 @@ an unsupported source file during failed Open. Keep the original when diagnosing
|
|||
post-publication sync errors. Native descriptor ABI compatibility is distinct from
|
||||
project format and is documented in NATIVE_API.md; opaque DSP state is not promised.
|
||||
No public stability guarantee or support SLA is implied by development version 0.1.0.
|
||||
|
||||
## Phase 30 support and triage record
|
||||
|
||||
Verified compilers are GCC/G++ 16.2.1 and Clang/Clang++ 23.1.3 on x86_64 Linux;
|
||||
these are tested versions, not a promise that arbitrary older/newer versions work.
|
||||
The code requires C99 plus GCC/Clang lock-free atomics, C++17 for the GUI, FLTK
|
||||
1.4 and POSIX/glibc APIs. JACK (including PipeWire's JACK compatibility) is the
|
||||
only live backend. Native Windows/macOS, other architectures and direct ALSA
|
||||
backends are not qualified. Core builds can disable JACK, FLTK and LADSPA.
|
||||
See BUILD.md and LICENSES.md for dependency roles and versions.
|
||||
|
||||
Release qualification adds `test-install-layout`, installed example inspection,
|
||||
all performance report resources, source checksum verification and the current
|
||||
RELEASE_NOTES.md. Retain the original graph benchmark alert in release records;
|
||||
a successful compile does not clear timing qualification gaps.
|
||||
|
||||
File reproducible bugs with the repository maintainers using the source commit
|
||||
and archive SHA-256, `xtc-check --version`/`--diagnose`, distro/kernel and toolchain,
|
||||
exact commands or GUI steps, expected versus observed behavior and frequency.
|
||||
Reduce to a redistributable project and state whether it reproduces without
|
||||
external plugins and with the offline/core tools. Include relevant stderr and
|
||||
sanitizer traces; preserve original recovery files before experimenting.
|
||||
|
||||
Maintainers should first confirm version/features and reproduce in an isolated
|
||||
build. Prioritize data loss/security/memory/thread defects, then crashes and
|
||||
callback/deadline failures, then functional bugs and UI issues. Record severity,
|
||||
reproduction conditions, affected versions, regression test and verification
|
||||
command with the fix. Route timing-only alerts through matching-host reports and
|
||||
repeat measurements; do not treat sanitized timings as realtime evidence.
|
||||
|
|
|
|||
53
docs/RELEASE_NOTES.md
Normal file
53
docs/RELEASE_NOTES.md
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
# 0.1.0 development release notes
|
||||
|
||||
This remains a development prototype, not a production-qualified DAW. Phase 30
|
||||
completes the local release workflow without bumping the application version,
|
||||
creating a tag or publishing artifacts. The exact source archive SHA-256 and
|
||||
reviewed Git commit identify a build; version 0.1.0 alone does not identify all
|
||||
of the development revisions that used that version.
|
||||
|
||||
## Included functionality
|
||||
|
||||
The C99 engine provides bounded graphs, immutable plan publication, stereo audio,
|
||||
MIDI instruments and controller bindings, track/bus mixing, automation and inline
|
||||
MIDI editing. The C++17 FLTK application adds arrangement, routing, recording,
|
||||
undo/redo and a generic LADSPA editor. JACK is the only live audio/MIDI backend;
|
||||
core validation and offline rendering work without it. Native/LADSPA processors
|
||||
are trusted in-process code. No proprietary energyXT resources are included.
|
||||
|
||||
Project format v10 reads versions 1–10 transactionally. Syntax diagnostics identify
|
||||
records and lines. `xtc-check --inspect` lists dependency paths without executing
|
||||
plugins. Phase 29 adds timing/CPU/RSS reports, repeatable stress runs and virtual
|
||||
endurance. Phase 30 adds configurable install directories, shared install/remove
|
||||
inventory, installed MIDI examples and source archive checksum sidecars.
|
||||
|
||||
## Upgrading and removal
|
||||
|
||||
Back up documents and external media before upgrading. Opening an older project
|
||||
does not rewrite it; saving upgrades it to v10, which older readers may reject.
|
||||
Use Save As for a separate migrated copy. Moving a project folder preserves media
|
||||
stored inside it via relative references. Absolute media and plugin module paths
|
||||
must be restored separately. There is no bundled plugin/media migration or saved
|
||||
JACK port configuration. See PROJECT_FORMAT.md and RECOVERY.md for exact policies.
|
||||
|
||||
Install to the same layout to repair owned files. Only documented owned filenames
|
||||
are replaced; unrelated files with other names remain. Use the same source
|
||||
version and directory variables for uninstall. It removes owned files and empty
|
||||
owned directories, never recordings or recursively deleting a prefix. A changed
|
||||
layout or an older release with a different inventory may require removing that
|
||||
old version before installing the new one. No database/package-manager registration
|
||||
or automatic cleanup of historical inventories is performed.
|
||||
|
||||
## Known qualification limits
|
||||
|
||||
Physical devices, multi-hour wall-clock endurance, power-cut behavior and other
|
||||
Linux distributions remain unqualified. There is no disk streaming, crash autosave,
|
||||
plugin sandbox, latency compensation or stable shared-library ABI. A trusted
|
||||
plugin can allocate, block or crash the process. Metadata inspection checks file
|
||||
availability only. See KNOWN_LIMITATIONS.md for the complete list.
|
||||
|
||||
The retained graph performance gate has a documented small-case timing alert on
|
||||
the shared development host; the project timing comparison passed. This alert
|
||||
was not hidden by changing the baseline. See PERFORMANCE.md before using these
|
||||
measurements as latency expectations. Sanitizers and virtual endurance qualify
|
||||
software paths, not hardware timing.
|
||||
|
|
@ -72,3 +72,37 @@ policy. Build diagnostics make no server/plugin calls. There is no asynchronous
|
|||
crash uploader or signal-handler cleanup: inspect OS core/debugger evidence on
|
||||
the control side, preserving project/media recovery paths. No release is publicly
|
||||
published by these commands, and human/device/listening checks remain pending.
|
||||
|
||||
## Phase 30 release workflow
|
||||
|
||||
Installation now shares one explicit file inventory with uninstallation. GNU-style
|
||||
`exec_prefix`, `bindir`, `libdir`, `includedir`, `datarootdir`, `datadir`, `docdir`,
|
||||
`pkgconfigdir` and the xtc-specific `licensedir`, `examplesdir`, `desktopdir` can be
|
||||
overridden alongside `PREFIX`/`DESTDIR`. Paths must be absolute POSIX paths;
|
||||
spaces are supported. Do not include DESTDIR in a directory variable: staging is
|
||||
applied separately and never embedded in pkg-config metadata. Staging refuses
|
||||
parent symlinks that escape DESTDIR. Use exactly the same variables for removal.
|
||||
|
||||
```sh
|
||||
make BUILD_DIR=build/release-check all test gui
|
||||
make BUILD_DIR=build/release-check test-install test-install-layout
|
||||
make PREFIX=/usr DESTDIR=/tmp/xtc-stage libdir=/usr/lib64 install-gui
|
||||
make PREFIX=/usr DESTDIR=/tmp/xtc-stage libdir=/usr/lib64 uninstall
|
||||
make test-release test-package
|
||||
```
|
||||
|
||||
Core install includes the static library, public headers, `xtc-check`, pkg-config
|
||||
metadata, Markdown documentation, all checked-in performance reports, license and
|
||||
`share/xtc/examples` (a media/plugin-free MIDI demo). GUI install adds the desktop
|
||||
entry and `xtc`. No desktop MIME association is claimed. Package archives keep
|
||||
their fixed `/usr` layout and relocatable pkg-config metadata; custom live layouts
|
||||
are tested separately. Existing owned file symlinks are replaced, not followed;
|
||||
installation is atomic per file, not a transaction over the entire prefix.
|
||||
|
||||
`make dist` now writes a `.sha256` sidecar as well as the normalized source archive.
|
||||
Record that hash, the reviewed commit, version and build/dependency conditions
|
||||
with release logs. `test-release` verifies the hash, builds/tests two fresh source
|
||||
exports and compares artifacts and repacks. It validates exported tracked content,
|
||||
including staged work; it does not attest that the caller's Git tree is clean.
|
||||
For public release use a clean reviewed checkout and inspect `git status` first.
|
||||
RELEASE_NOTES.md supplies upgrade guidance and remaining qualification limits.
|
||||
|
|
|
|||
|
|
@ -846,6 +846,20 @@ Turn the application into a maintainable release that users can build, install,
|
|||
- The release includes documentation, known limitations, and a reproducible version identifier.
|
||||
- The project has a repeatable process for preparing and validating releases.
|
||||
|
||||
### Implementation status
|
||||
Completed: configurable standard install directories with one shared owned-file
|
||||
inventory, staged file/symlink safety checks, installed metadata-only MIDI example
|
||||
and all performance resources, source SHA-256 sidecars, release notes, upgrades,
|
||||
support matrix and maintenance/triage guidance. Existing version/diagnostic modes,
|
||||
desktop metadata and normalized source/binary packaging are retained.
|
||||
|
||||
Acceptance verified with warning-enabled core/GUI builds and tests; default and
|
||||
custom-layout staged install/repair/uninstall with C/C++ consumers; minimal
|
||||
no-JACK/no-FLTK/no-LADSPA build; two clean source-export release builds with
|
||||
byte-identical binaries and repacks; and binary manifest/hash/relocation checks.
|
||||
No public release, tag, version bump or system install is performed. Physical
|
||||
qualification and the Phase 29 graph timing alert remain documented limitations.
|
||||
|
||||
---
|
||||
|
||||
## Recommended Execution Order
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue