Building the EXE
BoobaRecovery.exe is a self-contained PyInstaller bundle (~23 MB). It includes the Python runtime, all Python dependencies, and the LibreDWG binaries for DWG → DXF conversion. No installation required on the target machine.
Requirements
- Windows 10 or later (or Wine on Linux for cross-compilation)
- Python 3.11 or 3.12 (64-bit)
- The
libredwg/subdirectory containing:dwg2dxf.exelibredwg-0.dlllibiconv-2.dlllibpcre2-8-0.dlllibpcre2-16-0.dll
Build steps
REM Install Python dependencies including PyInstaller
pip install pyinstaller openpyxl ezdxf
REM Build the EXE using the pre-configured spec
build.bat
build.bat simply calls:
pyinstaller BoobaRecovery.spec
Output: dist\BoobaRecovery.exe
What BoobaRecovery.spec bundles
gui.pyas the entry pointbooba_recover.pyimported at runtime- All Python dependencies (
openpyxl,ezdxf,tkinter, etc.) - The
libredwg/binaries as data files (extracted to_MEIPASSat runtime)
Automated releases via CI
Every time a v* tag is pushed, the Forgejo Actions workflow (.forgejo/workflows/release.yml) automatically:
- Checks out the repo on the registered Windows runner
- Installs Python + dependencies
- Runs PyInstaller
- Looks up or creates the Forgejo release for this tag
- Uploads
dist\BoobaRecovery.exeas a release asset
The Windows runner must be registered under Settings → Actions → Runners → Add Runner.
Manual release with release.sh
Use this when building the EXE locally or releasing from Linux:
./release.sh 1.5.0 # bump VERSION to 1.5.0, tag, and release
./release.sh # release the current VERSION as-is
./release.sh --notes "text" # override the release notes
The script:
- Bumps
VERSION, commits, and pushes tomain - Creates and pushes a git tag
v<version> - Creates a Forgejo release via API
- Uploads
dist/BoobaRecovery.exeif it exists
If you are on Linux and don't have the EXE yet, run release.sh without it and attach the EXE manually to the release after building on Windows.
Registering the Windows runner
The Forgejo Actions runner needs to be running on a Windows machine that can reach repository.spitzerhome.com:
- Go to Settings → Actions → Runners on the repo
- Click Add Runner, copy the registration token
- On the Windows machine, download the Forgejo runner binary and register it:
forgejo-runner register --url https://repository.spitzerhome.com --token <token> --labels windows forgejo-runner daemon - The runner label
windowsmatches theruns-on: windowsin the workflow YAML