From 0d8d80d61dc1e4ad40309045801a7964052f223d Mon Sep 17 00:00:00 2001 From: hreyes Date: Tue, 30 Jun 2026 16:40:01 -0600 Subject: [PATCH 1/2] feature/build-y-ui-contraible --- app/config/env_loader.py | 3 +- app/ui/main_window.py | 24 +- build-linux.log | 783 ++++++++++++++++---------------- build-windows.log | 439 +++++++++--------- packaging/CloudRestoreAS.spec | 5 + packaging/assets/tray-icon.ico | Bin 0 -> 6385 bytes packaging/assets/tray-icon.png | Bin 0 -> 3183 bytes packaging/scripts/make-icons.py | 155 +++++++ packaging/templates/env.default | 3 +- runner.py | 137 ++++-- 10 files changed, 898 insertions(+), 651 deletions(-) create mode 100644 packaging/assets/tray-icon.ico create mode 100644 packaging/assets/tray-icon.png create mode 100644 packaging/scripts/make-icons.py diff --git a/app/config/env_loader.py b/app/config/env_loader.py index e454feb..9f2271b 100644 --- a/app/config/env_loader.py +++ b/app/config/env_loader.py @@ -114,7 +114,8 @@ def render_env_template(app_dir: Path | None = None) -> str: return f"""# CloudRestoreAS — configuración local (editar y reiniciar la app) -# Arranca el motor al abrir (la ventana siempre se muestra salvo START_MINIMIZED=true) +# Arranca el motor al abrir. La ventana SIEMPRE se muestra al iniciar; cerrar (X) la +# minimiza a la bandeja del sistema (START_MINIMIZED ya no oculta la ventana). CLOUDRESTORE_AUTO_START=true CLOUDRESTORE_START_MINIMIZED=false CLOUDRESTORE_REGISTER_AUTOSTART=true diff --git a/app/ui/main_window.py b/app/ui/main_window.py index d5db679..f6f277e 100644 --- a/app/ui/main_window.py +++ b/app/ui/main_window.py @@ -41,6 +41,7 @@ class MainWindow(QMainWindow): self.setWindowTitle("CloudRestoreAS - Restauración Automática SQL Server") self.setMinimumSize(1200, 800) + self.setWindowIcon(load_tray_icon()) self.tray_icon: QSystemTrayIcon | None = None self._setup_tray() @@ -61,9 +62,6 @@ class MainWindow(QMainWindow): if self._start_on_load: QTimer.singleShot(500, self._start_engine) - if self._minimized_on_load: - QTimer.singleShot(100, self.hide) - self._update_tray_status() self.dashboard_tab.update_motor_status() app_logger.info("Ventana principal inicializada") @@ -136,10 +134,16 @@ class MainWindow(QMainWindow): about_action.triggered.connect(self._show_about) help_menu.addAction(about_action) - def _setup_tray(self): - """Configura el icono de bandeja del sistema.""" + def _setup_tray(self, _attempt: int = 0): + """Configura el icono de bandeja del sistema (reintenta si aún no está listo).""" if not QSystemTrayIcon.isSystemTrayAvailable(): - app_logger.warning("Bandeja del sistema no disponible en este entorno") + if _attempt < 20: + # La bandeja puede no estar lista justo tras el login: reintentar ~10s. + QTimer.singleShot(500, lambda: self._setup_tray(_attempt + 1)) + else: + app_logger.warning( + "Bandeja del sistema no disponible tras varios reintentos" + ) return self.tray_icon = QSystemTrayIcon(self) @@ -183,14 +187,14 @@ class MainWindow(QMainWindow): self.engine.signals.config_loaded.connect(self._on_config_loaded) def closeEvent(self, event: QCloseEvent): - """Minimiza a bandeja al cerrar la ventana (no sale de la aplicación).""" + """Nunca cierra la app: minimiza a la bandeja (o a la barra de tareas si no hay bandeja).""" if self._force_quit: event.accept() return + event.ignore() if self.tray_icon and self.tray_icon.isVisible(): self.hide() - event.ignore() app_logger.info("Ventana minimizada a bandeja del sistema") if not self._tray_hint_shown: self.tray_icon.showMessage( @@ -201,7 +205,9 @@ class MainWindow(QMainWindow): ) self._tray_hint_shown = True else: - event.accept() + # Sin bandeja disponible: minimizar a la barra de tareas, nunca cerrar. + self.showMinimized() + app_logger.info("Ventana minimizada a la barra de tareas (sin bandeja)") def _on_tray_activated(self, reason): """Maneja la activación del icono de tray.""" diff --git a/build-linux.log b/build-linux.log index 733e06f..5de7a7c 100644 --- a/build-linux.log +++ b/build-linux.log @@ -8,75 +8,75 @@ CloudRestoreAS - Build Linux (onefile) ODBC ya existe Listo: /app/packaging/bundled/linux Ejecutando PyInstaller (onefile)... -74 INFO: PyInstaller: 6.20.0, contrib hooks: 2026.6 -74 INFO: Python: 3.10.12 -75 INFO: Platform: Linux-6.6.87.2-microsoft-standard-WSL2-x86_64-with-glibc2.35 -75 INFO: Python environment: /app/venv-linux -77 INFO: Removing temporary files and cleaning cache in /root/.cache/pyinstaller -89 WARNING: Failed to collect submodules for 'PySide6.scripts.deploy_lib' because importing 'PySide6.scripts.deploy_lib' raised: ModuleNotFoundError: No module named 'project_lib' -713 INFO: Module search paths (PYTHONPATH): +46 INFO: PyInstaller: 6.20.0, contrib hooks: 2026.6 +46 INFO: Python: 3.10.12 +47 INFO: Platform: Linux-6.6.87.2-microsoft-standard-WSL2-x86_64-with-glibc2.35 +47 INFO: Python environment: /app/venv-linux +49 INFO: Removing temporary files and cleaning cache in /root/.cache/pyinstaller +77 WARNING: Failed to collect submodules for 'PySide6.scripts.deploy_lib' because importing 'PySide6.scripts.deploy_lib' raised: ModuleNotFoundError: No module named 'project_lib' +604 INFO: Module search paths (PYTHONPATH): ['/app', '/usr/lib/python310.zip', '/usr/lib/python3.10', '/usr/lib/python3.10/lib-dynload', '/app/venv-linux/lib/python3.10/site-packages', '/app'] -793 INFO: Appending 'binaries' from .spec -797 INFO: Appending 'datas' from .spec -854 INFO: checking Analysis -854 INFO: Building Analysis because Analysis-00.toc is non existent -854 INFO: Looking for Python shared library... -861 INFO: Using Python shared library: /lib/x86_64-linux-gnu/libpython3.10.so.1.0 -861 INFO: Running Analysis Analysis-00.toc -861 INFO: Target bytecode optimization level: 0 -861 INFO: Initializing module dependency graph... -861 INFO: Initializing module graph hook caches... -867 INFO: Analyzing modules for base_library.zip ... -1077 INFO: Processing standard module hook 'hook-heapq.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -1111 INFO: Processing standard module hook 'hook-encodings.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -1770 INFO: Processing standard module hook 'hook-pickle.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -2325 INFO: Caching module dependency graph... -2349 INFO: Analyzing /app/runner.py -2355 INFO: Processing standard module hook 'hook-sqlite3.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -2595 INFO: Processing standard module hook 'hook-PySide6.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -2687 INFO: Processing standard module hook 'hook-shiboken6.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -2753 INFO: Processing standard module hook 'hook-PySide6.QtNetwork.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -3261 INFO: Processing standard module hook 'hook-PySide6.QtCore.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -3732 INFO: Processing standard module hook 'hook-PySide6.QtWidgets.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -4244 INFO: Processing standard module hook 'hook-PySide6.QtGui.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -5411 INFO: Processing standard module hook 'hook-platform.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -5434 INFO: Processing standard module hook 'hook-cryptography.py' from '/app/venv-linux/lib/python3.10/site-packages/_pyinstaller_hooks_contrib/stdhooks' -6128 INFO: hook-cryptography: cryptography does not seem to be using dynamically linked OpenSSL. -6278 INFO: Processing standard module hook 'hook-pyodbc.py' from '/app/venv-linux/lib/python3.10/site-packages/_pyinstaller_hooks_contrib/stdhooks' -6390 INFO: Processing standard module hook 'hook-urllib3.py' from '/app/venv-linux/lib/python3.10/site-packages/_pyinstaller_hooks_contrib/stdhooks' -6500 INFO: Processing pre-safe-import-module hook 'hook-backports.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks/pre_safe_import_module' -6503 INFO: SetuptoolsInfo: initializing cached setuptools info... -7023 INFO: Processing pre-safe-import-module hook 'hook-typing_extensions.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks/pre_safe_import_module' -7167 INFO: Processing standard module hook 'hook-multiprocessing.util.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -7199 INFO: Processing standard module hook 'hook-xml.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -7334 INFO: Processing standard module hook 'hook-_ctypes.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -7979 INFO: Processing standard module hook 'hook-certifi.py' from '/app/venv-linux/lib/python3.10/site-packages/_pyinstaller_hooks_contrib/stdhooks' -7998 INFO: Processing standard module hook 'hook-charset_normalizer.py' from '/app/venv-linux/lib/python3.10/site-packages/_pyinstaller_hooks_contrib/stdhooks' -8193 INFO: Processing standard module hook 'hook-bcrypt.py' from '/app/venv-linux/lib/python3.10/site-packages/_pyinstaller_hooks_contrib/stdhooks' -8489 INFO: Processing standard module hook 'hook-difflib.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -8655 INFO: Processing standard module hook 'hook-nacl.py' from '/app/venv-linux/lib/python3.10/site-packages/_pyinstaller_hooks_contrib/stdhooks' -8816 INFO: Analyzing hidden import 'PySide6.Qt3DAnimation' -8830 INFO: Processing standard module hook 'hook-PySide6.Qt3DAnimation.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -8938 INFO: Processing standard module hook 'hook-PySide6.Qt3DCore.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -9135 INFO: Processing standard module hook 'hook-PySide6.Qt3DRender.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -10294 INFO: Processing standard module hook 'hook-PySide6.QtOpenGL.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -10400 INFO: Analyzing hidden import 'PySide6.Qt3DExtras' -10458 INFO: Processing standard module hook 'hook-PySide6.Qt3DExtras.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -10552 INFO: Analyzing hidden import 'PySide6.Qt3DInput' -10564 INFO: Processing standard module hook 'hook-PySide6.Qt3DInput.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -10645 INFO: Analyzing hidden import 'PySide6.Qt3DLogic' -10646 INFO: Processing standard module hook 'hook-PySide6.Qt3DLogic.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -10725 INFO: Analyzing hidden import 'PySide6.QtAsyncio' -10740 INFO: Analyzing hidden import 'PySide6.QtBluetooth' -10770 INFO: Processing standard module hook 'hook-PySide6.QtBluetooth.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -10850 INFO: Analyzing hidden import 'PySide6.QtCanvasPainter' -10915 INFO: Processing standard module hook 'hook-PySide6.QtQuick.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -11049 INFO: Processing standard module hook 'hook-PySide6.QtQml.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +684 INFO: Appending 'binaries' from .spec +688 INFO: Appending 'datas' from .spec +745 INFO: checking Analysis +745 INFO: Building Analysis because Analysis-00.toc is non existent +745 INFO: Looking for Python shared library... +753 INFO: Using Python shared library: /lib/x86_64-linux-gnu/libpython3.10.so.1.0 +753 INFO: Running Analysis Analysis-00.toc +753 INFO: Target bytecode optimization level: 0 +753 INFO: Initializing module dependency graph... +753 INFO: Initializing module graph hook caches... +759 INFO: Analyzing modules for base_library.zip ... +989 INFO: Processing standard module hook 'hook-heapq.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +1019 INFO: Processing standard module hook 'hook-encodings.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +1674 INFO: Processing standard module hook 'hook-pickle.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +2243 INFO: Caching module dependency graph... +2266 INFO: Analyzing /app/runner.py +2280 INFO: Processing standard module hook 'hook-PySide6.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +2378 INFO: Processing standard module hook 'hook-shiboken6.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +2455 INFO: Processing standard module hook 'hook-PySide6.QtNetwork.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +2973 INFO: Processing standard module hook 'hook-PySide6.QtCore.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +3365 INFO: Processing standard module hook 'hook-PySide6.QtWidgets.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +3866 INFO: Processing standard module hook 'hook-PySide6.QtGui.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +4329 INFO: Processing standard module hook 'hook-sqlite3.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +4522 INFO: Processing standard module hook 'hook-platform.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +4540 INFO: Processing standard module hook 'hook-cryptography.py' from '/app/venv-linux/lib/python3.10/site-packages/_pyinstaller_hooks_contrib/stdhooks' +4807 INFO: hook-cryptography: cryptography does not seem to be using dynamically linked OpenSSL. +4855 INFO: Processing standard module hook 'hook-pyodbc.py' from '/app/venv-linux/lib/python3.10/site-packages/_pyinstaller_hooks_contrib/stdhooks' +4893 INFO: Processing standard module hook 'hook-urllib3.py' from '/app/venv-linux/lib/python3.10/site-packages/_pyinstaller_hooks_contrib/stdhooks' +4961 INFO: Processing pre-safe-import-module hook 'hook-backports.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks/pre_safe_import_module' +4962 INFO: SetuptoolsInfo: initializing cached setuptools info... +5130 INFO: Processing pre-safe-import-module hook 'hook-typing_extensions.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks/pre_safe_import_module' +5213 INFO: Processing standard module hook 'hook-multiprocessing.util.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +5241 INFO: Processing standard module hook 'hook-xml.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +5365 INFO: Processing standard module hook 'hook-_ctypes.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +5819 INFO: Processing standard module hook 'hook-certifi.py' from '/app/venv-linux/lib/python3.10/site-packages/_pyinstaller_hooks_contrib/stdhooks' +5839 INFO: Processing standard module hook 'hook-charset_normalizer.py' from '/app/venv-linux/lib/python3.10/site-packages/_pyinstaller_hooks_contrib/stdhooks' +6028 INFO: Processing standard module hook 'hook-bcrypt.py' from '/app/venv-linux/lib/python3.10/site-packages/_pyinstaller_hooks_contrib/stdhooks' +6348 INFO: Processing standard module hook 'hook-difflib.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +6488 INFO: Processing standard module hook 'hook-nacl.py' from '/app/venv-linux/lib/python3.10/site-packages/_pyinstaller_hooks_contrib/stdhooks' +6645 INFO: Analyzing hidden import 'PySide6.Qt3DAnimation' +6658 INFO: Processing standard module hook 'hook-PySide6.Qt3DAnimation.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +6777 INFO: Processing standard module hook 'hook-PySide6.Qt3DCore.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +6965 INFO: Processing standard module hook 'hook-PySide6.Qt3DRender.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +8337 INFO: Processing standard module hook 'hook-PySide6.QtOpenGL.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +8430 INFO: Analyzing hidden import 'PySide6.Qt3DExtras' +8463 INFO: Processing standard module hook 'hook-PySide6.Qt3DExtras.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +8542 INFO: Analyzing hidden import 'PySide6.Qt3DInput' +8552 INFO: Processing standard module hook 'hook-PySide6.Qt3DInput.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +8628 INFO: Analyzing hidden import 'PySide6.Qt3DLogic' +8629 INFO: Processing standard module hook 'hook-PySide6.Qt3DLogic.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +8708 INFO: Analyzing hidden import 'PySide6.QtAsyncio' +8724 INFO: Analyzing hidden import 'PySide6.QtBluetooth' +8756 INFO: Processing standard module hook 'hook-PySide6.QtBluetooth.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +8838 INFO: Analyzing hidden import 'PySide6.QtCanvasPainter' +8909 INFO: Processing standard module hook 'hook-PySide6.QtQuick.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +9019 INFO: Processing standard module hook 'hook-PySide6.QtQml.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' --- Logging error --- Traceback (most recent call last): File "/usr/lib/python3.10/logging/__init__.py", line 1100, in emit @@ -165,334 +165,335 @@ Call stack: logger.warn("%s: QML plugin binary %r does not exist!", str(plugin_file)) Message: '%s: QML plugin binary %r does not exist!' Arguments: ('/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/qml/Qt/labs/assetdownloader/libqmlassetdownloaderprivateplugin.so',) -12557 INFO: Analyzing hidden import 'PySide6.QtCharts' -12610 INFO: Processing standard module hook 'hook-PySide6.QtCharts.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -12689 INFO: Analyzing hidden import 'PySide6.QtConcurrent' -12692 INFO: Processing standard module hook 'hook-PySide6.QtConcurrent.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -12769 INFO: Analyzing hidden import 'PySide6.QtDBus' -12787 INFO: Processing standard module hook 'hook-PySide6.QtDBus.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -12863 INFO: Analyzing hidden import 'PySide6.QtDataVisualization' -12910 INFO: Processing standard module hook 'hook-PySide6.QtDataVisualization.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -12990 INFO: Analyzing hidden import 'PySide6.QtDesigner' -13019 INFO: Processing standard module hook 'hook-PySide6.QtDesigner.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -13139 INFO: Analyzing hidden import 'PySide6.QtGraphs' -13211 INFO: Processing standard module hook 'hook-PySide6.QtGraphs.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -13297 INFO: Analyzing hidden import 'PySide6.QtGraphsWidgets' -13307 INFO: Processing standard module hook 'hook-PySide6.QtGraphsWidgets.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -13384 INFO: Processing standard module hook 'hook-PySide6.QtQuickWidgets.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -13465 INFO: Analyzing hidden import 'PySide6.QtHelp' -13473 INFO: Processing standard module hook 'hook-PySide6.QtHelp.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -13554 INFO: Analyzing hidden import 'PySide6.QtHttpServer' -13561 INFO: Processing standard module hook 'hook-PySide6.QtHttpServer.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -13642 INFO: Analyzing hidden import 'PySide6.QtLocation' -13689 INFO: Processing standard module hook 'hook-PySide6.QtLocation.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -13809 INFO: Processing standard module hook 'hook-PySide6.QtPositioning.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -13921 INFO: Analyzing hidden import 'PySide6.QtMultimedia' -13959 INFO: Processing standard module hook 'hook-PySide6.QtMultimedia.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -14068 INFO: Analyzing hidden import 'PySide6.QtMultimediaWidgets' -14070 INFO: Processing standard module hook 'hook-PySide6.QtMultimediaWidgets.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -14149 INFO: Analyzing hidden import 'PySide6.QtNetworkAuth' -14162 INFO: Processing standard module hook 'hook-PySide6.QtNetworkAuth.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -14243 INFO: Analyzing hidden import 'PySide6.QtNfc' -14253 INFO: Processing standard module hook 'hook-PySide6.QtNfc.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -14336 INFO: Analyzing hidden import 'PySide6.QtOpenGLWidgets' -14338 INFO: Processing standard module hook 'hook-PySide6.QtOpenGLWidgets.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -14418 INFO: Analyzing hidden import 'PySide6.QtPdf' -14426 INFO: Processing standard module hook 'hook-PySide6.QtPdf.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -14510 INFO: Analyzing hidden import 'PySide6.QtPdfWidgets' -14513 INFO: Processing standard module hook 'hook-PySide6.QtPdfWidgets.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -14596 INFO: Analyzing hidden import 'PySide6.QtPrintSupport' -14605 INFO: Processing standard module hook 'hook-PySide6.QtPrintSupport.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -14698 INFO: Analyzing hidden import 'PySide6.QtQuick3D' -14704 INFO: Processing standard module hook 'hook-PySide6.QtQuick3D.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -14786 INFO: Analyzing hidden import 'PySide6.QtQuickControls2' -14787 INFO: Processing standard module hook 'hook-PySide6.QtQuickControls2.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -14866 INFO: Analyzing hidden import 'PySide6.QtQuickTest' -14867 INFO: Analyzing hidden import 'PySide6.QtRemoteObjects' -14877 INFO: Processing standard module hook 'hook-PySide6.QtRemoteObjects.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -14959 INFO: Analyzing hidden import 'PySide6.QtScxml' -14968 INFO: Processing standard module hook 'hook-PySide6.QtScxml.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -15052 INFO: Analyzing hidden import 'PySide6.QtSensors' -15081 INFO: Processing standard module hook 'hook-PySide6.QtSensors.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -15169 INFO: Analyzing hidden import 'PySide6.QtSerialBus' -15186 INFO: Processing standard module hook 'hook-PySide6.QtSerialBus.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -15301 INFO: Analyzing hidden import 'PySide6.QtSerialPort' -15306 INFO: Processing standard module hook 'hook-PySide6.QtSerialPort.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -15381 INFO: Analyzing hidden import 'PySide6.QtSpatialAudio' -15387 INFO: Processing standard module hook 'hook-PySide6.QtSpatialAudio.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -15469 INFO: Analyzing hidden import 'PySide6.QtSql' -15487 INFO: Processing standard module hook 'hook-PySide6.QtSql.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -15670 INFO: Analyzing hidden import 'PySide6.QtStateMachine' -15678 INFO: Processing standard module hook 'hook-PySide6.QtStateMachine.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -15758 INFO: Analyzing hidden import 'PySide6.QtSvg' -15762 INFO: Processing standard module hook 'hook-PySide6.QtSvg.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -15841 INFO: Analyzing hidden import 'PySide6.QtSvgWidgets' -15843 INFO: Processing standard module hook 'hook-PySide6.QtSvgWidgets.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -15922 INFO: Analyzing hidden import 'PySide6.QtTest' -15932 INFO: Processing standard module hook 'hook-PySide6.QtTest.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -16010 INFO: Analyzing hidden import 'PySide6.QtTextToSpeech' -16015 INFO: Processing standard module hook 'hook-PySide6.QtTextToSpeech.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -16112 INFO: Analyzing hidden import 'PySide6.QtUiTools' -16114 INFO: Processing standard module hook 'hook-PySide6.QtUiTools.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -16198 INFO: Analyzing hidden import 'PySide6.QtWebChannel' -16200 INFO: Processing standard module hook 'hook-PySide6.QtWebChannel.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -16295 INFO: Analyzing hidden import 'PySide6.QtWebEngineCore' -16332 INFO: Processing standard module hook 'hook-PySide6.QtWebEngineCore.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -16522 INFO: Analyzing hidden import 'PySide6.QtWebEngineQuick' -16526 INFO: Processing standard module hook 'hook-PySide6.QtWebEngineQuick.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -16617 INFO: Analyzing hidden import 'PySide6.QtWebEngineWidgets' -16621 INFO: Processing standard module hook 'hook-PySide6.QtWebEngineWidgets.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -16707 INFO: Analyzing hidden import 'PySide6.QtWebSockets' -16713 INFO: Processing standard module hook 'hook-PySide6.QtWebSockets.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -16790 INFO: Analyzing hidden import 'PySide6.QtWebView' -16793 INFO: Analyzing hidden import 'PySide6.QtXml' -16804 INFO: Processing standard module hook 'hook-PySide6.QtXml.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -16894 INFO: Analyzing hidden import 'PySide6._config' -16896 INFO: Analyzing hidden import 'PySide6._git_pyside_version' -16897 INFO: Analyzing hidden import 'PySide6.scripts' -16897 INFO: Analyzing hidden import 'PySide6.scripts.android_deploy' -16901 INFO: Analyzing hidden import 'PySide6.scripts.deploy' -16904 INFO: Analyzing hidden import 'PySide6.scripts.metaobjectdump' -16912 INFO: Analyzing hidden import 'PySide6.scripts.project' -16936 INFO: Analyzing hidden import 'PySide6.scripts.project_lib' -16972 INFO: Processing standard module hook 'hook-xml.etree.cElementTree.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -16978 INFO: Processing pre-safe-import-module hook 'hook-tomli.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks/pre_safe_import_module' -17002 INFO: Analyzing hidden import 'PySide6.scripts.pyside_tool' -17016 INFO: Processing standard module hook 'hook-sysconfig.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -17020 INFO: Analyzing hidden import 'PySide6.scripts.qml' -17024 INFO: Analyzing hidden import 'PySide6.scripts.qtpy2cpp' -17026 INFO: Analyzing hidden import 'PySide6.support' -17027 INFO: Analyzing hidden import 'PySide6.support.deprecated' -17028 INFO: Analyzing hidden import 'PySide6.support.generate_pyi' -17030 INFO: Processing module hooks (post-graph stage)... -17104 INFO: Performing binary vs. data reclassification (3660 entries) -19240 INFO: Looking for ctypes DLLs -19242 INFO: Analyzing run-time hooks ... -19245 INFO: Including run-time hook 'pyi_rth_inspect.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks/rthooks' -19246 INFO: Including run-time hook 'pyi_rth_pkgutil.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks/rthooks' -19248 INFO: Including run-time hook 'pyi_rth_multiprocessing.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks/rthooks' -19249 INFO: Including run-time hook 'pyi_rth_cryptography_openssl.py' from '/app/venv-linux/lib/python3.10/site-packages/_pyinstaller_hooks_contrib/rthooks' -19250 INFO: Including run-time hook 'pyi_rth_pyside6.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks/rthooks' -19251 INFO: Processing pre-find-module-path hook 'hook-_pyi_rth_utils.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks/pre_find_module_path' -19252 INFO: Processing standard module hook 'hook-_pyi_rth_utils.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' -19329 INFO: Creating base_library.zip... -19340 INFO: Looking for dynamic libraries -23477 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6FFmpegStub-crypto.so.3'. -23477 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6FFmpegStub-ssl.so.3'. -23477 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6FFmpegStub-va-drm.so.2'. -23477 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6FFmpegStub-va-x11.so.2'. -23477 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6FFmpegStub-va.so.2'. -23477 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6Multimedia.so.6'. -23477 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6MultimediaQuick.so.6'. -23477 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6MultimediaWidgets.so.6'. -23477 WARNING: Library not found: could not resolve 'libpcsclite.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6Nfc.so.6'. -23477 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6Quick3DSpatialAudio.so.6'. -23477 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6SpatialAudio.so.6'. -23477 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6TextToSpeech.so.6'. -23477 WARNING: Library not found: could not resolve 'libasound.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineCore.so.6'. -23477 WARNING: Library not found: could not resolve 'libXcomposite.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineCore.so.6'. -23477 WARNING: Library not found: could not resolve 'libXtst.so.6', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineCore.so.6'. -23477 WARNING: Library not found: could not resolve 'libnspr4.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineCore.so.6'. -23477 WARNING: Library not found: could not resolve 'libnss3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineCore.so.6'. -23477 WARNING: Library not found: could not resolve 'libxkbfile.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineCore.so.6'. -23477 WARNING: Library not found: could not resolve 'libXrandr.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineCore.so.6'. -23477 WARNING: Library not found: could not resolve 'libXdamage.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineCore.so.6'. -23477 WARNING: Library not found: could not resolve 'libsmime3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineCore.so.6'. -23477 WARNING: Library not found: could not resolve 'libnssutil3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineCore.so.6'. -23477 WARNING: Library not found: could not resolve 'libasound.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineQuick.so.6'. -23477 WARNING: Library not found: could not resolve 'libXcomposite.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineQuick.so.6'. -23477 WARNING: Library not found: could not resolve 'libXtst.so.6', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineQuick.so.6'. -23477 WARNING: Library not found: could not resolve 'libnspr4.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineQuick.so.6'. -23477 WARNING: Library not found: could not resolve 'libnss3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineQuick.so.6'. -23477 WARNING: Library not found: could not resolve 'libxkbfile.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineQuick.so.6'. -23477 WARNING: Library not found: could not resolve 'libXrandr.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineQuick.so.6'. -23477 WARNING: Library not found: could not resolve 'libXdamage.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineQuick.so.6'. -23477 WARNING: Library not found: could not resolve 'libsmime3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineQuick.so.6'. -23478 WARNING: Library not found: could not resolve 'libnssutil3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineQuick.so.6'. -23478 WARNING: Library not found: could not resolve 'libasound.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineWidgets.so.6'. -23478 WARNING: Library not found: could not resolve 'libXcomposite.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineWidgets.so.6'. -23478 WARNING: Library not found: could not resolve 'libXtst.so.6', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineWidgets.so.6'. -23478 WARNING: Library not found: could not resolve 'libnspr4.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineWidgets.so.6'. -23478 WARNING: Library not found: could not resolve 'libnss3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineWidgets.so.6'. -23478 WARNING: Library not found: could not resolve 'libxkbfile.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineWidgets.so.6'. -23478 WARNING: Library not found: could not resolve 'libXrandr.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineWidgets.so.6'. -23478 WARNING: Library not found: could not resolve 'libXdamage.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineWidgets.so.6'. -23478 WARNING: Library not found: could not resolve 'libsmime3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineWidgets.so.6'. -23478 WARNING: Library not found: could not resolve 'libnssutil3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineWidgets.so.6'. -23478 WARNING: Library not found: could not resolve 'libxcb-shape.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6XcbQpa.so.6'. -23478 WARNING: Library not found: could not resolve 'libxcb-render-util.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6XcbQpa.so.6'. -23478 WARNING: Library not found: could not resolve 'libxcb-icccm.so.4', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6XcbQpa.so.6'. -23478 WARNING: Library not found: could not resolve 'libxcb-render.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6XcbQpa.so.6'. -23478 WARNING: Library not found: could not resolve 'libxcb-util.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6XcbQpa.so.6'. -23478 WARNING: Library not found: could not resolve 'libxkbcommon-x11.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6XcbQpa.so.6'. -23478 WARNING: Library not found: could not resolve 'libxcb-cursor.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6XcbQpa.so.6'. -23478 WARNING: Library not found: could not resolve 'libxcb-image.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6XcbQpa.so.6'. -23478 WARNING: Library not found: could not resolve 'libxcb-keysyms.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6XcbQpa.so.6'. -23478 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libavcodec.so.61'. -23478 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libavcodec.so.61.19.101'. -23478 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libavformat.so.61'. -23478 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libavformat.so.61.7.100'. -23478 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libavutil.so.59'. -23478 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libavutil.so.59.39.100'. -23478 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libswresample.so.5'. -23478 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libswresample.so.5.3.100'. -23478 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libswscale.so.8'. -23478 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libswscale.so.8.3.100'. -23478 WARNING: Library not found: could not resolve 'libasound.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/libexec/QtWebEngineProcess'. -23478 WARNING: Library not found: could not resolve 'libXcomposite.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/libexec/QtWebEngineProcess'. -23478 WARNING: Library not found: could not resolve 'libXtst.so.6', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/libexec/QtWebEngineProcess'. -23478 WARNING: Library not found: could not resolve 'libnspr4.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/libexec/QtWebEngineProcess'. -23478 WARNING: Library not found: could not resolve 'libnss3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/libexec/QtWebEngineProcess'. -23478 WARNING: Library not found: could not resolve 'libxkbfile.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/libexec/QtWebEngineProcess'. -23478 WARNING: Library not found: could not resolve 'libXrandr.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/libexec/QtWebEngineProcess'. -23478 WARNING: Library not found: could not resolve 'libXdamage.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/libexec/QtWebEngineProcess'. -23478 WARNING: Library not found: could not resolve 'libsmime3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/libexec/QtWebEngineProcess'. -23478 WARNING: Library not found: could not resolve 'libnssutil3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/libexec/QtWebEngineProcess'. -23478 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libavcodec.so'. -23478 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libavformat.so'. -23478 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libavutil.so'. -23479 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libswresample.so'. -23479 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libswscale.so'. -23479 WARNING: Library not found: could not resolve 'libasound.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/designer/libqwebengineview.so'. -23479 WARNING: Library not found: could not resolve 'libXcomposite.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/designer/libqwebengineview.so'. -23479 WARNING: Library not found: could not resolve 'libXtst.so.6', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/designer/libqwebengineview.so'. -23479 WARNING: Library not found: could not resolve 'libnspr4.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/designer/libqwebengineview.so'. -23479 WARNING: Library not found: could not resolve 'libnss3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/designer/libqwebengineview.so'. -23479 WARNING: Library not found: could not resolve 'libxkbfile.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/designer/libqwebengineview.so'. -23479 WARNING: Library not found: could not resolve 'libXrandr.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/designer/libqwebengineview.so'. -23479 WARNING: Library not found: could not resolve 'libXdamage.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/designer/libqwebengineview.so'. -23479 WARNING: Library not found: could not resolve 'libsmime3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/designer/libqwebengineview.so'. -23479 WARNING: Library not found: could not resolve 'libnssutil3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/designer/libqwebengineview.so'. -23479 WARNING: Library not found: could not resolve 'libQt6EglFsKmsGbmSupport.so.6', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/egldeviceintegrations/libqeglfs-kms-integration.so'. -23479 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/multimedia/libffmpegmediaplugin.so'. -23479 WARNING: Library not found: could not resolve 'libXrandr.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/multimedia/libffmpegmediaplugin.so'. -23479 WARNING: Library not found: could not resolve 'libxcb-shape.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/platforms/libqxcb.so'. -23479 WARNING: Library not found: could not resolve 'libxcb-render-util.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/platforms/libqxcb.so'. -23479 WARNING: Library not found: could not resolve 'libxcb-icccm.so.4', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/platforms/libqxcb.so'. -23479 WARNING: Library not found: could not resolve 'libxcb-render.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/platforms/libqxcb.so'. -23479 WARNING: Library not found: could not resolve 'libxcb-util.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/platforms/libqxcb.so'. -23479 WARNING: Library not found: could not resolve 'libxkbcommon-x11.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/platforms/libqxcb.so'. -23479 WARNING: Library not found: could not resolve 'libxcb-cursor.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/platforms/libqxcb.so'. -23479 WARNING: Library not found: could not resolve 'libxcb-image.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/platforms/libqxcb.so'. -23479 WARNING: Library not found: could not resolve 'libxcb-keysyms.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/platforms/libqxcb.so'. -23479 WARNING: Library not found: could not resolve 'libharfbuzz.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/platformthemes/libqgtk3.so'. -23479 WARNING: Library not found: could not resolve 'libcairo-gobject.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/platformthemes/libqgtk3.so'. -23479 WARNING: Library not found: could not resolve 'libpangocairo-1.0.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/platformthemes/libqgtk3.so'. -23479 WARNING: Library not found: could not resolve 'libcairo.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/platformthemes/libqgtk3.so'. -23479 WARNING: Library not found: could not resolve 'libgdk_pixbuf-2.0.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/platformthemes/libqgtk3.so'. -23479 WARNING: Library not found: could not resolve 'libpango-1.0.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/platformthemes/libqgtk3.so'. -23479 WARNING: Library not found: could not resolve 'libgtk-3.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/platformthemes/libqgtk3.so'. -23479 WARNING: Library not found: could not resolve 'libgdk-3.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/platformthemes/libqgtk3.so'. -23479 WARNING: Library not found: could not resolve 'libatk-1.0.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/platformthemes/libqgtk3.so'. -23479 WARNING: Library not found: could not resolve 'libcups.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/printsupport/libcupsprintersupport.so'. -23479 WARNING: Library not found: could not resolve 'libfbclient.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/sqldrivers/libqsqlibase.so'. -23479 WARNING: Library not found: could not resolve 'libmimerapi.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/sqldrivers/libqsqlmimer.so'. -23479 WARNING: Library not found: could not resolve 'libmysqlclient.so.21', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/sqldrivers/libqsqlmysql.so'. -23479 WARNING: Library not found: could not resolve 'libclntsh.so.23.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/sqldrivers/libqsqloci.so'. -23479 WARNING: Library not found: could not resolve 'libpq.so.5', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/sqldrivers/libqsqlpsql.so'. -23479 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/texttospeech/libqtexttospeech_mock.so'. -23479 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/texttospeech/libqtexttospeech_speechd.so'. -23480 WARNING: Library not found: could not resolve 'libspeechd.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/texttospeech/libqtexttospeech_speechd.so'. -23480 WARNING: Library not found: could not resolve 'libasound.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/webview/libqtwebview_webengine.so'. -23480 WARNING: Library not found: could not resolve 'libXcomposite.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/webview/libqtwebview_webengine.so'. -23480 WARNING: Library not found: could not resolve 'libXtst.so.6', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/webview/libqtwebview_webengine.so'. -23480 WARNING: Library not found: could not resolve 'libnspr4.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/webview/libqtwebview_webengine.so'. -23480 WARNING: Library not found: could not resolve 'libnss3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/webview/libqtwebview_webengine.so'. -23480 WARNING: Library not found: could not resolve 'libxkbfile.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/webview/libqtwebview_webengine.so'. -23480 WARNING: Library not found: could not resolve 'libXrandr.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/webview/libqtwebview_webengine.so'. -23480 WARNING: Library not found: could not resolve 'libXdamage.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/webview/libqtwebview_webengine.so'. -23480 WARNING: Library not found: could not resolve 'libsmime3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/webview/libqtwebview_webengine.so'. -23480 WARNING: Library not found: could not resolve 'libnssutil3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/webview/libqtwebview_webengine.so'. -23480 WARNING: Library not found: could not resolve 'libxcb-shape.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/xcbglintegrations/libqxcb-egl-integration.so'. -23480 WARNING: Library not found: could not resolve 'libxcb-render-util.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/xcbglintegrations/libqxcb-egl-integration.so'. -23480 WARNING: Library not found: could not resolve 'libxcb-icccm.so.4', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/xcbglintegrations/libqxcb-egl-integration.so'. -23480 WARNING: Library not found: could not resolve 'libxcb-render.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/xcbglintegrations/libqxcb-egl-integration.so'. -23480 WARNING: Library not found: could not resolve 'libxcb-util.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/xcbglintegrations/libqxcb-egl-integration.so'. -23480 WARNING: Library not found: could not resolve 'libxkbcommon-x11.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/xcbglintegrations/libqxcb-egl-integration.so'. -23480 WARNING: Library not found: could not resolve 'libxcb-cursor.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/xcbglintegrations/libqxcb-egl-integration.so'. -23480 WARNING: Library not found: could not resolve 'libxcb-image.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/xcbglintegrations/libqxcb-egl-integration.so'. -23480 WARNING: Library not found: could not resolve 'libxcb-keysyms.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/xcbglintegrations/libqxcb-egl-integration.so'. -23480 WARNING: Library not found: could not resolve 'libxcb-shape.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/xcbglintegrations/libqxcb-glx-integration.so'. -23480 WARNING: Library not found: could not resolve 'libxcb-render-util.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/xcbglintegrations/libqxcb-glx-integration.so'. -23480 WARNING: Library not found: could not resolve 'libxcb-icccm.so.4', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/xcbglintegrations/libqxcb-glx-integration.so'. -23480 WARNING: Library not found: could not resolve 'libxcb-render.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/xcbglintegrations/libqxcb-glx-integration.so'. -23480 WARNING: Library not found: could not resolve 'libxcb-util.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/xcbglintegrations/libqxcb-glx-integration.so'. -23480 WARNING: Library not found: could not resolve 'libxkbcommon-x11.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/xcbglintegrations/libqxcb-glx-integration.so'. -23480 WARNING: Library not found: could not resolve 'libxcb-cursor.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/xcbglintegrations/libqxcb-glx-integration.so'. -23480 WARNING: Library not found: could not resolve 'libxcb-image.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/xcbglintegrations/libqxcb-glx-integration.so'. -23480 WARNING: Library not found: could not resolve 'libxcb-keysyms.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/xcbglintegrations/libqxcb-glx-integration.so'. -23480 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/qml/QtMultimedia/libquickmultimediaplugin.so'. -23480 WARNING: Library not found: could not resolve 'libQt6QuickShapesDesignHelpers.so.6', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/qml/QtQuick/Shapes/DesignHelpers/libqtquickshapesdesignhelpersplugin.so'. -23480 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/qml/QtQuick/VirtualKeyboard/Components/libqtvkbcomponentsplugin.so'. -23480 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/qml/QtQuick3D/SpatialAudio/libquick3dspatialaudioplugin.so'. -23480 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/qml/QtTextToSpeech/libtexttospeechqmlplugin.so'. -23480 WARNING: Library not found: could not resolve 'libQt6WaylandCompositorIviapplication.so.6', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/qml/QtWayland/Compositor/IviApplication/libwaylandcompositoriviapplicationplugin.so'. -23480 WARNING: Library not found: could not resolve 'libQt6WaylandCompositorPresentationTime.so.6', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/qml/QtWayland/Compositor/PresentationTime/libwaylandcompositorpresentationtimeplugin.so'. -23480 WARNING: Library not found: could not resolve 'libQt6WaylandCompositorWLShell.so.6', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/qml/QtWayland/Compositor/WlShell/libwaylandcompositorwlshellplugin.so'. -23480 WARNING: Library not found: could not resolve 'libQt6WaylandCompositorXdgShell.so.6', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/qml/QtWayland/Compositor/XdgShell/libwaylandcompositorxdgshellplugin.so'. -23480 WARNING: Library not found: could not resolve 'libasound.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/qml/QtWebEngine/libqtwebenginequickplugin.so'. -23480 WARNING: Library not found: could not resolve 'libXcomposite.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/qml/QtWebEngine/libqtwebenginequickplugin.so'. -23480 WARNING: Library not found: could not resolve 'libXtst.so.6', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/qml/QtWebEngine/libqtwebenginequickplugin.so'. -23481 WARNING: Library not found: could not resolve 'libnspr4.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/qml/QtWebEngine/libqtwebenginequickplugin.so'. -23481 WARNING: Library not found: could not resolve 'libnss3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/qml/QtWebEngine/libqtwebenginequickplugin.so'. -23481 WARNING: Library not found: could not resolve 'libxkbfile.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/qml/QtWebEngine/libqtwebenginequickplugin.so'. -23481 WARNING: Library not found: could not resolve 'libXrandr.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/qml/QtWebEngine/libqtwebenginequickplugin.so'. -23481 WARNING: Library not found: could not resolve 'libXdamage.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/qml/QtWebEngine/libqtwebenginequickplugin.so'. -23481 WARNING: Library not found: could not resolve 'libsmime3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/qml/QtWebEngine/libqtwebenginequickplugin.so'. -23481 WARNING: Library not found: could not resolve 'libnssutil3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/qml/QtWebEngine/libqtwebenginequickplugin.so'. -23481 WARNING: Library not found: could not resolve 'libasound.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineWidgets.abi3.so'. -23481 WARNING: Library not found: could not resolve 'libXcomposite.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineWidgets.abi3.so'. -23481 WARNING: Library not found: could not resolve 'libXtst.so.6', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineWidgets.abi3.so'. -23481 WARNING: Library not found: could not resolve 'libnspr4.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineWidgets.abi3.so'. -23481 WARNING: Library not found: could not resolve 'libnss3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineWidgets.abi3.so'. -23481 WARNING: Library not found: could not resolve 'libxkbfile.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineWidgets.abi3.so'. -23481 WARNING: Library not found: could not resolve 'libXrandr.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineWidgets.abi3.so'. -23481 WARNING: Library not found: could not resolve 'libXdamage.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineWidgets.abi3.so'. -23481 WARNING: Library not found: could not resolve 'libsmime3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineWidgets.abi3.so'. -23481 WARNING: Library not found: could not resolve 'libnssutil3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineWidgets.abi3.so'. -23481 WARNING: Library not found: could not resolve 'libasound.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineQuick.abi3.so'. -23481 WARNING: Library not found: could not resolve 'libXcomposite.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineQuick.abi3.so'. -23481 WARNING: Library not found: could not resolve 'libXtst.so.6', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineQuick.abi3.so'. -23481 WARNING: Library not found: could not resolve 'libnspr4.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineQuick.abi3.so'. -23481 WARNING: Library not found: could not resolve 'libnss3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineQuick.abi3.so'. -23481 WARNING: Library not found: could not resolve 'libxkbfile.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineQuick.abi3.so'. -23481 WARNING: Library not found: could not resolve 'libXrandr.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineQuick.abi3.so'. -23481 WARNING: Library not found: could not resolve 'libXdamage.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineQuick.abi3.so'. -23481 WARNING: Library not found: could not resolve 'libsmime3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineQuick.abi3.so'. -23481 WARNING: Library not found: could not resolve 'libnssutil3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineQuick.abi3.so'. -23481 WARNING: Library not found: could not resolve 'libasound.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineCore.abi3.so'. -23481 WARNING: Library not found: could not resolve 'libXcomposite.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineCore.abi3.so'. -23481 WARNING: Library not found: could not resolve 'libXtst.so.6', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineCore.abi3.so'. -23481 WARNING: Library not found: could not resolve 'libnspr4.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineCore.abi3.so'. -23481 WARNING: Library not found: could not resolve 'libnss3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineCore.abi3.so'. -23481 WARNING: Library not found: could not resolve 'libxkbfile.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineCore.abi3.so'. -23481 WARNING: Library not found: could not resolve 'libXrandr.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineCore.abi3.so'. -23481 WARNING: Library not found: could not resolve 'libXdamage.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineCore.abi3.so'. -23481 WARNING: Library not found: could not resolve 'libsmime3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineCore.abi3.so'. -23481 WARNING: Library not found: could not resolve 'libnssutil3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineCore.abi3.so'. -23481 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtTextToSpeech.abi3.so'. -23481 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtSpatialAudio.abi3.so'. -23481 WARNING: Library not found: could not resolve 'libpcsclite.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtNfc.abi3.so'. -23481 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtMultimediaWidgets.abi3.so'. -23481 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtMultimedia.abi3.so'. -23545 INFO: Warnings written to /tmp/cloudrestore-build/CloudRestoreAS/warn-CloudRestoreAS.txt -23570 INFO: Graph cross-reference written to /tmp/cloudrestore-build/CloudRestoreAS/xref-CloudRestoreAS.html -23670 INFO: checking PYZ -23670 INFO: Building PYZ because PYZ-00.toc is non existent -23670 INFO: Building PYZ (ZlibArchive) /tmp/cloudrestore-build/CloudRestoreAS/PYZ-00.pyz -23962 INFO: Building PYZ (ZlibArchive) /tmp/cloudrestore-build/CloudRestoreAS/PYZ-00.pyz completed successfully. -24040 INFO: checking PKG -24040 INFO: Building PKG because PKG-00.toc is non existent -24040 INFO: Building PKG (CArchive) CloudRestoreAS.pkg -93529 INFO: Building PKG (CArchive) CloudRestoreAS.pkg completed successfully. -93583 INFO: Bootloader /app/venv-linux/lib/python3.10/site-packages/PyInstaller/bootloader/Linux-64bit-intel/run -93583 INFO: checking EXE -93583 INFO: Building EXE because EXE-00.toc is non existent -93583 INFO: Building EXE from EXE-00.toc -93583 INFO: Copying bootloader EXE to /app/dist/CloudRestoreAS -93585 INFO: Appending PKG archive to custom ELF section in EXE -99643 INFO: Building EXE from EXE-00.toc completed successfully. -99693 INFO: Build complete! The results are available in: /app/dist +10247 INFO: Analyzing hidden import 'PySide6.QtCharts' +10302 INFO: Processing standard module hook 'hook-PySide6.QtCharts.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +10383 INFO: Analyzing hidden import 'PySide6.QtConcurrent' +10385 INFO: Processing standard module hook 'hook-PySide6.QtConcurrent.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +10457 INFO: Analyzing hidden import 'PySide6.QtDBus' +10474 INFO: Processing standard module hook 'hook-PySide6.QtDBus.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +10549 INFO: Analyzing hidden import 'PySide6.QtDataVisualization' +10610 INFO: Processing standard module hook 'hook-PySide6.QtDataVisualization.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +10687 INFO: Analyzing hidden import 'PySide6.QtDesigner' +10701 INFO: Processing standard module hook 'hook-PySide6.QtDesigner.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +10809 INFO: Analyzing hidden import 'PySide6.QtGraphs' +10882 INFO: Processing standard module hook 'hook-PySide6.QtGraphs.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +10963 INFO: Analyzing hidden import 'PySide6.QtGraphsWidgets' +10985 INFO: Processing standard module hook 'hook-PySide6.QtGraphsWidgets.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +11060 INFO: Processing standard module hook 'hook-PySide6.QtQuickWidgets.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +11138 INFO: Analyzing hidden import 'PySide6.QtHelp' +11145 INFO: Processing standard module hook 'hook-PySide6.QtHelp.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +11233 INFO: Analyzing hidden import 'PySide6.QtHttpServer' +11239 INFO: Processing standard module hook 'hook-PySide6.QtHttpServer.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +11318 INFO: Analyzing hidden import 'PySide6.QtLocation' +11345 INFO: Processing standard module hook 'hook-PySide6.QtLocation.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +11461 INFO: Processing standard module hook 'hook-PySide6.QtPositioning.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +11557 INFO: Analyzing hidden import 'PySide6.QtMultimedia' +11595 INFO: Processing standard module hook 'hook-PySide6.QtMultimedia.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +11688 INFO: Analyzing hidden import 'PySide6.QtMultimediaWidgets' +11690 INFO: Processing standard module hook 'hook-PySide6.QtMultimediaWidgets.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +11769 INFO: Analyzing hidden import 'PySide6.QtNetworkAuth' +11781 INFO: Processing standard module hook 'hook-PySide6.QtNetworkAuth.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +11861 INFO: Analyzing hidden import 'PySide6.QtNfc' +11870 INFO: Processing standard module hook 'hook-PySide6.QtNfc.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +11945 INFO: Analyzing hidden import 'PySide6.QtOpenGLWidgets' +11947 INFO: Processing standard module hook 'hook-PySide6.QtOpenGLWidgets.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +12070 INFO: Analyzing hidden import 'PySide6.QtPdf' +12103 INFO: Processing standard module hook 'hook-PySide6.QtPdf.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +12211 INFO: Analyzing hidden import 'PySide6.QtPdfWidgets' +12214 INFO: Processing standard module hook 'hook-PySide6.QtPdfWidgets.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +12294 INFO: Analyzing hidden import 'PySide6.QtPrintSupport' +12302 INFO: Processing standard module hook 'hook-PySide6.QtPrintSupport.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +12389 INFO: Analyzing hidden import 'PySide6.QtQuick3D' +12395 INFO: Processing standard module hook 'hook-PySide6.QtQuick3D.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +12474 INFO: Analyzing hidden import 'PySide6.QtQuickControls2' +12475 INFO: Processing standard module hook 'hook-PySide6.QtQuickControls2.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +12555 INFO: Analyzing hidden import 'PySide6.QtQuickTest' +12556 INFO: Analyzing hidden import 'PySide6.QtRemoteObjects' +12566 INFO: Processing standard module hook 'hook-PySide6.QtRemoteObjects.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +12642 INFO: Analyzing hidden import 'PySide6.QtScxml' +12650 INFO: Processing standard module hook 'hook-PySide6.QtScxml.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +12739 INFO: Analyzing hidden import 'PySide6.QtSensors' +12753 INFO: Processing standard module hook 'hook-PySide6.QtSensors.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +12847 INFO: Analyzing hidden import 'PySide6.QtSerialBus' +12864 INFO: Processing standard module hook 'hook-PySide6.QtSerialBus.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +12975 INFO: Analyzing hidden import 'PySide6.QtSerialPort' +12979 INFO: Processing standard module hook 'hook-PySide6.QtSerialPort.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +13071 INFO: Analyzing hidden import 'PySide6.QtSpatialAudio' +13081 INFO: Processing standard module hook 'hook-PySide6.QtSpatialAudio.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +13194 INFO: Analyzing hidden import 'PySide6.QtSql' +13212 INFO: Processing standard module hook 'hook-PySide6.QtSql.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +13330 INFO: Analyzing hidden import 'PySide6.QtStateMachine' +13338 INFO: Processing standard module hook 'hook-PySide6.QtStateMachine.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +13425 INFO: Analyzing hidden import 'PySide6.QtSvg' +13429 INFO: Processing standard module hook 'hook-PySide6.QtSvg.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +13515 INFO: Analyzing hidden import 'PySide6.QtSvgWidgets' +13517 INFO: Processing standard module hook 'hook-PySide6.QtSvgWidgets.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +13604 INFO: Analyzing hidden import 'PySide6.QtTest' +13615 INFO: Processing standard module hook 'hook-PySide6.QtTest.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +13693 INFO: Analyzing hidden import 'PySide6.QtTextToSpeech' +13698 INFO: Processing standard module hook 'hook-PySide6.QtTextToSpeech.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +13795 INFO: Analyzing hidden import 'PySide6.QtUiTools' +13796 INFO: Processing standard module hook 'hook-PySide6.QtUiTools.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +13886 INFO: Analyzing hidden import 'PySide6.QtWebChannel' +13888 INFO: Processing standard module hook 'hook-PySide6.QtWebChannel.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +13970 INFO: Analyzing hidden import 'PySide6.QtWebEngineCore' +14022 INFO: Processing standard module hook 'hook-PySide6.QtWebEngineCore.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +14173 INFO: Analyzing hidden import 'PySide6.QtWebEngineQuick' +14176 INFO: Processing standard module hook 'hook-PySide6.QtWebEngineQuick.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +14316 INFO: Analyzing hidden import 'PySide6.QtWebEngineWidgets' +14320 INFO: Processing standard module hook 'hook-PySide6.QtWebEngineWidgets.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +14411 INFO: Analyzing hidden import 'PySide6.QtWebSockets' +14416 INFO: Processing standard module hook 'hook-PySide6.QtWebSockets.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +14492 INFO: Analyzing hidden import 'PySide6.QtWebView' +14495 INFO: Analyzing hidden import 'PySide6.QtXml' +14505 INFO: Processing standard module hook 'hook-PySide6.QtXml.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +14580 INFO: Analyzing hidden import 'PySide6._config' +14581 INFO: Analyzing hidden import 'PySide6._git_pyside_version' +14581 INFO: Analyzing hidden import 'PySide6.scripts' +14582 INFO: Analyzing hidden import 'PySide6.scripts.android_deploy' +14584 INFO: Analyzing hidden import 'PySide6.scripts.deploy' +14587 INFO: Analyzing hidden import 'PySide6.scripts.metaobjectdump' +14593 INFO: Analyzing hidden import 'PySide6.scripts.project' +14599 INFO: Analyzing hidden import 'PySide6.scripts.project_lib' +14629 INFO: Processing standard module hook 'hook-xml.etree.cElementTree.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +14633 INFO: Processing pre-safe-import-module hook 'hook-tomli.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks/pre_safe_import_module' +14654 INFO: Analyzing hidden import 'PySide6.scripts.pyside_tool' +14666 INFO: Processing standard module hook 'hook-sysconfig.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +14670 INFO: Analyzing hidden import 'PySide6.scripts.qml' +14673 INFO: Analyzing hidden import 'PySide6.scripts.qtpy2cpp' +14675 INFO: Analyzing hidden import 'PySide6.support' +14675 INFO: Analyzing hidden import 'PySide6.support.deprecated' +14675 INFO: Analyzing hidden import 'PySide6.support.generate_pyi' +14677 INFO: Processing module hooks (post-graph stage)... +14758 INFO: Performing binary vs. data reclassification (3662 entries) +15617 INFO: Looking for ctypes DLLs +15620 INFO: Analyzing run-time hooks ... +15623 INFO: Including run-time hook 'pyi_rth_inspect.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks/rthooks' +15624 INFO: Including run-time hook 'pyi_rth_pkgutil.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks/rthooks' +15625 INFO: Including run-time hook 'pyi_rth_multiprocessing.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks/rthooks' +15625 INFO: Including run-time hook 'pyi_rth_cryptography_openssl.py' from '/app/venv-linux/lib/python3.10/site-packages/_pyinstaller_hooks_contrib/rthooks' +15626 INFO: Including run-time hook 'pyi_rth_pyside6.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks/rthooks' +15627 INFO: Processing pre-find-module-path hook 'hook-_pyi_rth_utils.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks/pre_find_module_path' +15628 INFO: Processing standard module hook 'hook-_pyi_rth_utils.py' from '/app/venv-linux/lib/python3.10/site-packages/PyInstaller/hooks' +15694 INFO: Creating base_library.zip... +15704 INFO: Looking for dynamic libraries +20131 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6FFmpegStub-crypto.so.3'. +20131 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6FFmpegStub-ssl.so.3'. +20131 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6FFmpegStub-va-drm.so.2'. +20131 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6FFmpegStub-va-x11.so.2'. +20131 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6FFmpegStub-va.so.2'. +20131 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6Multimedia.so.6'. +20131 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6MultimediaQuick.so.6'. +20131 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6MultimediaWidgets.so.6'. +20131 WARNING: Library not found: could not resolve 'libpcsclite.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6Nfc.so.6'. +20131 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6Quick3DSpatialAudio.so.6'. +20131 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6SpatialAudio.so.6'. +20131 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6TextToSpeech.so.6'. +20131 WARNING: Library not found: could not resolve 'libXcomposite.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineCore.so.6'. +20131 WARNING: Library not found: could not resolve 'libsmime3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineCore.so.6'. +20131 WARNING: Library not found: could not resolve 'libnssutil3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineCore.so.6'. +20131 WARNING: Library not found: could not resolve 'libnspr4.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineCore.so.6'. +20131 WARNING: Library not found: could not resolve 'libXdamage.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineCore.so.6'. +20131 WARNING: Library not found: could not resolve 'libasound.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineCore.so.6'. +20131 WARNING: Library not found: could not resolve 'libnss3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineCore.so.6'. +20132 WARNING: Library not found: could not resolve 'libXrandr.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineCore.so.6'. +20132 WARNING: Library not found: could not resolve 'libXtst.so.6', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineCore.so.6'. +20132 WARNING: Library not found: could not resolve 'libxkbfile.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineCore.so.6'. +20132 WARNING: Library not found: could not resolve 'libXcomposite.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineQuick.so.6'. +20132 WARNING: Library not found: could not resolve 'libsmime3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineQuick.so.6'. +20132 WARNING: Library not found: could not resolve 'libnssutil3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineQuick.so.6'. +20132 WARNING: Library not found: could not resolve 'libnspr4.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineQuick.so.6'. +20132 WARNING: Library not found: could not resolve 'libXdamage.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineQuick.so.6'. +20132 WARNING: Library not found: could not resolve 'libasound.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineQuick.so.6'. +20132 WARNING: Library not found: could not resolve 'libnss3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineQuick.so.6'. +20132 WARNING: Library not found: could not resolve 'libXrandr.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineQuick.so.6'. +20132 WARNING: Library not found: could not resolve 'libXtst.so.6', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineQuick.so.6'. +20132 WARNING: Library not found: could not resolve 'libxkbfile.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineQuick.so.6'. +20132 WARNING: Library not found: could not resolve 'libXcomposite.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineWidgets.so.6'. +20132 WARNING: Library not found: could not resolve 'libsmime3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineWidgets.so.6'. +20132 WARNING: Library not found: could not resolve 'libnssutil3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineWidgets.so.6'. +20132 WARNING: Library not found: could not resolve 'libnspr4.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineWidgets.so.6'. +20132 WARNING: Library not found: could not resolve 'libXdamage.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineWidgets.so.6'. +20132 WARNING: Library not found: could not resolve 'libasound.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineWidgets.so.6'. +20132 WARNING: Library not found: could not resolve 'libnss3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineWidgets.so.6'. +20132 WARNING: Library not found: could not resolve 'libXrandr.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineWidgets.so.6'. +20132 WARNING: Library not found: could not resolve 'libXtst.so.6', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineWidgets.so.6'. +20132 WARNING: Library not found: could not resolve 'libxkbfile.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6WebEngineWidgets.so.6'. +20132 WARNING: Library not found: could not resolve 'libxcb-icccm.so.4', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6XcbQpa.so.6'. +20132 WARNING: Library not found: could not resolve 'libxcb-keysyms.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6XcbQpa.so.6'. +20132 WARNING: Library not found: could not resolve 'libxcb-util.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6XcbQpa.so.6'. +20132 WARNING: Library not found: could not resolve 'libxcb-image.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6XcbQpa.so.6'. +20132 WARNING: Library not found: could not resolve 'libxcb-render.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6XcbQpa.so.6'. +20132 WARNING: Library not found: could not resolve 'libxcb-cursor.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6XcbQpa.so.6'. +20132 WARNING: Library not found: could not resolve 'libxcb-render-util.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6XcbQpa.so.6'. +20132 WARNING: Library not found: could not resolve 'libxkbcommon-x11.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6XcbQpa.so.6'. +20132 WARNING: Library not found: could not resolve 'libxcb-shape.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6XcbQpa.so.6'. +20132 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libavcodec.so.61'. +20132 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libavcodec.so.61.19.101'. +20132 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libavformat.so.61'. +20132 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libavformat.so.61.7.100'. +20132 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libavutil.so.59'. +20132 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libavutil.so.59.39.100'. +20132 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libswresample.so.5'. +20132 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libswresample.so.5.3.100'. +20132 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libswscale.so.8'. +20132 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libswscale.so.8.3.100'. +20132 WARNING: Library not found: could not resolve 'libXcomposite.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/libexec/QtWebEngineProcess'. +20132 WARNING: Library not found: could not resolve 'libsmime3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/libexec/QtWebEngineProcess'. +20132 WARNING: Library not found: could not resolve 'libnssutil3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/libexec/QtWebEngineProcess'. +20132 WARNING: Library not found: could not resolve 'libnspr4.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/libexec/QtWebEngineProcess'. +20132 WARNING: Library not found: could not resolve 'libXdamage.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/libexec/QtWebEngineProcess'. +20132 WARNING: Library not found: could not resolve 'libasound.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/libexec/QtWebEngineProcess'. +20132 WARNING: Library not found: could not resolve 'libnss3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/libexec/QtWebEngineProcess'. +20132 WARNING: Library not found: could not resolve 'libXrandr.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/libexec/QtWebEngineProcess'. +20132 WARNING: Library not found: could not resolve 'libXtst.so.6', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/libexec/QtWebEngineProcess'. +20132 WARNING: Library not found: could not resolve 'libxkbfile.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/libexec/QtWebEngineProcess'. +20133 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libavcodec.so'. +20133 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libavformat.so'. +20133 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libavutil.so'. +20133 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libswresample.so'. +20133 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/lib/libswscale.so'. +20133 WARNING: Library not found: could not resolve 'libXcomposite.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/designer/libqwebengineview.so'. +20133 WARNING: Library not found: could not resolve 'libsmime3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/designer/libqwebengineview.so'. +20133 WARNING: Library not found: could not resolve 'libnssutil3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/designer/libqwebengineview.so'. +20133 WARNING: Library not found: could not resolve 'libnspr4.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/designer/libqwebengineview.so'. +20133 WARNING: Library not found: could not resolve 'libXdamage.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/designer/libqwebengineview.so'. +20133 WARNING: Library not found: could not resolve 'libasound.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/designer/libqwebengineview.so'. +20133 WARNING: Library not found: could not resolve 'libnss3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/designer/libqwebengineview.so'. +20133 WARNING: Library not found: could not resolve 'libXrandr.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/designer/libqwebengineview.so'. +20133 WARNING: Library not found: could not resolve 'libXtst.so.6', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/designer/libqwebengineview.so'. +20133 WARNING: Library not found: could not resolve 'libxkbfile.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/designer/libqwebengineview.so'. +20133 WARNING: Library not found: could not resolve 'libQt6EglFsKmsGbmSupport.so.6', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/egldeviceintegrations/libqeglfs-kms-integration.so'. +20133 WARNING: Library not found: could not resolve 'libXrandr.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/multimedia/libffmpegmediaplugin.so'. +20133 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/multimedia/libffmpegmediaplugin.so'. +20133 WARNING: Library not found: could not resolve 'libxcb-icccm.so.4', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/platforms/libqxcb.so'. +20133 WARNING: Library not found: could not resolve 'libxcb-keysyms.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/platforms/libqxcb.so'. +20133 WARNING: Library not found: could not resolve 'libxcb-util.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/platforms/libqxcb.so'. +20133 WARNING: Library not found: could not resolve 'libxcb-image.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/platforms/libqxcb.so'. +20133 WARNING: Library not found: could not resolve 'libxcb-render.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/platforms/libqxcb.so'. +20133 WARNING: Library not found: could not resolve 'libxcb-cursor.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/platforms/libqxcb.so'. +20133 WARNING: Library not found: could not resolve 'libxcb-render-util.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/platforms/libqxcb.so'. +20133 WARNING: Library not found: could not resolve 'libxkbcommon-x11.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/platforms/libqxcb.so'. +20133 WARNING: Library not found: could not resolve 'libxcb-shape.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/platforms/libqxcb.so'. +20133 WARNING: Library not found: could not resolve 'libgtk-3.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/platformthemes/libqgtk3.so'. +20133 WARNING: Library not found: could not resolve 'libcairo.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/platformthemes/libqgtk3.so'. +20133 WARNING: Library not found: could not resolve 'libpango-1.0.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/platformthemes/libqgtk3.so'. +20133 WARNING: Library not found: could not resolve 'libgdk-3.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/platformthemes/libqgtk3.so'. +20133 WARNING: Library not found: could not resolve 'libharfbuzz.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/platformthemes/libqgtk3.so'. +20133 WARNING: Library not found: could not resolve 'libgdk_pixbuf-2.0.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/platformthemes/libqgtk3.so'. +20133 WARNING: Library not found: could not resolve 'libpangocairo-1.0.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/platformthemes/libqgtk3.so'. +20133 WARNING: Library not found: could not resolve 'libatk-1.0.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/platformthemes/libqgtk3.so'. +20133 WARNING: Library not found: could not resolve 'libcairo-gobject.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/platformthemes/libqgtk3.so'. +20133 WARNING: Library not found: could not resolve 'libcups.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/printsupport/libcupsprintersupport.so'. +20133 WARNING: Library not found: could not resolve 'libfbclient.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/sqldrivers/libqsqlibase.so'. +20133 WARNING: Library not found: could not resolve 'libmimerapi.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/sqldrivers/libqsqlmimer.so'. +20133 WARNING: Library not found: could not resolve 'libmysqlclient.so.21', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/sqldrivers/libqsqlmysql.so'. +20133 WARNING: Library not found: could not resolve 'libclntsh.so.23.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/sqldrivers/libqsqloci.so'. +20133 WARNING: Library not found: could not resolve 'libpq.so.5', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/sqldrivers/libqsqlpsql.so'. +20133 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/texttospeech/libqtexttospeech_mock.so'. +20133 WARNING: Library not found: could not resolve 'libspeechd.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/texttospeech/libqtexttospeech_speechd.so'. +20133 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/texttospeech/libqtexttospeech_speechd.so'. +20133 WARNING: Library not found: could not resolve 'libXcomposite.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/webview/libqtwebview_webengine.so'. +20133 WARNING: Library not found: could not resolve 'libsmime3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/webview/libqtwebview_webengine.so'. +20133 WARNING: Library not found: could not resolve 'libnssutil3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/webview/libqtwebview_webengine.so'. +20133 WARNING: Library not found: could not resolve 'libnspr4.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/webview/libqtwebview_webengine.so'. +20133 WARNING: Library not found: could not resolve 'libXdamage.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/webview/libqtwebview_webengine.so'. +20133 WARNING: Library not found: could not resolve 'libasound.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/webview/libqtwebview_webengine.so'. +20133 WARNING: Library not found: could not resolve 'libnss3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/webview/libqtwebview_webengine.so'. +20133 WARNING: Library not found: could not resolve 'libXrandr.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/webview/libqtwebview_webengine.so'. +20133 WARNING: Library not found: could not resolve 'libXtst.so.6', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/webview/libqtwebview_webengine.so'. +20133 WARNING: Library not found: could not resolve 'libxkbfile.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/webview/libqtwebview_webengine.so'. +20133 WARNING: Library not found: could not resolve 'libxcb-icccm.so.4', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/xcbglintegrations/libqxcb-egl-integration.so'. +20134 WARNING: Library not found: could not resolve 'libxcb-keysyms.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/xcbglintegrations/libqxcb-egl-integration.so'. +20134 WARNING: Library not found: could not resolve 'libxcb-util.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/xcbglintegrations/libqxcb-egl-integration.so'. +20134 WARNING: Library not found: could not resolve 'libxcb-image.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/xcbglintegrations/libqxcb-egl-integration.so'. +20134 WARNING: Library not found: could not resolve 'libxcb-render.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/xcbglintegrations/libqxcb-egl-integration.so'. +20134 WARNING: Library not found: could not resolve 'libxcb-cursor.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/xcbglintegrations/libqxcb-egl-integration.so'. +20134 WARNING: Library not found: could not resolve 'libxcb-render-util.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/xcbglintegrations/libqxcb-egl-integration.so'. +20134 WARNING: Library not found: could not resolve 'libxkbcommon-x11.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/xcbglintegrations/libqxcb-egl-integration.so'. +20134 WARNING: Library not found: could not resolve 'libxcb-shape.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/xcbglintegrations/libqxcb-egl-integration.so'. +20134 WARNING: Library not found: could not resolve 'libxcb-icccm.so.4', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/xcbglintegrations/libqxcb-glx-integration.so'. +20134 WARNING: Library not found: could not resolve 'libxcb-keysyms.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/xcbglintegrations/libqxcb-glx-integration.so'. +20134 WARNING: Library not found: could not resolve 'libxcb-util.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/xcbglintegrations/libqxcb-glx-integration.so'. +20134 WARNING: Library not found: could not resolve 'libxcb-image.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/xcbglintegrations/libqxcb-glx-integration.so'. +20134 WARNING: Library not found: could not resolve 'libxcb-render.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/xcbglintegrations/libqxcb-glx-integration.so'. +20134 WARNING: Library not found: could not resolve 'libxcb-cursor.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/xcbglintegrations/libqxcb-glx-integration.so'. +20134 WARNING: Library not found: could not resolve 'libxcb-render-util.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/xcbglintegrations/libqxcb-glx-integration.so'. +20134 WARNING: Library not found: could not resolve 'libxkbcommon-x11.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/xcbglintegrations/libqxcb-glx-integration.so'. +20134 WARNING: Library not found: could not resolve 'libxcb-shape.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/plugins/xcbglintegrations/libqxcb-glx-integration.so'. +20134 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/qml/QtMultimedia/libquickmultimediaplugin.so'. +20134 WARNING: Library not found: could not resolve 'libQt6QuickShapesDesignHelpers.so.6', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/qml/QtQuick/Shapes/DesignHelpers/libqtquickshapesdesignhelpersplugin.so'. +20134 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/qml/QtQuick/VirtualKeyboard/Components/libqtvkbcomponentsplugin.so'. +20134 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/qml/QtQuick3D/SpatialAudio/libquick3dspatialaudioplugin.so'. +20134 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/qml/QtTextToSpeech/libtexttospeechqmlplugin.so'. +20134 WARNING: Library not found: could not resolve 'libQt6WaylandCompositorIviapplication.so.6', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/qml/QtWayland/Compositor/IviApplication/libwaylandcompositoriviapplicationplugin.so'. +20134 WARNING: Library not found: could not resolve 'libQt6WaylandCompositorPresentationTime.so.6', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/qml/QtWayland/Compositor/PresentationTime/libwaylandcompositorpresentationtimeplugin.so'. +20134 WARNING: Library not found: could not resolve 'libQt6WaylandCompositorWLShell.so.6', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/qml/QtWayland/Compositor/WlShell/libwaylandcompositorwlshellplugin.so'. +20134 WARNING: Library not found: could not resolve 'libQt6WaylandCompositorXdgShell.so.6', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/qml/QtWayland/Compositor/XdgShell/libwaylandcompositorxdgshellplugin.so'. +20134 WARNING: Library not found: could not resolve 'libXcomposite.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/qml/QtWebEngine/libqtwebenginequickplugin.so'. +20134 WARNING: Library not found: could not resolve 'libsmime3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/qml/QtWebEngine/libqtwebenginequickplugin.so'. +20134 WARNING: Library not found: could not resolve 'libnssutil3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/qml/QtWebEngine/libqtwebenginequickplugin.so'. +20134 WARNING: Library not found: could not resolve 'libnspr4.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/qml/QtWebEngine/libqtwebenginequickplugin.so'. +20134 WARNING: Library not found: could not resolve 'libXdamage.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/qml/QtWebEngine/libqtwebenginequickplugin.so'. +20134 WARNING: Library not found: could not resolve 'libasound.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/qml/QtWebEngine/libqtwebenginequickplugin.so'. +20134 WARNING: Library not found: could not resolve 'libnss3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/qml/QtWebEngine/libqtwebenginequickplugin.so'. +20134 WARNING: Library not found: could not resolve 'libXrandr.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/qml/QtWebEngine/libqtwebenginequickplugin.so'. +20134 WARNING: Library not found: could not resolve 'libXtst.so.6', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/qml/QtWebEngine/libqtwebenginequickplugin.so'. +20134 WARNING: Library not found: could not resolve 'libxkbfile.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/Qt/qml/QtWebEngine/libqtwebenginequickplugin.so'. +20134 WARNING: Library not found: could not resolve 'libXcomposite.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineWidgets.abi3.so'. +20134 WARNING: Library not found: could not resolve 'libsmime3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineWidgets.abi3.so'. +20134 WARNING: Library not found: could not resolve 'libnssutil3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineWidgets.abi3.so'. +20134 WARNING: Library not found: could not resolve 'libnspr4.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineWidgets.abi3.so'. +20134 WARNING: Library not found: could not resolve 'libXdamage.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineWidgets.abi3.so'. +20134 WARNING: Library not found: could not resolve 'libasound.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineWidgets.abi3.so'. +20134 WARNING: Library not found: could not resolve 'libnss3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineWidgets.abi3.so'. +20134 WARNING: Library not found: could not resolve 'libXrandr.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineWidgets.abi3.so'. +20134 WARNING: Library not found: could not resolve 'libXtst.so.6', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineWidgets.abi3.so'. +20134 WARNING: Library not found: could not resolve 'libxkbfile.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineWidgets.abi3.so'. +20134 WARNING: Library not found: could not resolve 'libXcomposite.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineQuick.abi3.so'. +20134 WARNING: Library not found: could not resolve 'libsmime3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineQuick.abi3.so'. +20134 WARNING: Library not found: could not resolve 'libnssutil3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineQuick.abi3.so'. +20135 WARNING: Library not found: could not resolve 'libnspr4.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineQuick.abi3.so'. +20135 WARNING: Library not found: could not resolve 'libXdamage.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineQuick.abi3.so'. +20135 WARNING: Library not found: could not resolve 'libasound.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineQuick.abi3.so'. +20135 WARNING: Library not found: could not resolve 'libnss3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineQuick.abi3.so'. +20135 WARNING: Library not found: could not resolve 'libXrandr.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineQuick.abi3.so'. +20135 WARNING: Library not found: could not resolve 'libXtst.so.6', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineQuick.abi3.so'. +20135 WARNING: Library not found: could not resolve 'libxkbfile.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineQuick.abi3.so'. +20135 WARNING: Library not found: could not resolve 'libXcomposite.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineCore.abi3.so'. +20135 WARNING: Library not found: could not resolve 'libsmime3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineCore.abi3.so'. +20135 WARNING: Library not found: could not resolve 'libnssutil3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineCore.abi3.so'. +20135 WARNING: Library not found: could not resolve 'libnspr4.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineCore.abi3.so'. +20135 WARNING: Library not found: could not resolve 'libXdamage.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineCore.abi3.so'. +20135 WARNING: Library not found: could not resolve 'libasound.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineCore.abi3.so'. +20135 WARNING: Library not found: could not resolve 'libnss3.so', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineCore.abi3.so'. +20135 WARNING: Library not found: could not resolve 'libXrandr.so.2', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineCore.abi3.so'. +20135 WARNING: Library not found: could not resolve 'libXtst.so.6', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineCore.abi3.so'. +20135 WARNING: Library not found: could not resolve 'libxkbfile.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtWebEngineCore.abi3.so'. +20135 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtTextToSpeech.abi3.so'. +20135 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtSpatialAudio.abi3.so'. +20135 WARNING: Library not found: could not resolve 'libpcsclite.so.1', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtNfc.abi3.so'. +20135 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtMultimediaWidgets.abi3.so'. +20135 WARNING: Library not found: could not resolve 'libpulse.so.0', dependency of '/app/venv-linux/lib/python3.10/site-packages/PySide6/QtMultimedia.abi3.so'. +20194 INFO: Warnings written to /tmp/cloudrestore-build/CloudRestoreAS/warn-CloudRestoreAS.txt +20218 INFO: Graph cross-reference written to /tmp/cloudrestore-build/CloudRestoreAS/xref-CloudRestoreAS.html +20316 INFO: checking PYZ +20316 INFO: Building PYZ because PYZ-00.toc is non existent +20316 INFO: Building PYZ (ZlibArchive) /tmp/cloudrestore-build/CloudRestoreAS/PYZ-00.pyz +20520 INFO: Building PYZ (ZlibArchive) /tmp/cloudrestore-build/CloudRestoreAS/PYZ-00.pyz completed successfully. +20524 WARNING: Ignoring icon; supported only on Windows and macOS! +20569 INFO: checking PKG +20569 INFO: Building PKG because PKG-00.toc is non existent +20569 INFO: Building PKG (CArchive) CloudRestoreAS.pkg +88430 INFO: Building PKG (CArchive) CloudRestoreAS.pkg completed successfully. +88476 INFO: Bootloader /app/venv-linux/lib/python3.10/site-packages/PyInstaller/bootloader/Linux-64bit-intel/run +88476 INFO: checking EXE +88476 INFO: Building EXE because EXE-00.toc is non existent +88476 INFO: Building EXE from EXE-00.toc +88476 INFO: Copying bootloader EXE to /app/dist/CloudRestoreAS +88477 INFO: Appending PKG archive to custom ELF section in EXE +90592 INFO: Building EXE from EXE-00.toc completed successfully. +90652 INFO: Build complete! The results are available in: /app/dist Build OK: /app/dist/CloudRestoreAS Distribuir solo el binario; al ejecutar crea config/ automaticamente. diff --git a/build-windows.log b/build-windows.log index 0d62547..bb8b190 100644 --- a/build-windows.log +++ b/build-windows.log @@ -12,13 +12,13 @@ Python: C:\Users\Hugo Reyes\AppData\Local\Programs\Python\Python313\python.exe [notice] To update, run: \\wsl.localhost\Debian\home\hugo_reyes\dev\CloudRecoveryAS\venv-windows\Scripts\python.exe -m pip install --upgrade pip Ejecutando PyInstaller (onefile)... Workpath: C:\Users\Hugo Reyes\AppData\Local\Temp\cloudrestore-build -739 INFO: PyInstaller: 6.20.0, contrib hooks: 2026.6 -739 INFO: Python: 3.13.3 -760 INFO: Platform: Windows-11-10.0.26200-SP0 -760 INFO: Python environment: \\wsl.localhost\Debian\home\hugo_reyes\dev\CloudRecoveryAS\venv-windows -767 INFO: Removing temporary files and cleaning cache in C:\Users\Hugo Reyes\AppData\Local\pyinstaller -1995 WARNING: Failed to collect submodules for 'PySide6.scripts.deploy_lib' because importing 'PySide6.scripts.deploy_lib' raised: ModuleNotFoundError: No module named 'project_lib' -60908 INFO: Module search paths (PYTHONPATH): +937 INFO: PyInstaller: 6.20.0, contrib hooks: 2026.6 +937 INFO: Python: 3.13.3 +963 INFO: Platform: Windows-11-10.0.26200-SP0 +963 INFO: Python environment: \\wsl.localhost\Debian\home\hugo_reyes\dev\CloudRecoveryAS\venv-windows +971 INFO: Removing temporary files and cleaning cache in C:\Users\Hugo Reyes\AppData\Local\pyinstaller +1653 WARNING: Failed to collect submodules for 'PySide6.scripts.deploy_lib' because importing 'PySide6.scripts.deploy_lib' raised: ModuleNotFoundError: No module named 'project_lib' +41112 INFO: Module search paths (PYTHONPATH): ['\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS', 'C:\\Users\\Hugo ' 'Reyes\\AppData\\Local\\Programs\\Python\\Python313\\python313.zip', @@ -31,84 +31,84 @@ Workpath: C:\Users\Hugo Reyes\AppData\Local\Temp\cloudrestore-build '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\win32\\lib', '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\pythonwin', '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS'] -62173 INFO: Appending 'binaries' from .spec -63219 INFO: Appending 'datas' from .spec -73737 INFO: checking Analysis -73738 INFO: Building Analysis because Analysis-00.toc is non existent -73738 INFO: Looking for Python shared library... -73738 INFO: Using Python shared library: C:\Users\Hugo Reyes\AppData\Local\Programs\Python\Python313\python313.dll -73738 INFO: Running Analysis Analysis-00.toc -73738 INFO: Target bytecode optimization level: 0 -73738 INFO: Initializing module dependency graph... -73739 INFO: Initializing module graph hook caches... -73939 INFO: Analyzing modules for base_library.zip ... -79161 INFO: Processing standard module hook 'hook-encodings.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -83574 INFO: Processing standard module hook 'hook-pickle.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -86088 INFO: Processing standard module hook 'hook-heapq.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -89220 INFO: Caching module dependency graph... -89327 INFO: Analyzing \\wsl.localhost\Debian\home\hugo_reyes\dev\CloudRecoveryAS\runner.py -89562 INFO: Processing standard module hook 'hook-sqlite3.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -91855 INFO: Processing standard module hook 'hook-PySide6.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -92619 INFO: Processing standard module hook 'hook-shiboken6.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -92791 INFO: Processing standard module hook 'hook-PySide6.QtNetwork.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -97922 INFO: Processing standard module hook 'hook-PySide6.QtCore.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -102127 INFO: Processing standard module hook 'hook-PySide6.QtWidgets.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -109064 INFO: Processing standard module hook 'hook-PySide6.QtGui.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -140346 INFO: Processing standard module hook 'hook-platform.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -140386 INFO: Processing standard module hook 'hook-_ctypes.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -140584 INFO: Processing standard module hook 'hook-cryptography.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\_pyinstaller_hooks_contrib\\stdhooks' -144730 INFO: hook-cryptography: cryptography does not seem to be using dynamically linked OpenSSL. -145207 INFO: Processing standard module hook 'hook-pyodbc.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\_pyinstaller_hooks_contrib\\stdhooks' -145794 INFO: Processing standard module hook 'hook-urllib3.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\_pyinstaller_hooks_contrib\\stdhooks' -146377 INFO: Processing pre-safe-import-module hook 'hook-backports.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks\\pre_safe_import_module' -146440 INFO: SetuptoolsInfo: initializing cached setuptools info... -150867 INFO: Setuptools: 'backports' appears to be a full setuptools-vendored copy - creating alias to 'setuptools._vendor.backports'! -150904 INFO: Processing standard module hook 'hook-setuptools.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -151016 INFO: Processing pre-safe-import-module hook 'hook-distutils.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks\\pre_safe_import_module' -151182 INFO: Processing standard module hook 'hook-sysconfig.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -151201 INFO: Processing pre-safe-import-module hook 'hook-jaraco.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks\\pre_safe_import_module' -151205 INFO: Setuptools: 'jaraco' appears to be a full setuptools-vendored copy - creating alias to 'setuptools._vendor.jaraco'! -151239 INFO: Processing pre-safe-import-module hook 'hook-more_itertools.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks\\pre_safe_import_module' -151242 INFO: Setuptools: 'more_itertools' appears to be a setuptools-vendored copy - creating alias to 'setuptools._vendor.more_itertools'! -151523 INFO: Processing pre-safe-import-module hook 'hook-typing_extensions.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks\\pre_safe_import_module' -151727 INFO: Processing pre-safe-import-module hook 'hook-packaging.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks\\pre_safe_import_module' -152152 INFO: Processing standard module hook 'hook-setuptools._vendor.jaraco.text.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -152159 INFO: Processing pre-safe-import-module hook 'hook-importlib_resources.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks\\pre_safe_import_module' -152946 INFO: Processing pre-safe-import-module hook 'hook-importlib_metadata.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks\\pre_safe_import_module' -152950 INFO: Setuptools: 'importlib_metadata' appears to be a setuptools-vendored copy - creating alias to 'setuptools._vendor.importlib_metadata'! -152983 INFO: Processing standard module hook 'hook-setuptools._vendor.importlib_metadata.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -153157 INFO: Processing pre-safe-import-module hook 'hook-zipp.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks\\pre_safe_import_module' -153161 INFO: Setuptools: 'zipp' appears to be a setuptools-vendored copy - creating alias to 'setuptools._vendor.zipp'! -153794 INFO: Processing pre-safe-import-module hook 'hook-tomli.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks\\pre_safe_import_module' -153800 INFO: Setuptools: 'tomli' appears to be a setuptools-vendored copy - creating alias to 'setuptools._vendor.tomli'! -155363 INFO: Processing pre-safe-import-module hook 'hook-wheel.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks\\pre_safe_import_module' -155367 INFO: Setuptools: 'wheel' appears to be a setuptools-vendored copy - creating alias to 'setuptools._vendor.wheel'! -156755 INFO: Processing standard module hook 'hook-certifi.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\_pyinstaller_hooks_contrib\\stdhooks' -157092 INFO: Processing standard module hook 'hook-charset_normalizer.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\_pyinstaller_hooks_contrib\\stdhooks' -159788 INFO: Processing standard module hook 'hook-bcrypt.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\_pyinstaller_hooks_contrib\\stdhooks' -162515 INFO: Processing standard module hook 'hook-difflib.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -162955 INFO: Processing standard module hook 'hook-multiprocessing.util.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -163298 INFO: Processing standard module hook 'hook-xml.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -165811 INFO: Processing standard module hook 'hook-nacl.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\_pyinstaller_hooks_contrib\\stdhooks' -168908 INFO: Analyzing hidden import 'PySide6.Qt3DAnimation' -168980 INFO: Processing standard module hook 'hook-PySide6.Qt3DAnimation.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -171050 INFO: Processing standard module hook 'hook-PySide6.Qt3DCore.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -173412 INFO: Processing standard module hook 'hook-PySide6.Qt3DRender.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -187367 INFO: Processing standard module hook 'hook-PySide6.QtOpenGL.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -193279 INFO: Analyzing hidden import 'PySide6.Qt3DExtras' -193358 INFO: Processing standard module hook 'hook-PySide6.Qt3DExtras.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -195332 INFO: Analyzing hidden import 'PySide6.Qt3DInput' -195365 INFO: Processing standard module hook 'hook-PySide6.Qt3DInput.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -196759 INFO: Analyzing hidden import 'PySide6.Qt3DLogic' -196773 INFO: Processing standard module hook 'hook-PySide6.Qt3DLogic.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -198361 INFO: Analyzing hidden import 'PySide6.QtAsyncio' -198435 INFO: Analyzing hidden import 'PySide6.QtAxContainer' -198462 INFO: Processing standard module hook 'hook-PySide6.QtAxContainer.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -199952 INFO: Analyzing hidden import 'PySide6.QtBluetooth' -200101 INFO: Processing standard module hook 'hook-PySide6.QtBluetooth.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -201249 INFO: Analyzing hidden import 'PySide6.QtCanvasPainter' -201572 INFO: Processing standard module hook 'hook-PySide6.QtQuick.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -204027 INFO: Processing standard module hook 'hook-PySide6.QtQml.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +42264 INFO: Appending 'binaries' from .spec +43050 INFO: Appending 'datas' from .spec +51557 INFO: checking Analysis +51557 INFO: Building Analysis because Analysis-00.toc is non existent +51557 INFO: Looking for Python shared library... +51557 INFO: Using Python shared library: C:\Users\Hugo Reyes\AppData\Local\Programs\Python\Python313\python313.dll +51557 INFO: Running Analysis Analysis-00.toc +51557 INFO: Target bytecode optimization level: 0 +51557 INFO: Initializing module dependency graph... +51558 INFO: Initializing module graph hook caches... +51674 INFO: Analyzing modules for base_library.zip ... +54725 INFO: Processing standard module hook 'hook-encodings.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +56081 INFO: Processing standard module hook 'hook-heapq.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +58920 INFO: Processing standard module hook 'hook-pickle.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +63112 INFO: Caching module dependency graph... +63151 INFO: Analyzing \\wsl.localhost\Debian\home\hugo_reyes\dev\CloudRecoveryAS\runner.py +63182 INFO: Processing standard module hook 'hook-PySide6.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +63885 INFO: Processing standard module hook 'hook-shiboken6.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +64039 INFO: Processing standard module hook 'hook-PySide6.QtNetwork.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +68821 INFO: Processing standard module hook 'hook-PySide6.QtCore.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +73034 INFO: Processing standard module hook 'hook-PySide6.QtWidgets.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +77556 INFO: Processing standard module hook 'hook-PySide6.QtGui.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +106235 INFO: Processing standard module hook 'hook-sqlite3.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +108350 INFO: Processing standard module hook 'hook-platform.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +108409 INFO: Processing standard module hook 'hook-_ctypes.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +108712 INFO: Processing standard module hook 'hook-cryptography.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\_pyinstaller_hooks_contrib\\stdhooks' +112516 INFO: hook-cryptography: cryptography does not seem to be using dynamically linked OpenSSL. +112922 INFO: Processing standard module hook 'hook-pyodbc.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\_pyinstaller_hooks_contrib\\stdhooks' +113246 INFO: Processing standard module hook 'hook-urllib3.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\_pyinstaller_hooks_contrib\\stdhooks' +113483 INFO: Processing pre-safe-import-module hook 'hook-backports.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks\\pre_safe_import_module' +113491 INFO: SetuptoolsInfo: initializing cached setuptools info... +117037 INFO: Setuptools: 'backports' appears to be a full setuptools-vendored copy - creating alias to 'setuptools._vendor.backports'! +117060 INFO: Processing standard module hook 'hook-setuptools.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +117128 INFO: Processing pre-safe-import-module hook 'hook-distutils.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks\\pre_safe_import_module' +117267 INFO: Processing standard module hook 'hook-sysconfig.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +117294 INFO: Processing pre-safe-import-module hook 'hook-jaraco.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks\\pre_safe_import_module' +117301 INFO: Setuptools: 'jaraco' appears to be a full setuptools-vendored copy - creating alias to 'setuptools._vendor.jaraco'! +117334 INFO: Processing pre-safe-import-module hook 'hook-more_itertools.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks\\pre_safe_import_module' +117337 INFO: Setuptools: 'more_itertools' appears to be a setuptools-vendored copy - creating alias to 'setuptools._vendor.more_itertools'! +117657 INFO: Processing pre-safe-import-module hook 'hook-typing_extensions.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks\\pre_safe_import_module' +117854 INFO: Processing pre-safe-import-module hook 'hook-packaging.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks\\pre_safe_import_module' +118406 INFO: Processing standard module hook 'hook-setuptools._vendor.jaraco.text.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +118438 INFO: Processing pre-safe-import-module hook 'hook-importlib_resources.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks\\pre_safe_import_module' +119734 INFO: Processing pre-safe-import-module hook 'hook-importlib_metadata.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks\\pre_safe_import_module' +119737 INFO: Setuptools: 'importlib_metadata' appears to be a setuptools-vendored copy - creating alias to 'setuptools._vendor.importlib_metadata'! +119800 INFO: Processing standard module hook 'hook-setuptools._vendor.importlib_metadata.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +120023 INFO: Processing pre-safe-import-module hook 'hook-zipp.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks\\pre_safe_import_module' +120028 INFO: Setuptools: 'zipp' appears to be a setuptools-vendored copy - creating alias to 'setuptools._vendor.zipp'! +120782 INFO: Processing pre-safe-import-module hook 'hook-tomli.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks\\pre_safe_import_module' +120786 INFO: Setuptools: 'tomli' appears to be a setuptools-vendored copy - creating alias to 'setuptools._vendor.tomli'! +121992 INFO: Processing pre-safe-import-module hook 'hook-wheel.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks\\pre_safe_import_module' +121995 INFO: Setuptools: 'wheel' appears to be a setuptools-vendored copy - creating alias to 'setuptools._vendor.wheel'! +123153 INFO: Processing standard module hook 'hook-certifi.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\_pyinstaller_hooks_contrib\\stdhooks' +123371 INFO: Processing standard module hook 'hook-charset_normalizer.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\_pyinstaller_hooks_contrib\\stdhooks' +124596 INFO: Processing standard module hook 'hook-bcrypt.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\_pyinstaller_hooks_contrib\\stdhooks' +126239 INFO: Processing standard module hook 'hook-difflib.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +126586 INFO: Processing standard module hook 'hook-multiprocessing.util.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +126737 INFO: Processing standard module hook 'hook-xml.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +128497 INFO: Processing standard module hook 'hook-nacl.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\_pyinstaller_hooks_contrib\\stdhooks' +130237 INFO: Analyzing hidden import 'PySide6.Qt3DAnimation' +130274 INFO: Processing standard module hook 'hook-PySide6.Qt3DAnimation.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +131678 INFO: Processing standard module hook 'hook-PySide6.Qt3DCore.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +133194 INFO: Processing standard module hook 'hook-PySide6.Qt3DRender.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +144160 INFO: Processing standard module hook 'hook-PySide6.QtOpenGL.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +148253 INFO: Analyzing hidden import 'PySide6.Qt3DExtras' +148333 INFO: Processing standard module hook 'hook-PySide6.Qt3DExtras.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +150312 INFO: Analyzing hidden import 'PySide6.Qt3DInput' +150345 INFO: Processing standard module hook 'hook-PySide6.Qt3DInput.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +151944 INFO: Analyzing hidden import 'PySide6.Qt3DLogic' +151963 INFO: Processing standard module hook 'hook-PySide6.Qt3DLogic.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +153091 INFO: Analyzing hidden import 'PySide6.QtAsyncio' +153174 INFO: Analyzing hidden import 'PySide6.QtAxContainer' +153200 INFO: Processing standard module hook 'hook-PySide6.QtAxContainer.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +154345 INFO: Analyzing hidden import 'PySide6.QtBluetooth' +154413 INFO: Processing standard module hook 'hook-PySide6.QtBluetooth.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +155394 INFO: Analyzing hidden import 'PySide6.QtCanvasPainter' +155709 INFO: Processing standard module hook 'hook-PySide6.QtQuick.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +159855 INFO: Processing standard module hook 'hook-PySide6.QtQml.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' --- Logging error --- Traceback (most recent call last): File "C:\Users\Hugo Reyes\AppData\Local\Programs\Python\Python313\Lib\logging\__init__.py", line 1150, in emit @@ -198,129 +198,146 @@ Call stack: logger.warn("%s: QML plugin binary %r does not exist!", str(plugin_file)) Message: '%s: QML plugin binary %r does not exist!' Arguments: ('\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PySide6\\qml\\Qt\\labs\\assetdownloader\\qmlassetdownloaderprivateplugin.dll',) -275746 INFO: Analyzing hidden import 'PySide6.QtCharts' -276105 INFO: Processing standard module hook 'hook-PySide6.QtCharts.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -279221 INFO: Analyzing hidden import 'PySide6.QtConcurrent' -279250 INFO: Processing standard module hook 'hook-PySide6.QtConcurrent.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -280311 INFO: Analyzing hidden import 'PySide6.QtDBus' -280357 INFO: Processing standard module hook 'hook-PySide6.QtDBus.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -281539 INFO: Analyzing hidden import 'PySide6.QtDataVisualization' -281715 INFO: Processing standard module hook 'hook-PySide6.QtDataVisualization.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -283429 INFO: Analyzing hidden import 'PySide6.QtDesigner' -283475 INFO: Processing standard module hook 'hook-PySide6.QtDesigner.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -287863 INFO: Analyzing hidden import 'PySide6.QtGraphs' -288258 INFO: Processing standard module hook 'hook-PySide6.QtGraphs.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -290498 INFO: Analyzing hidden import 'PySide6.QtGraphsWidgets' -290529 INFO: Processing standard module hook 'hook-PySide6.QtGraphsWidgets.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -291489 INFO: Processing standard module hook 'hook-PySide6.QtQuickWidgets.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -293266 INFO: Analyzing hidden import 'PySide6.QtHelp' -293297 INFO: Processing standard module hook 'hook-PySide6.QtHelp.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -294778 INFO: Analyzing hidden import 'PySide6.QtHttpServer' -294836 INFO: Processing standard module hook 'hook-PySide6.QtHttpServer.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -295978 INFO: Analyzing hidden import 'PySide6.QtLocation' -296080 INFO: Processing standard module hook 'hook-PySide6.QtLocation.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -299546 INFO: Processing standard module hook 'hook-PySide6.QtPositioning.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -302720 INFO: Analyzing hidden import 'PySide6.QtMultimedia' -302889 INFO: Processing standard module hook 'hook-PySide6.QtMultimedia.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -307961 INFO: Analyzing hidden import 'PySide6.QtMultimediaWidgets' -308000 INFO: Processing standard module hook 'hook-PySide6.QtMultimediaWidgets.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -310129 INFO: Analyzing hidden import 'PySide6.QtNetworkAuth' -310201 INFO: Processing standard module hook 'hook-PySide6.QtNetworkAuth.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -311724 INFO: Analyzing hidden import 'PySide6.QtNfc' -311759 INFO: Processing standard module hook 'hook-PySide6.QtNfc.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -312965 INFO: Analyzing hidden import 'PySide6.QtOpenGLWidgets' -312999 INFO: Processing standard module hook 'hook-PySide6.QtOpenGLWidgets.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -314755 INFO: Analyzing hidden import 'PySide6.QtPdf' -314785 INFO: Processing standard module hook 'hook-PySide6.QtPdf.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -316217 INFO: Analyzing hidden import 'PySide6.QtPdfWidgets' -316256 INFO: Processing standard module hook 'hook-PySide6.QtPdfWidgets.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -318721 INFO: Analyzing hidden import 'PySide6.QtPrintSupport' -318783 INFO: Processing standard module hook 'hook-PySide6.QtPrintSupport.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -321097 INFO: Analyzing hidden import 'PySide6.QtQuick3D' -321121 INFO: Processing standard module hook 'hook-PySide6.QtQuick3D.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -323189 INFO: Analyzing hidden import 'PySide6.QtQuickControls2' -323210 INFO: Processing standard module hook 'hook-PySide6.QtQuickControls2.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -324672 INFO: Analyzing hidden import 'PySide6.QtQuickTest' -324686 INFO: Analyzing hidden import 'PySide6.QtRemoteObjects' -324716 INFO: Processing standard module hook 'hook-PySide6.QtRemoteObjects.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -325812 INFO: Analyzing hidden import 'PySide6.QtScxml' -325844 INFO: Processing standard module hook 'hook-PySide6.QtScxml.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -327910 INFO: Analyzing hidden import 'PySide6.QtSensors' -327951 INFO: Processing standard module hook 'hook-PySide6.QtSensors.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -329877 INFO: Analyzing hidden import 'PySide6.QtSerialBus' -329978 INFO: Processing standard module hook 'hook-PySide6.QtSerialBus.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -333019 INFO: Analyzing hidden import 'PySide6.QtSerialPort' -333041 INFO: Processing standard module hook 'hook-PySide6.QtSerialPort.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -334172 INFO: Analyzing hidden import 'PySide6.QtSpatialAudio' -334196 INFO: Processing standard module hook 'hook-PySide6.QtSpatialAudio.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -335737 INFO: Analyzing hidden import 'PySide6.QtSql' -335786 INFO: Processing standard module hook 'hook-PySide6.QtSql.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -340576 INFO: Analyzing hidden import 'PySide6.QtStateMachine' -340648 INFO: Processing standard module hook 'hook-PySide6.QtStateMachine.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -342135 INFO: Analyzing hidden import 'PySide6.QtSvg' -342220 INFO: Processing standard module hook 'hook-PySide6.QtSvg.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -344343 INFO: Analyzing hidden import 'PySide6.QtSvgWidgets' -344415 INFO: Processing standard module hook 'hook-PySide6.QtSvgWidgets.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -346445 INFO: Analyzing hidden import 'PySide6.QtTest' -346515 INFO: Processing standard module hook 'hook-PySide6.QtTest.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -348584 INFO: Analyzing hidden import 'PySide6.QtTextToSpeech' -348616 INFO: Processing standard module hook 'hook-PySide6.QtTextToSpeech.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -351294 INFO: Analyzing hidden import 'PySide6.QtUiTools' -351319 INFO: Processing standard module hook 'hook-PySide6.QtUiTools.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -353034 INFO: Analyzing hidden import 'PySide6.QtWebChannel' -353050 INFO: Processing standard module hook 'hook-PySide6.QtWebChannel.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -354101 INFO: Analyzing hidden import 'PySide6.QtWebEngineCore' -354172 INFO: Processing standard module hook 'hook-PySide6.QtWebEngineCore.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -358005 INFO: Analyzing hidden import 'PySide6.QtWebEngineQuick' -358049 INFO: Processing standard module hook 'hook-PySide6.QtWebEngineQuick.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -359992 INFO: Analyzing hidden import 'PySide6.QtWebEngineWidgets' -360012 INFO: Processing standard module hook 'hook-PySide6.QtWebEngineWidgets.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -361731 INFO: Analyzing hidden import 'PySide6.QtWebSockets' -361758 INFO: Processing standard module hook 'hook-PySide6.QtWebSockets.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -362821 INFO: Analyzing hidden import 'PySide6.QtWebView' -362842 INFO: Analyzing hidden import 'PySide6.QtXml' -362877 INFO: Processing standard module hook 'hook-PySide6.QtXml.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -364018 INFO: Analyzing hidden import 'PySide6._config' -364032 INFO: Analyzing hidden import 'PySide6._git_pyside_version' -364047 INFO: Analyzing hidden import 'PySide6.scripts' -364051 INFO: Analyzing hidden import 'PySide6.scripts.deploy' -364083 INFO: Analyzing hidden import 'PySide6.scripts.metaobjectdump' -364144 INFO: Analyzing hidden import 'PySide6.scripts.project' -364206 INFO: Analyzing hidden import 'PySide6.scripts.project_lib' -364407 INFO: Processing standard module hook 'hook-xml.etree.cElementTree.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -364588 INFO: Analyzing hidden import 'PySide6.scripts.pyside_tool' -364619 INFO: Analyzing hidden import 'PySide6.scripts.qml' -364648 INFO: Analyzing hidden import 'PySide6.scripts.qtpy2cpp' -364670 INFO: Analyzing hidden import 'PySide6.support' -364682 INFO: Analyzing hidden import 'PySide6.support.deprecated' -364697 INFO: Analyzing hidden import 'PySide6.support.generate_pyi' -364717 INFO: Processing module hooks (post-graph stage)... -366519 INFO: Performing binary vs. data reclassification (3704 entries) -434075 INFO: Looking for ctypes DLLs -434137 INFO: Analyzing run-time hooks ... -434140 INFO: Including run-time hook 'pyi_rth_inspect.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks\\rthooks' -434182 INFO: Including run-time hook 'pyi_rth_setuptools.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks\\rthooks' -434219 INFO: Including run-time hook 'pyi_rth_pkgutil.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks\\rthooks' -434274 INFO: Including run-time hook 'pyi_rth_multiprocessing.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks\\rthooks' -434306 INFO: Including run-time hook 'pyi_rth_cryptography_openssl.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\_pyinstaller_hooks_contrib\\rthooks' -434323 INFO: Including run-time hook 'pyi_rth_pyside6.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks\\rthooks' -434347 INFO: Processing pre-find-module-path hook 'hook-_pyi_rth_utils.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks\\pre_find_module_path' -434407 INFO: Processing standard module hook 'hook-_pyi_rth_utils.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' -434578 INFO: Creating base_library.zip... -434595 INFO: Looking for dynamic libraries -448674 INFO: Extra DLL search directories (AddDllDirectory): ['\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\shiboken6'] -448674 INFO: Extra DLL search directories (PATH): ['\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PySide6'] -627416 WARNING: Library not found: could not resolve 'fbclient.dll', dependency of '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PySide6\\plugins\\sqldrivers\\qsqlibase.dll'. -627645 WARNING: Library not found: could not resolve 'MIMAPI64.dll', dependency of '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PySide6\\plugins\\sqldrivers\\qsqlmimer.dll'. -627727 WARNING: Library not found: could not resolve 'OCI.dll', dependency of '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PySide6\\plugins\\sqldrivers\\qsqloci.dll'. -627756 WARNING: Library not found: could not resolve 'LIBPQ.dll', dependency of '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PySide6\\plugins\\sqldrivers\\qsqlpsql.dll'. -628660 WARNING: Library not found: could not resolve 'Qt6QuickShapesDesignHelpers.dll', dependency of '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PySide6\\qml\\QtQuick\\Shapes\\DesignHelpers\\qtquickshapesdesignhelpersplugin.dll'. -634420 INFO: Warnings written to C:\Users\Hugo Reyes\AppData\Local\Temp\cloudrestore-build\CloudRestoreAS\warn-CloudRestoreAS.txt -634496 INFO: Graph cross-reference written to C:\Users\Hugo Reyes\AppData\Local\Temp\cloudrestore-build\CloudRestoreAS\xref-CloudRestoreAS.html -634828 INFO: checking PYZ -634828 INFO: Building PYZ because PYZ-00.toc is non existent -634828 INFO: Building PYZ (ZlibArchive) C:\Users\Hugo Reyes\AppData\Local\Temp\cloudrestore-build\CloudRestoreAS\PYZ-00.pyz -635544 INFO: Building PYZ (ZlibArchive) C:\Users\Hugo Reyes\AppData\Local\Temp\cloudrestore-build\CloudRestoreAS\PYZ-00.pyz completed successfully. -635679 INFO: checking PKG -635679 INFO: Building PKG because PKG-00.toc is non existent -635679 INFO: Building PKG (CArchive) CloudRestoreAS.pkg +230199 INFO: Analyzing hidden import 'PySide6.QtCharts' +230330 INFO: Processing standard module hook 'hook-PySide6.QtCharts.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +232540 INFO: Analyzing hidden import 'PySide6.QtConcurrent' +232556 INFO: Processing standard module hook 'hook-PySide6.QtConcurrent.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +233299 INFO: Analyzing hidden import 'PySide6.QtDBus' +233342 INFO: Processing standard module hook 'hook-PySide6.QtDBus.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +234446 INFO: Analyzing hidden import 'PySide6.QtDataVisualization' +234568 INFO: Processing standard module hook 'hook-PySide6.QtDataVisualization.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +236233 INFO: Analyzing hidden import 'PySide6.QtDesigner' +236274 INFO: Processing standard module hook 'hook-PySide6.QtDesigner.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +241104 INFO: Analyzing hidden import 'PySide6.QtGraphs' +241324 INFO: Processing standard module hook 'hook-PySide6.QtGraphs.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +243536 INFO: Analyzing hidden import 'PySide6.QtGraphsWidgets' +243565 INFO: Processing standard module hook 'hook-PySide6.QtGraphsWidgets.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +244563 INFO: Processing standard module hook 'hook-PySide6.QtQuickWidgets.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +246244 INFO: Analyzing hidden import 'PySide6.QtHelp' +246273 INFO: Processing standard module hook 'hook-PySide6.QtHelp.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +247638 INFO: Analyzing hidden import 'PySide6.QtHttpServer' +247669 INFO: Processing standard module hook 'hook-PySide6.QtHttpServer.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +249385 INFO: Analyzing hidden import 'PySide6.QtLocation' +249581 INFO: Processing standard module hook 'hook-PySide6.QtLocation.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +252459 INFO: Processing standard module hook 'hook-PySide6.QtPositioning.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +254747 INFO: Analyzing hidden import 'PySide6.QtMultimedia' +254834 INFO: Processing standard module hook 'hook-PySide6.QtMultimedia.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +258359 INFO: Analyzing hidden import 'PySide6.QtMultimediaWidgets' +258375 INFO: Processing standard module hook 'hook-PySide6.QtMultimediaWidgets.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +260168 INFO: Analyzing hidden import 'PySide6.QtNetworkAuth' +260207 INFO: Processing standard module hook 'hook-PySide6.QtNetworkAuth.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +261657 INFO: Analyzing hidden import 'PySide6.QtNfc' +261690 INFO: Processing standard module hook 'hook-PySide6.QtNfc.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +262702 INFO: Analyzing hidden import 'PySide6.QtOpenGLWidgets' +262719 INFO: Processing standard module hook 'hook-PySide6.QtOpenGLWidgets.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +264327 INFO: Analyzing hidden import 'PySide6.QtPdf' +264355 INFO: Processing standard module hook 'hook-PySide6.QtPdf.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +265791 INFO: Analyzing hidden import 'PySide6.QtPdfWidgets' +265809 INFO: Processing standard module hook 'hook-PySide6.QtPdfWidgets.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +267252 INFO: Analyzing hidden import 'PySide6.QtPrintSupport' +267279 INFO: Processing standard module hook 'hook-PySide6.QtPrintSupport.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +269442 INFO: Analyzing hidden import 'PySide6.QtQuick3D' +269489 INFO: Processing standard module hook 'hook-PySide6.QtQuick3D.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +271627 INFO: Analyzing hidden import 'PySide6.QtQuickControls2' +271640 INFO: Processing standard module hook 'hook-PySide6.QtQuickControls2.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +273064 INFO: Analyzing hidden import 'PySide6.QtQuickTest' +273078 INFO: Analyzing hidden import 'PySide6.QtRemoteObjects' +273107 INFO: Processing standard module hook 'hook-PySide6.QtRemoteObjects.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +274340 INFO: Analyzing hidden import 'PySide6.QtScxml' +274392 INFO: Processing standard module hook 'hook-PySide6.QtScxml.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +275886 INFO: Analyzing hidden import 'PySide6.QtSensors' +275927 INFO: Processing standard module hook 'hook-PySide6.QtSensors.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +277621 INFO: Analyzing hidden import 'PySide6.QtSerialBus' +277722 INFO: Processing standard module hook 'hook-PySide6.QtSerialBus.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +281072 INFO: Analyzing hidden import 'PySide6.QtSerialPort' +281104 INFO: Processing standard module hook 'hook-PySide6.QtSerialPort.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +282168 INFO: Analyzing hidden import 'PySide6.QtSpatialAudio' +282208 INFO: Processing standard module hook 'hook-PySide6.QtSpatialAudio.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +283945 INFO: Analyzing hidden import 'PySide6.QtSql' +284080 INFO: Processing standard module hook 'hook-PySide6.QtSql.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +288123 INFO: Analyzing hidden import 'PySide6.QtStateMachine' +288150 INFO: Processing standard module hook 'hook-PySide6.QtStateMachine.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +289986 INFO: Analyzing hidden import 'PySide6.QtSvg' +290006 INFO: Processing standard module hook 'hook-PySide6.QtSvg.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +291280 INFO: Analyzing hidden import 'PySide6.QtSvgWidgets' +291297 INFO: Processing standard module hook 'hook-PySide6.QtSvgWidgets.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +292814 INFO: Analyzing hidden import 'PySide6.QtTest' +292847 INFO: Processing standard module hook 'hook-PySide6.QtTest.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +294027 INFO: Analyzing hidden import 'PySide6.QtTextToSpeech' +294048 INFO: Processing standard module hook 'hook-PySide6.QtTextToSpeech.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +296163 INFO: Analyzing hidden import 'PySide6.QtUiTools' +296177 INFO: Processing standard module hook 'hook-PySide6.QtUiTools.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +297703 INFO: Analyzing hidden import 'PySide6.QtWebChannel' +297732 INFO: Processing standard module hook 'hook-PySide6.QtWebChannel.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +299086 INFO: Analyzing hidden import 'PySide6.QtWebEngineCore' +299287 INFO: Processing standard module hook 'hook-PySide6.QtWebEngineCore.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +302818 INFO: Analyzing hidden import 'PySide6.QtWebEngineQuick' +302842 INFO: Processing standard module hook 'hook-PySide6.QtWebEngineQuick.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +304326 INFO: Analyzing hidden import 'PySide6.QtWebEngineWidgets' +304347 INFO: Processing standard module hook 'hook-PySide6.QtWebEngineWidgets.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +306188 INFO: Analyzing hidden import 'PySide6.QtWebSockets' +306220 INFO: Processing standard module hook 'hook-PySide6.QtWebSockets.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +307657 INFO: Analyzing hidden import 'PySide6.QtWebView' +307698 INFO: Analyzing hidden import 'PySide6.QtXml' +307731 INFO: Processing standard module hook 'hook-PySide6.QtXml.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +309023 INFO: Analyzing hidden import 'PySide6._config' +309037 INFO: Analyzing hidden import 'PySide6._git_pyside_version' +309066 INFO: Analyzing hidden import 'PySide6.scripts' +309077 INFO: Analyzing hidden import 'PySide6.scripts.deploy' +309198 INFO: Analyzing hidden import 'PySide6.scripts.metaobjectdump' +309272 INFO: Analyzing hidden import 'PySide6.scripts.project' +309432 INFO: Analyzing hidden import 'PySide6.scripts.project_lib' +309645 INFO: Processing standard module hook 'hook-xml.etree.cElementTree.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +309737 INFO: Analyzing hidden import 'PySide6.scripts.pyside_tool' +309757 INFO: Analyzing hidden import 'PySide6.scripts.qml' +309783 INFO: Analyzing hidden import 'PySide6.scripts.qtpy2cpp' +309805 INFO: Analyzing hidden import 'PySide6.support' +309816 INFO: Analyzing hidden import 'PySide6.support.deprecated' +309829 INFO: Analyzing hidden import 'PySide6.support.generate_pyi' +309853 INFO: Processing module hooks (post-graph stage)... +311602 INFO: Performing binary vs. data reclassification (3706 entries) +374194 INFO: Looking for ctypes DLLs +374269 INFO: Analyzing run-time hooks ... +374273 INFO: Including run-time hook 'pyi_rth_inspect.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks\\rthooks' +374295 INFO: Including run-time hook 'pyi_rth_setuptools.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks\\rthooks' +374315 INFO: Including run-time hook 'pyi_rth_pkgutil.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks\\rthooks' +374345 INFO: Including run-time hook 'pyi_rth_multiprocessing.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks\\rthooks' +374370 INFO: Including run-time hook 'pyi_rth_cryptography_openssl.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\_pyinstaller_hooks_contrib\\rthooks' +374387 INFO: Including run-time hook 'pyi_rth_pyside6.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks\\rthooks' +374409 INFO: Processing pre-find-module-path hook 'hook-_pyi_rth_utils.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks\\pre_find_module_path' +374429 INFO: Processing standard module hook 'hook-_pyi_rth_utils.py' from '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PyInstaller\\hooks' +374573 INFO: Creating base_library.zip... +374601 INFO: Looking for dynamic libraries +388194 INFO: Extra DLL search directories (AddDllDirectory): ['\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\shiboken6'] +388194 INFO: Extra DLL search directories (PATH): ['\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PySide6'] +550512 WARNING: Library not found: could not resolve 'fbclient.dll', dependency of '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PySide6\\plugins\\sqldrivers\\qsqlibase.dll'. +550537 WARNING: Library not found: could not resolve 'MIMAPI64.dll', dependency of '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PySide6\\plugins\\sqldrivers\\qsqlmimer.dll'. +550564 WARNING: Library not found: could not resolve 'OCI.dll', dependency of '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PySide6\\plugins\\sqldrivers\\qsqloci.dll'. +550599 WARNING: Library not found: could not resolve 'LIBPQ.dll', dependency of '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PySide6\\plugins\\sqldrivers\\qsqlpsql.dll'. +551377 WARNING: Library not found: could not resolve 'Qt6QuickShapesDesignHelpers.dll', dependency of '\\\\wsl.localhost\\Debian\\home\\hugo_reyes\\dev\\CloudRecoveryAS\\venv-windows\\Lib\\site-packages\\PySide6\\qml\\QtQuick\\Shapes\\DesignHelpers\\qtquickshapesdesignhelpersplugin.dll'. +557267 INFO: Warnings written to C:\Users\Hugo Reyes\AppData\Local\Temp\cloudrestore-build\CloudRestoreAS\warn-CloudRestoreAS.txt +557345 INFO: Graph cross-reference written to C:\Users\Hugo Reyes\AppData\Local\Temp\cloudrestore-build\CloudRestoreAS\xref-CloudRestoreAS.html +557674 INFO: checking PYZ +557674 INFO: Building PYZ because PYZ-00.toc is non existent +557674 INFO: Building PYZ (ZlibArchive) C:\Users\Hugo Reyes\AppData\Local\Temp\cloudrestore-build\CloudRestoreAS\PYZ-00.pyz +558391 INFO: Building PYZ (ZlibArchive) C:\Users\Hugo Reyes\AppData\Local\Temp\cloudrestore-build\CloudRestoreAS\PYZ-00.pyz completed successfully. +558559 INFO: checking PKG +558559 INFO: Building PKG because PKG-00.toc is non existent +558559 INFO: Building PKG (CArchive) CloudRestoreAS.pkg +770535 INFO: Building PKG (CArchive) CloudRestoreAS.pkg completed successfully. +770717 INFO: Bootloader \\wsl.localhost\Debian\home\hugo_reyes\dev\CloudRecoveryAS\venv-windows\Lib\site-packages\PyInstaller\bootloader\Windows-64bit-intel\runw.exe +770717 INFO: checking EXE +770717 INFO: Building EXE because EXE-00.toc is non existent +770717 INFO: Building EXE from EXE-00.toc +770723 INFO: Copying bootloader EXE to \\wsl.localhost\Debian\home\hugo_reyes\dev\CloudRecoveryAS\dist\CloudRestoreAS.exe +770978 INFO: Copying icon to EXE +771258 INFO: Copying 0 resources to EXE +771258 INFO: Embedding manifest in EXE +771481 INFO: Appending PKG archive to EXE +774801 INFO: Fixing EXE headers +1021508 INFO: Building EXE from EXE-00.toc completed successfully. +1021631 INFO: Build complete! The results are available in: \\wsl.localhost\Debian\home\hugo_reyes\dev\CloudRecoveryAS\dist + +Build OK: \\wsl.localhost\Debian\home\hugo_reyes\dev\CloudRecoveryAS\dist\CloudRestoreAS.exe +Distribuir solo el .exe; al ejecutar crea config/ automaticamente. +===WINDOWS_BUILD_EXIT=0=== diff --git a/packaging/CloudRestoreAS.spec b/packaging/CloudRestoreAS.spec index 7f372ed..94822d1 100644 --- a/packaging/CloudRestoreAS.spec +++ b/packaging/CloudRestoreAS.spec @@ -74,6 +74,10 @@ a = Analysis( pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) +# Icono del ejecutable (solo aplica en Windows; en Linux se ignora sin error). +_icon_file = ROOT / "packaging" / "assets" / "tray-icon.ico" +_icon = str(_icon_file) if _icon_file.is_file() else None + exe = EXE( pyz, a.scripts, @@ -82,6 +86,7 @@ exe = EXE( a.datas, [], name="CloudRestoreAS", + icon=_icon, debug=False, bootloader_ignore_signals=False, strip=False, diff --git a/packaging/assets/tray-icon.ico b/packaging/assets/tray-icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..4e6f45da383608c180dc2a83d4350ffc4710b6d2 GIT binary patch literal 6385 zcmai2cT`i&wx1M8s0kgZp?5_PX#xQe1wl|i1W`g26%Z^SQW8Mv(xi7mM37Ia6e$Ts zrGrYh1eGFELhmFmdhcE9{qfd)XRTSg%{sI9@9f#L&j0`ci~x-WbczAZ001}oz+nC* z;~)S?(1)_}zvS<9J`4%~7W;2Iop*r)Kp^}}ZeakRgOUCM`t#>~w^#uPrH?3!bEnyu z1(@k-Hsdpf7wD9}B0wYm%oSauInv2PV?%wb`xDMM08yI-;k`OrhvZ+;WSGN-Lf1)Z zTrW9Oq7hHl3Eb^gwS2kZ1$W&YzlmQkn)%6eRrjn#O5K-J2g zW^T=@!sT+jlf4Y9t{n1oc_^Uta%`NwFJYmrB720l(79d$t8akHb7o=kzDxM==v!*L za;Mh?E_+ge3~evIX^%)-8l}zV9RPa7l8i|bnvR?=H5@mpXeO{`IaEU0CuGPX8>v6elr?bu0xymW&LFBq;$1j)2R!%zlTyh{2_J)h zuvC*RidRIi-sfh$FD|s~p)twuAzwBc(WD~4J-k9tKlAI8q~NmA96`MY(d4W$d8Jza zgQhTPNfY>Ta(zBucJt`}gD*YZfbw5_ZJ;|5bbMd@2VW9HhZ-xtz5L#x0^X%-FY2jy zEFG={L9CaU!17rI))$2<{)|({o3MSF1UlGz`m^`>85`K9jI!fI%h*r9=g$SF`f%+2 z9!EoxvKgH-Wu(nXXS1Hp&}XHc%XfmQQZHJ;fFUHImb^a?1Q)el$gFNbcEQc2ck}Lnxpe5qB&Ke_rDFCd!3V|MgkF$w z$_7O+h?@W|(pOF>(|RLlHBe0T_1_S?hbOc!nwp78Gf@om*$e@^hr&9Lt~V^^44?3W z6z&d}O9n;EWkYQ<_rs#LuBRc8QaNh_!3k3!!7f20{c5zlrjvoFgC^=W&~(*2V@^x- zt0_ld=Qu?%+P_O4G06ez1FIvAb90cut_bFuDN?3uhnb)|UY|_9BgprPN zW>kd#Q7uLJDlu|0|LWrgF>v)nTjG~ZTQ>4ACm%Kgjd_=PX>oN zcbXq%+c9o&Jldx~E7UdYoWhv5fHe=i|in;wyFvm9IH&vao!{?qV((W0P@Q=oqB< zL}#aMWct0n{-6Cz{rwHfeM|id&9l0*MafM6c-|e}{17$K%wHPz!BjZzo`m3iSo|c< ziGWWt=gb$`q#yItmxcIs;>;B0b6C4BF$}18LNj9fn!DVVeu@-%g`g&+@3$PVKuw=L z&OB1}(7@0A$v{@eL%k2WJl|(M#k4!Je+OQ0Q3<(q9cwsj)jDu-Z|lMQg7FsO$nO4( zHA8M35r=Y72SkH#wxLgJ{!4W`t_}v;XnFL2}^U5kt1ogFzPrGJV>*=!uOs08VZz# z%)X^g{#>)p3{tl7Ui>An{A%f2Fmo=MZD6@ynm>97`KqK}>QRPr?5*w#a=)RKP`R49 zMwJ-dUs*CMcBI;q9F}5*>nD1^-NY9Z7^rb74Kj8+ntJKm76d%uvaF7GGf@=YaTH52 zyY>EHJRq&HU%wVELT1Or$@O~Vu) zzEgapdFX}&=rWIZ;(#^|Hja%cu;-n9hpc;7ui3rmBa$%5k>M+xWI|21Uqwhg(UZ^G zcbuDw?^$bum-jAzH6R-g%VGvRN3wd*?e z0Ko9*Uj<|_N6(!{AN{V}lHX68qA_#um}jb2N(t5#ubC$7o>j0t zt7JBi=P+anMT$#?Mv8ZKQMy=mwvzlPi{JVd0%4X?6l!mv_Fmt@!d2_(gv+Yc!(Y1X z?%{71+Xc5c=zP&G6(PPXV&l$o)b@x}sw}yl(NZ@QFt!oKrK$YH>9R-cKW3dBQ&ws; zcT0(;LS)F|ioQ%+pW1|{Aw%GY%r7mC`5d>7iBD#gRn=E2ISbkZCcD0hNbDx*ayv-< zWVCm`w`CE2@AJIU$lrGTkhn{(%zmlrG# zCa2RL+@X9<=_YTBQq|#yPIyi#E=+rivwscRE7aAZTE@%or{45ddSxqweDL`B-E1v< zVoBdt^M{z~bHNAy++iA>5&04m@CE@|wocGg<^8?|mN#-PEo!N(-zT(N>lsaIJk@!< zta#$dfVIKt9irO%Mub7R$fV?uXzf^i`>dt~G95uDk>&g=ucfkrR85{;7z{IAVBWv_3gEI2Zmw&?vEAXQz5{kh!VPM~PLDC2 zDcwDNGCX?<4VY;m5R&*A`NS|GD8`x*i+C(V*Otf=OlaA31+%-aUNgOkLjow_e-jfJ z1K!XI}v6tIB7-}@FvQEC%v9}Ci zj~s+>Xo(x0?)a4;E6mBm4jKvwaZz{RK$!cG5O@(6&BhLdd4=~YehJ-!2=h@`!7k2l z8D&(X#$(SHzR{H)2T6G2*irp(-`&b#W4xZmxmxWLq??aA%}Dij;d?fi`H*^dVf?Y= z?)|$sUx~G+wPu8T2D_w^|x*cH6)I_qM8)X5RWet~K zt!Laqtqs<8AXg31{ukBR3WnR8C62JgD&|k!ICA#&u6x7HounUoH+FVf>Mpw7#Cp$e zxBS@qO&y6FHDfCgP%Ar@Tk~qWCG)cFT1z8C!CRz@tJ1X@((4Aqmb_DzKuft-UvFyd z*QoQx-yT=L%aGqz8lAK|<#q1umX58ShFlOz=(S&V=P%(Qjt=@>Q_s?RcRny!KF*(T zH+zS82FClT;_@P{}v(YF-71a@&KU6W8 zY@UdfAaWo(m;(EDy0Xg`^1W-xR-IDTidD8#hqMOF#ge&Cp*_*ff<2855BiSAUYu>iSshYmRP&uS zz}@p2slVg+P&BG+pqP_#NCBP#OXkP z+RATrye?c?Cg|qZfseBvw>~01@s0P^`feU;>5t?!CfmnAvv3dbw6)7G&51gL4TDm1 zjdSg8NWPlUtHi1YlqXp)kFbmU#_~t6&#f=6`}nrG(^k~|Y#eCIrq@~rpT!rKXYuUg zuiP?=?>-uqv;vJoadU@mSdrt|o4N>-1QuX zZ8$?ebBX@Gt>*wmDPJ)-uf7AzsO@}@c&-;QxSuqc6Tb=HB^-i1T&a{+x*iuSi3|R5 zGg}k`ZB&oaAuVx6#O@O^z$_w?6#5~U4OP?b)Ce1osToGp)Sc1@$i-GAO74I~X_mgs zqq5C>?s}eMts*2y!S&Gt0p4E`#y=tbYp{c1uJp2`ct(cZpC3~mUC8TA6&<9EOcvc> z?OsDf=klG&aAHHQ4_uUbKfH)|hiUOxNAyBtsRUb+W+I-AG4}lF53$JkLRyOh<~6AA;p)oX_)9)M@m&7Kr(yyoq9 z8Z)hhvx1siR;dHM*Jg!R5Btjy&B{w!ql1r8mIJnOg_iKNyE6SPQLu>i=D)7 z)3Sa}P(;)z%X~Z!1Nn&8d#=Hbov}Pe+n&RtPFDxYI1M@pk*KtOm|vmRfxiLhEql*lCm(;_6L3EC9>4i% z;KYH@SwW7_N0F4zkaY6OxUUg1b&LrEi~?0d+n|$gC|zLzLU<7|v|@Jpc1w7=7m7Ih zEGIW9W{T4^gC(Eiu+G=vbxZuU^74>Vtetg!5z%ELjqa>^i}A zWg+QN+;4H7mxCpOQh=%Mw7IL$NW^qql_Ul{$r(|drra@}tPz9MuRn0OU{3Bj`2z~a z&By8<5AVWAg6urxug~zwK=|G}cJ|*t;e<6V2paU8!?8d^j{`%ub3mY&iGc-nx^^HE zK=`%V<12q&JnmfKifl{nAJvmcov7!_L@eqMQvA?`Y!)!aBh$GuZT`naask@ zNJ2jO<)?4<-Tv7oXC)9}%uLv~_wc3DZV$2q?`xev%FgqAkpW3W&$no=-c5`WMDS#@Q3=wBvR{Hs$ zdV_QDf$)p{)-&tL-j~Fm|!2^gO6<3kw_GxYA zO%B2gfO61~6V#b1I~88JN22X4=YL-U|`3^+A#AV`;ayHV=9 zuu}~A!y9;%`X>0wf{mHSC*skBwt2jbMF>#D#@GbOh#AZLSz}k>C{qp+j)Sm^=%j73 zSn&`>poHf%3}6x8MRD^Gczf`2mTXXq`v~kR3Q02X2ncz$p{Gm$HMI=s!b~{`I8N+v zKzviX9`-$SaDoBjwF`mBDuPv-K46xC$Wb9s3k{|-?;#M(pPK|}aF`1I*qP4!*1!Nb zy|wwz2qgeW1sf6#p!Dmh5)y!T^CK}J4hDl`_0a@ikCbX9v_bP_Wi2j&WCjE?3n50I zt{8MuNqE^x2TukT1tS2($obX~x_06s&V#mBtc6BmhjTy=KocHyLb7@L8t7a>2)2># z4oi}nUyQWepWtsZm!G<$frRIK3r&uj>nU(Tp%!ZFI9>p?IPsTMfUcIC!wX3I0$5IO zJGHr1I^JoJ!|e26TUgO(_#aZiO%JV!_0kcB1!e;1HH>j>`@<-nxycuv?NZ`iRu}?$ zvCMZiabBDgOJ5>fxgo!F`Rn^Rxw*f1q{(Za$%5@cemOf>N8q_~s8ARXOOO zry?nNGmWf3{%RTxl5-i#ifdAgssl&m6tpvp>B)Z$l2Y*HPE<|JP3WMtFYfg?X{fMe z5(CjlxyTZ6F_z7=a)jKGbVy#~l0C3H!e3>apkO&8@(4r8_9MSdQp}s{uB8KgvYFud zFh4>tay72;_I{e#uD2tk6FJnb|I{;;Q7O*LzgVhxm+su8LC$Tfn0nXL>YfcRU2V$X zo5AN^4<~W@5PnZN?^J%5XFbV&{jLVNIRl;7HjX!zrry*CaY_tEV?1M4XnJ<)*~Q3M z9#(y7W<=U2@0(GN4|G-=T{_3a&dW_m^ksN1#HOmGdrm5mTS!qFq-ox5dsm~##)K7v zAeD?t#+MY&X05ii-jEqAeG41g>3J%$s(>UtOkBuCu~zzrhPnD7OH=cl7V0?&PV2!p z62^Hjz>we*48>g|cslnpp@BGQhY3W2SsA(>=^YHk!ujdEFCyJt4}yWlu5l5P?AO~& zMxHn5#sbsZzVs8CTDC7H3LU)V8Q{Bv%M&2LvF8&*XL7O7!2=!}k48D-hA!lihq1-e z3GXARB#aSW>mKJL9HHoqpg*~xO++$fN=_S* zJ36*(@`ARo&Za~~_v!F2974oVg^yV>E#_c`4_ce!vo8goe76|%*wF~rapX)Oe&f51 z-?4X92DtgJqf%$p&?(H4A@&GZ{%t(`H3;_^alEV6Qi_!4`2l%>W@_nu}AyU3;2C{ zt=<_Y>v)KB?hxmRJ@hl=gz5lqy`bj-vGz|#r;LUCm@gmO%Oii(_{*jTg8VTmt!MLX z>q#~^t7+iARRF!s6JX*`-`+0SoS3({_@}u$34w8v})e>M<2o>hY%NZJC0b05gy+h z)Q~lG)9O2KXvYF(3w0i|A2STRecn=Z2EVB3arTTZL8*N*Zw5+qZOKH4$WdewLD>(|(Kn4gu-DjvGii3*CSd`Uckg zRHupVu3`{_$$c!@B_+_VdPwGp20S}=?9QA(u+F7!?nXbb{b;*wq^OYzLRyKqBoN7w z-zGrpwZdoZhdk4qP$Na2KUiNpytU@1rqC(!;-UC@HtC73M@^pW)r3Wkqp+H$=jNiX yUpcskSMWX(tlNqg(9?(@Xs)e{9w-KREiMShFVkQqvgok{_eZY){rS&r{{H}Oy)zvE literal 0 HcmV?d00001 diff --git a/packaging/assets/tray-icon.png b/packaging/assets/tray-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..9729201f1f4de43bf7198cd083b9dd6ac9ac176a GIT binary patch literal 3183 zcmYLLc{r5o`+wedMrN!-wh*JmaI9q+%VCBjWb5RlI+ck+Wf13#WSN(e^-wBwtfeUR zDFGpp8I5_)TICbvaT*p zzX1S=DFiT^#BeO)ejorcmaa|?J{JagL!^}BEy^u3zAtwj8f&8XY$0y4pp80G{tE4_ zi#&PR_LB6AberF=`0Qu?u72{Feyxjv_qR5*Pb%332c5(~`uM~>%#fx3o11nUr1N>RHjZw|z$ z*7TiVR9)m>&wpqlr}dMpmNq{=&znC_YYG<45TktkMAPm;EY97m@+bMqYxLt`9$9U> zE@jWanes|Xi3>j5EV);0oc)(VvJQVkjkRFD8Z`Ik^G|HU|*K-Bhc(|UJ zYR8;XOwL$CZh=Y#muu0?QH4cNxsE5hRjQLz!^g12-Er+U3ODOOA-z3Buuzt3tPLM;%ciAO@=!@ zBv!0}fXKiFytRn@-V9EplfO_(=7i)g7om!EU}5$2?A0sdMGqP46JHj%qV?%sZPED) zV?vTVUpVfUEH4!Bw`&QPiks7q3i&Ji*^FNe*d5h#TLv$JyFx+xOqVa&c1O_I)>-3d0>k6U16EqRIe$84u}E`@F8Y(u)tIU`vUTn;`gXa$PJ}4`+aOCHQmvHJL(D7b>dMW{CAgPH0fG8IKzUxrN%3Hq4JEeyM;yB=_88n zx1>uHjO~WlMV5c`c7M;2KvT*`a2ZAoL!n#06FI6_%-sQcSNu^cdQe`f(i;l( zkNE9zH-WqTsMl%D-sI8eRXgzDdSS2GC_mD5xJC!6o4@Gyn-}-pp06;PGLd0#dF35` z2Pi1U{P=_(jzzD&m6QAV4UNoghH#+E3rz-ABn7*megX~E;vC2*XkeW?%*3)l? zECVY2LmBfYXrJB6WqfUW#whZ(p`-G$sY}%rwCNu&0-DpJE7Njz`_F3WvdtXxg&O>TC zKS^%X)q8xO)+(>cCzW76zAfxy@PeXm#prTkT#^Ky6wj87+kINAp?TC+N}zx|w#hxf z;0++F084&eO7Dr8EK89cS@f*kwoexv&lEa8=EuG*=9>q?9zqJ%OGLJJWz3cDiUa-Msu<6{79~ zFWD=br#~5+>h~aOtKFUZhjFgG+KziGX zypl4a(oWYuC<}XEkR;E_W0;O1F$s4UNTvv=sg=mviY=5xQ*?}DvR*Zl$Sp8uPy!#i z0zrC)U{>S+qzI6{5Q4p}ur4hSgcr}1`?|nb2sYlaECq0nRp90HDEcCwHrxI|CS`!Kj6At@z|q&tWOj{okf4_V^k5m2cp1Q@1F zuoA@T;2}zgXtmr1havYAf_8vIl3JkxmChGpb|-;cFAhgK+afAmSAQe<2&pG~Bdsv# zl5ox80WXq)A`E+5$Wc@P?EUM1Pzl~Op6i*!h#im>!;e~wv&8kzg^cCI$u`R1aOe%F zR1&B5O6IVM#H17gI-Jr^H*F9@mvgFD3Qj!;epH$OI>=Iy0!paj;MC{j(@M|}d$qbQ zMJ1)rA-M!<84p9wz1Nh&H1DFn;@vn&0Oduv*cZ*Xg!2V{@e+_)pb8mX8zuZ^Yassq zCFwR$P%6S4PKOvCf#(x1p-U!?AVy7o1A?!I}zSu-Ph&z;wlG!1n@uJxZyZ)*%?v1AVPsHI3efbVM-7}4d}w+z&7SG z7NmeNf>_6d$HQc_nwZlh^MXkb9?qECjAS31Z*uD`dtsje+#_h>2`zlIrlSpW!l*H{ zWlFI+f+iohmiWDh40G0%eM9Q?84LE%;Sg8v+k@dIIozfj#b9#e-vk8{?eRC=f{Hao zPz{yZV~~F2nZ2bdV!|i&;ywi8+_e57JlN;Vef@gTw>WN*9N^9{3?9AmSwWN0XV9Hb zX!HW#RpHvg^J_cN!*6+Uf1h-wyf$%(r7wK(jWT~*aKaGQQI56aY?19$ zl#bMLM=b4M9e&f77#W~N{Cl?(c~@879kufvK5t!b*oACUTxLu#+Ql>ES2MOsod$KC zQM<9xnUbNe6HoeAi@Dua|IxfyP|`0HwF};`_Q;}T++){#V#I5nI#w-jY3YGraKiV{ z#&Wj@LMd`Hvx?7X(<6NYHVpedG%CTL#mMa(0F>d+qB-}orluEuJ~;v?^F(QoA*7*^ zs%xTZ8hS(mtWT}_S0BUqC>}*(Lj7KTFRiU`><40*=W6vig zJy1v2bf)&imsJ()h$yt;=+1OTdaZgW$X8lmYMzf0mtTs^W5!DD{+2U$ij6pM&<+!P z$?V}84npSGfnCyI>-Xh+EO3tB2Ev8oG|3PJc#gVYq{ZXvdXcMerg7P9|JAjFr)1nT zHkIw?7uq$4$weZV;CTu=dq2E@MmpJZQD&oz;L|#gsIK3qW;Kn z^?19(ZA$e~U@2*-srOzz7GlmMA68FMC}~n>bokKo*Anhp4_Yu&4y@1fj2GvkEDTz; z?qA+EU%A5v4Scj78fVHc|ARhgIev&VkHS1MJKG@dVJsgtad5$m~`zIDU6P~PO$ btZ5O-O%K<9H8|-p5FgjQo=%S)DT)6BmnXw| literal 0 HcmV?d00001 diff --git a/packaging/scripts/make-icons.py b/packaging/scripts/make-icons.py new file mode 100644 index 0000000..7418c14 --- /dev/null +++ b/packaging/scripts/make-icons.py @@ -0,0 +1,155 @@ +#!/usr/bin/env python3 +"""Genera el icono de marca de CloudRestoreAS sin dependencias externas. + +Dibuja una "C" (anillo con apertura a la derecha) sobre un cuadro redondeado azul +(#0078D7), con anti-aliasing por supersampling. Codifica los PNG a mano (zlib + CRC) +y ensambla un .ico multi-tamano (entradas PNG, soportadas por Windows Vista+). + +Salida: + packaging/assets/tray-icon.png (256x256) + packaging/assets/tray-icon.ico (16,32,48,64,128,256) + +Uso: python3 packaging/scripts/make-icons.py +Solo usa la libreria estandar; corre con cualquier Python 3.x. +""" + +import math +import struct +import zlib +from pathlib import Path + +ROOT = Path(__file__).resolve().parent.parent.parent +ASSETS = ROOT / "packaging" / "assets" + +ICO_SIZES = (16, 32, 48, 64, 128, 256) +PNG_SIZE = 256 + +# Colores +BG = (0, 120, 215) # azul #0078D7 +FG = (255, 255, 255) # blanco +SS = 4 # factor de supersampling (anti-aliasing) + +# Geometria (fracciones del lado) +CORNER = 0.22 # radio de esquina del cuadro +RING_OUTER = 0.34 # radio externo de la "C" +RING_INNER = 0.20 # radio interno de la "C" +GAP_HALF_DEG = 40.0 # medio angulo de la apertura de la "C" (a la derecha) + + +def _render_rgba(size: int) -> bytes: + """Renderiza el icono a un buffer RGBA de size*size (4 bytes por pixel).""" + cx = cy = size / 2.0 + half = size / 2.0 + rc = CORNER * size + inner = RING_INNER * size + outer = RING_OUTER * size + cos_gap = math.cos(math.radians(GAP_HALF_DEG)) + inv = 1.0 / (SS * SS) + + out = bytearray(size * size * 4) + k = 0 + for py in range(size): + for px in range(size): + r_acc = g_acc = b_acc = a_acc = 0.0 + for sy in range(SS): + y = py + (sy + 0.5) / SS + dyc = y - cy + for sx in range(SS): + x = px + (sx + 0.5) / SS + # Cuadro redondeado (SDF): dentro si d <= 0 + bx = abs(x - cx) - (half - rc) + by = abs(y - cy) - (half - rc) + mx = bx if bx > 0.0 else 0.0 + my = by if by > 0.0 else 0.0 + d = math.hypot(mx, my) + min(max(bx, by), 0.0) - rc + if d > 0.0: + continue # fuera del cuadro -> transparente + # Dentro del cuadro: base azul + dxc = x - cx + rr = math.hypot(dxc, dyc) + in_ring = inner <= rr <= outer + in_gap = dxc > rr * cos_gap # apertura a la derecha + if in_ring and not in_gap: + r_acc += FG[0]; g_acc += FG[1]; b_acc += FG[2] + else: + r_acc += BG[0]; g_acc += BG[1]; b_acc += BG[2] + a_acc += 255.0 + out[k] = int(r_acc * inv + 0.5) + out[k + 1] = int(g_acc * inv + 0.5) + out[k + 2] = int(b_acc * inv + 0.5) + out[k + 3] = int(a_acc * inv + 0.5) + k += 4 + return bytes(out) + + +def _png_chunk(tag: bytes, data: bytes) -> bytes: + return ( + struct.pack(">I", len(data)) + + tag + + data + + struct.pack(">I", zlib.crc32(tag + data) & 0xFFFFFFFF) + ) + + +def _encode_png(size: int, rgba: bytes) -> bytes: + """Codifica un buffer RGBA a bytes PNG (8 bits, color type 6).""" + ihdr = struct.pack(">IIBBBBB", size, size, 8, 6, 0, 0, 0) + stride = size * 4 + raw = bytearray() + for row in range(size): + raw.append(0) # filtro None por scanline + raw += rgba[row * stride:(row + 1) * stride] + idat = zlib.compress(bytes(raw), 9) + return ( + b"\x89PNG\r\n\x1a\n" + + _png_chunk(b"IHDR", ihdr) + + _png_chunk(b"IDAT", idat) + + _png_chunk(b"IEND", b"") + ) + + +def _build_ico(pngs: dict) -> bytes: + """Ensambla un .ico con entradas PNG. pngs: {size: png_bytes}.""" + sizes = sorted(pngs) + count = len(sizes) + header = struct.pack(" None: + ASSETS.mkdir(parents=True, exist_ok=True) + pngs = {} + for size in ICO_SIZES: + rgba = _render_rgba(size) + pngs[size] = _encode_png(size, rgba) + print(f" render {size}x{size} -> {len(pngs[size])} bytes PNG") + + png_path = ASSETS / "tray-icon.png" + png_path.write_bytes(pngs[PNG_SIZE] if PNG_SIZE in pngs else _encode_png(PNG_SIZE, _render_rgba(PNG_SIZE))) + print(f"OK {png_path}") + + ico_path = ASSETS / "tray-icon.ico" + ico_path.write_bytes(_build_ico(pngs)) + print(f"OK {ico_path} ({len(ICO_SIZES)} tamanos)") + + +if __name__ == "__main__": + main() diff --git a/packaging/templates/env.default b/packaging/templates/env.default index 407ec96..092fcdc 100644 --- a/packaging/templates/env.default +++ b/packaging/templates/env.default @@ -1,6 +1,7 @@ # CloudRestoreAS — configuración local (editar y reiniciar la app) -# Arranca el motor al abrir (la ventana siempre se muestra salvo START_MINIMIZED=true) +# Arranca el motor al abrir. La ventana SIEMPRE se muestra al iniciar; cerrar (X) la +# minimiza a la bandeja del sistema (START_MINIMIZED ya no oculta la ventana). CLOUDRESTORE_AUTO_START=true CLOUDRESTORE_START_MINIMIZED=false CLOUDRESTORE_REGISTER_AUTOSTART=true diff --git a/runner.py b/runner.py index 5bdca07..066627a 100644 --- a/runner.py +++ b/runner.py @@ -1,27 +1,15 @@ """Punto de entrada principal de la aplicación.""" import argparse +import os import sys +import traceback from pathlib import Path ROOT_DIR = Path(__file__).parent.resolve() if not getattr(sys, "frozen", False): sys.path.insert(0, str(ROOT_DIR)) -# Bootstrap y ODBC antes de importar módulos que usan pyodbc -from app.config.bootstrap import ensure_runtime_layout -from app.config.odbc_setup import configure_odbc_environment - -ensure_runtime_layout() -configure_odbc_environment() - -from PySide6.QtWidgets import QApplication -from PySide6.QtCore import Qt - -from app.config import get_launch_options, initialize_env, is_panel_configured -from app.ui.main_window import MainWindow -from app.utils.logger import app_logger - def parse_args(argv: list[str] | None = None) -> argparse.Namespace: parser = argparse.ArgumentParser(description="CloudRestoreAS") @@ -38,23 +26,90 @@ def parse_args(argv: list[str] | None = None) -> argparse.Namespace: return parser.parse_args(argv) -def main(): - """Función principal.""" +def _crash_log_targets() -> list[Path]: + """Ubicaciones candidatas para el crash log, de más a menos accesible.""" + targets: list[Path] = [] + try: + targets.append(Path(sys.executable).resolve().parent / "CloudRestoreAS-crash.log") + except Exception: + pass + base = os.environ.get("LOCALAPPDATA") or os.environ.get("APPDATA") or os.environ.get("HOME") + if base: + targets.append(Path(base) / "CloudRestoreAS" / "crash.log") + import tempfile + + targets.append(Path(tempfile.gettempdir()) / "CloudRestoreAS-crash.log") + return targets + + +def _write_crash_log(text: str) -> Path | None: + """Escribe el detalle del crash en la primera ubicación escribible.""" + for path in _crash_log_targets(): + try: + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(text, encoding="utf-8") + return path + except Exception: + continue + return None + + +def _show_fatal(exc: BaseException) -> None: + """Hace VISIBLE un fallo de arranque: crash log + diálogo (o stderr).""" + tb = "".join(traceback.format_exception(type(exc), exc, exc.__traceback__)) + detail = f"CloudRestoreAS no pudo iniciar.\n\n{type(exc).__name__}: {exc}\n\n{tb}" + crash_path = _write_crash_log(detail) + try: + sys.stderr.write(detail) + except Exception: + pass + try: + from PySide6.QtWidgets import QApplication, QMessageBox + + app = QApplication.instance() or QApplication(sys.argv) + box = QMessageBox() + box.setIcon(QMessageBox.Icon.Critical) + box.setWindowTitle("CloudRestoreAS — Error al iniciar") + box.setText("La aplicación no pudo iniciar.") + info = str(exc) or type(exc).__name__ + if crash_path: + info += f"\n\nDetalle guardado en:\n{crash_path}" + box.setInformativeText(info) + box.setDetailedText(tb) + box.exec() + except Exception: + # Sin GUI disponible: el crash log y stderr ya quedaron escritos. + pass + + +def _run() -> int: + """Arranque real. Los imports están diferidos para que main() capture cualquier fallo.""" + # Bootstrap y ODBC antes de importar módulos que usan pyodbc. + from app.config.bootstrap import ensure_runtime_layout + from app.config.odbc_setup import configure_odbc_environment + + ensure_runtime_layout() + configure_odbc_environment() + + from PySide6.QtWidgets import QApplication + from PySide6.QtCore import Qt + + from app.config import get_launch_options, initialize_env, is_panel_configured + from app.ui.main_window import MainWindow + from app.ui.tray_assets import load_tray_icon + from app.utils.logger import app_logger + args = parse_args() launch = get_launch_options() initialize_env() - minimized = args.minimized or launch.minimized panel_ok = is_panel_configured() start_engine = args.start_engine or launch.start_engine app_logger.info("=" * 80) app_logger.info("CloudRestoreAS - Iniciando aplicación") app_logger.info(f"Directorio app: {ROOT_DIR}") - if minimized: - app_logger.info("Modo: ventana oculta (--minimized o START_MINIMIZED)") - else: - app_logger.info("Modo: ventana visible; cerrar minimiza a bandeja") + app_logger.info("Modo: ventana siempre visible; cerrar minimiza a bandeja") if start_engine: app_logger.info("Modo: motor auto-inicio") if not panel_ok: @@ -69,25 +124,31 @@ def main(): app.setOrganizationName("Aduanasoft") app.setAttribute(Qt.ApplicationAttribute.AA_EnableHighDpiScaling) app.setQuitOnLastWindowClosed(False) + app.setWindowIcon(load_tray_icon()) + window = MainWindow( + start_engine=start_engine, + panel_configured=panel_ok, + ) + # La ventana SIEMPRE se muestra al iniciar; cerrar (X) la manda a la bandeja. + window.show() + window.activateWindow() + window.raise_() + app_logger.info("Ventana principal mostrada") + + exit_code = app.exec() + app_logger.info(f"Aplicación finalizada con código: {exit_code}") + return exit_code + + +def main(): + """Punto de entrada: ejecuta _run() y hace visible cualquier fallo de arranque.""" try: - window = MainWindow( - minimized=minimized, - start_engine=start_engine, - panel_configured=panel_ok, - ) - if not minimized: - window.show() - app_logger.info("Ventana principal mostrada") - else: - app_logger.info("Ventana oculta; icono en bandeja del sistema") - - exit_code = app.exec() - app_logger.info(f"Aplicación finalizada con código: {exit_code}") - sys.exit(exit_code) - - except Exception as e: - app_logger.critical(f"Error fatal en la aplicación: {e}", exc_info=True) + sys.exit(_run()) + except SystemExit: + raise + except BaseException as exc: # capturamos TODO en el arranque: nunca morir en silencio + _show_fatal(exc) sys.exit(1) From 0c14f1166baddfa4a8ca542d6753b193772ca6f7 Mon Sep 17 00:00:00 2001 From: hreyes Date: Wed, 1 Jul 2026 10:33:05 -0600 Subject: [PATCH 2/2] feature/generador-instaladores-linux-windows --- BUILD.md | 191 +++++++++++++++++++++ README.md | 44 +++-- app/config/bootstrap.py | 30 +++- app/config/odbc_setup.py | 21 ++- app/sql/sql_manager.py | 30 +++- app/ui/config_tab.py | 43 +++-- app/ui/logs_tab.py | 10 +- build-all.sh | 131 ++++++++++++++ install.sh | 103 +++++++++++ packaging/CloudRestoreAS.spec | 11 ++ packaging/LEEME.txt | 24 ++- packaging/linux/cloudrestoreas.service | 19 ++ packaging/scripts/build-all.sh | 34 +--- packaging/scripts/docker-build-linux.sh | 15 +- packaging/scripts/download-bundled-deps.sh | 116 ++++++++++++- packaging/scripts/package-release.sh | 36 +++- runner.py | 34 +++- 17 files changed, 802 insertions(+), 90 deletions(-) create mode 100644 BUILD.md create mode 100755 build-all.sh create mode 100755 install.sh create mode 100644 packaging/linux/cloudrestoreas.service mode change 100644 => 100755 packaging/scripts/build-all.sh mode change 100644 => 100755 packaging/scripts/package-release.sh diff --git a/BUILD.md b/BUILD.md new file mode 100644 index 0000000..d3d543c --- /dev/null +++ b/BUILD.md @@ -0,0 +1,191 @@ +# BUILD.md — Compilación, empaquetado y despliegue + +Referencia de **todos** los comandos, ejecutables y scripts para generar, empaquetar, +instalar y verificar CloudRestoreAS en Windows y Linux. + +El ejecutable es **autocontenido**: no requiere Python, 7-Zip, driver ODBC ni librerías +Qt instaladas en el equipo destino. Todo se embebe dentro del binario en tiempo de build. + +--- + +## 1. Todo en una tarea (recomendado) — `build-all.sh` + +Orquestador único. **Se ejecuta desde WSL** (bash). Genera Windows + Linux + los paquetes. + +```bash +./build-all.sh # Windows + Linux + dist/release/*.tar.gz y *.zip +./build-all.sh --linux-only # solo Linux (Docker) +./build-all.sh --windows-only # solo Windows (PowerShell + build.ps1) +./build-all.sh --no-package # compila sin generar .tar.gz/.zip +./build-all.sh --clean # rebuild desde cero (borra venvs, bundled, dist) +./build-all.sh --help +``` + +**Requisitos:** +- Linux: **Docker** (usa `docker-build-linux.sh` en ubuntu:22.04). +- Windows: **`powershell.exe`** accesible desde WSL + **Python 3.11+** instalado en Windows + (`build.ps1` lo auto-detecta en `%LOCALAPPDATA%\Programs\Python\Python31X`). +- Es *fail-soft*: si no hay `powershell.exe`, compila solo Linux y avisa. + +> El build de Windows se hace sobre la ruta `\\wsl.localhost\...`, por eso tarda +> (~15-18 min: pip install de PySide6 + PyInstaller). El de Linux (Docker, con deps +> cacheadas) es rápido. + +`packaging/scripts/build-all.sh` es un wrapper que delega en este mismo script. + +--- + +## 2. Builds individuales + +| Objetivo | Comando | Salida | Notas | +|---|---|---|---| +| **Linux (Docker, recomendado)** | `bash packaging/scripts/docker-build-linux.sh` | `dist/CloudRestoreAS` | ubuntu:22.04 con todas las deps + `patchelf`; garantiza autocontención | +| **Linux (host)** | `./build.sh` | `dist/CloudRestoreAS` | Requiere que el host tenga las libs Qt/ODBC; usar solo si no hay Docker | +| **Windows** | `.\build.ps1` (en Windows/PowerShell) | `dist\CloudRestoreAS.exe` | Auto-detecta Python 3.11+; crea `venv-windows` | + +Ambos usan el mismo spec: [packaging/CloudRestoreAS.spec](packaging/CloudRestoreAS.spec) (PyInstaller **onefile**, `console=False`). + +--- + +## 3. Dependencias embebidas (build-time) + +Se descargan e integran al binario. No se instalan en el destino. + +| Script | Qué embebe | +|---|---| +| `packaging/scripts/download-bundled-deps.sh` (Linux) | `7zz` (7-Zip Linux), driver **MS ODBC 18** + unixODBC + Kerberos/GSSAPI + libltdl + OpenSSL, y cluster **Qt xcb/X11 + EGL**. Aplica `patchelf --set-rpath '$ORIGIN'` a las `.so` del cluster ODBC para que resuelvan entre sí. | +| `packaging/scripts/download-bundled-deps.ps1` (Windows) | `7z.exe` y `msodbcsql18.dll`. | + +Versiones/URLs en [packaging/bundled-versions.json](packaging/bundled-versions.json). +Los binarios quedan en `packaging/bundled/{linux,windows}/` (git-ignored, se generan en el build). + +**Ubicación en runtime** (creada por el bootstrap en la primera ejecución): +- `config/7zip/7zz` — extractor. +- `config/odbc/lib/` — driver ODBC + toda su cadena (resuelven por `$ORIGIN`). +- Cluster Qt xcb/EGL — dentro del onefile, en `PySide6/Qt/lib`. + +--- + +## 4. Empaquetado — `package-release.sh` + +```bash +bash packaging/scripts/package-release.sh +``` + +Genera en `dist/release/`: + +| Archivo | Contenido | +|---|---| +| `CloudRestoreAS-linux.tar.gz` | `CloudRestoreAS/` → binario + `install.sh` + `packaging/linux/cloudrestoreas.service` + `LEEME.txt` | +| `CloudRestoreAS-win.zip` | `CloudRestoreAS/` → `CloudRestoreAS.exe` + `install.ps1` + `LEEME.txt` | + +--- + +## 5. Instalación / despliegue + +### Linux — `install.sh` (no instala nada del sistema) + +```bash +tar xzf CloudRestoreAS-linux.tar.gz && cd CloudRestoreAS + +sudo ./install.sh --service # servicio systemd 24/7 headless (recomendado en servidor) + ./install.sh --desktop # autostart .desktop (requiere sesión gráfica) + ./install.sh # solo instala + bootstrap; lo corres a mano + ./install.sh --help +``` +Variables: `PREFIX=/opt/cloudrestoreas` (destino), `SERVICE_USER=` (usuario del servicio). + +Servicio systemd: +```bash +systemctl status cloudrestoreas +journalctl -u cloudrestoreas -f +sudo systemctl restart cloudrestoreas # tras editar config/.env +``` + +### Windows + +Copiar `CloudRestoreAS.exe` a una carpeta y ejecutarlo (o usar `install.ps1`). Al iniciar +crea `config/` y un icono en la bandeja. Ver [packaging/LEEME.txt](packaging/LEEME.txt). + +--- + +## 6. Ejecución manual y flags del binario + +```bash +# Linux servidor sin pantalla (headless): motor de restauración sin GUI +QT_QPA_PLATFORM=offscreen ./CloudRestoreAS --start-engine --headless + +# Linux con escritorio o Windows: abre la GUI normal +./CloudRestoreAS +``` + +| Flag / variable | Efecto | +|---|---| +| `--start-engine` | Inicia el motor de restauración al arrancar | +| `--headless` | Fuerza modo sin interfaz (Qt `offscreen`), para servidores sin display | +| `--minimized` | Inicia minimizado en la bandeja | +| `QT_QPA_PLATFORM=offscreen` | Plataforma Qt sin display (el binario ya cae a esto automáticamente si no hay `DISPLAY`/`WAYLAND_DISPLAY` en Linux) | + +En Linux sin `DISPLAY`, el binario selecciona `offscreen` **solo**; con display usa `xcb`. + +--- + +## 7. Configuración (primera ejecución) + +El binario crea automáticamente: `config/`, `config/.env`, `Entrada/`, `Procesados/`, +`Fallados/`, `Temp/`. Editar `config/.env`: + +``` +CLOUDRESTORE_AUTO_START=true # el motor arranca solo +CLOUDRESTORE_PANEL_API_URL=... # servicio PANEL_BASES_ANEXO24 (enrutamiento) +CLOUDRESTORE_PANEL_API_TOKEN=... +CLOUDRESTORE_PANEL_INSTANCE_KEY=... +``` +El PANEL entrega el servidor SQL destino y su `data_folder`. Con SQL Server sobre Linux +serán rutas POSIX (p. ej. `/var/opt/mssql/data`); el `RESTORE ... MOVE` adapta el separador +automáticamente según el formato del `data_folder`. + +--- + +## 8. Verificación de autocontención (contenedor pelado) + +Confirma que el binario Linux corre sin instalar NADA del sistema: + +```bash +docker run --rm -v "$PWD/dist:/dist:ro" debian:12-slim bash -c ' + cp /dist/CloudRestoreAS /root/app && cd /root + QT_QPA_PLATFORM=offscreen timeout 12 ./app --headless --start-engine 2>&1 | \ + grep -iE "offscreen|Ventana principal|Traceback|platform plugin" + # ODBC: driver + cadena resuelven por $ORIGIN (debe dar 0) + ldd /root/config/odbc/lib/libmsodbcsql-18*.so* 2>&1 | grep -c "not found" + # 7-Zip embebido + /root/config/7zip/7zz | head -1 +' +``` +Esperado: arranca en `offscreen` sin errores Qt, `0` deps ODBC faltantes, `7zz` ejecuta. + +--- + +## 9. Artefactos y ubicaciones + +| Ruta | Qué es | +|---|---| +| `dist/CloudRestoreAS` | Binario Linux onefile | +| `dist/CloudRestoreAS.exe` | Ejecutable Windows onefile | +| `dist/release/*.tar.gz` / `*.zip` | Paquetes de despliegue (binario + instalador + docs) | +| `packaging/bundled/{linux,windows}/` | Deps embebidas (generadas en build; git-ignored) | +| `venv-linux/`, `venv-windows/` | Entornos virtuales de build (git-ignored) | + +--- + +## 10. Scripts de referencia rápida + +| Script | Propósito | +|---|---| +| `build-all.sh` | **Todo en uno** (Windows + Linux + paquetes) desde WSL | +| `build.sh` / `build.ps1` | Build individual Linux / Windows | +| `packaging/scripts/docker-build-linux.sh` | Build Linux en contenedor controlado | +| `packaging/scripts/download-bundled-deps.sh` / `.ps1` | Descarga+embebe deps | +| `packaging/scripts/package-release.sh` | Genera `.tar.gz` / `.zip` | +| `install.sh` / `install.ps1` | Instalador Linux / Windows | +| `packaging/linux/cloudrestoreas.service` | Unit systemd (24/7 headless) | diff --git a/README.md b/README.md index 9c9bf1b..b3d1ca9 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,9 @@ CloudRestoreAS es una aplicación Windows de escritorio desarrollada en Python 3 ### Sistema Operativo - Windows 10/11 - Windows Server 2019/2022 o superior +- Linux x86-64 (servidor o escritorio). En servidor **headless** (sin pantalla) corre + automáticamente en modo Qt `offscreen`. El binario Linux es **autocontenido**: no + requiere instalar Python, 7-Zip, driver ODBC ni librerías Qt en el destino. ### Software Requerido @@ -75,25 +78,46 @@ CloudRestoreAS es una aplicación Windows de escritorio desarrollada en Python 3 ### Opción 2: Ejecutable portable (recomendado para producción) -**Windows** — generar: -```powershell -.\build.ps1 -``` -Salida: `dist\CloudRestoreAS.exe` - -**Linux** — generar: +**Todo de una vez (desde WSL)** — genera Windows + Linux + los paquetes de release: ```bash -./build.sh +./build-all.sh # ambos + dist/release/*.tar.gz y *.zip +./build-all.sh --linux-only # solo Linux (Docker) +./build-all.sh --windows-only # solo Windows (PowerShell + build.ps1) +./build-all.sh --clean # rebuild desde cero ``` -Salida: `dist/CloudRestoreAS` +Requiere Docker (para Linux) y, para Windows, `powershell.exe` accesible desde WSL con Python 3.11+ instalado en Windows. -**Desplegar en cada equipo** (sin Python, sin instalador): +**Solo Windows** — generar: `.\build.ps1` → `dist\CloudRestoreAS.exe` +**Solo Linux** — generar: `./build.sh` (o `packaging/scripts/docker-build-linux.sh` para el entorno controlado) → `dist/CloudRestoreAS` + +> 📦 Referencia completa de compilación, empaquetado, instalación (`install.sh`/systemd), +> flags del binario y verificación: **[BUILD.md](BUILD.md)**. + +> El build de Linux embebe dentro del binario, además de la app: las libs de sistema +> de Qt (cluster xcb/X11 + EGL), el driver **ODBC 18** con sus dependencias +> (unixODBC, Kerberos/GSSAPI, OpenSSL) y el **7-Zip** (`7zz`). Por eso el destino no +> necesita `apt install` de nada. (El build se hace en un entorno con esas libs; ver +> `packaging/scripts/download-bundled-deps.sh` y `docker-build-linux.sh`.) + +**Desplegar en cada equipo** (sin Python, sin instalador, sin dependencias de sistema): 1. Copiar **solo** el ejecutable a una carpeta. 2. Ejecutarlo (doble clic o `./CloudRestoreAS`). 3. Se crean automáticamente: `config/`, `Entrada/`, `Procesados/`, `Fallados/`, `Temp/`. 4. Editar `config/.env` (URL, token e instancia del panel). 5. Reiniciar la aplicación. +**Despliegue en servidor Linux (headless / SQL Server sobre Linux):** +```bash +sudo ./install.sh --service # servicio systemd 24/7 (offscreen, motor auto-inicio) +# o manual: +QT_QPA_PLATFORM=offscreen ./CloudRestoreAS --start-engine --headless +``` +`install.sh` **no instala ni descarga nada** del sistema: solo coloca el binario, hace +el bootstrap de `config/` y registra el arranque (systemd headless o autostart de +escritorio con `--desktop`). El `data_folder` del destino viene del PANEL; con SQL +Server sobre Linux serán rutas POSIX (p. ej. `/var/opt/mssql/data`) y el `RESTORE` +las adapta automáticamente. + Ver `packaging/LEEME.txt` para instrucciones resumidas. ## ⚙️ Configuración Inicial diff --git a/app/config/bootstrap.py b/app/config/bootstrap.py index c2e9e1d..fd8da26 100644 --- a/app/config/bootstrap.py +++ b/app/config/bootstrap.py @@ -16,6 +16,7 @@ from ..constants import ( DIR_PROCESADOS, DIR_TEMP, ENV_PATH, + IS_WINDOWS, LOGS_DIR, ODBC_DIR, SEVEN_ZIP_DIR, @@ -25,10 +26,32 @@ from .env_loader import render_env_template def _copy_tree_if_missing(src: Path, dest: Path) -> None: - if not src.is_dir() or dest.exists(): + if not src.is_dir(): return - dest.parent.mkdir(parents=True, exist_ok=True) - shutil.copytree(src, dest) + # dest puede existir pero VACÍO: ensure_runtime_layout crea ODBC_DIR/SEVEN_ZIP_DIR + # antes de llamar aquí. Solo saltar si ya tiene contenido (evita re-copiar en cada + # arranque). Antes se saltaba por dest.exists(), dejando 7-Zip/ODBC sin desplegar. + if dest.exists() and any(dest.iterdir()): + return + dest.mkdir(parents=True, exist_ok=True) + shutil.copytree(src, dest, dirs_exist_ok=True) + + +def _ensure_seven_zip_executable() -> None: + """ + Asegura el bit de ejecución del 7-Zip embebido en Linux/macOS. shutil.copytree + suele preservar los permisos, pero esto es una salvaguarda barata: si el binario + quedó sin 'x', la extracción fallaría con PermissionError. + """ + if IS_WINDOWS: + return + for exe_name in ("7zz", "7za", "7z"): + exe_path = SEVEN_ZIP_DIR / exe_name + if exe_path.is_file(): + try: + exe_path.chmod(0o755) + except OSError: + pass def _write_env_if_missing() -> None: @@ -71,6 +94,7 @@ def ensure_runtime_layout() -> None: _copy_tree_if_missing(BUNDLED_SOURCE_7ZIP, SEVEN_ZIP_DIR) _copy_tree_if_missing(BUNDLED_SOURCE_ODBC, ODBC_DIR) + _ensure_seven_zip_executable() from ..constants import DB_PATH diff --git a/app/config/odbc_setup.py b/app/config/odbc_setup.py index 55b702e..f29c326 100644 --- a/app/config/odbc_setup.py +++ b/app/config/odbc_setup.py @@ -27,11 +27,24 @@ Driver={driver_line} UsageCount=1 """ else: + # Los .so embebidos viven en config/odbc/lib (no en la raíz). Buscar ahí + # primero y usar SIEMPRE la ruta absoluta del archivo versionado real + # (p. ej. libmsodbcsql-18.5.so.1.1); un nombre suelto como + # "libmsodbcsql-18.so" no resuelve porque ese symlink apunta a /opt. + lib_dir = odbc_dir / "lib" + search_dirs = [d for d in (lib_dir, odbc_dir) if d.is_dir()] so_path = None - for pattern in ("libmsodbcsql-18*.so*", "msodbcsql-18*.so*"): - matches = list(odbc_dir.glob(pattern)) - if matches: - so_path = matches[0] + for base in search_dirs: + # Preferir el archivo real versionado sobre symlinks (que pueden estar rotos). + candidates = sorted( + (p for p in base.glob("libmsodbcsql-18*.so*") if p.is_file() and not p.is_symlink()), + key=lambda p: len(p.name), + reverse=True, + ) + if not candidates: + candidates = [p for p in base.glob("libmsodbcsql-18*.so*") if p.exists()] + if candidates: + so_path = candidates[0] break driver_line = str(so_path.resolve()) if so_path else "libmsodbcsql-18.so" content = f"""[ODBC Driver 18 for SQL Server] diff --git a/app/sql/sql_manager.py b/app/sql/sql_manager.py index 5d4bb5d..0c247b0 100644 --- a/app/sql/sql_manager.py +++ b/app/sql/sql_manager.py @@ -378,6 +378,24 @@ class SQLServerManager: except Exception: app_logger.warning("No se pudo cerrar la conexión SQL tras el RESTORE") + @staticmethod + def _sql_path_sep(data_folder: str) -> str: + """ + Separador de rutas que espera el SQL Server destino, deducido del formato + de data_folder. Windows (C:\\..., o contiene '\\') usa '\\'; SQL Server + sobre Linux (rutas POSIX '/var/opt/mssql/...') usa '/'. Las rutas del MOVE + son del filesystem del SERVIDOR, no de donde corre la app. + """ + if "\\" in data_folder: + return "\\" + # Ruta POSIX explícita ("/...") o sin separador Windows → '/'. + if data_folder.startswith("/"): + return "/" + # Heurística: "C:" u otra letra de unidad ⇒ Windows. + if len(data_folder) >= 2 and data_folder[1] == ":": + return "\\" + return "/" + @staticmethod def _build_move_clauses(db_name, data_folder, logical_files) -> list: """ @@ -386,7 +404,13 @@ class SQLServerManager: - 1er data → {db}.mdf, siguientes → {db}_N.ndf - 1er log → {db}_log.ldf, siguientes → {db}_log_N.ldf - otros tipos (FILESTREAM/full-text) → {db}_{nombre_lógico_saneado} + + El separador se adapta al SO del SQL Server destino (deducido de + data_folder), de modo que funciona tanto con SQL Server en Windows + (C:\\...\\db.mdf) como en Linux (/var/opt/mssql/data/db.mdf). """ + sep = SQLServerManager._sql_path_sep(data_folder) + base = data_folder.rstrip("\\/") clauses = [] data_idx = 0 log_idx = 0 @@ -394,16 +418,16 @@ class SQLServerManager: if lf.type == 'D': suffix = "" if data_idx == 0 else f"_{data_idx}" ext = "mdf" if data_idx == 0 else "ndf" - new_path = f"{data_folder}\\{db_name}{suffix}.{ext}" + new_path = f"{base}{sep}{db_name}{suffix}.{ext}" data_idx += 1 elif lf.type == 'L': suffix = "" if log_idx == 0 else f"_{log_idx}" - new_path = f"{data_folder}\\{db_name}_log{suffix}.ldf" + new_path = f"{base}{sep}{db_name}_log{suffix}.ldf" log_idx += 1 else: # No descartar otros tipos: moverlos preservando el nombre lógico. safe = "".join(c if c.isalnum() else "_" for c in lf.logical_name) - new_path = f"{data_folder}\\{db_name}_{safe}" + new_path = f"{base}{sep}{db_name}_{safe}" clauses.append(f"MOVE N'{lf.logical_name}' TO N'{new_path}'") return clauses diff --git a/app/ui/config_tab.py b/app/ui/config_tab.py index b44c8e8..da0659f 100644 --- a/app/ui/config_tab.py +++ b/app/ui/config_tab.py @@ -104,24 +104,29 @@ class ConfigTab(QWidget): self.sql_windows_auth_checkbox = QCheckBox() self.sql_windows_auth_checkbox.setChecked(True) - self.sql_windows_auth_checkbox.toggled.connect(self._on_auth_changed) sql_layout.addRow("Usar Windows Auth:", self.sql_windows_auth_checkbox) + + self.sql_username_input = QLineEdit() + self.sql_username_input.setEnabled(False) + sql_layout.addRow("Usuario SQL:", self.sql_username_input) + + self.sql_password_input = QLineEdit() + self.sql_password_input.setEchoMode(QLineEdit.EchoMode.Password) + self.sql_password_input.setEnabled(False) + sql_layout.addRow("Contraseña SQL:", self.sql_password_input) + + # Conectar el handler DESPUÉS de crear usuario/contraseña: en Linux se + # desmarca el checkbox (abajo), lo que dispararía _on_auth_changed antes de + # que existan esos campos si se conectara arriba. + self.sql_windows_auth_checkbox.toggled.connect(self._on_auth_changed) if sys.platform != "win32": + # Windows Auth no aplica en Linux: forzar SQL Auth y habilitar campos. self.sql_windows_auth_checkbox.setChecked(False) self.sql_windows_auth_checkbox.setEnabled(False) self.sql_windows_auth_checkbox.setToolTip( "Windows Auth no está disponible en Linux; use SQL Auth." ) - self.sql_username_input = QLineEdit() - self.sql_username_input.setEnabled(False) - sql_layout.addRow("Usuario SQL:", self.sql_username_input) - - self.sql_password_input = QLineEdit() - self.sql_password_input.setEchoMode(QLineEdit.EchoMode.Password) - self.sql_password_input.setEnabled(False) - sql_layout.addRow("Contraseña SQL:", self.sql_password_input) - test_sql_btn = QPushButton("🔌 Probar Conexión") test_sql_btn.clicked.connect(self._test_sql_connection) sql_layout.addRow("", test_sql_btn) @@ -431,12 +436,17 @@ class ConfigTab(QWidget): line_edit.setText(folder) def _browse_seven_zip(self): - """Abre el diálogo para seleccionar 7z.exe.""" + """Abre el diálogo para seleccionar el ejecutable de 7-Zip.""" + if sys.platform == "win32": + title = "Seleccionar 7z.exe" + default_dir = "C:\\Program Files\\7-Zip" + file_filter = "Ejecutables (*.exe)" + else: + title = "Seleccionar 7z / 7zz" + default_dir = "" + file_filter = "Ejecutables (*)" file_path, _ = QFileDialog.getOpenFileName( - self, - "Seleccionar 7z.exe", - "C:\\Program Files\\7-Zip", - "Ejecutables (*.exe)" + self, title, default_dir, file_filter ) if file_path: self.seven_zip_input.setText(file_path) @@ -475,6 +485,9 @@ class ConfigTab(QWidget): def _on_auth_changed(self, checked: bool): """Maneja el cambio en el tipo de autenticación.""" + # Guard: la señal puede dispararse durante la construcción de la UI. + if not hasattr(self, "sql_username_input"): + return self.sql_username_input.setEnabled(not checked) self.sql_password_input.setEnabled(not checked) diff --git a/app/ui/logs_tab.py b/app/ui/logs_tab.py index 29579de..a17d52e 100644 --- a/app/ui/logs_tab.py +++ b/app/ui/logs_tab.py @@ -1,6 +1,7 @@ """Tab de logs y soporte.""" import subprocess +import sys from pathlib import Path from PySide6.QtWidgets import ( @@ -91,10 +92,15 @@ class LogsTab(QWidget): self.logs_text.setPlainText("\n".join(log_lines)) def _open_logs_folder(self): - """Abre la carpeta de logs en el explorador.""" + """Abre la carpeta de logs en el explorador de archivos del sistema.""" try: if LOGS_DIR.exists(): - subprocess.run(["explorer", str(LOGS_DIR)]) + if sys.platform == "win32": + subprocess.run(["explorer", str(LOGS_DIR)]) + elif sys.platform == "darwin": + subprocess.run(["open", str(LOGS_DIR)]) + else: + subprocess.run(["xdg-open", str(LOGS_DIR)]) else: QMessageBox.warning( self, diff --git a/build-all.sh b/build-all.sh new file mode 100755 index 0000000..3fdf4d6 --- /dev/null +++ b/build-all.sh @@ -0,0 +1,131 @@ +#!/usr/bin/env bash +# ============================================================================= +# CloudRestoreAS — build de TODO en una sola tarea (ejecutar desde WSL). +# +# Linux : build en Docker (ubuntu:22.04) -> dist/CloudRestoreAS (autocontenido) +# Windows: build vía powershell.exe -> build.ps1 -> dist/CloudRestoreAS.exe +# Paquete: dist/release/CloudRestoreAS-linux.tar.gz y CloudRestoreAS-win.zip +# +# Uso: +# ./build-all.sh # ambos + empaquetado +# ./build-all.sh --linux-only # solo Linux +# ./build-all.sh --windows-only # solo Windows +# ./build-all.sh --no-package # sin generar .tar.gz/.zip +# ./build-all.sh --clean # rebuild desde cero (borra venvs/bundled/dist) +# ============================================================================= +set -uo pipefail + +ROOT="$(cd "$(dirname "$0")" && pwd)" +cd "$ROOT" + +DO_LINUX=1 +DO_WINDOWS=1 +DO_PACKAGE=1 +DO_CLEAN=0 + +for arg in "$@"; do + case "$arg" in + --linux-only) DO_WINDOWS=0 ;; + --windows-only) DO_LINUX=0 ;; + --no-package) DO_PACKAGE=0 ;; + --clean) DO_CLEAN=1 ;; + -h|--help) + grep '^#' "$0" | grep -v '^#!' | sed 's/^# \{0,1\}//'; exit 0 ;; + *) echo "Opción desconocida: $arg" >&2; exit 2 ;; + esac +done + +# --- helpers ----------------------------------------------------------------- +BLUE='\033[36m'; GREEN='\033[32m'; YELLOW='\033[33m'; RED='\033[31m'; NC='\033[0m' +say() { echo -e "${BLUE}==>${NC} $*"; } +ok() { echo -e "${GREEN}OK:${NC} $*"; } +warn() { echo -e "${YELLOW}AVISO:${NC} $*" >&2; } +err() { echo -e "${RED}ERROR:${NC} $*" >&2; } + +# SECONDS es incremental de bash; lo usamos para medir cada etapa. +stage_start() { STAGE_T0=$SECONDS; } +stage_end() { echo -e " (${1} en $((SECONDS - STAGE_T0))s)"; } + +WIN_OK=0 +LIN_OK=0 + +# --- limpieza opcional ------------------------------------------------------- +if [[ "$DO_CLEAN" -eq 1 ]]; then + say "Limpieza (--clean): borrando venvs, bundled y dist" + # bundled/ y venv-linux los crea Docker como root; borrar vía contenedor. + if command -v docker >/dev/null 2>&1; then + docker run --rm -v "$ROOT:/app" ubuntu:22.04 bash -c \ + 'rm -rf /app/packaging/bundled/linux /app/venv-linux /app/dist/CloudRestoreAS /app/dist/release' \ + >/dev/null 2>&1 || true + fi + rm -rf "$ROOT/venv-windows" "$ROOT/packaging/bundled/windows" \ + "$ROOT/dist/CloudRestoreAS.exe" 2>/dev/null || true + ok "limpieza completada" +fi + +# --- Build Linux (Docker) ---------------------------------------------------- +if [[ "$DO_LINUX" -eq 1 ]]; then + say "Build Linux (Docker, autocontenido)" + stage_start + if ! command -v docker >/dev/null 2>&1; then + err "docker no disponible; no se puede construir Linux" + [[ "$DO_WINDOWS" -eq 0 ]] && exit 1 + elif bash "$ROOT/packaging/scripts/docker-build-linux.sh"; then + if [[ -f "$ROOT/dist/CloudRestoreAS" ]]; then + LIN_OK=1; ok "dist/CloudRestoreAS" + else + err "el build Linux terminó sin binario" + fi + else + err "falló el build Linux" + fi + stage_end "Linux" +fi + +# --- Build Windows (PowerShell -> build.ps1) --------------------------------- +if [[ "$DO_WINDOWS" -eq 1 ]]; then + say "Build Windows (PowerShell + build.ps1)" + stage_start + WIN_PATH="$(wslpath -w "$ROOT" 2>/dev/null || true)" + if command -v powershell.exe >/dev/null 2>&1 && [[ -n "$WIN_PATH" ]]; then + # build.ps1 auto-detecta el Python de Windows (Python313/312/311) y arma venv-windows. + powershell.exe -NoProfile -ExecutionPolicy Bypass -Command \ + "Set-Location -LiteralPath '$WIN_PATH'; & .\\build.ps1" + PS_RC=$? + if [[ "$PS_RC" -eq 0 && -f "$ROOT/dist/CloudRestoreAS.exe" ]]; then + WIN_OK=1; ok "dist/CloudRestoreAS.exe" + else + err "falló el build Windows (código $PS_RC)" + [[ "$DO_LINUX" -eq 0 ]] && { stage_end "Windows"; exit 1; } + fi + else + warn "powershell.exe no disponible desde WSL; se omite el build Windows." + warn "Ejecuta build.ps1 en Windows para generar el .exe." + [[ "$DO_LINUX" -eq 0 ]] && exit 1 + fi + stage_end "Windows" +fi + +# --- Empaquetado ------------------------------------------------------------- +if [[ "$DO_PACKAGE" -eq 1 ]]; then + say "Empaquetado (.tar.gz Linux / .zip Windows)" + stage_start + bash "$ROOT/packaging/scripts/package-release.sh" || warn "empaquetado con incidencias" + stage_end "Empaquetado" +fi + +# --- Resumen ----------------------------------------------------------------- +echo +say "Resumen" +[[ "$DO_LINUX" -eq 1 ]] && { [[ "$LIN_OK" -eq 1 ]] && ok "Linux regenerado" || err "Linux NO generado"; } +[[ "$DO_WINDOWS" -eq 1 ]] && { [[ "$WIN_OK" -eq 1 ]] && ok "Windows regenerado" || warn "Windows NO generado"; } +if [[ -d "$ROOT/dist/release" ]]; then + echo "Artefactos en dist/release/:" + ls -lh "$ROOT/dist/release" | awk 'NR>1 {print " " $9 " " $5}' +fi + +# Éxito si todo lo solicitado se generó. +FAIL=0 +[[ "$DO_LINUX" -eq 1 && "$LIN_OK" -ne 1 ]] && FAIL=1 +[[ "$DO_WINDOWS" -eq 1 && "$WIN_OK" -ne 1 ]] && FAIL=1 +exit $FAIL diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..e8d320b --- /dev/null +++ b/install.sh @@ -0,0 +1,103 @@ +#!/usr/bin/env bash +# Instalador Linux de CloudRestoreAS. +# +# NO instala ni descarga NADA del sistema: el binario es 100% autocontenido +# (Qt/xcb, driver ODBC + Kerberos/OpenSSL, y 7-Zip van embebidos). Este script solo +# coloca el binario, marca permisos, hace el bootstrap de config/, y opcionalmente +# registra el arranque automático (servicio systemd headless o autostart de escritorio). +# +# Uso: +# sudo ./install.sh --service # 24/7 headless vía systemd (recomendado en servidor) +# ./install.sh --desktop # autostart de escritorio (requiere sesión gráfica) +# ./install.sh # solo instala; sin arranque automático +# +# Variables: +# PREFIX=/opt/cloudrestoreas # carpeta destino (default) +# SERVICE_USER= # usuario del servicio systemd (default: quien invoca) +set -euo pipefail + +MODE="none" +for arg in "$@"; do + case "$arg" in + --service) MODE="service" ;; + --desktop) MODE="desktop" ;; + -h|--help) + grep '^#' "$0" | grep -v '^#!' | sed 's/^# \{0,1\}//'; exit 0 ;; + *) echo "Opción desconocida: $arg" >&2; exit 2 ;; + esac +done + +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +PREFIX="${PREFIX:-/opt/cloudrestoreas}" +BIN_NAME="CloudRestoreAS" + +# Localizar el binario: dist/CloudRestoreAS, dist/CloudRestoreAS-linux, o junto al script. +SRC="" +for cand in \ + "$SCRIPT_DIR/dist/$BIN_NAME" \ + "$SCRIPT_DIR/dist/${BIN_NAME}-linux" \ + "$SCRIPT_DIR/$BIN_NAME" \ + "$SCRIPT_DIR/${BIN_NAME}-linux"; do + if [[ -f "$cand" ]]; then SRC="$cand"; break; fi +done +if [[ -z "$SRC" ]]; then + echo "ERROR: no se encontró el binario ($BIN_NAME). Ejecuta ./build.sh primero" >&2 + exit 1 +fi + +echo "===============================================" +echo "CloudRestoreAS - Instalación Linux" +echo " Binario : $SRC" +echo " Destino : $PREFIX" +echo " Modo : $MODE" +echo "===============================================" + +mkdir -p "$PREFIX" +install -m 0755 "$SRC" "$PREFIX/$BIN_NAME" +echo "Binario instalado en $PREFIX/$BIN_NAME" + +# Bootstrap de config/: el propio binario crea config/, .env y carpetas de trabajo +# al inicio de su arranque. Se corre una vez en modo offscreen (sin display) y se +# corta con timeout; así el usuario ya puede editar config/.env antes de habilitar +# el servicio. +echo "Inicializando config/ (bootstrap)..." +( cd "$PREFIX" && QT_QPA_PLATFORM=offscreen timeout 20 "$PREFIX/$BIN_NAME" --headless >/dev/null 2>&1 || true ) +if [[ -f "$PREFIX/config/.env" ]]; then + echo "config/.env creado." +else + echo "NOTA: config/.env se creará en la primera ejecución." +fi + +case "$MODE" in + service) + SERVICE_USER="${SERVICE_USER:-${SUDO_USER:-$(id -un)}}" + UNIT_SRC="$SCRIPT_DIR/packaging/linux/cloudrestoreas.service" + UNIT_DST="/etc/systemd/system/cloudrestoreas.service" + if [[ ! -w "$(dirname "$UNIT_DST")" ]]; then + echo "ERROR: se requiere sudo para instalar el servicio systemd" >&2 + exit 1 + fi + sed -e "s|__USER__|$SERVICE_USER|g" \ + -e "s|__WORKDIR__|$PREFIX|g" \ + -e "s|__EXEC__|$PREFIX/$BIN_NAME|g" \ + "$UNIT_SRC" > "$UNIT_DST" + systemctl daemon-reload + systemctl enable --now cloudrestoreas.service + echo "Servicio systemd instalado y arrancado (usuario: $SERVICE_USER)." + echo " Estado : systemctl status cloudrestoreas" + echo " Logs : journalctl -u cloudrestoreas -f" + ;; + desktop) + echo "Modo escritorio: la app registra su autostart .desktop al iniciarse." + echo "Ejecuta '$PREFIX/$BIN_NAME' en tu sesión gráfica." + ;; + none) + echo "Instalación sin arranque automático." + echo "Ejecuta: QT_QPA_PLATFORM=offscreen $PREFIX/$BIN_NAME --start-engine --headless" + ;; +esac + +echo "" +echo "Siguiente paso: edita $PREFIX/config/.env (CLOUDRESTORE_PANEL_*) y reinicia." +[[ "$MODE" == "service" ]] && echo " Tras editar: sudo systemctl restart cloudrestoreas" +echo "Listo." diff --git a/packaging/CloudRestoreAS.spec b/packaging/CloudRestoreAS.spec index 94822d1..244fd80 100644 --- a/packaging/CloudRestoreAS.spec +++ b/packaging/CloudRestoreAS.spec @@ -38,6 +38,17 @@ if odbc_dir.is_dir(): dest = "bundled/odbc" binaries.append((str(item), dest)) +# Libs de sistema Qt (cluster xcb/X11 + EGL) que el plugin xcb carga por dlopen. +# Van JUNTO a las librerías Qt (PySide6/Qt/lib): libQt6XcbQpa.so.6 tiene RPATH +# $ORIGIN, así que resuelve libxcb-cursor.so.0 y el resto en su propio directorio +# sin depender de LD_LIBRARY_PATH. (El stack ODBC va con el driver en bundled/odbc, +# con RPATH=$ORIGIN aplicado por download-bundled-deps.sh.) Solo aplica en Linux. +qt_sys_lib = bundled / "qt" / "lib" +if qt_sys_lib.is_dir(): + for item in qt_sys_lib.iterdir(): + if item.is_file() and not item.is_symlink(): + binaries.append((str(item), "PySide6/Qt/lib")) + hiddenimports = [ "PySide6", "pyodbc", diff --git a/packaging/LEEME.txt b/packaging/LEEME.txt index 557d89b..3241545 100644 --- a/packaging/LEEME.txt +++ b/packaging/LEEME.txt @@ -1,6 +1,9 @@ CloudRestoreAS — despliegue portable ===================================== +El ejecutable es AUTOCONTENIDO: no requiere Python, ni 7-Zip, ni driver ODBC, ni +librerias Qt instaladas en el equipo destino. Todo va embebido dentro del binario. + Windows: copie CloudRestoreAS.exe a la carpeta deseada. Linux: copie CloudRestoreAS y ejecute chmod +x CloudRestoreAS si hace falta. @@ -15,4 +18,23 @@ Cerrar la ventana (X) minimiza a la bandeja; la app sigue en ejecucion. Para salir por completo: clic derecho en el icono de bandeja -> Salir, o menu Archivo -> Salir. -No requiere Python ni instaladores adicionales en el equipo destino. +------------------------------------- +Linux en SERVIDOR SIN ESCRITORIO (headless) +------------------------------------- +En un servidor sin pantalla (sin DISPLAY), la app arranca automaticamente en modo +"offscreen": no muestra ventana pero el motor de restauracion trabaja igual. No hay +que instalar nada del sistema. + +Opcion A - servicio 24/7 (recomendado en servidor SQL): + sudo ./install.sh --service + (instala una unit systemd que corre el binario con --start-engine --headless; + ver estado: systemctl status cloudrestoreas ; logs: journalctl -u cloudrestoreas -f) + +Opcion B - manual: + QT_QPA_PLATFORM=offscreen ./CloudRestoreAS --start-engine --headless + +Opcion C - escritorio Linux (con pantalla): + ./install.sh --desktop (registra autostart .desktop; requiere sesion grafica) + +El servidor SQL destino y su carpeta de datos (data_folder) se toman del PANEL; +con SQL Server sobre Linux use rutas POSIX (p. ej. /var/opt/mssql/data). diff --git a/packaging/linux/cloudrestoreas.service b/packaging/linux/cloudrestoreas.service new file mode 100644 index 0000000..f41ee17 --- /dev/null +++ b/packaging/linux/cloudrestoreas.service @@ -0,0 +1,19 @@ +[Unit] +Description=CloudRestoreAS - Restauración automática SQL Server +After=network-online.target mssql-server.service +Wants=network-online.target + +[Service] +Type=simple +# __USER__ y __EXEC__ los sustituye install.sh al instalar. +User=__USER__ +WorkingDirectory=__WORKDIR__ +# Servidor headless: plataforma Qt offscreen (sin display) y motor auto-inicio. +Environment=QT_QPA_PLATFORM=offscreen +ExecStart=__EXEC__ --start-engine --headless +Restart=always +RestartSec=5 +# El binario es autocontenido (Qt, ODBC, 7-Zip embebidos): no necesita libs del sistema. + +[Install] +WantedBy=multi-user.target diff --git a/packaging/scripts/build-all.sh b/packaging/scripts/build-all.sh old mode 100644 new mode 100755 index 3a0f4bd..0fa3157 --- a/packaging/scripts/build-all.sh +++ b/packaging/scripts/build-all.sh @@ -1,34 +1,6 @@ #!/usr/bin/env bash -# Genera ambos artefactos: Linux (local/Docker) y Windows (PowerShell + Python en Windows). +# Wrapper de compatibilidad: el orquestador canónico vive en la raíz del repo. +# Ejecuta ./build-all.sh (desde WSL) para generar Windows + Linux + paquetes. set -euo pipefail - ROOT="$(cd "$(dirname "$0")/../.." && pwd)" -RELEASE="$ROOT/dist/release" -mkdir -p "$RELEASE" - -echo "=== Build Linux ===" -if [[ -f "$ROOT/build.sh" ]]; then - bash "$ROOT/build.sh" - cp -f "$ROOT/dist/CloudRestoreAS" "$RELEASE/CloudRestoreAS-linux" - chmod +x "$RELEASE/CloudRestoreAS-linux" -fi - -echo "=== Build Windows (via PowerShell) ===" -WSL_PATH=$(wslpath -w "$ROOT" 2>/dev/null || echo "") -if [[ -n "$WSL_PATH" ]] && command -v powershell.exe >/dev/null 2>&1; then - powershell.exe -NoProfile -ExecutionPolicy Bypass -Command " - Set-Location '$WSL_PATH' - & 'C:\Users\Hugo Reyes\AppData\Local\Programs\Python\Python313\python.exe' -m pip install -q -r requirements-windows.txt 2>\$null - & .\build.ps1 - " - if [[ -f "$ROOT/dist/CloudRestoreAS.exe" ]]; then - cp -f "$ROOT/dist/CloudRestoreAS.exe" "$RELEASE/CloudRestoreAS.exe" - fi -else - echo "Omitido: ejecute build.ps1 en Windows manualmente" -fi - -cp -f "$ROOT/packaging/LEEME.txt" "$RELEASE/" -echo "" -echo "Artefactos en: $RELEASE" -ls -la "$RELEASE" +exec bash "$ROOT/build-all.sh" "$@" diff --git a/packaging/scripts/docker-build-linux.sh b/packaging/scripts/docker-build-linux.sh index eea822e..c7c9d9a 100755 --- a/packaging/scripts/docker-build-linux.sh +++ b/packaging/scripts/docker-build-linux.sh @@ -9,10 +9,19 @@ docker run --rm \ set -e export DEBIAN_FRONTEND=noninteractive apt-get update -qq +# Herramientas de build + libs de sistema para que PyInstaller EMBEBA el cierre +# completo de dependencias (plugin Qt xcb y driver MS ODBC). Cinturón y tirantes +# junto con el bundle explícito de download-bundled-deps.sh. apt-get install -y -qq \ - python3 python3-venv python3-pip curl dpkg-dev binutils unixodbc \ - libglib2.0-0 libdbus-1-3 libxkbcommon0 libfontconfig1 libxcb1 libx11-6 \ - libxcb-xkb1 libegl1 libgl1 libxi6 libxrender1 libxext6 \ + python3 python3-venv python3-pip curl dpkg-dev binutils apt-utils patchelf \ + unixodbc libodbcinst2 libltdl7 libkrb5-3 libgssapi-krb5-2 libssl3 \ + libglib2.0-0 libdbus-1-3 libfontconfig1 libfreetype6 \ + libxkbcommon0 libxkbcommon-x11-0 libegl1 libgl1 libglvnd0 \ + libx11-6 libx11-xcb1 libxext6 libxrender1 libxi6 libxfixes3 libxtst6 \ + libxcomposite1 libxdamage1 libxrandr2 libxkbfile1 \ + libxcb1 libxcb-cursor0 libxcb-icccm4 libxcb-util1 libxcb-image0 \ + libxcb-keysyms1 libxcb-render-util0 libxcb-render0 libxcb-shape0 \ + libxcb-xkb1 libxcb-glx0 libxcb-randr0 libxcb-shm0 libxcb-sync1 \ > /dev/null chmod +x build.sh packaging/scripts/download-bundled-deps.sh ./build.sh diff --git a/packaging/scripts/download-bundled-deps.sh b/packaging/scripts/download-bundled-deps.sh index 1202db0..df7624b 100755 --- a/packaging/scripts/download-bundled-deps.sh +++ b/packaging/scripts/download-bundled-deps.sh @@ -1,5 +1,11 @@ #!/usr/bin/env bash -# Descarga 7zz y bibliotecas ODBC para empaquetar en el binario Linux. +# Descarga y EMBEBE (build-time) todo lo que el binario Linux necesita en runtime: +# - 7zz (7-Zip para Linux) +# - Driver MS ODBC 18 + unixODBC +# - Libs de sistema de Qt (cluster xcb/X11 + EGL) y del stack ODBC +# (libltdl, Kerberos/GSSAPI, OpenSSL) que PySide6/pyodbc cargan por dlopen +# y que NO vienen dentro del wheel. +# Objetivo: que el onefile corra en un servidor Linux "pelado" sin instalar nada. set -euo pipefail ROOT="$(cd "$(dirname "$0")/../.." && pwd)" @@ -7,17 +13,55 @@ VERSIONS="$ROOT/packaging/bundled-versions.json" BUNDLED="$ROOT/packaging/bundled/linux" SEVEN="$BUNDLED/7zip" ODBC="$BUNDLED/odbc/lib" +QTLIB="$BUNDLED/qt/lib" # libs de sistema extra a embeder en la raíz de _MEIPASS -mkdir -p "$SEVEN" "$ODBC" +mkdir -p "$SEVEN" "$ODBC" "$QTLIB" read_url() { python3 -c "import json; print(json.load(open('$VERSIONS'))['$1'])" } -LINUX_7Z_URL="$(read_url seven_zip_linux_x64)" -MSODBC_DEB="$(read_url msodbcsql18_deb)" +# Descarga uno o más paquetes .deb (y NO sus dependencias), extrae sus .so y los +# copia al directorio destino con el NOMBRE DE SONAME (lo que busca el loader: +# libfoo.so.N), dereferenciando symlinks para no dejar enlaces colgantes. +# Requiere apt-get/dpkg-deb. +fetch_pkg_libs() { + local destdir="$1"; shift + if ! command -v apt-get >/dev/null 2>&1; then + echo " (apt-get no disponible; se omite descarga de $* — el entorno de build debe proveerlas)" + return 0 + fi + local tmp; tmp=$(mktemp -d) + ( + cd "$tmp" + apt-get download "$@" >/dev/null 2>&1 || { + # Reintento tras refrescar índices (build env con red). + apt-get update -qq >/dev/null 2>&1 || true + apt-get download "$@" >/dev/null 2>&1 || true + } + for deb in *.deb; do + [[ -f "$deb" ]] || continue + dpkg-deb -x "$deb" x + done + [[ -d x ]] || exit 0 + # 1) Symlinks SONAME del propio paquete (libfoo.so.N -> libfoo.so.N.M.P): + # copiar el contenido REAL bajo el nombre del symlink (= SONAME exacto). + while IFS= read -r link; do + cp -Lf "$link" "$destdir/$(basename "$link")" 2>/dev/null || true + done < <(find x -type l -name '*.so.*') + # 2) Archivos reales sin symlink: derivar SONAME por truncación de versión + # (libfoo.so.N.M.P -> libfoo.so.N) para no dejarlos con nombre versionado. + while IFS= read -r f; do + local soname + soname=$(basename "$f" | sed -E 's/(\.so\.[0-9]+)\..*/\1/') + [[ -e "$destdir/$soname" ]] || cp -Lf "$f" "$destdir/$soname" 2>/dev/null || true + done < <(find x -type f -name '*.so.*') + ) + rm -rf "$tmp" +} echo "==> 7-Zip Linux (7zz)" +LINUX_7Z_URL="$(read_url seven_zip_linux_x64)" if [[ ! -f "$SEVEN/7zz" ]]; then TMP=$(mktemp -d) curl -fsSL -o "$TMP/7z.tar.xz" "$LINUX_7Z_URL" @@ -31,6 +75,7 @@ else fi echo "==> ODBC Driver 18 + unixODBC" +MSODBC_DEB="$(read_url msodbcsql18_deb)" if [[ -z "$(ls -A "$ODBC" 2>/dev/null || true)" ]]; then TMP=$(mktemp -d) cd "$TMP" @@ -38,21 +83,74 @@ if [[ -z "$(ls -A "$ODBC" 2>/dev/null || true)" ]]; then if command -v apt-get >/dev/null 2>&1; then export DEBIAN_FRONTEND=noninteractive - apt-get update -qq + apt-get update -qq || true apt-get install -y -qq unixodbc dpkg-dev > /dev/null 2>&1 || true if dpkg -l unixodbc 2>/dev/null | grep -q ^ii; then - find /usr/lib -name 'libodbc*.so*' -exec cp -P {} "$ODBC/" \; 2>/dev/null || true - find /usr/lib -name 'libodbcinst*.so*' -exec cp -P {} "$ODBC/" \; 2>/dev/null || true + # -L: dereferencia symlinks para no dejar enlaces colgantes en el destino. + find /usr/lib -name 'libodbc*.so*' -exec cp -Lf {} "$ODBC/" \; 2>/dev/null || true + find /usr/lib -name 'libodbcinst*.so*' -exec cp -Lf {} "$ODBC/" \; 2>/dev/null || true fi fi dpkg-deb -x msodbcsql18.deb msodbcsql - find msodbcsql -name '*.so*' -exec cp -P {} "$ODBC/" \; + # Copiar SOLO el archivo real versionado del driver (evita el symlink -> /opt). + find msodbcsql -type f -name 'libmsodbcsql-18*.so*' -exec cp -Lf {} "$ODBC/" \; cd "$ROOT" rm -rf "$TMP" - echo " Bibliotecas ODBC en $ODBC" + + # Stack de dependencias del driver MS ODBC 18, JUNTO al driver, para que un + # servidor pelado (sin unixODBC/krb5/openssl) pueda cargarlo. El driver se + # patchelf-ea a RPATH=$ORIGIN (más abajo) para resolverlas en su propio dir. + ODBC_DEP_PKGS=( + libltdl7 libkrb5-3 libgssapi-krb5-2 libk5crypto3 libkrb5support0 + libcom-err2 libkeyutils1 libssl3 libodbc2 libodbcinst2 + ) + fetch_pkg_libs "$ODBC" "${ODBC_DEP_PKGS[@]}" || true + fetch_pkg_libs "$ODBC" unixodbc || true + echo " Bibliotecas ODBC + deps en $ODBC" else echo " ODBC ya existe" fi +# RPATH=$ORIGIN en TODAS las .so del cluster ODBC: así el driver y sus deps +# (libkrb5 -> libk5crypto/libkrb5support/libkeyutils, libgssapi, libltdl, +# libodbcinst, openssl) se resuelven entre sí en su propio directorio una vez +# copiados a config/odbc/lib, sin depender de LD_LIBRARY_PATH. +if command -v patchelf >/dev/null 2>&1; then + for so in "$ODBC"/*.so*; do + [[ -f "$so" && ! -L "$so" ]] || continue + patchelf --set-rpath '$ORIGIN' "$so" 2>/dev/null || true + done + echo " RPATH=\$ORIGIN aplicado a todo el cluster ODBC" +else + echo " ADVERTENCIA: patchelf no disponible; el driver ODBC podría no resolver" >&2 + echo " sus deps en un servidor sin unixODBC/krb5. Instálalo en el entorno de build." >&2 +fi + +echo "==> Libs de sistema Qt (cluster xcb/X11 + EGL) para la GUI con display" +if [[ -z "$(ls -A "$QTLIB" 2>/dev/null || true)" ]]; then + # Plataforma Qt xcb + su cierre X11/xcb + EGL. Van junto a las libs Qt en el + # onefile (PySide6/Qt/lib) para que libQt6XcbQpa las encuentre por $ORIGIN. + QT_XCB_PKGS=( + libxcb-cursor0 libxcb-icccm4 libxcb-util1 libxcb-image0 libxcb-keysyms1 + libxcb-render-util0 libxcb-render0 libxcb-shape0 libxcb-xkb1 + libxkbcommon-x11-0 libxkbcommon0 libxtst6 libxcomposite1 libxdamage1 + libxrandr2 libxkbfile1 libxcb1 libx11-6 libx11-xcb1 libxext6 libxrender1 + libxi6 libxfixes3 libxcb-glx0 libxcb-randr0 libxcb-shm0 libxcb-sync1 + libxcb-present0 libxcb-dri2-0 libxcb-dri3-0 libxcb-xfixes0 libxau6 + libxdmcp6 libbsd0 libsm6 libice6 + ) + QT_GL_PKGS=(libglvnd0 libegl1 libgl1 libopengl0 libglx0 libgles2) + fetch_pkg_libs "$QTLIB" "${QT_XCB_PKGS[@]}" + fetch_pkg_libs "$QTLIB" "${QT_GL_PKGS[@]}" + COUNT=$(find "$QTLIB" -type f -name '*.so*' 2>/dev/null | wc -l) + echo " $COUNT libs Qt embebidas en $QTLIB" + if [[ "$COUNT" -eq 0 ]]; then + echo " ADVERTENCIA: no se embebió ninguna lib Qt. El entorno de build" >&2 + echo " (docker-build-linux.sh) debe traerlas para que PyInstaller las incluya." >&2 + fi +else + echo " Libs Qt ya existen ($(find "$QTLIB" -type f -name '*.so*' | wc -l) archivos)" +fi + echo "Listo: $BUNDLED" diff --git a/packaging/scripts/package-release.sh b/packaging/scripts/package-release.sh old mode 100644 new mode 100755 index a0041f2..4857df6 --- a/packaging/scripts/package-release.sh +++ b/packaging/scripts/package-release.sh @@ -9,18 +9,38 @@ mkdir -p "$RELEASE" [[ -f "$ROOT/dist/CloudRestoreAS" ]] && cp -f "$ROOT/dist/CloudRestoreAS" "$RELEASE/CloudRestoreAS-linux" && chmod +x "$RELEASE/CloudRestoreAS-linux" cp -f "$ROOT/packaging/LEEME.txt" "$RELEASE/" -python3 <<'PY' -import zipfile +# Paquete Windows: carpeta raíz CloudRestoreAS/ con .exe + install.ps1 + LEEME +# (paridad con el .tar.gz de Linux). +if [[ -f "$RELEASE/CloudRestoreAS.exe" ]]; then + ROOT="$ROOT" RELEASE="$RELEASE" python3 <<'PY' +import os, zipfile from pathlib import Path -release = Path("dist/release") -if (release / "CloudRestoreAS.exe").exists(): - with zipfile.ZipFile(release / "CloudRestoreAS-win.zip", "w", zipfile.ZIP_DEFLATED) as z: - z.write(release / "CloudRestoreAS.exe", "CloudRestoreAS.exe") - z.write(release / "LEEME.txt", "LEEME.txt") +root = Path(os.environ["ROOT"]); release = Path(os.environ["RELEASE"]) +items = [(release / "CloudRestoreAS.exe", "CloudRestoreAS/CloudRestoreAS.exe"), + (root / "packaging" / "LEEME.txt", "CloudRestoreAS/LEEME.txt")] +if (root / "install.ps1").exists(): + items.append((root / "install.ps1", "CloudRestoreAS/install.ps1")) +with zipfile.ZipFile(release / "CloudRestoreAS-win.zip", "w", zipfile.ZIP_DEFLATED) as z: + for src, arc in items: + z.write(src, arc) +print(" zip Windows:", release / "CloudRestoreAS-win.zip") PY +fi if [[ -f "$RELEASE/CloudRestoreAS-linux" ]]; then - tar czf "$RELEASE/CloudRestoreAS-linux.tar.gz" -C "$RELEASE" CloudRestoreAS-linux LEEME.txt + # Paquete de despliegue completo: binario + instalador + unit systemd + LEEME, + # bajo una carpeta raíz para que extraiga limpio. install.sh encuentra el binario + # (CloudRestoreAS-linux) y la unit (packaging/linux/) relativos a su ubicación. + STAGE="$RELEASE/CloudRestoreAS-linux" + PKG="$RELEASE/pkg-linux/CloudRestoreAS" + rm -rf "$RELEASE/pkg-linux" + mkdir -p "$PKG/packaging/linux" + cp -f "$STAGE" "$PKG/CloudRestoreAS-linux"; chmod +x "$PKG/CloudRestoreAS-linux" + cp -f "$ROOT/install.sh" "$PKG/install.sh"; chmod +x "$PKG/install.sh" + cp -f "$ROOT/packaging/linux/cloudrestoreas.service" "$PKG/packaging/linux/" + cp -f "$ROOT/packaging/LEEME.txt" "$PKG/LEEME.txt" + tar czf "$RELEASE/CloudRestoreAS-linux.tar.gz" -C "$RELEASE/pkg-linux" CloudRestoreAS + rm -rf "$RELEASE/pkg-linux" fi echo "Release en: $RELEASE" diff --git a/runner.py b/runner.py index 066627a..bed4803 100644 --- a/runner.py +++ b/runner.py @@ -23,9 +23,34 @@ def parse_args(argv: list[str] | None = None) -> argparse.Namespace: action="store_true", help="Inicia el motor de restauración automáticamente", ) + parser.add_argument( + "--headless", + action="store_true", + help="Fuerza el modo sin interfaz (Qt offscreen) para servidores sin display", + ) return parser.parse_args(argv) +def _ensure_qt_platform(headless: bool = False) -> str: + """ + Selecciona el plugin de plataforma Qt en Linux. En un servidor headless (sin + DISPLAY/WAYLAND_DISPLAY) o con --headless, usa 'offscreen' para que la app + arranque y el motor trabaje sin X; con display usa el default ('xcb'). No toca + nada si el usuario ya fijó QT_QPA_PLATFORM, ni en Windows/macOS. + + Devuelve la plataforma forzada ("offscreen") o "" si se deja el default. + """ + if sys.platform in ("win32", "darwin"): + return "" + if os.environ.get("QT_QPA_PLATFORM"): + return os.environ["QT_QPA_PLATFORM"] + has_display = bool(os.environ.get("DISPLAY") or os.environ.get("WAYLAND_DISPLAY")) + if headless or not has_display: + os.environ["QT_QPA_PLATFORM"] = "offscreen" + return "offscreen" + return "" + + def _crash_log_targets() -> list[Path]: """Ubicaciones candidatas para el crash log, de más a menos accesible.""" targets: list[Path] = [] @@ -64,6 +89,9 @@ def _show_fatal(exc: BaseException) -> None: except Exception: pass try: + # Sin display, forzar offscreen para que crear la QApplication no falle + # también aquí (el diálogo no se verá, pero el crash log ya quedó escrito). + _ensure_qt_platform() from PySide6.QtWidgets import QApplication, QMessageBox app = QApplication.instance() or QApplication(sys.argv) @@ -100,6 +128,7 @@ def _run() -> int: from app.utils.logger import app_logger args = parse_args() + qt_platform = _ensure_qt_platform(headless=args.headless) launch = get_launch_options() initialize_env() @@ -109,7 +138,10 @@ def _run() -> int: app_logger.info("=" * 80) app_logger.info("CloudRestoreAS - Iniciando aplicación") app_logger.info(f"Directorio app: {ROOT_DIR}") - app_logger.info("Modo: ventana siempre visible; cerrar minimiza a bandeja") + if qt_platform == "offscreen": + app_logger.info("Modo: sin display → plataforma Qt 'offscreen' (motor headless)") + else: + app_logger.info("Modo: ventana siempre visible; cerrar minimiza a bandeja") if start_engine: app_logger.info("Modo: motor auto-inicio") if not panel_ok: