Add missing PyInstaller spec file for GitHub Actions build#11
Conversation
The build workflow referenced Wordweaver.spec which did not exist in the repository. This adds the spec file to src/ and updates the workflow to use the correct path.
There was a problem hiding this comment.
Pull request overview
This PR adds a missing PyInstaller spec file that was referenced but not present in the repository, fixing the GitHub Actions build workflow. The spec file defines how to bundle the Wordweaver application into standalone executables for macOS, Linux, and Windows platforms.
Changes:
- Added PyInstaller spec file (
src/Wordweaver.spec) with platform-specific configurations for bundling the Wordweaver application - Updated build workflow paths to correctly reference the spec file location at
src/Wordweaver.spec
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
| src/Wordweaver.spec | New PyInstaller specification file defining build configuration, including dependencies, data files, and platform-specific settings for creating standalone executables |
| .github/workflows/python-app-build.yml | Updated PyInstaller command paths in both macOS/Linux and Windows build jobs to reference the spec file at its correct location |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| 'CFBundleShortVersionString': Path('VERSION').read_text().strip(), | ||
| 'CFBundleVersion': Path('VERSION').read_text().strip(), |
There was a problem hiding this comment.
The VERSION file is read twice when building the macOS bundle. Consider reading it once and reusing the value to improve efficiency and reduce potential for I/O errors. For example, store it in a variable at the top of the spec file: version = Path('VERSION').read_text().strip() and use that variable in the info_plist dictionary.
| 'PyQt6.QtGui', | ||
| 'PyQt6.QtWidgets', | ||
| 'platformdirs', | ||
| 'pyperclip', |
There was a problem hiding this comment.
Consider adding 'ipapy.ipachar' and potentially other ipapy submodules to the hiddenimports list. The code uses dynamic imports from ipapy (e.g., 'from ipapy import IPA_CHARS' inside a function in phonology.py) which PyInstaller's static analysis may not detect. This could cause runtime import errors in the bundled executable.
| 'pyperclip', | |
| 'pyperclip', | |
| 'ipapy', | |
| 'ipapy.ipachar', |
The build workflow referenced Wordweaver.spec which did not exist in the repository. This adds the spec file to src/ and updates the workflow to use the correct path.