diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 4be3a0a1..6fa86386 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -80,12 +80,13 @@ jobs: path: bazel-testlogs build_arm64_simulator: - name: arm64 Simulator (Bazel ${{ matrix.bazel_version }} / Xcode ${{ matrix.xcode_version }}) + name: arm64 Simulator (Bazel ${{ matrix.bazel_version }} / Xcode ${{ matrix.xcode_version }} / Sandbox ${{ matrix.sandbox }}) runs-on: macos-14 strategy: fail-fast: false matrix: bazel_version: [6.5.0, 7.1.0] + sandbox: [true, false] xcode_version: [15.2] env: XCODE_VERSION: ${{ matrix.xcode_version }} @@ -94,6 +95,10 @@ jobs: - uses: actions/checkout@v4 - name: Preflight Env run: .github/workflows/preflight_env.sh + - if: matrix.sandbox + name: Enable sandbox mode + run: | + echo "build --config=sandboxed" >> user.bazelrcc - name: Build and Test run: | bazelisk build \ diff --git a/rules/import_middleman.bzl b/rules/import_middleman.bzl index 8f75adab..80ea3974 100644 --- a/rules/import_middleman.bzl +++ b/rules/import_middleman.bzl @@ -265,19 +265,13 @@ def _file_collector_rule_impl(ctx): **objc_provider_fields ) - # Create the CcInfo provider, linking information from this is used in Bazel 7+. - cc_info = None + dep_cc_infos = [dep[CcInfo] for dep in ctx.attr.deps if CcInfo in dep] + cc_info = cc_common.merge_cc_infos(cc_infos = dep_cc_infos) if is_bazel_7: + # Need to recreate linking_context for Bazel 7 or later + # because of https://github.com/bazelbuild/bazel/issues/16939 cc_info = CcInfo( - compilation_context = cc_common.create_compilation_context( - framework_includes = depset( - transitive = [ - dep[CcInfo].compilation_context.framework_includes - for dep in ctx.attr.deps - if CcInfo in dep - ], - ), - ), + compilation_context = cc_info.compilation_context, linking_context = cc_common.create_linking_context( linker_inputs = depset([ cc_common.create_linker_input( @@ -297,10 +291,6 @@ def _file_collector_rule_impl(ctx): ]), ), ) - else: - dep_cc_infos = [dep[CcInfo] for dep in ctx.attr.deps if CcInfo in dep] - cc_info = cc_common.merge_cc_infos(cc_infos = dep_cc_infos) - return [ DefaultInfo(files = depset(dynamic_framework_dirs + replaced_frameworks)), objc, diff --git a/tests/ios/unit-test/test-imports-app/empty.swift b/tests/ios/unit-test/test-imports-app/empty.swift index 4671d0dc..2250c562 100644 --- a/tests/ios/unit-test/test-imports-app/empty.swift +++ b/tests/ios/unit-test/test-imports-app/empty.swift @@ -1,9 +1,12 @@ import Foundation import SomeFramework +import Basic @objc public class EmptyClass: NSObject { @objc public static func emptyDescription() -> String { + print(BasicString) + print(EmptyClass.emptyDescription) return "" } diff --git a/tests/ios/unit-test/test-imports-app/main.m b/tests/ios/unit-test/test-imports-app/main.m index 4bf3410f..add6ee3d 100644 --- a/tests/ios/unit-test/test-imports-app/main.m +++ b/tests/ios/unit-test/test-imports-app/main.m @@ -1,6 +1,7 @@ #import "Header.h" #import #import +#import #ifdef __IPHONE_OS_VERSION_MIN_REQUIRED @import UIKit; @@ -18,6 +19,7 @@ - (BOOL)application:(UIApplication *)__unused application didFinishLaunchingWith self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; self.window.rootViewController = [UIViewController new]; self.window.rootViewController.view.backgroundColor = UIColor.whiteColor; + NSLog([NSString stringWithFormat:@"%@ %ld", BasicString, BasicVal_DownloadTheApp]); NSAssert([EmptyClass emptyDescription] != nil, @"Empty class description exists"); NSAssert([[EmptyClass new] emptyDescription] != nil, @"Empty instance description exists"); [self.window makeKeyAndVisible];