|
@@ -217,6 +217,56 @@ class CuraConan(ConanFile):
|
|
|
python_installs=self._python_installs(),
|
|
|
))
|
|
|
|
|
|
+ def _delete_unwanted_binaries(self, root):
|
|
|
+ dynamic_binary_file_exts = [".so", ".dylib", ".dll", ".pyd", ".pyi"]
|
|
|
+ prohibited = [
|
|
|
+ "qt5compat",
|
|
|
+ "qtcharts",
|
|
|
+ "qtcoap",
|
|
|
+ "qtdatavis3d",
|
|
|
+ "qtlottie",
|
|
|
+ "qtmqtt",
|
|
|
+ "qtnetworkauth",
|
|
|
+ "qtquick3d",
|
|
|
+ "qtquick3dphysics",
|
|
|
+ "qtquicktimeline",
|
|
|
+ "qtvirtualkeyboard",
|
|
|
+ "qtwayland"
|
|
|
+ ]
|
|
|
+ forbiddens = [x.encode() for x in prohibited]
|
|
|
+ to_remove_files = []
|
|
|
+ to_remove_dirs = []
|
|
|
+ for root, dir_, files in os.walk(root):
|
|
|
+ for filename in files:
|
|
|
+ if not any([(x in filename) for x in dynamic_binary_file_exts]):
|
|
|
+ continue
|
|
|
+ pathname = os.path.join(root, filename)
|
|
|
+ still_exist = True
|
|
|
+ for forbidden in prohibited:
|
|
|
+ if forbidden.lower() in str(pathname).lower():
|
|
|
+ to_remove_files.append(pathname)
|
|
|
+ still_exist = False
|
|
|
+ break
|
|
|
+ if not still_exist:
|
|
|
+ continue
|
|
|
+ with open(pathname, "rb") as file:
|
|
|
+ bytez = file.read().lower()
|
|
|
+ for forbidden in forbiddens:
|
|
|
+ if bytez.find(forbidden) >= 0:
|
|
|
+ to_remove_files.append(pathname)
|
|
|
+ for dirname in dir_:
|
|
|
+ for forbidden in prohibited:
|
|
|
+ if forbidden.lower() == str(dirname).lower():
|
|
|
+ pathname = os.path.join(root, dirname)
|
|
|
+ to_remove_dirs.append(pathname)
|
|
|
+ break
|
|
|
+ for file in to_remove_files:
|
|
|
+ os.remove(file)
|
|
|
+ print(f"deleted file: {file}")
|
|
|
+ for dir_ in to_remove_dirs:
|
|
|
+ os.remove(dir_)
|
|
|
+ print(f"deleted dir_: {dir_}")
|
|
|
+
|
|
|
def _generate_pyinstaller_spec(self, location, entrypoint_location, icon_path, entitlements_file):
|
|
|
pyinstaller_metadata = self.conan_data["pyinstaller"]
|
|
|
datas = []
|
|
@@ -416,8 +466,10 @@ class CuraConan(ConanFile):
|
|
|
|
|
|
for dependency in self.dependencies.host.values():
|
|
|
for bindir in dependency.cpp_info.bindirs:
|
|
|
+ self._delete_unwanted_binaries(bindir)
|
|
|
copy(self, "*.dll", bindir, str(self._site_packages), keep_path = False)
|
|
|
for libdir in dependency.cpp_info.libdirs:
|
|
|
+ self._delete_unwanted_binaries(libdir)
|
|
|
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)
|
|
@@ -507,6 +559,11 @@ echo "CURA_APP_NAME={{ cura_app_name }}" >> ${{ env_prefix }}GITHUB_ENV
|
|
|
|
|
|
self._generate_cura_version(os.path.join(self._site_packages, "cura"))
|
|
|
|
|
|
+ self._delete_unwanted_binaries(self._site_packages)
|
|
|
+ self._delete_unwanted_binaries(self.package_folder)
|
|
|
+ self._delete_unwanted_binaries(self._base_dir)
|
|
|
+ self._delete_unwanted_binaries(self._share_dir)
|
|
|
+
|
|
|
entitlements_file = "'{}'".format(Path(self.cpp_info.res_paths[2], "MacOS", "cura.entitlements"))
|
|
|
self._generate_pyinstaller_spec(location = self._base_dir,
|
|
|
entrypoint_location = "'{}'".format(os.path.join(self.package_folder, self.cpp_info.bindirs[0], self.conan_data["pyinstaller"]["runinfo"]["entrypoint"])).replace("\\", "\\\\"),
|