cgrindel / rules_swift_package_manager

Collection of utilities and Bazel rules to aid in the development and maintenance of Swift repositories using Bazel.
Apache License 2.0
70 stars 24 forks source link

Can't import AppMetrica 5.0.0+: error: duplicate interface definition for class 'AMAArrayIterator' #1027

Open krypt-lx opened 3 months ago

krypt-lx commented 3 months ago

Can't compile target AppMetricaCore of AppMetrica. The full error:

ERROR: /private/var/tmp/_bazel_krypt/de9844abaa047ea4e0868fa95089f211/external/rules_swift_package_manager~0.29.2~swift_deps~swiftpkg_appmetrica_sdk_ios/BUILD.bazel:2511:13: Compiling AppMetricaNetwork/Sources/AMANetworkingUtilities.m failed: (Exit 1): sandbox-exec failed: error executing command 
  (cd /private/var/tmp/_bazel_krypt/de9844abaa047ea4e0868fa95089f211/sandbox/darwin-sandbox/13/execroot/_main && \
  exec env - \
    APPLE_SDK_PLATFORM=iPhoneSimulator \
    APPLE_SDK_VERSION_OVERRIDE=17.2 \
    DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer \
    PATH=/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/share/dotnet:~/.dotnet/tools:/Library/Apple/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin \
    SDKROOT=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator17.2.sdk \
    TMPDIR=/var/folders/py/np32xt611ds3fb8l6djrc8s40000gn/T/ \
    XCODE_VERSION_OVERRIDE=15.1.0.15C65 \
    ZERO_AR_DATE=1 \
  /usr/bin/sandbox-exec -f /private/var/tmp/_bazel_krypt/de9844abaa047ea4e0868fa95089f211/sandbox/darwin-sandbox/13/sandbox.sb /var/tmp/_bazel_krypt/install/ba45a1a358416fb2acebb17d65c986f3/process-wrapper '--timeout=0' '--kill_delay=15' '--stats=/private/var/tmp/_bazel_krypt/de9844abaa047ea4e0868fa95089f211/sandbox/darwin-sandbox/13/stats.out' external/bazel_tools~cc_configure_extension~local_config_cc/wrapped_clang -target arm64-apple-ios14.0-simulator '-D_FORTIFY_SOURCE=1' -fstack-protector -fcolor-diagnostics -Wall -Wthread-safety -Wself-assign -fno-omit-frame-pointer -O0 -DDEBUG 'DEBUG_PREFIX_MAP_PWD=.' -Wshorten-64-to-32 -Wbool-conversion -Wconstant-conversion -Wduplicate-method-match -Wempty-body -Wenum-conversion -Wint-conversion -Wunreachable-code -Wmismatched-return-types -Wundeclared-selector -Wuninitialized -Wunused-function -Wunused-variable -iquote external/rules_swift_package_manager~0.29.2~swift_deps~swiftpkg_appmetrica_sdk_ios -iquote bazel-out/ios-sim_arm64-min14.0-applebin_ios-ios_sim_arm64-fastbuild-ST-ba74745ca763/bin/external/rules_swift_package_manager~0.29.2~swift_deps~swiftpkg_appmetrica_sdk_ios -Iexternal/rules_swift_package_manager~0.29.2~swift_deps~swiftpkg_appmetrica_sdk_ios/AppMetricaNetwork/Sources/include -Ibazel-out/ios-sim_arm64-min14.0-applebin_ios-ios_sim_arm64-fastbuild-ST-ba74745ca763/bin/external/rules_swift_package_manager~0.29.2~swift_deps~swiftpkg_appmetrica_sdk_ios/AppMetricaNetwork/Sources/include -Iexternal/rules_swift_package_manager~0.29.2~swift_deps~swiftpkg_appmetrica_sdk_ios/AppMetricaNetwork/Sources/include/AppMetricaNetwork -Ibazel-out/ios-sim_arm64-min14.0-applebin_ios-ios_sim_arm64-fastbuild-ST-ba74745ca763/bin/external/rules_swift_package_manager~0.29.2~swift_deps~swiftpkg_appmetrica_sdk_ios/AppMetricaNetwork/Sources/include/AppMetricaNetwork -Iexternal/rules_swift_package_manager~0.29.2~swift_deps~swiftpkg_appmetrica_sdk_ios/AppMetricaLog/Sources/include -Ibazel-out/ios-sim_arm64-min14.0-applebin_ios-ios_sim_arm64-fastbuild-ST-ba74745ca763/bin/external/rules_swift_package_manager~0.29.2~swift_deps~swiftpkg_appmetrica_sdk_ios/AppMetricaLog/Sources/include -Iexternal/rules_swift_package_manager~0.29.2~swift_deps~swiftpkg_appmetrica_sdk_ios/AppMetricaLog/Sources/include/AppMetricaLog -Ibazel-out/ios-sim_arm64-min14.0-applebin_ios-ios_sim_arm64-fastbuild-ST-ba74745ca763/bin/external/rules_swift_package_manager~0.29.2~swift_deps~swiftpkg_appmetrica_sdk_ios/AppMetricaLog/Sources/include/AppMetricaLog -Ibazel-out/ios-sim_arm64-min14.0-applebin_ios-ios_sim_arm64-fastbuild-ST-ba74745ca763/bin/external/rules_swift_package_manager~0.29.2~swift_deps~swiftpkg_appmetrica_sdk_ios/AppMetricaLog -Iexternal/rules_swift_package_manager~0.29.2~swift_deps~swiftpkg_appmetrica_sdk_ios/AppMetricaCoreUtils/Sources/include -Ibazel-out/ios-sim_arm64-min14.0-applebin_ios-ios_sim_arm64-fastbuild-ST-ba74745ca763/bin/external/rules_swift_package_manager~0.29.2~swift_deps~swiftpkg_appmetrica_sdk_ios/AppMetricaCoreUtils/Sources/include -Iexternal/rules_swift_package_manager~0.29.2~swift_deps~swiftpkg_appmetrica_sdk_ios/AppMetricaCoreUtils/Sources/include/AppMetricaCoreUtils -Ibazel-out/ios-sim_arm64-min14.0-applebin_ios-ios_sim_arm64-fastbuild-ST-ba74745ca763/bin/external/rules_swift_package_manager~0.29.2~swift_deps~swiftpkg_appmetrica_sdk_ios/AppMetricaCoreUtils/Sources/include/AppMetricaCoreUtils -Ibazel-out/ios-sim_arm64-min14.0-applebin_ios-ios_sim_arm64-fastbuild-ST-ba74745ca763/bin/external/rules_swift_package_manager~0.29.2~swift_deps~swiftpkg_appmetrica_sdk_ios/AppMetricaCoreUtils -Iexternal/rules_swift_package_manager~0.29.2~swift_deps~swiftpkg_appmetrica_sdk_ios/AppMetricaPlatform/Sources/include -Ibazel-out/ios-sim_arm64-min14.0-applebin_ios-ios_sim_arm64-fastbuild-ST-ba74745ca763/bin/external/rules_swift_package_manager~0.29.2~swift_deps~swiftpkg_appmetrica_sdk_ios/AppMetricaPlatform/Sources/include -Iexternal/rules_swift_package_manager~0.29.2~swift_deps~swiftpkg_appmetrica_sdk_ios/AppMetricaPlatform/Sources/include/AppMetricaPlatform -Ibazel-out/ios-sim_arm64-min14.0-applebin_ios-ios_sim_arm64-fastbuild-ST-ba74745ca763/bin/external/rules_swift_package_manager~0.29.2~swift_deps~swiftpkg_appmetrica_sdk_ios/AppMetricaPlatform/Sources/include/AppMetricaPlatform -Ibazel-out/ios-sim_arm64-min14.0-applebin_ios-ios_sim_arm64-fastbuild-ST-ba74745ca763/bin/external/rules_swift_package_manager~0.29.2~swift_deps~swiftpkg_appmetrica_sdk_ios/AppMetricaPlatform -MD -MF bazel-out/ios-sim_arm64-min14.0-applebin_ios-ios_sim_arm64-fastbuild-ST-ba74745ca763/bin/external/rules_swift_package_manager~0.29.2~swift_deps~swiftpkg_appmetrica_sdk_ios/_objs/AppMetricaNetwork.rspm/arc/AMANetworkingUtilities.d '-DSWIFT_PACKAGE=1' -DOS_IOS -fno-autolink -isysroot __BAZEL_XCODE_SDKROOT__ -F__BAZEL_XCODE_SDKROOT__/System/Library/Frameworks -F__BAZEL_XCODE_DEVELOPER_DIR__/Platforms/iPhoneSimulator.platform/Developer/Library/Frameworks -fobjc-arc -fexceptions -fasm-blocks '-fobjc-abi-version=2' -fobjc-legacy-dispatch -Wno-all -fblocks -fobjc-arc -fPIC '-fmodule-name=AppMetricaNetwork' -includebazel-out/ios-sim_arm64-min14.0-applebin_ios-ios_sim_arm64-fastbuild-ST-ba74745ca763/bin/external/rules_swift_package_manager~0.29.2~swift_deps~swiftpkg_appmetrica_sdk_ios/AppMetricaNetwork.rspm_objc_resource_bundle_accessor_hdr_ObjcResourceBundleAccessor.h -Iexternal/rules_swift_package_manager~0.29.2~swift_deps~swiftpkg_appmetrica_sdk_ios/AppMetricaNetwork/Sources -Iexternal/rules_swift_package_manager~0.29.2~swift_deps~swiftpkg_appmetrica_sdk_ios/AppMetricaNetwork/Sources/include -Iexternal/rules_swift_package_manager~0.29.2~swift_deps~swiftpkg_appmetrica_sdk_ios/AppMetricaNetwork/Sources/include/AppMetricaNetwork -fmodules '-fmodules-cache-path=bazel-out/ios-sim_arm64-min14.0-applebin_ios-ios_sim_arm64-fastbuild-ST-ba74745ca763/bin/_objc_module_cache' -O0 '-DDEBUG=1' -c external/rules_swift_package_manager~0.29.2~swift_deps~swiftpkg_appmetrica_sdk_ios/AppMetricaNetwork/Sources/AMANetworkingUtilities.m -o bazel-out/ios-sim_arm64-min14.0-applebin_ios-ios_sim_arm64-fastbuild-ST-ba74745ca763/bin/external/rules_swift_package_manager~0.29.2~swift_deps~swiftpkg_appmetrica_sdk_ios/_objs/AppMetricaNetwork.rspm/arc/AMANetworkingUtilities.o)
While building module 'AppMetricaPlatform' imported from external/rules_swift_package_manager~0.29.2~swift_deps~swiftpkg_appmetrica_sdk_ios/AppMetricaNetwork/Sources/AMANetworkingUtilities.m:4:
In file included from <module-includes>:1:
In file included from bazel-out/ios-sim_arm64-min14.0-applebin_ios-ios_sim_arm64-fastbuild-ST-ba74745ca763/bin/external/rules_swift_package_manager~0.29.2~swift_deps~swiftpkg_appmetrica_sdk_ios/AppMetricaPlatform/../../../../../../external/rules_swift_package_manager~0.29.2~swift_deps~swiftpkg_appmetrica_sdk_ios/AppMetricaPlatform/Sources/include/AppMetricaPlatform/AMAApplicationState.h:2:
In file included from external/rules_swift_package_manager~0.29.2~swift_deps~swiftpkg_appmetrica_sdk_ios/AppMetricaCoreUtils/Sources/include/AppMetricaCoreUtils/AppMetricaCoreUtils.h:3:
external/rules_swift_package_manager~0.29.2~swift_deps~swiftpkg_appmetrica_sdk_ios/AppMetricaCoreUtils/Sources/include/AppMetricaCoreUtils/AMAArrayIterator.h:8:1: error: duplicate interface definition for class 'AMAArrayIterator'
@interface AMAArrayIterator : NSObject <AMAResettableIterable>
^
external/rules_swift_package_manager~0.29.2~swift_deps~swiftpkg_appmetrica_sdk_ios/AppMetricaCoreUtils/Sources/include/AppMetricaCoreUtils/AMAArrayIterator.h:8:12: note: previous definition is here
@interface AMAArrayIterator : NSObject <AMAResettableIterable>
           ^
external/rules_swift_package_manager~0.29.2~swift_deps~swiftpkg_appmetrica_sdk_ios/AppMetricaNetwork/Sources/AMANetworkingUtilities.m:4:9: fatal error: could not build module 'AppMetricaPlatform'
#import <AppMetricaPlatform/AppMetricaPlatform.h>
 ~~~~~~~^
2 errors generated.

The line I'm using to import the package:

        .package(url: "https://github.com/appmetrica/appmetrica-sdk-ios", from: "5.2.0"),

it has multiple public targets inside, including AppMetricaCore

krypt-lx commented 3 months ago

Interestingly, adding

#ifndef __AMAArrayIterator_h
#define __AMAArrayIterator_h
<..>
#endif

does nothing and message

#warning ("test from AMAArrayIterator.h")

in this file echoes only once

krypt-lx commented 3 months ago

Ok, I see some weird behaviour during tests in xcode project generated by rules_xcodeproj: The file in question: https://github.com/appmetrica/appmetrica-sdk-ios/blob/608024e089590dfdebd88a857df331a0bf0ac97d/AppMetricaCoreUtils/Sources/include/AppMetricaCoreUtils/AMAArrayIterator.h

krypt-lx commented 3 months ago

https://github.com/cgrindel/rules_swift_package_manager/issues/987 This one might be related, actually? It also looks like a file conflicting with itself