aboutsummaryrefslogtreecommitdiffstats
path: root/sources/pyside-tools/deploy_lib
diff options
context:
space:
mode:
authorShyamnath Premnadh <shyamnath.premnadh@qt.io>2023-03-15 11:33:59 +0100
committerShyamnath Premnadh <shyamnath.premnadh@qt.io>2023-03-16 15:25:08 +0100
commitbe64f1cc97875b99811f8205e44265cafd846837 (patch)
tree9f19caa315cd2a0ac3e078936bc8a3e6190bf45d /sources/pyside-tools/deploy_lib
parentb2bd0b0795f41ef6eae8be12d3c5b42aff96e1ec (diff)
Deployment: Specify Package Version
- Specific package versions can be specified as {package_name}=={version} - Nuitka 1.5.1 breaks with PySide6, so use version 1.4.8 - new package "importlib_metadata" required to find a python package's version at run time. This is added to Python from 3.8, but since we support 3.7 the package "importlib_metadata" is required - modify test accordingly Task-number: PYSIDE-1612 Pick-to: 6.4 Change-Id: Ie74273ba2a116f0f94f3a3e10120b2de78482724 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
Diffstat (limited to 'sources/pyside-tools/deploy_lib')
-rw-r--r--sources/pyside-tools/deploy_lib/default.spec2
-rw-r--r--sources/pyside-tools/deploy_lib/python_helper.py39
2 files changed, 30 insertions, 11 deletions
diff --git a/sources/pyside-tools/deploy_lib/default.spec b/sources/pyside-tools/deploy_lib/default.spec
index 909b44d73..812861a70 100644
--- a/sources/pyside-tools/deploy_lib/default.spec
+++ b/sources/pyside-tools/deploy_lib/default.spec
@@ -24,7 +24,7 @@ python_path =
# python packages to install
# ordered-set: increase compile time performance of nuitka packaging
# zstandard: provides final executable size optimization
-packages = nuitka,ordered_set,zstandard
+packages = nuitka==1.4.8,ordered_set,zstandard
[qt]
diff --git a/sources/pyside-tools/deploy_lib/python_helper.py b/sources/pyside-tools/deploy_lib/python_helper.py
index 0c1978a9d..006ad3249 100644
--- a/sources/pyside-tools/deploy_lib/python_helper.py
+++ b/sources/pyside-tools/deploy_lib/python_helper.py
@@ -5,6 +5,7 @@ import sys
import os
import logging
from importlib import util
+from importlib_metadata import version
from pathlib import Path
from . import Nuitka, run_command, Config
@@ -51,20 +52,38 @@ class PythonExecutable:
logging.info("[DEPLOY] You are already in virtual environment!")
def install(self, packages: list = None):
- if packages:
- for package in packages:
- if not self.is_installed(package=package):
- logging.info(f"[DEPLOY] Installing package: {package}")
+ for package in packages:
+ package_info = package.split('==')
+ package_components_len = len(package_info)
+ package_name, package_version = None, None
+ if package_components_len == 1:
+ package_name = package_info[0]
+ elif package_components_len == 2:
+ package_name = package_info[0]
+ package_version = package_info[1]
+ else:
+ raise ValueError(f"{package} should be of the format 'package_name'=='version'")
+
+ if not self.is_installed(package=package_name):
+ logging.info(f"[DEPLOY] Installing package: {package}")
+ run_command(
+ command=[self.exe, "-m", "pip", "install", package],
+ dry_run=self.dry_run,
+ )
+ elif package_version:
+ installed_version = version(package_name)
+ if package_version != installed_version:
+ logging.info(f"[DEPLOY] Installing package: {package_name}"
+ f"version: {package_version}")
run_command(
- command=[self.exe, "-m", "pip", "install", package],
+ command=[self.exe, "-m", "pip", "install", "--force", package],
dry_run=self.dry_run,
)
else:
- logging.info(f"[DEPLOY] Upgrading package: {package}")
- run_command(
- command=[self.exe, "-m", "pip", "install", "--upgrade", package],
- dry_run=self.dry_run,
- )
+ logging.info(f"[DEPLOY] package: {package_name}=={package_version}"
+ "already installed")
+ else:
+ logging.info(f"[DEPLOY] package: {package_name} already installed")
def is_installed(self, package):
return bool(util.find_spec(package))