From d4231e0efac59ba8bb610747b954defd3032d4cf Mon Sep 17 00:00:00 2001 From: Mikhail Lobotskiy Date: Mon, 21 Jul 2025 17:59:40 +0400 Subject: [PATCH] Correct Info.plist files for mac frameworks --- scripts/base.py | 19 +++++++++++++------ scripts/deploy_builder.py | 3 ++- scripts/deploy_core.py | 4 ++++ scripts/deploy_desktop.py | 2 ++ scripts/deploy_mobile.py | 10 +++++----- scripts/deploy_osign.py | 4 ++-- scripts/deploy_server.py | 4 ++++ 7 files changed, 32 insertions(+), 14 deletions(-) diff --git a/scripts/base.py b/scripts/base.py index 18c3b6c..b5ba96a 100644 --- a/scripts/base.py +++ b/scripts/base.py @@ -977,7 +977,7 @@ def generate_doctrenderer_config(path, root, product, vendor = "", dictionaries file.close() return -def generate_plist_framework_folder(file): +def generate_plist_framework_folder(file, platform): bundle_id_url = "com.onlyoffice." if ("" != get_env("PUBLISHER_BUNDLE_ID")): bundle_id_url = get_env("PUBLISHER_BUNDLE_ID") @@ -1011,11 +1011,14 @@ def generate_plist_framework_folder(file): content += "\t????\n" content += "\tCFBundleVersion\n" content += "\t" + bundle_version[0] + "." + bundle_version[1] + "." + bundle_version[2] + "\n" - content += "\tMinimumOSVersion\n" - content += "\t13.0\n" + if platform.find("ios") == 0: + content += "\tMinimumOSVersion\n" + content += "\t13.0\n" content += "\n" content += "" + if platform.find("mac") == 0: + file += "/Resources" fileDst = file + "/Info.plist" if is_file(fileDst): delete_file(fileDst) @@ -1025,7 +1028,11 @@ def generate_plist_framework_folder(file): fileInfo.close() return -def generate_plist(path): +def generate_plist(path, platform, max_depth=512): + if not config.check_option("config", "bundle_dylibs"): + return + if max_depth == 0: + return src_folder = path if ("/" != path[-1:]): src_folder += "/" @@ -1033,9 +1040,9 @@ def generate_plist(path): for file in glob.glob(src_folder): if (is_dir(file)): if file.endswith(".framework"): - generate_plist_framework_folder(file) + generate_plist_framework_folder(file, platform) else: - generate_plist(file) + generate_plist(file, platform, max_depth - 1) return def correct_bundle_identifier(bundle_identifier): diff --git a/scripts/deploy_builder.py b/scripts/deploy_builder.py index 6b204d8..acfc02f 100644 --- a/scripts/deploy_builder.py +++ b/scripts/deploy_builder.py @@ -117,12 +117,13 @@ def make(): # correct ios frameworks if ("ios" == platform): - base.generate_plist(root_dir) + base.generate_plist(root_dir, "ios") if (0 == platform.find("linux")): base.linux_correct_rpath_docbuilder(root_dir) if (0 == platform.find("mac")): + base.generate_plist(root_dir, "mac", max_depth=1) base.mac_correct_rpath_x2t(root_dir) base.mac_correct_rpath_docbuilder(root_dir) diff --git a/scripts/deploy_core.py b/scripts/deploy_core.py index 03e4c97..95d5fd4 100644 --- a/scripts/deploy_core.py +++ b/scripts/deploy_core.py @@ -67,6 +67,10 @@ def make(): base.copy_exe(core_build_dir + "/bin/" + platform_postfix, archive_dir, "metafiletester") base.copy_exe(core_build_dir + "/bin/" + platform_postfix, archive_dir, "dictionariestester") + # correct mac frameworks + if (0 == platform.find("mac")): + base.generate_plist(archive_dir, "mac", max_depth=1) + # js cache base.generate_doctrenderer_config(archive_dir + "/DoctRenderer.config", "./", "builder", "", "./dictionaries") base.create_x2t_js_cache(archive_dir, "core", platform) diff --git a/scripts/deploy_desktop.py b/scripts/deploy_desktop.py index 6bdc21e..196e979 100644 --- a/scripts/deploy_desktop.py +++ b/scripts/deploy_desktop.py @@ -281,6 +281,8 @@ def make(): base.copy_exe(core_build_dir + "/bin/" + platform_postfix, root_dir + "/converter", "allthemesgen") if (0 == platform.find("mac")): + # gen plists with max_depth 2 because frameworks are only located in root_dir and converter subdirectory + base.generate_plist(root_dir, "mac", max_depth=2) base.mac_correct_rpath_desktop(root_dir) if isMacArmPlaformOnIntel: diff --git a/scripts/deploy_mobile.py b/scripts/deploy_mobile.py index 64a4058..78be016 100644 --- a/scripts/deploy_mobile.py +++ b/scripts/deploy_mobile.py @@ -18,7 +18,7 @@ def deploy_fonts(git_dir, root_dir, platform=""): if (platform == "android"): base.copy_dir(git_dir + "/core-fonts/dejavu", root_dir + "/fonts/dejavu") base.copy_dir(git_dir + "/core-fonts/liberation", root_dir + "/fonts/liberation") - return + return def make(): base_dir = base.get_script_dir() + "/../out" @@ -35,7 +35,7 @@ def make(): if base.get_env("DESTDIR_BUILD_OVERRIDE") != "": return - + if (base.is_dir(root_dir)): base.delete_dir(root_dir) base.create_dir(root_dir) @@ -84,7 +84,7 @@ def make(): if (0 == platform.find("mac")): base.copy_file(core_dir + "/Common/3dParty/icu/" + platform + "/build/libicudata.58.dylib", root_dir + "/libicudata.58.dylib") base.copy_file(core_dir + "/Common/3dParty/icu/" + platform + "/build/libicuuc.58.dylib", root_dir + "/libicuuc.58.dylib") - + if (0 == platform.find("android")): #base.copy_file(core_dir + "/Common/3dParty/icu/android/build/" + platform[8:] + "/libicudata.so", root_dir + "/libicudata.so") #base.copy_file(core_dir + "/Common/3dParty/icu/android/build/" + platform[8:] + "/libicuuc.so", root_dir + "/libicuuc.so") @@ -95,7 +95,7 @@ def make(): # correct ios frameworks if ("ios" == platform): - base.generate_plist(root_dir) + base.generate_plist(root_dir, "ios") deploy_fonts(git_dir, root_dir) base.copy_dictionaries(git_dir + "/dictionaries", root_dir + "/dictionaries", True, False) @@ -115,7 +115,7 @@ def make(): deploy_fonts(git_dir, root_dir, "android") base.copy_dictionaries(git_dir + "/dictionaries", root_dir + "/dictionaries", True, False) # app - base.generate_doctrenderer_config(root_dir + "/DoctRenderer.config", "./", "builder", "", "./dictionaries") + base.generate_doctrenderer_config(root_dir + "/DoctRenderer.config", "./", "builder", "", "./dictionaries") libs_dir = root_dir + "/lib" base.create_dir(libs_dir + "/arm64-v8a") base.copy_files(base_dir + "/android_arm64_v8a/" + branding + "/mobile/*.so", libs_dir + "/arm64-v8a") diff --git a/scripts/deploy_osign.py b/scripts/deploy_osign.py index a2621bd..fdd6d59 100644 --- a/scripts/deploy_osign.py +++ b/scripts/deploy_osign.py @@ -18,7 +18,7 @@ def make(): if base.get_env("DESTDIR_BUILD_OVERRIDE") != "": return - + if (base.is_dir(root_dir)): base.delete_dir(root_dir) base.create_dir(root_dir) @@ -37,7 +37,7 @@ def make(): # correct ios frameworks if ("ios" == platform): - base.generate_plist(root_dir) + base.generate_plist(root_dir, "ios") for native_platform in platforms: if native_platform == "android": diff --git a/scripts/deploy_server.py b/scripts/deploy_server.py index a114366..88e4056 100644 --- a/scripts/deploy_server.py +++ b/scripts/deploy_server.py @@ -112,6 +112,10 @@ def make(): base.copy_exe(core_build_dir + "/bin/" + platform_postfix, converter_dir, "docbuilder") base.copy_dir(git_dir + "/document-templates/new/en-US", converter_dir + "/empty") + # correct mac frameworks + if (0 == platform.find("mac")): + base.generate_plist(converter_dir, "mac", max_depth=1) + # js js_dir = root_dir base.copy_dir(base_dir + "/js/" + branding + "/builder/sdkjs", js_dir + "/sdkjs")