Skip to content

Commit

Permalink
Reworked PyInstaller spec file and added MacOS to matrix
Browse files Browse the repository at this point in the history
  • Loading branch information
jmwright committed Oct 23, 2023
1 parent c2a7b5e commit 357912b
Show file tree
Hide file tree
Showing 4 changed files with 107 additions and 138 deletions.
68 changes: 0 additions & 68 deletions .github/workflows/check-commit-actions.yml

This file was deleted.

69 changes: 0 additions & 69 deletions .github/workflows/check-pr-actions.yml

This file was deleted.

2 changes: 1 addition & 1 deletion .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:
fail-fast: false
matrix:
python-version: ["3.10"]
os: [ubuntu-latest, windows-latest]
os: [ubuntu-latest, windows-latest, macos-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v2
Expand Down
106 changes: 106 additions & 0 deletions pyinstaller.spec
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
# -*- mode: python ; coding: utf-8 -*-
import sys, site, os
import glob
from path import Path
from PyInstaller.utils.hooks import collect_submodules

# Whether we are running in onefile or dir mode
onefile_mode = True
if len(sys.argv) == 3:
if sys.argv[2] == 'onefile':
onefile_mode = True
elif sys.argv[2] == 'dir':
onefile_mode = False

block_cipher = None
# if sys.platform == 'linux':
# occt_dir = os.path.join(Path(sys.prefix), 'share', 'opencascade')
# ocp_path = (os.path.join(HOMEPATH, 'OCP.cpython-38-x86_64-linux-gnu.so'), '.')
# elif sys.platform == 'darwin':
# occt_dir = os.path.join(Path(sys.prefix), 'Library', 'share', 'opencascade')
# ocp_path = (os.path.join(HOMEPATH, 'OCP.cpython-38-darwin.so'), '.')
# elif sys.platform == 'win32':
# occt_dir = os.path.join(Path(sys.prefix), 'Library', 'share', 'opencascade')
# ocp_path = (os.path.join(HOMEPATH, 'OCP.cp38-win_amd64.pyd'), '.')

# Dynamically find all the modules in the cqcodecs directory
hidden_imports = []
file_list = glob.glob('.' + os.path.sep + "src" + os.path.sep + "cq_cli" + os.path.sep + 'cqcodecs' + os.path.sep + 'cq_codec_*.py')
for file_path in file_list:
file_name = file_path.split(os.path.sep)[-1]
module_name = file_name.replace(".py", "")
hidden_imports.append("cqcodecs." + module_name)
hidden_imports.append('OCP')
hidden_imports.append('typing_extensions')
hidden_imports.append('pyparsing')
hidden_imports.append('ezdxf')
hidden_imports.append('nptyping')
hidden_imports.append('typish')
hidden_imports.append('numpy.core.dtype')
hidden_imports.append('numpy.core._dtype')
hidden_imports.append('vtkmodules')
hidden_imports.append('vtkmodules.all')

# numpy hidden imports
hidden_imports_numpy = collect_submodules('numpy')
hidden_imports = hidden_imports + hidden_imports_numpy

a = Analysis(['src/cq_cli/cq_cli.py'],
pathex=['.'],
#binaries=[
# ocp_path
#],
datas=[
(os.path.join(os.path.dirname(os.path.realpath('__file__')), 'src', 'cq_cli', 'cqcodecs'), 'cqcodecs')
],
hiddenimports=hidden_imports,
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)

# Select between onefile and dir mode executables
if onefile_mode:
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='cq-cli',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=False,
upx_exclude=[],
runtime_tmpdir=None,
console=True )
else:
exe = EXE(pyz,
a.scripts,
[],
exclude_binaries=True,
name='cq-cli',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=False,
console=True )

exclude = ('libGL','libEGL','libbsd')
a.binaries = TOC([x for x in a.binaries if not x[0].startswith(exclude)])

if not onefile_mode:
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=False,
upx_exclude=[],
name='cq-cli')

0 comments on commit 357912b

Please sign in to comment.