Merge pull request #15057 from Ultimaker/CURA-10317_other_inconsitent_material_profiles_in_internal_builds

Cura 10317 other inconsistent material profiles in internal builds
This commit is contained in:
Remco Burema 2023-03-29 20:54:21 +02:00 committed by GitHub
commit c3ca642a78
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
52 changed files with 132 additions and 94 deletions

View file

@ -1,3 +1,16 @@
urls:
default:
cloud_api_root: "https://api.ultimaker.com"
cloud_account_api_root: "https://account.ultimaker.com"
marketplace_root: "https://marketplace.ultimaker.com"
digital_factory_url: "https://digitalfactory.ultimaker.com"
cura_latest_url: "https://software.ultimaker.com/latest.json"
staging:
cloud_api_root: "https://api-staging.ultimaker.com"
cloud_account_api_root: "https://account-staging.ultimaker.com"
marketplace_root: "https://marketplace-staging.ultimaker.com"
digital_factory_url: "https://digitalfactory-staging.ultimaker.com"
cura_latest_url: "https://software.ultimaker.com/latest.json"
pyinstaller:
runinfo:
entrypoint: "cura_app.py"
@ -12,8 +25,8 @@ pyinstaller:
dst: "share/cura/resources"
cura_private_data:
package: "cura_private_data"
src: "resources"
dst: "share/cura/resources"
src: "res"
dst: "share/cura"
internal: true
uranium_plugins:
package: "uranium"
@ -41,7 +54,7 @@ pyinstaller:
dst: "share/windows"
fdm_materials:
package: "fdm_materials"
src: "materials"
src: "res/resources/materials"
dst: "share/cura/resources/materials"
tcl:
package: "tcl"

View file

@ -23,7 +23,6 @@ class CuraConan(ConanFile):
build_policy = "missing"
exports = "LICENSE*", "UltiMaker-Cura.spec.jinja", "CuraVersion.py.jinja"
settings = "os", "compiler", "build_type", "arch"
no_copy_source = True # We won't build so no need to copy sources to the build folder
# FIXME: Remove specific branch once merged to main
python_requires = "umbase/[>=0.1.7]@ultimaker/stable", "translationextractor/[>=2.1.1]@ultimaker/stable"
@ -74,10 +73,6 @@ class CuraConan(ConanFile):
self._cura_env.define("QT_XKB_CONFIG_ROOT", "/usr/share/X11/xkb")
return self._cura_env
@property
def _staging(self):
return self.options.staging in ["True", 'true']
@property
def _enterprise(self):
return self.options.enterprise in ["True", 'true']
@ -89,24 +84,10 @@ class CuraConan(ConanFile):
return str(self.options.display_name)
@property
def _cloud_api_root(self):
return "https://api-staging.ultimaker.com" if self._staging else "https://api.ultimaker.com"
@property
def _cloud_account_api_root(self):
return "https://account-staging.ultimaker.com" if self._staging else "https://account.ultimaker.com"
@property
def _marketplace_root(self):
return "https://marketplace-staging.ultimaker.com" if self._staging else "https://marketplace.ultimaker.com"
@property
def _digital_factory_url(self):
return "https://digitalfactory-staging.ultimaker.com" if self._staging else "https://digitalfactory.ultimaker.com"
@property
def _cura_latest_url(self):
return "https://software.ultimaker.com/latest.json"
def _urls(self):
if self.options.staging in ["True", 'true']:
return "staging"
return "default"
@property
def requirements_txts(self):
@ -176,12 +157,12 @@ class CuraConan(ConanFile):
cura_version = cura_version,
cura_build_type = "Enterprise" if self._enterprise else "",
cura_debug_mode = self.options.cura_debug_mode,
cura_cloud_api_root = self._cloud_api_root,
cura_cloud_api_root = self.conan_data["urls"][self._urls]["cloud_api_root"],
cura_cloud_api_version = self.options.cloud_api_version,
cura_cloud_account_api_root = self._cloud_account_api_root,
cura_marketplace_root = self._marketplace_root,
cura_digital_factory_url = self._digital_factory_url,
cura_latest_url = self._cura_latest_url))
cura_cloud_account_api_root = self.conan_data["urls"][self._urls]["cloud_account_api_root"],
cura_marketplace_root = self.conan_data["urls"][self._urls]["marketplace_root"],
cura_digital_factory_url = self.conan_data["urls"][self._urls]["digital_factory_url"],
cura_latest_url = self.conan_data["urls"][self._urls]["cura_latest_url"]))
def _generate_pyinstaller_spec(self, location, entrypoint_location, icon_path, entitlements_file):
pyinstaller_metadata = self.conan_data["pyinstaller"]
@ -274,8 +255,6 @@ class CuraConan(ConanFile):
copy(self, "requirements.txt", self.recipe_folder, self.export_sources_folder)
copy(self, "requirements-dev.txt", self.recipe_folder, self.export_sources_folder)
copy(self, "requirements-ultimaker.txt", self.recipe_folder, self.export_sources_folder)
copy(self, "UltiMaker-Cura.spec.jinja", self.recipe_folder, self.export_sources_folder)
copy(self, "CuraVersion.py.jinja", self.recipe_folder, self.export_sources_folder)
copy(self, "cura_app.py", self.recipe_folder, self.export_sources_folder)
def configure(self):
@ -295,11 +274,13 @@ class CuraConan(ConanFile):
self.requires("pysavitar/5.2.2")
self.requires("pynest2d/5.2.2")
self.requires("uranium/(latest)@ultimaker/testing")
self.requires("fdm_materials/(latest)@{}/testing".format("internal" if self.options.internal else "ultimaker"))
self.requires("cura_binary_data/(latest)@ultimaker/testing")
self.requires("cpython/3.10.4")
if self.options.internal:
self.requires("cura_private_data/(latest)@ultimaker/testing")
self.requires("fdm_materials/(latest)@internal/testing")
else:
self.requires("fdm_materials/(latest)@ultimaker/testing")
def build_requirements(self):
if self.options.devtools:
@ -380,63 +361,54 @@ class CuraConan(ConanFile):
def deploy(self):
# Copy CuraEngine.exe to bindirs of Virtual Python Environment
# TODO: Fix source such that it will get the curaengine relative from the executable (Python bindir in this case)
self.copy_deps("CuraEngine.exe", root_package = "curaengine", src = self.deps_cpp_info["curaengine"].bindirs[0],
dst = self._base_dir,
keep_path = False)
self.copy_deps("CuraEngine", root_package = "curaengine", src = self.deps_cpp_info["curaengine"].bindirs[0], dst = self._base_dir,
keep_path = False)
curaengine = self.dependencies["curaengine"].cpp_info
copy(self, "CuraEngine.exe", curaengine.bindirs[0], str(self._base_dir), keep_path = False)
copy(self, "CuraEngine", curaengine.bindirs[0], str(self._base_dir), keep_path = False)
# Copy resources of Cura (keep folder structure)
self.copy("*", src = self.cpp_info.bindirs[0], dst = self._base_dir, keep_path = False)
self.copy("*", src = self.cpp_info.libdirs[0], dst = self._site_packages.joinpath("cura"), keep_path = True)
self.copy("*", src = self.cpp_info.resdirs[0], dst = self._share_dir.joinpath("cura", "resources"), keep_path = True)
self.copy("*", src = self.cpp_info.resdirs[1], dst = self._share_dir.joinpath("cura", "plugins"), keep_path = True)
copy(self, "*", os.path.join(self.package_folder, self.cpp_info.bindirs[0]), str(self._base_dir), keep_path = False)
copy(self, "*", os.path.join(self.package_folder, self.cpp_info.libdirs[0]), str(self._site_packages.joinpath("cura")), keep_path = True)
copy(self, "*", os.path.join(self.package_folder, self.cpp_info.resdirs[0]), str(self._share_dir.joinpath("cura", "resources")), keep_path = True)
copy(self, "*", os.path.join(self.package_folder, self.cpp_info.resdirs[1]), str(self._share_dir.joinpath("cura", "plugins")), keep_path = True)
# Copy materials (flat)
self.copy_deps("*.fdm_material", root_package = "fdm_materials", src = self.deps_cpp_info["fdm_materials"].resdirs[0],
dst = self._share_dir.joinpath("cura", "resources", "materials"), keep_path = False)
self.copy_deps("*.sig", root_package = "fdm_materials", src = self.deps_cpp_info["fdm_materials"].resdirs[0],
dst = self._share_dir.joinpath("cura", "resources", "materials"), keep_path = False)
fdm_materials = self.dependencies["fdm_materials"].cpp_info
copy(self, "*", fdm_materials.resdirs[0], str(self._share_dir.joinpath("cura")))
# Copy internal resources
if self.options.internal:
self.copy_deps("*", root_package = "cura_private_data", src = self.deps_cpp_info["cura_private_data"].resdirs[0],
dst = self._share_dir.joinpath("cura", "resources"), keep_path = True)
self.copy_deps("*", root_package = "cura_private_data", src = self.deps_cpp_info["cura_private_data"].resdirs[1],
dst = self._share_dir.joinpath("cura", "plugins"), keep_path = True)
cura_private_data = self.dependencies["cura_private_data"].cpp_info
copy(self, "*", cura_private_data.resdirs[0], str(self._share_dir.joinpath("cura")))
# Copy resources of Uranium (keep folder structure)
self.copy_deps("*", root_package = "uranium", src = self.deps_cpp_info["uranium"].resdirs[0],
dst = self._share_dir.joinpath("uranium", "resources"), keep_path = True)
self.copy_deps("*", root_package = "uranium", src = self.deps_cpp_info["uranium"].resdirs[1],
dst = self._share_dir.joinpath("uranium", "plugins"), keep_path = True)
self.copy_deps("*", root_package = "uranium", src = self.deps_cpp_info["uranium"].libdirs[0],
dst = self._site_packages.joinpath("UM"),
keep_path = True)
self.copy_deps("*", root_package = "uranium", src = str(os.path.join(self.deps_cpp_info["uranium"].libdirs[0], "Qt", "qml", "UM")),
dst = self._site_packages.joinpath("PyQt6", "Qt6", "qml", "UM"),
keep_path = True)
uranium = self.dependencies["uranium"].cpp_info
copy(self, "*", uranium.resdirs[0], str(self._share_dir.joinpath("uranium", "resources")), keep_path = True)
copy(self, "*", uranium.resdirs[1], str(self._share_dir.joinpath("uranium", "plugins")), keep_path = True)
copy(self, "*", uranium.libdirs[0], str(self._site_packages.joinpath("UM")), keep_path = True)
# TODO: figure out if this is still needed
copy(self, "*", os.path.join(uranium.libdirs[0], "Qt", "qml", "UM"), str(self._site_packages.joinpath("PyQt6", "Qt6", "qml", "UM")), keep_path = True)
# Copy resources of cura_binary_data
self.copy_deps("*", root_package = "cura_binary_data", src = self.deps_cpp_info["cura_binary_data"].resdirs[0],
dst = self._share_dir.joinpath("cura"), keep_path = True)
self.copy_deps("*", root_package = "cura_binary_data", src = self.deps_cpp_info["cura_binary_data"].resdirs[1],
dst = self._share_dir.joinpath("uranium"), keep_path = True)
cura_binary_data = self.dependencies["cura_binary_data"].cpp_info
copy(self, "*", cura_binary_data.resdirs[0], str(self._share_dir.joinpath("cura")), keep_path = True)
copy(self, "*", cura_binary_data.resdirs[1], str(self._share_dir.joinpath("uranium")), keep_path = True)
if self.settings.os == "Windows":
self.copy_deps("*", root_package = "cura_binary_data", src = self.deps_cpp_info["cura_binary_data"].resdirs[2],
dst = self._share_dir.joinpath("windows"), keep_path = True)
copy(self, "*", cura_binary_data.resdirs[2], str(self._share_dir.joinpath("windows")), keep_path = True)
self.copy_deps("*.dll", src = "@bindirs", dst = self._site_packages)
self.copy_deps("*.pyd", src = "@libdirs", dst = self._site_packages)
self.copy_deps("*.pyi", src = "@libdirs", dst = self._site_packages)
self.copy_deps("*.dylib", src = "@libdirs", dst = self._base_dir.joinpath("lib"))
for dependency in self.dependencies.host.values():
for bindir in dependency.cpp_info.bindirs:
copy(self, "*.dll", bindir, str(self._site_packages), keep_path = False)
for libdir in dependency.cpp_info.libdirs:
copy(self, "*.pyd", libdir, str(self._site_packages), keep_path = False)
copy(self, "*.pyi", libdir, str(self._site_packages), keep_path = False)
copy(self, "*.dylib", libdir, str(self._base_dir.joinpath("lib")), keep_path = False)
# Copy packaging scripts
self.copy("*", src = self.cpp_info.resdirs[2], dst = self._base_dir.joinpath("packaging"))
copy(self, "*", os.path.join(self.package_folder, self.cpp_info.resdirs[2]), str(self._base_dir.joinpath("packaging")), keep_path = True)
# Copy requirements.txt's
self.copy("*.txt", src = self.cpp_info.resdirs[-1], dst = self._base_dir.joinpath("pip_requirements"))
copy(self, "*.txt", os.path.join(self.package_folder, self.cpp_info.resdirs[-1]), str(self._base_dir.joinpath("pip_requirements")), keep_path = False)
# Generate the GitHub Action version info Environment
version = self.conf_info.get("user.cura:version", default = self.version, check_type = str)

View file

@ -7,7 +7,7 @@
"author": "LNL3D",
"manufacturer": "LNL3D",
"file_formats": "text/x-gcode",
"first_start_actions": ["MachineSettingsAction"],
"first_start_actions": [ "MachineSettingsAction" ],
"has_machine_quality": true,
"has_materials": true,
"has_variants": true,
@ -51,13 +51,13 @@
"machine_max_acceleration_x": { "value": 500 },
"machine_max_acceleration_y": { "value": 500 },
"machine_max_acceleration_z": { "value": 100 },
"machine_max_jerk_e": { "value": 5 },
"machine_max_jerk_xy": { "value": 10 },
"machine_max_jerk_z": { "value": 0.4 },
"machine_max_feedrate_e": { "value": 80 },
"machine_max_feedrate_x": { "value": 500 },
"machine_max_feedrate_y": { "value": 500 },
"machine_max_feedrate_z": { "value": 10 },
"machine_max_jerk_e": { "value": 5 },
"machine_max_jerk_xy": { "value": 10 },
"machine_max_jerk_z": { "value": 0.4 },
"machine_start_gcode": { "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 ;move to min endstops\nG92 E0 ;reset extruder\nG1 E15 F1500 ;move extruder 15mm\nG1 Z15.0 F3000 ;move the header up 15mm\nM117 printing... ;LCD message" },
"material_diameter": { "default_value": 1.75 },
"material_final_print_temperature": { "value": "material_print_temperature" },
@ -70,7 +70,7 @@
"prime_tower_brim_enable": { "default_value": true },
"prime_tower_wipe_enabled": { "default_value": false },
"raft_airgap": { "default_value": 0.2 },
"raft_margin": {"default_value": 2 },
"raft_margin": { "default_value": 2 },
"retraction_combing": { "value": "'off' if retraction_hop_enabled else 'noskin'" },
"retraction_count_max": { "value": 100 },
"retraction_extrusion_window": { "value": 4 },
@ -79,18 +79,18 @@
"retraction_hop_enabled": { "value": "False" },
"retraction_prime_speed":
{
"maximum_value_warning": "machine_max_feedrate_e if retraction_enable else float('inf')",
"maximum_value": 200
"maximum_value": 200,
"maximum_value_warning": "machine_max_feedrate_e if retraction_enable else float('inf')"
},
"retraction_retract_speed":
{
"maximum_value_warning": "machine_max_feedrate_e if retraction_enable else float('inf')",
"maximum_value": 200
"maximum_value": 200,
"maximum_value_warning": "machine_max_feedrate_e if retraction_enable else float('inf')"
},
"retraction_speed":
{
"maximum_value_warning": "machine_max_feedrate_e if retraction_enable else float('inf')",
"maximum_value": 200
"maximum_value": 200,
"maximum_value_warning": "machine_max_feedrate_e if retraction_enable else float('inf')"
},
"skin_overlap": { "value": 25 },
"skirt_line_count": { "value": 2 },
@ -117,14 +117,14 @@
"support_z_distance": { "value": "layer_height if layer_height >= 0.16 else layer_height*2" },
"switch_extruder_retraction_amount": { "value": 8.0 },
"switch_extruder_retraction_speeds": { "default_value": 60.0 },
"top_bottom_thickness": { "value": "layer_height_0 + layer_height * 4" },
"top_bottom_thickness": { "value": "layer_height_0 + layer_height * 4" },
"travel_avoid_other_parts": { "value": false },
"travel_avoid_supports": { "value": true },
"travel_retract_before_outer_wall": { "value": true },
"wall_0_wipe_dist": { "value": 0.0 },
"wall_thickness": { "value": "line_width * 2" },
"z_seam_type": { "value": "'back'" },
"z_seam_corner": { "value": "'z_seam_corner_weighted'" },
"z_seam_type": { "value": "'back'" },
"zig_zaggify_infill": { "value": true }
}
}

View file

@ -6,7 +6,11 @@
{
"visible": true,
"platform": "lnl3d_d3.stl",
"platform_offset": [ 0, 0, 0 ]
"platform_offset": [
0,
0,
0
]
},
"overrides":
{

View file

@ -6,7 +6,11 @@
{
"visible": true,
"platform": "lnl3d_d3.stl",
"platform_offset": [ 0, 0, 0 ]
"platform_offset": [
0,
0,
0
]
},
"overrides":
{

View file

@ -13,3 +13,4 @@ variant = 0.2mm Nozzle
[values]
speed_layer_0 = 15
wall_thickness = =line_width*8

View file

@ -13,3 +13,4 @@ variant = 0.2mm Nozzle
[values]
speed_layer_0 = 15
wall_thickness = =line_width*8

View file

@ -11,3 +11,4 @@ type = quality
variant = 0.2mm Nozzle
[values]

View file

@ -11,3 +11,4 @@ type = quality
variant = 0.2mm Nozzle
[values]

View file

@ -13,3 +13,4 @@ variant = 0.4mm Nozzle
[values]
speed_layer_0 = 15
wall_thickness = =line_width*4

View file

@ -13,3 +13,4 @@ variant = 0.4mm Nozzle
[values]
speed_layer_0 = 15
wall_thickness = =line_width*4

View file

@ -13,3 +13,4 @@ variant = 0.4mm Nozzle
[values]
speed_layer_0 = 15
wall_thickness = =line_width*4

View file

@ -13,3 +13,4 @@ variant = 0.4mm Nozzle
[values]
speed_layer_0 = 15
wall_thickness = =line_width*4

View file

@ -11,3 +11,4 @@ type = quality
variant = 0.4mm Nozzle
[values]

View file

@ -11,3 +11,4 @@ type = quality
variant = 0.4mm Nozzle
[values]

View file

@ -11,3 +11,4 @@ type = quality
variant = 0.4mm Nozzle
[values]

View file

@ -11,3 +11,4 @@ type = quality
variant = 0.4mm Nozzle
[values]

View file

@ -11,3 +11,4 @@ type = quality
variant = 0.4mm Nozzle
[values]

View file

@ -11,3 +11,4 @@ type = quality
variant = 0.4mm Nozzle
[values]

View file

@ -11,3 +11,4 @@ type = quality
variant = 0.4mm Nozzle
[values]

View file

@ -13,3 +13,4 @@ variant = 0.6mm Nozzle
[values]
speed_layer_0 = 15
wall_thickness = =line_width*3

View file

@ -11,3 +11,4 @@ type = quality
variant = 0.6mm Nozzle
[values]

View file

@ -11,3 +11,4 @@ type = quality
variant = 0.6mm Nozzle
[values]

View file

@ -11,3 +11,4 @@ type = quality
variant = 0.6mm Nozzle
[values]

View file

@ -11,3 +11,4 @@ type = quality
variant = 0.6mm Nozzle
[values]

View file

@ -13,3 +13,4 @@ variant = 0.8mm Nozzle
[values]
speed_layer_0 = 15
wall_thickness = =line_width*3

View file

@ -11,3 +11,4 @@ type = quality
variant = 0.8mm Nozzle
[values]

View file

@ -11,3 +11,4 @@ type = quality
variant = 0.8mm Nozzle
[values]

View file

@ -17,3 +17,4 @@ layer_height_0 = 0.20
support_interface_height = =layer_height*6
top_bottom_thickness = =layer_height_0+layer_height*4
wall_thickness = =line_width*3

View file

@ -16,3 +16,4 @@ layer_height_0 = 0.32
support_interface_height = =layer_height*4
top_bottom_thickness = =layer_height_0+layer_height*3
wall_thickness = =line_width*2

View file

@ -16,3 +16,4 @@ layer_height_0 = 0.28
support_interface_height = =layer_height*4
top_bottom_thickness = =layer_height_0+layer_height*3
wall_thickness = =line_width*2

View file

@ -16,3 +16,4 @@ layer_height_0 = 0.2
support_interface_height = =layer_height*4
top_bottom_thickness = =layer_height_0+layer_height*3
wall_thickness = =line_width*2

View file

@ -16,3 +16,4 @@ layer_height_0 = 0.12
support_interface_height = =layer_height*8
top_bottom_thickness = =layer_height_0+layer_height*6
wall_thickness = =line_width*3

View file

@ -16,3 +16,4 @@ layer_height_0 = 0.12
support_interface_height = =layer_height*12
top_bottom_thickness = =layer_height_0+layer_height*10
wall_thickness = =line_width*3

View file

@ -10,3 +10,4 @@ type = variant
[values]
machine_nozzle_size = 0.2

View file

@ -10,3 +10,4 @@ type = variant
[values]
machine_nozzle_size = 0.4

View file

@ -10,3 +10,4 @@ type = variant
[values]
machine_nozzle_size = 0.6

View file

@ -10,3 +10,4 @@ type = variant
[values]
machine_nozzle_size = 0.8

View file

@ -10,3 +10,4 @@ type = variant
[values]
machine_nozzle_size = 0.2

View file

@ -10,3 +10,4 @@ type = variant
[values]
machine_nozzle_size = 0.4

View file

@ -10,3 +10,4 @@ type = variant
[values]
machine_nozzle_size = 0.6

View file

@ -10,3 +10,4 @@ type = variant
[values]
machine_nozzle_size = 0.8

View file

@ -10,3 +10,4 @@ type = variant
[values]
machine_nozzle_size = 0.2

View file

@ -10,3 +10,4 @@ type = variant
[values]
machine_nozzle_size = 0.4

View file

@ -10,3 +10,4 @@ type = variant
[values]
machine_nozzle_size = 0.6

View file

@ -10,3 +10,4 @@ type = variant
[values]
machine_nozzle_size = 0.8

View file

@ -10,3 +10,4 @@ type = variant
[values]
machine_nozzle_size = 0.2

View file

@ -10,3 +10,4 @@ type = variant
[values]
machine_nozzle_size = 0.4

View file

@ -10,3 +10,4 @@ type = variant
[values]
machine_nozzle_size = 0.6

View file

@ -10,3 +10,4 @@ type = variant
[values]
machine_nozzle_size = 0.8