From 61bf2e5b5181cbe34a2f0d584053570943881804 Mon Sep 17 00:00:00 2001 From: waltl Date: Mon, 15 Nov 2021 01:07:46 -0800 Subject: [PATCH] Automated rollback of commit 34c71465f84fa780217926db2e8e5ca3d6d4568c. *** Reason for rollback *** broke stuff *** Original change description *** Do location expansion in copts of objc_library Fixes #13862 RELNOTES:none PiperOrigin-RevId: 409910075 --- .../starlark/StarlarkRuleContext.java | 2 +- .../lib/rules/objc/ObjcStarlarkInternal.java | 15 +------------ .../build/lib/rules/objc/ObjcLibraryTest.java | 21 ------------------- 3 files changed, 2 insertions(+), 36 deletions(-) diff --git a/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleContext.java b/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleContext.java index d6d9577f970a13..07c52118dd8d4f 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleContext.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleContext.java @@ -1103,7 +1103,7 @@ private static void checkDeprecated(String newApi, String oldApi, StarlarkSemant * @param knownLabels List of known labels * @return Immutable map with immutable collections as values */ - public static ImmutableMap> makeLabelMap( + private static ImmutableMap> makeLabelMap( Iterable knownLabels) { ImmutableMap.Builder> builder = ImmutableMap.builder(); diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcStarlarkInternal.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcStarlarkInternal.java index 43765b96a56491..a6fb50770e2c2b 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcStarlarkInternal.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcStarlarkInternal.java @@ -18,10 +18,8 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; -import com.google.common.collect.Iterables; import com.google.devtools.build.docgen.annot.DocCategory; import com.google.devtools.build.lib.actions.Artifact; -import com.google.devtools.build.lib.analysis.LocationExpander; import com.google.devtools.build.lib.analysis.TemplateVariableInfo; import com.google.devtools.build.lib.analysis.starlark.StarlarkRuleContext; import com.google.devtools.build.lib.analysis.test.InstrumentedFilesInfo; @@ -118,18 +116,7 @@ public Sequence expandToolchainAndRuleContextVariables( ImmutableMap.builder().putAll(starlarkRuleContext.var()).build(); List expandedFlags = new ArrayList<>(); for (String flag : Sequence.cast(flags, String.class, "flags")) { - @SuppressWarnings("unchecked") - String expandedFlag = - LocationExpander.withExecPaths( - starlarkRuleContext.getRuleContext(), - StarlarkRuleContext.makeLabelMap( - Iterables.concat( - starlarkRuleContext.getRuleContext().getPrerequisites("srcs"), - starlarkRuleContext.getRuleContext().getPrerequisites("non_arc_srcs"), - starlarkRuleContext.getRuleContext().getPrerequisites("hdrs"), - starlarkRuleContext.getRuleContext().getPrerequisites("data")))) - .expand(flag); - expandedFlag = expandFlag(expandedFlag, toolchainMap, starlarkRuleContextMap); + String expandedFlag = expandFlag(flag, toolchainMap, starlarkRuleContextMap); try { ShellUtils.tokenize(expandedFlags, expandedFlag); } catch (TokenizationException e) { diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java index 6d1bd1e03bc83f..bfdf27ba39f5a0 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java @@ -2380,25 +2380,4 @@ public void testCompilationPrerequisitesHasHeaders() throws Exception { .getOutputGroup(OutputGroupInfo.COMPILATION_PREREQUISITES))) .contains("src bin/cc.h"); } - - @Test - public void testCoptsLocationIsExpanded() throws Exception { - scratch.file( - "bin/BUILD", - "objc_library(", - " name = 'lib',", - " copts = ['$(rootpath lib1.m) $(location lib2.m) $(location data.data) $(execpath" - + " header.h)'],", - " srcs = ['lib1.m'],", - " non_arc_srcs = ['lib2.m'],", - " data = ['data.data'],", - " hdrs = ['header.h'],", - ")"); - - useConfiguration("--apple_platform_type=ios", "--cpu=ios_x86_64"); - - CppCompileAction compileA = (CppCompileAction) compileAction("//bin:lib", "lib1.o"); - assertThat(compileA.compileCommandLine.getCopts()) - .containsAtLeast("bin/lib1.m", "bin/lib2.m", "bin/data.data", "bin/header.h"); - } }