diff --git a/conandata.yml b/conandata.yml index 941ce1a320..b914d03cce 100644 --- a/conandata.yml +++ b/conandata.yml @@ -1,26 +1,166 @@ requirements: + "None": + - "arcus/(latest)@ultimaker/stable" + - "curaengine/(latest)@ultimaker/stable" + - "savitar/(latest)@ultimaker/stable" + - "pynest2d/(latest)@ultimaker/stable" + - "uranium/(latest)@ultimaker/stable" + - "fdm_materials/(latest)@ultimaker/stable" + - "cura_binary_data/(latest)@ultimaker/stable" + "5.1.0": + - "arcus/5.1.0" + - "curaengine/5.1.0" + - "savitar/5.1.0" + - "pynest2d/5.1.0" + - "uranium/5.1.0" + - "fdm_materials/5.1.0" + - "cura_binary_data/5.1.0" "5.1.0-beta": - - "arcus/[~5.1.0-beta]@ultimaker/stable" - - "curaengine/[~5.1.0-beta]@ultimaker/stable" - - "savitar/[~5.1.0-beta]@ultimaker/stable" - - "pynest2d/[~5.1.0-beta]@ultimaker/stable" - - "uranium/[~5.1.0-beta]@ultimaker/stable" - - "fdm_materials/[~5.1.0-beta]@ultimaker/stable" - - "cura_binary_data/[~5.1.0-beta]@ultimaker/stable" + - "arcus/[5.1.0-beta, include_prerelease=True]@ultimaker/stable" + - "curaengine/[5.1.0-beta, include_prerelease=True]@ultimaker/stable" + - "savitar/[5.1.0-beta, include_prerelease=True]@ultimaker/stable" + - "pynest2d/[5.1.0-beta, include_prerelease=True]@ultimaker/stable" + - "uranium/[5.1.0-beta, include_prerelease=True]@ultimaker/stable" + - "fdm_materials/[5.1.0-beta, include_prerelease=True]@ultimaker/stable" + - "cura_binary_data/[5.1.0-beta, include_prerelease=True]@ultimaker/stable" "5.1.0-cura_9365": - - "arcus/~[5.1.0-cura_9365]@ultimaker/testing" - - "curaengine/[~5.1.0-cura_9365]@ultimaker/testing" - - "savitar/[~5.1.0-cura_9365]@ultimaker/testing" - - "pynest2d/[~5.1.0-cura_9365]@ultimaker/testing" - - "uranium/[~5.1.0-cura_9365]@ultimaker/testing" - - "fdm_materials/[~5.1.0-cura_9365]@ultimaker/testing" - - "cura_binary_data/[~5.1.0-cura_9365]@ultimaker/testing" + - "arcus/[5.1.0-cura_9365]@ultimaker/testing" + - "curaengine/[5.1.0-cura_9365]@ultimaker/testing" + - "savitar/[5.1.0-cura_9365]@ultimaker/testing" + - "pynest2d/[5.1.0-cura_9365]@ultimaker/testing" + - "uranium/[5.1.0-cura_9365]@ultimaker/testing" + - "fdm_materials/[5.1.0-cura_9365]@ultimaker/testing" + - "cura_binary_data/[5.1.0-cura_9365]@ultimaker/testing" runinfo: + "None": + entrypoint: "cura_app.py" "5.1.0-beta": entrypoint: "cura_app.py" + "5.1.0": + entrypoint: "cura_app.py" "5.1.0-cura_9365": entrypoint: "cura_app.py" pyinstaller: + "None": + datas: + cura_plugins: + root: "." + src: "plugins" + dst: "share/cura/plugins" + cura_resources: + root: "." + src: "resources" + dst: "share/cura/resources" + uranium_plugins: + package: "uranium" + src: "site-packages/plugins" + dst: "share/uranium/plugins" + uranium_resources: + package: "uranium" + src: "res/resources" + dst: "share/uranium/resources" + uranium_um_qt_qml_um: + package: "uranium" + src: "site-packages/UM/Qt/qml/UM" + dst: "PyQt6/qt6/qml/UM" + cura_binary_data: + package: "cura_binary_data" + src: "res/cura/resources" + dst: "share/cura/resources" + uranium_binary_data: + package: "cura_binary_data" + src: "res/uranium/resources" + dst: "share/uranium/resources" + fdm_materials: + package: "fdm_materials" + src: "res/materials" + dst: "share/cura/resources/materials" + binaries: + curaengine: + package: "curaengine" + src: "bin" + dst: "." + binary: "CuraEngine" + hiddenimports: + - "pySavitar" + - "pyArcus" + - "pynest2d" + - "PyQt6.QtNetwork" + - "logging.handlers" + - "zeroconf" + - "fcntl" + collect_all: + - "cura" + - "UM" + - "serial" + - "Charon" + - "sqlite3" + - "trimesh" + - "win32ctypes" + icon: + Windows: "./icons/Cura.ico" + Macos: "./icons/cura.icns" + Linux: ".icons/cura-128.png" + "5.1.0": + datas: + cura_plugins: + root: "." + src: "plugins" + dst: "share/cura/plugins" + cura_resources: + root: "." + src: "resources" + dst: "share/cura/resources" + uranium_plugins: + package: "uranium" + src: "site-packages/plugins" + dst: "share/uranium/plugins" + uranium_resources: + package: "uranium" + src: "res/resources" + dst: "share/uranium/resources" + uranium_um_qt_qml_um: + package: "uranium" + src: "site-packages/UM/Qt/qml/UM" + dst: "PyQt6/qt6/qml/UM" + cura_binary_data: + package: "cura_binary_data" + src: "res/cura/resources" + dst: "share/cura/resources" + uranium_binary_data: + package: "cura_binary_data" + src: "res/uranium/resources" + dst: "share/uranium/resources" + fdm_materials: + package: "fdm_materials" + src: "res/materials" + dst: "share/cura/resources/materials" + binaries: + curaengine: + package: "curaengine" + src: "bin" + dst: "." + binary: "CuraEngine" + hiddenimports: + - "pySavitar" + - "pyArcus" + - "pynest2d" + - "PyQt6.QtNetwork" + - "logging.handlers" + - "zeroconf" + - "fcntl" + collect_all: + - "cura" + - "UM" + - "serial" + - "Charon" + - "sqlite3" + - "trimesh" + - "win32ctypes" + icon: + Windows: "./icons/Cura.ico" + Macos: "./icons/cura.icns" + Linux: ".icons/cura-128.png" "5.1.0-beta": datas: cura_plugins: diff --git a/conanfile.py b/conanfile.py index 46688937cf..b66f8cdaab 100644 --- a/conanfile.py +++ b/conanfile.py @@ -4,6 +4,7 @@ from pathlib import Path from platform import python_version from jinja2 import Template +from semver import * from conan import ConanFile from conan.tools import files @@ -50,9 +51,18 @@ class CuraConan(ConanFile): } @property - def _conan_data_version(self): - version = tools.Version(self.version) - return f"{version.major}.{version.minor}.{version.patch}-{version.prerelease}" + def _conan_data(self): + data = {} + if self.version: + for k, vers in self.conan_data.items(): + for v in vers: + if v != "None": + if satisfies(self.version, v, loose = True, include_prerelease = False): + data[k] = vers[v] + else: + for k, ver in self.conan_data.items(): + data[k] = ver["None"] + return data @property def _staging(self): @@ -93,11 +103,11 @@ class CuraConan(ConanFile): self.options["*"].python_version = self.options.python_version def validate(self): - if tools.Version(self.version) <= tools.Version("4"): + if self.version and tools.Version(self.version) <= tools.Version("4"): raise ConanInvalidConfiguration("Only versions 5+ are support") def requirements(self): - for req in self.conan_data["requirements"][self._conan_data_version]: + for req in self._conan_data["requirements"]: self.requires(req) def layout(self): @@ -133,7 +143,7 @@ class CuraConan(ConanFile): with open(Path(self.source_folder, "Ultimaker-Cura.spec.jinja"), "r") as f: pyinstaller = Template(f.read()) - pyinstaller_metadata = self.conan_data["pyinstaller"][self._conan_data_version] + pyinstaller_metadata = self._conan_data["pyinstaller"] datas = [] for data in pyinstaller_metadata["datas"].values(): if "package" in data: # get the paths from conan package @@ -166,7 +176,7 @@ class CuraConan(ConanFile): with open(Path(self.generators_folder, "Ultimaker-Cura.spec"), "w") as f: f.write(pyinstaller.render( name = str(self.options.display_name).replace(" ", "-"), - entrypoint = self.conan_data["runinfo"][self._conan_data_version]["entrypoint"], + entrypoint = self._conan_data["runinfo"]["entrypoint"], datas = datas, binaries = binaries, hiddenimports = pyinstaller_metadata["hiddenimports"],