Moved pyinstaller, cura_version generate function

This is used both in source, generate and deploy

Contributes to CURA-9365
This commit is contained in:
j.spijker@ultimaker.com 2022-06-30 09:49:22 +02:00 committed by Jelle Spijker
parent 6b51753973
commit d20976d459

View file

@ -120,11 +120,11 @@ class CuraConan(ConanFile):
py_interp = Path(*[f'"{p}"' if " " in p else p for p in py_interp.parts])
return py_interp
def source(self):
def _generate_cura_version(self, location):
with open(Path(self.source_folder, "CuraVersion.py.jinja"), "r") as f:
cura_version_py = Template(f.read())
with open(Path(self.source_folder, "cura", "CuraVersion.py"), "w") as f:
with open(Path(location, "CuraVersion.py"), "w") as f:
f.write(cura_version_py.render(
cura_app_name = self.name,
cura_app_display_name = self.options.display_name,
@ -137,37 +137,7 @@ class CuraConan(ConanFile):
cura_marketplace_root = self._marketplace_root,
cura_digital_factory_url = self._digital_factory_url))
def configure(self):
self.options["arcus"].shared = True
self.options["savitar"].shared = True
self.options["pynest2d"].shared = True
self.options["cpython"].shared = True
def validate(self):
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._um_data(self.version)["requirements"]:
self.requires(req)
def layout(self):
self.folders.source = "."
self.folders.build = "venv"
self.folders.generators = Path(self.folders.build, "conan")
self.cpp.package.libdirs = [os.path.join("site-packages", "cura")]
self.cpp.package.bindirs = ["bin"]
self.cpp.package.resdirs = ["resources", "plugins", "pip_requirements"] # pip_requirements should be the last item in the list
def generate(self):
vr = VirtualRunEnv(self)
vr.generate()
if self.options.devtools:
with open(Path(self.source_folder, "Ultimaker-Cura.spec.jinja"), "r") as f:
pyinstaller = Template(f.read())
def _generate_pyinstaller_spec(self, location):
pyinstaller_metadata = self._um_data(self.version)["pyinstaller"]
datas = []
for data in pyinstaller_metadata["datas"].values():
@ -198,7 +168,10 @@ class CuraConan(ConanFile):
for bin in src_path.glob(binary["binary"]):
binaries.append((str(bin), binary["dst"]))
with open(Path(self.generators_folder, "Ultimaker-Cura.spec"), "w") as f:
with open(Path(Path(__file__).parent, "Ultimaker-Cura.spec.jinja"), "r") as f:
pyinstaller = Template(f.read())
with open(Path(location, "Ultimaker-Cura.spec"), "w") as f:
f.write(pyinstaller.render(
name = str(self.options.display_name).replace(" ", "-"),
entrypoint = os.path.join("..", "..", self._um_data(self.version)["runinfo"]["entrypoint"]),
@ -209,6 +182,39 @@ class CuraConan(ConanFile):
icon = os.path.join("..", "..", pyinstaller_metadata["icon"][str(self.settings.os)])
))
def source(self):
self._generate_cura_version(Path(self.source_folder, "cura"))
def configure(self):
self.options["arcus"].shared = True
self.options["savitar"].shared = True
self.options["pynest2d"].shared = True
self.options["cpython"].shared = True
def validate(self):
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._um_data(self.version)["requirements"]:
self.requires(req)
def layout(self):
self.folders.source = "."
self.folders.build = "venv"
self.folders.generators = Path(self.folders.build, "conan")
self.cpp.package.libdirs = [os.path.join("site-packages", "cura")]
self.cpp.package.bindirs = ["bin"]
self.cpp.package.resdirs = ["resources", "plugins", "pip_requirements"] # pip_requirements should be the last item in the list
def generate(self):
vr = VirtualRunEnv(self)
vr.generate()
if self.options.devtools:
self._generate_pyinstaller_spec(self.generators_folder)
def imports(self):
self.copy("CuraEngine.exe", root_package = "curaengine", src = "@bindirs", dst = "", keep_path = False)
self.copy("CuraEngine", root_package = "curaengine", src = "@bindirs", dst = "", keep_path = False)
@ -280,6 +286,9 @@ class CuraConan(ConanFile):
# Copy requirements.txt's
self.copy("*.txt", src = self.cpp_info.resdirs[-1], dst = self._base_dir.joinpath("pip_requirements"))
self._generate_cura_version(Path(self._site_packages, "cura"))
self._generate_pyinstaller_spec(self._base_dir)
def package(self):
self.copy("cura_app.py", src = ".", dst = self.cpp.package.bindirs[0])