diff --git a/.github/workflows/config.json b/.github/workflows/config.json index 6cf513e..0382284 100644 --- a/.github/workflows/config.json +++ b/.github/workflows/config.json @@ -1,3 +1,4 @@ { - "node": true -} \ No newline at end of file + "node": true, + "pyinstaller": true +} diff --git a/opengeodeweb-viewer.spec b/opengeodeweb-viewer.spec new file mode 100644 index 0000000..ac8e930 --- /dev/null +++ b/opengeodeweb-viewer.spec @@ -0,0 +1,76 @@ +# -*- mode: python ; coding: utf-8 -*- +from PyInstaller.utils.hooks import collect_data_files +from PyInstaller.utils.hooks import collect_all + +datas = [] +binaries = [] +hiddenimports = [] +datas += collect_data_files('opengeodeweb_viewer') +tmp_ret = collect_all('vtkmodules') +datas += tmp_ret[0]; binaries += tmp_ret[1]; hiddenimports += tmp_ret[2] + + +a = Analysis( + ['src/opengeodeweb_viewer/app.py'], + pathex=[], + binaries=binaries, + datas=datas, + hiddenimports=hiddenimports, + hookspath=[], + hooksconfig={}, + runtime_hooks=[], + excludes=[], + noarchive=False, + optimize=0, +) + +to_exclude = [ + 'opengl32', + 'opengl32sw', + 'libEGL', + 'libGLESv2', + 'libX11', + 'libXext', + 'libXrender', + 'libXcursor', + 'libXfixes', + 'libXi', + 'libXinerama', + 'libXrandr', + 'libXcomposite', + 'libXdamage', + 'libXxf86vm', + 'libxcb', + 'libxkbcommon', + 'libwayland', +] +a.binaries = TOC([ + entry for entry in a.binaries + if not any( + entry[0].lower().startswith(prefix.lower()) + for prefix in to_exclude + ) +]) + +pyz = PYZ(a.pure) + +exe = EXE( + pyz, + a.scripts, + a.binaries, + a.datas, + [], + name='opengeodeweb-viewer', + debug=False, + bootloader_ignore_signals=False, + strip=False, + upx=True, + upx_exclude=[], + runtime_tmpdir=None, + console=True, + disable_windowed_traceback=False, + argv_emulation=False, + target_arch=None, + codesign_identity=None, + entitlements_file=None, +) diff --git a/pyproject.toml b/pyproject.toml index 100bfa9..c681f71 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -22,7 +22,7 @@ classifiers = [ "Bug Tracker" = "https://github.com/Geode-solutions/OpenGeodeWeb-Viewer/issues" [project.scripts] -opengeodeweb-viewer = "opengeodeweb_viewer.vtkw_server:run_server" +opengeodeweb-viewer = "opengeodeweb_viewer.app:run_server" [tool.setuptools.dynamic] dependencies = { file = ["requirements.txt"] } diff --git a/requirements.txt b/requirements.txt index b311ef7..e7f9f28 100644 --- a/requirements.txt +++ b/requirements.txt @@ -61,4 +61,3 @@ wslink==1.12.4 yarl>=1 # via aiohttp -opengeodeweb-microservice==1.*,>=1.0.15 diff --git a/src/opengeodeweb_viewer/vtkw_server.py b/src/opengeodeweb_viewer/app.py similarity index 100% rename from src/opengeodeweb_viewer/vtkw_server.py rename to src/opengeodeweb_viewer/app.py diff --git a/tests/conftest.py b/tests/conftest.py index 66a5ecb..1b39a6f 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -169,7 +169,7 @@ class Starter(ProcessStarter): # type: ignore "opengeodeweb-viewer", ] - return "vtkw_server", Starter, ServerMonitor + return "app", Starter, ServerMonitor ROOT_PATH = Path(__file__).parent.parent.absolute()