From b04cab4c21b45e3dde3a9d3b150ec4a8cb0d9db3 Mon Sep 17 00:00:00 2001 From: spectrum Date: Fri, 22 May 2026 17:21:39 +0200 Subject: [PATCH 1/2] fix(ios): link OpenVPNAdapter statically --- recipes/openvpnadapter/conanfile.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/recipes/openvpnadapter/conanfile.py b/recipes/openvpnadapter/conanfile.py index d9fbad6ee5..9c5ac423f4 100644 --- a/recipes/openvpnadapter/conanfile.py +++ b/recipes/openvpnadapter/conanfile.py @@ -8,6 +8,7 @@ import os import shutil +import shlex class OpenVPNAdapter(ConanFile): name = "openvpnadapter" @@ -57,16 +58,32 @@ def build(self): f" -sdk {self._sdk}" f' "CONFIGURATION_BUILD_DIR={self.build_folder}"' f' "BUILT_PRODUCTS_DIR={self.build_folder}"' + " MACH_O_TYPE=staticlib" " BUILD_LIBRARY_FOR_DISTRIBUTION=YES" " CODE_SIGNING_ALLOWED=NO" ) def package(self): + package_framework = os.path.join(self.package_folder, "OpenVPNAdapter.framework") shutil.copytree(os.path.join(self.build_folder, "OpenVPNAdapter.framework"), - os.path.join(self.package_folder, "OpenVPNAdapter.framework")) + package_framework) + + framework_binary = os.path.join(package_framework, "OpenVPNAdapter") + dependency_binaries = [ + os.path.join(self.build_folder, "OpenVPNClient.framework", "OpenVPNClient"), + os.path.join(self.build_folder, "LZ4.framework", "LZ4"), + os.path.join(self.build_folder, "mbedTLS.framework", "mbedTLS"), + ] + merged_binary = framework_binary + ".merged" + self.run("xcrun libtool -static -o {} {}".format( + shlex.quote(merged_binary), + " ".join(shlex.quote(path) for path in [framework_binary] + dependency_binaries) + )) + shutil.move(merged_binary, framework_binary) def package_info(self): self.cpp_info.set_property("cmake_target_name", "amnezia::openvpnadapter") self.cpp_info.type = PackageType.STATIC self.cpp_info.package_framework = True self.cpp_info.location = os.path.join(self.package_folder, "OpenVPNAdapter.framework") + self.cpp_info.frameworks = ["SystemConfiguration"] From ce73ef9f0d9d45fb31e29cda686a324e4de0534d Mon Sep 17 00:00:00 2001 From: Yaroslav Gurov Date: Sat, 30 May 2026 01:03:22 +0200 Subject: [PATCH 2/2] chore(conan): simplify openvpnadapter merge process and make everything via XCrun --- recipes/openvpnadapter/conanfile.py | 32 ++++++++++++++--------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/recipes/openvpnadapter/conanfile.py b/recipes/openvpnadapter/conanfile.py index 9c5ac423f4..dde67fea15 100644 --- a/recipes/openvpnadapter/conanfile.py +++ b/recipes/openvpnadapter/conanfile.py @@ -5,10 +5,10 @@ from conan.tools.scm import Git from conan.internal.model.pkg_type import PackageType from conan.tools.files import chdir +from conan.tools.apple import XCRun import os import shutil -import shlex class OpenVPNAdapter(ConanFile): name = "openvpnadapter" @@ -50,7 +50,10 @@ def source(self): def build(self): with chdir(self, self.source_folder): - self.run("xcrun xcodebuild" + xcrun = XCRun(self) + + xcodebuild = xcrun.find("xcodebuild") + self.run(f"{xcodebuild}" " -project OpenVPNAdapter.xcodeproj" " -scheme OpenVPNAdapter" " -configuration Release" @@ -63,23 +66,18 @@ def build(self): " CODE_SIGNING_ALLOWED=NO" ) + openvpnadapter = os.path.join(self.build_folder, "OpenVPNAdapter.framework", "OpenVPNAdapter") + self.run(f"{xcrun.libtool} -static -o" + f" {openvpnadapter}" + f" {openvpnadapter}" + f' {os.path.join(self.build_folder, "OpenVPNClient.framework", "OpenVPNClient")}' + f' {os.path.join(self.build_folder, "LZ4.framework", "LZ4")}' + f' {os.path.join(self.build_folder, "mbedTLS.framework", "mbedTLS")}' + ) + def package(self): - package_framework = os.path.join(self.package_folder, "OpenVPNAdapter.framework") shutil.copytree(os.path.join(self.build_folder, "OpenVPNAdapter.framework"), - package_framework) - - framework_binary = os.path.join(package_framework, "OpenVPNAdapter") - dependency_binaries = [ - os.path.join(self.build_folder, "OpenVPNClient.framework", "OpenVPNClient"), - os.path.join(self.build_folder, "LZ4.framework", "LZ4"), - os.path.join(self.build_folder, "mbedTLS.framework", "mbedTLS"), - ] - merged_binary = framework_binary + ".merged" - self.run("xcrun libtool -static -o {} {}".format( - shlex.quote(merged_binary), - " ".join(shlex.quote(path) for path in [framework_binary] + dependency_binaries) - )) - shutil.move(merged_binary, framework_binary) + os.path.join(self.package_folder, "OpenVPNAdapter.framework")) def package_info(self): self.cpp_info.set_property("cmake_target_name", "amnezia::openvpnadapter")