From af91ba3ea6b4542b8902d8ef4f967e12b112a2f7 Mon Sep 17 00:00:00 2001 From: Arnaud Botella Date: Thu, 5 Mar 2026 14:45:36 +0100 Subject: [PATCH 1/3] fix(Pyinstaller): build and update --- .github/workflows/config.json | 5 ++- opengeodeweb-viewer.spec | 76 +++++++++++++++++++++++++++++++++++ 2 files changed, 79 insertions(+), 2 deletions(-) create mode 100644 opengeodeweb-viewer.spec diff --git a/.github/workflows/config.json b/.github/workflows/config.json index 6cf513ee..0382284c 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 00000000..ac8e9300 --- /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, +) From ac2b6bf68c49ed062e6e343b32bae996a076f4d4 Mon Sep 17 00:00:00 2001 From: BotellaA <3213882+BotellaA@users.noreply.github.com> Date: Thu, 5 Mar 2026 13:47:30 +0000 Subject: [PATCH 2/3] Apply prepare changes --- requirements.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index b311ef76..e7f9f284 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 From 1c22fc453bc170fba48c2f48d1a174f415e1bcb9 Mon Sep 17 00:00:00 2001 From: Arnaud Botella Date: Thu, 5 Mar 2026 15:53:37 +0100 Subject: [PATCH 3/3] rename vtkw_server --- pyproject.toml | 2 +- src/opengeodeweb_viewer/{vtkw_server.py => app.py} | 0 tests/conftest.py | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) rename src/opengeodeweb_viewer/{vtkw_server.py => app.py} (100%) diff --git a/pyproject.toml b/pyproject.toml index 100bfa96..c681f715 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/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 66a5ecb9..1b39a6fb 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()