changed customer to studio
This commit is contained in:
+14
-14
@@ -1,19 +1,19 @@
|
||||
# Build
|
||||
|
||||
Windows packaging for the customer desktop app.
|
||||
Windows packaging for the studio desktop app.
|
||||
|
||||
## Layout
|
||||
|
||||
```text
|
||||
build/
|
||||
customer/
|
||||
studio/
|
||||
entry.py # frozen entry (no source chdir)
|
||||
orisys-customer.spec # PyInstaller onedir spec
|
||||
orisys-studio.spec # PyInstaller onedir spec
|
||||
build.ps1 # create/reuse .venv-build and build
|
||||
_pyinstaller/ # PyInstaller workpath (gitignored)
|
||||
dist/
|
||||
OrisysCustomer/
|
||||
OrisysCustomer.exe
|
||||
OrisysStudio/
|
||||
OrisysStudio.exe
|
||||
config/ # lean locales + sensors (no finger visualization/)
|
||||
_internal/ # Python, PyQt5, opencv-headless, orisys, …
|
||||
```
|
||||
@@ -26,7 +26,7 @@ dist/
|
||||
|
||||
## Build
|
||||
|
||||
From `build\customer` (recommended):
|
||||
From `build\studio` (recommended):
|
||||
|
||||
```bat
|
||||
build.bat
|
||||
@@ -37,7 +37,7 @@ build.bat -SkipInstall
|
||||
Or from repo root:
|
||||
|
||||
```powershell
|
||||
powershell -ExecutionPolicy Bypass -File .\build\customer\build.ps1
|
||||
powershell -ExecutionPolicy Bypass -File .\build\studio\build.ps1
|
||||
```
|
||||
|
||||
`build.bat` always resolves `build.ps1` next to itself (cwd-independent) and forwards flags.
|
||||
@@ -49,7 +49,7 @@ Flags:
|
||||
| `-Clean` | Pass `--clean` to PyInstaller (use after dep/spec changes) |
|
||||
| `-SkipInstall` | Reuse packages already in `.venv-build` (faster iteration) |
|
||||
|
||||
Output: `dist\OrisysCustomer\OrisysCustomer.exe`
|
||||
Output: `dist\OrisysStudio\OrisysStudio.exe`
|
||||
|
||||
## Dependency notes
|
||||
|
||||
@@ -59,22 +59,22 @@ Output: `dist\OrisysCustomer\OrisysCustomer.exe`
|
||||
|
||||
## Size / startup
|
||||
|
||||
- **onedir** (not onefile): faster cold start; ship the whole `OrisysCustomer` folder.
|
||||
- **onedir** (not onefile): faster cold start; ship the whole `OrisysStudio` folder.
|
||||
- Finger `assets/visualization/` is stripped from the shipped `config/` (~11 MB saved).
|
||||
- Customer shell defers OpenCV / acquisition imports until Preview or Run.
|
||||
- Studio shell defers OpenCV / acquisition imports until Preview or Run.
|
||||
|
||||
Expect hundreds of MB total (Qt + numpy/scipy/numba + OpenCV). Without Open3D this stays smaller than a full `orisys[gui]` bundle.
|
||||
|
||||
## Verification
|
||||
|
||||
1. Launch `OrisysCustomer.exe` on the build machine (and ideally a clean PC without Python).
|
||||
1. Launch `OrisysStudio.exe` on the build machine (and ideally a clean PC without Python).
|
||||
2. Theme / locale / prefs work; `preference.json` and `outputs\` appear next to the EXE.
|
||||
3. Camera preview + box/mini/finger Run (video) with image modes and force plots.
|
||||
4. Confirm no `open3d*` files under `dist\OrisysCustomer`.
|
||||
4. Confirm no `open3d*` files under `dist\OrisysStudio`.
|
||||
|
||||
## Editable run (unchanged)
|
||||
|
||||
```powershell
|
||||
$env:PYTHONPATH = "D:\repo\orisys-app\shared\src;D:\repo\orisys-app\apps\customer\src"
|
||||
python D:\repo\orisys-app\apps\customer\run.py
|
||||
$env:PYTHONPATH = "D:\repo\orisys-app\shared\src;D:\repo\orisys-app\apps\studio\src"
|
||||
python D:\repo\orisys-app\apps\studio\run.py
|
||||
```
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
"""Frozen entry for Orisys Customer (no source-tree chdir)."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from orisys_customer.main import main
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
@@ -1,6 +1,6 @@
|
||||
@echo off
|
||||
setlocal EnableExtensions
|
||||
REM Build Orisys Customer EXE. Works from any cwd; forwards args to build.ps1
|
||||
REM Build Orisys Studio EXE. Works from any cwd; forwards args to build.ps1
|
||||
REM Examples:
|
||||
REM build.bat
|
||||
REM build.bat -Clean
|
||||
@@ -1,7 +1,7 @@
|
||||
#Requires -Version 5.1
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Build Orisys Customer Windows onedir EXE with PyInstaller.
|
||||
Build Orisys Studio Windows onedir EXE with PyInstaller.
|
||||
|
||||
.PARAMETER Clean
|
||||
Pass --clean to PyInstaller (slower; use when deps/spec change).
|
||||
@@ -19,7 +19,7 @@ $ErrorActionPreference = "Stop"
|
||||
$RepoRoot = (Resolve-Path (Join-Path $PSScriptRoot "..\..")).Path
|
||||
$VenvDir = Join-Path $RepoRoot ".venv-build"
|
||||
$Python = Join-Path $VenvDir "Scripts\python.exe"
|
||||
$Spec = Join-Path $PSScriptRoot "orisys-customer.spec"
|
||||
$Spec = Join-Path $PSScriptRoot "orisys-studio.spec"
|
||||
$WorkPath = Join-Path $RepoRoot "build\_pyinstaller"
|
||||
$DistPath = Join-Path $RepoRoot "dist"
|
||||
|
||||
@@ -31,11 +31,11 @@ if (-not (Test-Path $Python)) {
|
||||
}
|
||||
|
||||
if (-not $SkipInstall) {
|
||||
Write-Host "Installing build dependencies (editable shared + customer + orisys + pyinstaller)…"
|
||||
Write-Host "Installing build dependencies (editable shared + studio + orisys + pyinstaller)…"
|
||||
& $Python -m pip install --upgrade pip
|
||||
& $Python -m pip install "pyinstaller>=6.0"
|
||||
& $Python -m pip install -e (Join-Path $RepoRoot "shared")
|
||||
& $Python -m pip install -e (Join-Path $RepoRoot "apps\customer")
|
||||
& $Python -m pip install -e (Join-Path $RepoRoot "apps\studio")
|
||||
# orisys may already be installed; ensure present without [gui]/open3d
|
||||
& $Python -m pip install "orisys>=0.5"
|
||||
|
||||
@@ -73,12 +73,12 @@ if ($LASTEXITCODE -ne 0) {
|
||||
exit $LASTEXITCODE
|
||||
}
|
||||
|
||||
$OutDir = Join-Path $DistPath "OrisysCustomer"
|
||||
$OutDir = Join-Path $DistPath "OrisysStudio"
|
||||
Write-Host ""
|
||||
Write-Host "Build complete: $OutDir"
|
||||
|
||||
# Lean config beside EXE (exclude finger visualization assets)
|
||||
$ConfigSrc = Join-Path $RepoRoot "apps\customer\config"
|
||||
$ConfigSrc = Join-Path $RepoRoot "apps\studio\config"
|
||||
$ConfigDst = Join-Path $OutDir "config"
|
||||
if (Test-Path $ConfigSrc) {
|
||||
Write-Host "Copying lean config to $ConfigDst …"
|
||||
@@ -96,7 +96,7 @@ if (Test-Path $ConfigSrc) {
|
||||
}
|
||||
}
|
||||
|
||||
Write-Host "Launch: $(Join-Path $OutDir 'OrisysCustomer.exe')"
|
||||
Write-Host "Launch: $(Join-Path $OutDir 'OrisysStudio.exe')"
|
||||
|
||||
# Size summary
|
||||
if (Test-Path $OutDir) {
|
||||
@@ -0,0 +1,8 @@
|
||||
"""Frozen entry for Orisys Studio (no source-tree chdir)."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from orisys_studio.main import main
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
@@ -1,5 +1,5 @@
|
||||
# -*- mode: python ; coding: utf-8 -*-
|
||||
"""PyInstaller onedir spec for Orisys Customer (Windows)."""
|
||||
"""PyInstaller onedir spec for Orisys Studio (Windows)."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
@@ -57,7 +57,7 @@ icon = str(icon_path) if icon_path.is_file() else None
|
||||
a = Analysis(
|
||||
[str(ENTRY)],
|
||||
pathex=[
|
||||
str(REPO_ROOT / "apps" / "customer" / "src"),
|
||||
str(REPO_ROOT / "apps" / "studio" / "src"),
|
||||
str(REPO_ROOT / "shared" / "src"),
|
||||
],
|
||||
binaries=binaries,
|
||||
@@ -105,7 +105,7 @@ exe = EXE(
|
||||
a.scripts,
|
||||
[],
|
||||
exclude_binaries=True,
|
||||
name="OrisysCustomer",
|
||||
name="OrisysStudio",
|
||||
debug=False,
|
||||
bootloader_ignore_signals=False,
|
||||
strip=False,
|
||||
@@ -127,5 +127,5 @@ coll = COLLECT(
|
||||
strip=False,
|
||||
upx=False,
|
||||
upx_exclude=[],
|
||||
name="OrisysCustomer",
|
||||
name="OrisysStudio",
|
||||
)
|
||||
Reference in New Issue
Block a user