mirror of
https://github.com/PR0M3TH3AN/SeedPass.git
synced 2025-09-07 14:58:56 +00:00
Add Briefcase packaging docs and scripts
This commit is contained in:
38
docs/packaging.md
Normal file
38
docs/packaging.md
Normal file
@@ -0,0 +1,38 @@
|
||||
# Packaging SeedPass
|
||||
|
||||
This guide describes how to build platform-native packages for SeedPass using [BeeWare Briefcase](https://briefcase.readthedocs.io/).
|
||||
|
||||
## Prerequisites
|
||||
|
||||
* Python 3.12 with development headers (`python3-dev` on Debian/Ubuntu).
|
||||
* Briefcase installed in your virtual environment:
|
||||
|
||||
```bash
|
||||
pip install briefcase
|
||||
```
|
||||
|
||||
## Linux
|
||||
|
||||
The helper script in `packaging/build-linux.sh` performs `briefcase create`, `build`, and `package` for the current project.
|
||||
|
||||
```bash
|
||||
./packaging/build-linux.sh
|
||||
```
|
||||
|
||||
Briefcase outputs its build artifacts in `build/seedpass-gui/ubuntu/noble/`. These files can be bundled in container formats such as Flatpak or Snap. Example manifests are included:
|
||||
|
||||
* `packaging/flatpak/seedpass.yml` targets the `org.gnome.Platform` runtime and copies the Briefcase build into the Flatpak bundle.
|
||||
* `packaging/snapcraft.yaml` stages the Briefcase build and lists GTK libraries in `stage-packages` so the Snap includes its GUI dependencies.
|
||||
|
||||
## macOS and Windows
|
||||
|
||||
Scripts are provided to document the commands expected on each platform. They must be run on their respective operating systems:
|
||||
|
||||
* `packaging/build-macos.sh`
|
||||
* `packaging/build-windows.ps1`
|
||||
|
||||
Each script runs Briefcase's `create`, `build`, and `package` steps with `--no-input`.
|
||||
|
||||
## Reproducible Releases
|
||||
|
||||
The `packaging/` directory contains the scripts and manifests needed to regenerate desktop packages. Invoke the appropriate script on the target OS, then use the supplied Flatpak or Snap manifest to bundle additional dependencies for Linux.
|
5
packaging/build-linux.sh
Executable file
5
packaging/build-linux.sh
Executable file
@@ -0,0 +1,5 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
briefcase create linux --no-input
|
||||
briefcase build linux --no-input
|
||||
briefcase package linux --no-input
|
5
packaging/build-macos.sh
Executable file
5
packaging/build-macos.sh
Executable file
@@ -0,0 +1,5 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
briefcase create macos --no-input
|
||||
briefcase build macos --no-input
|
||||
briefcase package macos --no-input
|
3
packaging/build-windows.ps1
Normal file
3
packaging/build-windows.ps1
Normal file
@@ -0,0 +1,3 @@
|
||||
briefcase create windows --no-input
|
||||
briefcase build windows --no-input
|
||||
briefcase package windows --no-input
|
18
packaging/flatpak/seedpass.yml
Normal file
18
packaging/flatpak/seedpass.yml
Normal file
@@ -0,0 +1,18 @@
|
||||
app-id: io.seedpass.SeedPass
|
||||
runtime: org.gnome.Platform
|
||||
runtime-version: '46'
|
||||
sdk: org.gnome.Sdk
|
||||
command: seedpass-gui
|
||||
modules:
|
||||
- name: seedpass
|
||||
buildsystem: simple
|
||||
build-commands:
|
||||
- mkdir -p /app/bin
|
||||
- cp -r ../../build/seedpass-gui/ubuntu/noble/* /app/bin/
|
||||
sources:
|
||||
- type: dir
|
||||
path: ../../
|
||||
finish-args:
|
||||
- --share=network
|
||||
- --socket=fallback-x11
|
||||
- --socket=wayland
|
22
packaging/snapcraft.yaml
Normal file
22
packaging/snapcraft.yaml
Normal file
@@ -0,0 +1,22 @@
|
||||
name: seedpass
|
||||
base: core22
|
||||
version: '0.1.0'
|
||||
summary: Deterministic password manager
|
||||
description: |
|
||||
SeedPass deterministically generates passwords using BIP-39 seeds.
|
||||
grade: devel
|
||||
confinement: strict
|
||||
apps:
|
||||
seedpass-gui:
|
||||
command: bin/seedpass-gui
|
||||
plugs:
|
||||
- network
|
||||
- x11
|
||||
parts:
|
||||
seedpass:
|
||||
plugin: dump
|
||||
source: build/seedpass-gui/ubuntu/noble/app
|
||||
stage-packages:
|
||||
- libgtk-3-0
|
||||
- libglib2.0-0
|
||||
- libgdk-pixbuf2.0-0
|
@@ -60,10 +60,15 @@ python_version = "3.11"
|
||||
strict = true
|
||||
mypy_path = "src"
|
||||
|
||||
[tool.briefcase]
|
||||
project_name = "SeedPass"
|
||||
bundle = "io.seedpass"
|
||||
version = "0.1.0"
|
||||
|
||||
[tool.briefcase.app.seedpass-gui]
|
||||
formal-name = "SeedPass"
|
||||
description = "Deterministic password manager with a BeeWare GUI"
|
||||
sources = ["src"]
|
||||
sources = ["src/seedpass_gui"]
|
||||
requires = [
|
||||
"toga-core>=0.5.2",
|
||||
"colorama>=0.4.6",
|
||||
@@ -94,6 +99,7 @@ requires = [
|
||||
"argon2-cffi",
|
||||
]
|
||||
icon = "logo/png/SeedPass-Logo-24.png"
|
||||
license = { file = "LICENSE" }
|
||||
|
||||
[build-system]
|
||||
requires = ["poetry-core"]
|
||||
|
Reference in New Issue
Block a user