From 6f129db56cf24aba5e27e6ce37716b1926f23bdc Mon Sep 17 00:00:00 2001 From: Junrou Nishida Date: Wed, 5 Mar 2025 13:57:23 +0900 Subject: [PATCH 1/3] build: generate dsyms for the iOS framework --- build.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/build.py b/build.py index 5d4f2a63b..985b3d56c 100644 --- a/build.py +++ b/build.py @@ -158,8 +158,12 @@ def run(self): if self.command_args.ios: self.console.info('Building native libaries for iOS...') + ios_plugin_dst = os.path.join(_BUILD_RUNTIME_PATH, 'Plugins', 'iOS') self._run_command(self._build_ios_commands()) - self._unzip(self._find_latest_built_framework(), os.path.join(_BUILD_RUNTIME_PATH, 'Plugins', 'iOS')) + self._unzip(self._find_latest_built_framework(), ios_plugin_dst) + self._copytree( + os.path.join(_BAZEL_BIN_PATH, 'mediapipe_api', 'objc', 'MediaPipeUnity.framework.dSYM'), + os.path.join(ios_plugin_dst, 'MediaPipeUnity.framework.dSYM')) self.console.info('Built native libraries for iOS') @@ -299,6 +303,7 @@ def _build_ios_commands(self): commands = self._build_common_commands() commands += [f'--config=ios_{self.command_args.ios}'] commands += self._build_opencv_switch() + commands.append('--apple_generate_dsym') commands.append('//mediapipe_api/objc:MediaPipeUnity') return commands From 0a446ae895904db842855a63458bb20fdea5f049 Mon Sep 17 00:00:00 2001 From: Junrou Nishida Date: Thu, 6 Mar 2025 17:24:00 +0900 Subject: [PATCH 2/3] build: add the .dSYM directory --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 46bbbe30f..0f84644ba 100644 --- a/.gitignore +++ b/.gitignore @@ -23,6 +23,8 @@ *.so **/*.framework/* !**/*.framework/*.meta +**/*.framework.dSYM/* +!**/*.framework.dSYM/*.meta bazel-* From f871ece36962fcea95644aad51776cae59e1b4cf Mon Sep 17 00:00:00 2001 From: Junrou Nishida Date: Fri, 21 Mar 2025 12:34:19 +0900 Subject: [PATCH 3/3] build: make `--apple_generate_dsym` optional --- build.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/build.py b/build.py index 985b3d56c..36be939d7 100644 --- a/build.py +++ b/build.py @@ -69,9 +69,13 @@ def _copy(self, source, dest, mode=0o755): self.console.v(f"Changing the mode of '{dest}'...") os.chmod(dest, mode) - def _copytree(self, source, dest): + def _copytree(self, source, dest, ignore_nonexistent_source=False): self.console.v(f"Copying '{source}' to '{dest}' recursively...") + if ignore_nonexistent_source and not os.path.exists(source): + self.console.v(f"Tried to copy '{source}', but it does not exist") + return + if not os.path.exists(dest): self.console.v(f"Creating '{dest}'...") os.makedirs(dest, 0o755) @@ -161,9 +165,12 @@ def run(self): ios_plugin_dst = os.path.join(_BUILD_RUNTIME_PATH, 'Plugins', 'iOS') self._run_command(self._build_ios_commands()) self._unzip(self._find_latest_built_framework(), ios_plugin_dst) + + # Copy dSYM files if they exist (when built with `--apple_generate_dsym`) self._copytree( os.path.join(_BAZEL_BIN_PATH, 'mediapipe_api', 'objc', 'MediaPipeUnity.framework.dSYM'), - os.path.join(ios_plugin_dst, 'MediaPipeUnity.framework.dSYM')) + os.path.join(ios_plugin_dst, 'MediaPipeUnity.framework.dSYM'), + ignore_nonexistent_source=True) self.console.info('Built native libraries for iOS') @@ -303,7 +310,6 @@ def _build_ios_commands(self): commands = self._build_common_commands() commands += [f'--config=ios_{self.command_args.ios}'] commands += self._build_opencv_switch() - commands.append('--apple_generate_dsym') commands.append('//mediapipe_api/objc:MediaPipeUnity') return commands