docs: document AppImage workflow
This commit is contained in:
parent
26eaf8cf68
commit
c44d330b43
1 changed files with 86 additions and 0 deletions
86
docs/appimage.md
Normal file
86
docs/appimage.md
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
# AppImage Build Guide
|
||||
|
||||
ScanSlicer includes a full AppImage packaging workflow under `packaging/appimage/`.
|
||||
|
||||
## Files
|
||||
|
||||
- `packaging/appimage/AppImageBuilder.yml`: AppDir recipe and AppImage config
|
||||
- `packaging/appimage/build-appimage.sh`: local build script
|
||||
- `packaging/appimage/build-appimage-docker.sh`: containerized build wrapper
|
||||
- `packaging/appimage/Dockerfile`: AppImage build environment
|
||||
- desktop entry file in `packaging/appimage/`
|
||||
- application icon file in `packaging/appimage/`
|
||||
|
||||
## Local Build
|
||||
|
||||
Prerequisites:
|
||||
|
||||
- `uv`
|
||||
- `appimage-builder` (or custom binary via `APPIMAGE_BUILDER_BIN`)
|
||||
|
||||
Command:
|
||||
|
||||
```bash
|
||||
bash packaging/appimage/build-appimage.sh
|
||||
```
|
||||
|
||||
What the script does:
|
||||
|
||||
1. Exports runtime requirements from `uv.lock` to `appimage/build/requirements.txt`
|
||||
2. Builds wheel into `appimage/build/`
|
||||
3. Appends wheel path to requirements list
|
||||
4. Sets:
|
||||
- `SCANSLICER_ROOT`
|
||||
- `SCANSLICER_APPDIR`
|
||||
- `SCANSLICER_REQUIREMENTS`
|
||||
5. Runs `appimage-builder` with `AppImageBuilder.yml`
|
||||
6. Moves `.AppImage` and `.zsync` artifacts to `appimage/dist/`
|
||||
|
||||
## Dockerized Build
|
||||
|
||||
Prerequisite:
|
||||
|
||||
- Docker
|
||||
|
||||
Command:
|
||||
|
||||
```bash
|
||||
bash packaging/appimage/build-appimage-docker.sh
|
||||
```
|
||||
|
||||
What it does:
|
||||
|
||||
1. Builds an image from `packaging/appimage/Dockerfile`
|
||||
2. Runs the local AppImage build script inside the container
|
||||
3. Applies host UID/GID ownership to generated `appimage/` outputs
|
||||
|
||||
Optional environment variables:
|
||||
|
||||
- `APPIMAGE_DOCKER_IMAGE` (default: `scanslicer-appimage-builder`)
|
||||
- `HOST_UID` and `HOST_GID`
|
||||
|
||||
## Recipe Notes
|
||||
|
||||
`AppImageBuilder.yml` currently:
|
||||
|
||||
- Uses Ubuntu Noble apt sources
|
||||
- Bundles Python and runtime shared libs
|
||||
- Removes bundled Qt system libs to prefer PySide wheel Qt runtime
|
||||
- Installs Python dependencies and project wheel into AppDir `/usr`
|
||||
- Injects desktop entry and icon assets during `after_bundle`
|
||||
|
||||
Runtime environment variables set in AppDir include:
|
||||
|
||||
- `PYTHONHOME`
|
||||
- `PYTHONNOUSERSITE`
|
||||
- `QT_PLUGIN_PATH`
|
||||
- `LD_LIBRARY_PATH`
|
||||
- `PATH`
|
||||
|
||||
## Output
|
||||
|
||||
Expected output artifact location:
|
||||
|
||||
- `appimage/dist/ScanSlicer-<version>-x86_64.AppImage`
|
||||
|
||||
Intermediate build files are kept under `appimage/build/`.
|
||||
Loading…
Add table
Add a link
Reference in a new issue