Duplicate symbols from apple_static_xcframework
vakhidbetrakhmadov opened this issue · 0 comments
Hi ✋
I am trying to build a static xcframework for external distribution.
I have the following dependency tree:
apple_static_xcframework (FooSDK) ->
swift_library (Foo) ->
apple_static_framework_import (Zip - prebuilt static Swift library) ->
apple_static_framework_import (Minizip - prebuilt static C library)
I am facing an issue that symbols from Zip and Minizip are duplicated in the final binary of the product xcframework.
I can see in the build logs that both Zip and Minizip are passed twice in the libtool invocation:
SUBCOMMAND: # //:FooSDK [action 'Linking FooSDK-arm64-apple-ios13.0-fl.a', configuration: 3b270167ad09e1b14e1cecd3ecac79b255a5a5eb6162dc1c3e64c83ef54484da, execution platform: @local_config_platform//:host]
(cd /private/var/tmp/_bazel_vakhid.betrakhmadov/1ef088b48d7b9d0d70d1dfde8f0aabef/execroot/__main__ && \
exec env - \
APPLE_SDK_PLATFORM=iPhoneOS \
APPLE_SDK_VERSION_OVERRIDE=17.2 \
PATH=<...>
XCODE_VERSION_OVERRIDE=15.2.0.15C500b \
ZERO_AR_DATE=1 \
external/local_config_cc/libtool \
-D \
-no_warning_for_no_symbols \
-static \
-arch_only arm64 \
-syslibroot __BAZEL_XCODE_SDKROOT__ \
-o bazel-out/darwin_arm64-fastbuild/bin/FooSDK-arm64-apple-ios13.0-fl.a \
bazel-out/ios-arm64-min13.0-applebin_ios-ios_arm64-fastbuild-ST-5a3d504b05e8/bin/libFoo.a \
Minizip.xcframework/ios-arm64/Minizip.framework/Minizip \
Zip.xcframework/ios-arm64/Zip.framework/Zip \
Minizip.xcframework/ios-arm64/Minizip.framework/Minizip \
Zip.xcframework/ios-arm64/Zip.framework/Zip)
# Configuration: 3b270167ad09e1b14e1cecd3ecac79b255a5a5eb6162dc1c3e64c83ef54484da
# Execution platform: @local_config_platform//:host
INFO: From Linking FooSDK-arm64-apple-ios13.0-fl.a:
/Applications/Xcode-15.2.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: warning renaming duplicate member name 'Minizip-dummy.o' from '/var/folders/vg/008npg05001_zj7sn4p3m08h0000gq/T//libtool.USDk3Nmf/Minizip_975577f5767cce772c4b949d8b4cef2f.o(Minizip-dummy.o)' and '/var/folders/vg/008npg05001_zj7sn4p3m08h0000gq/T//libtool.USDk3Nmf/Minizip_975577f5767cce772c4b949d8b4cef2f.o(Minizip-dummy.o)'
/Applications/Xcode-15.2.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: warning renaming duplicate member name 'Minizip_vers.o' from '/var/folders/vg/008npg05001_zj7sn4p3m08h0000gq/T//libtool.USDk3Nmf/Minizip_975577f5767cce772c4b949d8b4cef2f.o(Minizip_vers.o)' and '/var/folders/vg/008npg05001_zj7sn4p3m08h0000gq/T//libtool.USDk3Nmf/Minizip_975577f5767cce772c4b949d8b4cef2f.o(Minizip_vers.o)'
/Applications/Xcode-15.2.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: warning renaming duplicate member name 'QuickZip.o' from '/var/folders/vg/008npg05001_zj7sn4p3m08h0000gq/T//libtool.USDk3Nmf/Zip_1fe1076498a57ae78089c33f29f146d5.o(QuickZip.o)' and '/var/folders/vg/008npg05001_zj7sn4p3m08h0000gq/T//libtool.USDk3Nmf/Zip_1fe1076498a57ae78089c33f29f146d5.o(QuickZip.o)'
/Applications/Xcode-15.2.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: warning renaming duplicate member name 'Zip-dummy.o' from '/var/folders/vg/008npg05001_zj7sn4p3m08h0000gq/T//libtool.USDk3Nmf/Zip_1fe1076498a57ae78089c33f29f146d5.o(Zip-dummy.o)' and '/var/folders/vg/008npg05001_zj7sn4p3m08h0000gq/T//libtool.USDk3Nmf/Zip_1fe1076498a57ae78089c33f29f146d5.o(Zip-dummy.o)'
/Applications/Xcode-15.2.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: warning renaming duplicate member name 'Zip.o' from '/var/folders/vg/008npg05001_zj7sn4p3m08h0000gq/T//libtool.USDk3Nmf/Zip_1fe1076498a57ae78089c33f29f146d5.o(Zip.o)' and '/var/folders/vg/008npg05001_zj7sn4p3m08h0000gq/T//libtool.USDk3Nmf/Zip_1fe1076498a57ae78089c33f29f146d5.o(Zip.o)'
/Applications/Xcode-15.2.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: warning renaming duplicate member name 'ZipUtilities.o' from '/var/folders/vg/008npg05001_zj7sn4p3m08h0000gq/T//libtool.USDk3Nmf/Zip_1fe1076498a57ae78089c33f29f146d5.o(ZipUtilities.o)' and '/var/folders/vg/008npg05001_zj7sn4p3m08h0000gq/T//libtool.USDk3Nmf/Zip_1fe1076498a57ae78089c33f29f146d5.o(ZipUtilities.o)'
/Applications/Xcode-15.2.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: warning renaming duplicate member name 'Zip_vers.o' from '/var/folders/vg/008npg05001_zj7sn4p3m08h0000gq/T//libtool.USDk3Nmf/Zip_1fe1076498a57ae78089c33f29f146d5.o(Zip_vers.o)' and '/var/folders/vg/008npg05001_zj7sn4p3m08h0000gq/T//libtool.USDk3Nmf/Zip_1fe1076498a57ae78089c33f29f146d5.o(Zip_vers.o)'
/Applications/Xcode-15.2.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: warning renaming duplicate member name 'ioapi.o' from '/var/folders/vg/008npg05001_zj7sn4p3m08h0000gq/T//libtool.USDk3Nmf/Minizip_975577f5767cce772c4b949d8b4cef2f.o(ioapi.o)' and '/var/folders/vg/008npg05001_zj7sn4p3m08h0000gq/T//libtool.USDk3Nmf/Minizip_975577f5767cce772c4b949d8b4cef2f.o(ioapi.o)'
/Applications/Xcode-15.2.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: warning renaming duplicate member name 'unzip.o' from '/var/folders/vg/008npg05001_zj7sn4p3m08h0000gq/T//libtool.USDk3Nmf/Minizip_975577f5767cce772c4b949d8b4cef2f.o(unzip.o)' and '/var/folders/vg/008npg05001_zj7sn4p3m08h0000gq/T//libtool.USDk3Nmf/Minizip_975577f5767cce772c4b949d8b4cef2f.o(unzip.o)'
/Applications/Xcode-15.2.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: warning renaming duplicate member name 'zip.o' from '/var/folders/vg/008npg05001_zj7sn4p3m08h0000gq/T//libtool.USDk3Nmf/Minizip_975577f5767cce772c4b949d8b4cef2f.o(zip.o)' and '/var/folders/vg/008npg05001_zj7sn4p3m08h0000gq/T//libtool.USDk3Nmf/Minizip_975577f5767cce772c4b949d8b4cef2f.o(zip.o)'
I am also able to validate that symbols are indeed duplicated by running nm
on the final binary.
I have prepared a minimum repro example matching the dependency tree described above: repro_example.zip
You can run bazelisk build :FooSDK
and check build logs and the final binary to also validate the issue.
I also found an old issue - bazelbuild/bazel#11223 - and an old PR - bazelbuild/bazel#11225 - in bazel repo that seem to be closely related.
I've tried to debug, but so far i was not able to pin point the problem and find a solution.
Could you please take a look at this 🙏