diff options
Diffstat (limited to 'src/main/java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java | 2 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingSupport.java | 47 |
2 files changed, 25 insertions, 24 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java index 7b53bcae59..3f4b60c659 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java @@ -981,6 +981,8 @@ public class ObjcRuleClasses { })) .add(attr("$bundlemerge", LABEL).cfg(HOST).exec() .value(env.getLabel("//tools/objc:bundlemerge"))) + .add(attr("$environment_plist_sh", LABEL).cfg(HOST) + .value(env.getLabel("//tools/objc:environment_plist.sh"))) .build(); } @Override diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingSupport.java index f6a3af6eb0..78acdaed12 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingSupport.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingSupport.java @@ -21,6 +21,7 @@ import static com.google.devtools.build.lib.rules.objc.TargetDeviceFamily.UI_DEV import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Joiner; +import com.google.common.base.Strings; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; @@ -302,32 +303,22 @@ public final class ReleaseBundlingSupport { private void registerEnvironmentPlistAction() { ObjcConfiguration configuration = ObjcRuleClasses.objcConfiguration(ruleContext); // Generates a .plist that contains environment values (such as the SDK used to build, the Xcode - // version, etc), which are parsed from various .plist files of the OS, namely XCodes' and + // version, etc), which are parsed from various .plist files of the OS, namely Xcodes' and // Platforms' plists. // The resulting file is meant to be merged with the final bundle. - String command = Joiner.on(" && ").join( - "PLATFORM_PLIST=" + IosSdkCommands.platformDir(configuration) + "/Info.plist", - "PLIST=$(mktemp -d -t bazel_environment)/env.plist", - "os_build=$(/usr/bin/defaults read \"${PLATFORM_PLIST}\" BuildMachineOSBuild)", - "compiler=$(/usr/bin/defaults read \"${PLATFORM_PLIST}\" DTCompiler)", - "platform_version=$(/usr/bin/defaults read \"${PLATFORM_PLIST}\" Version)", - "sdk_build=$(/usr/bin/defaults read \"${PLATFORM_PLIST}\" DTSDKBuild)", - "platform_build=$(/usr/bin/defaults read \"${PLATFORM_PLIST}\" DTPlatformBuild)", - "xcode_build=$(/usr/bin/defaults read \"${PLATFORM_PLIST}\" DTXcodeBuild)", - "xcode_version=$(/usr/bin/defaults read \"${PLATFORM_PLIST}\" DTXcode)", - "/usr/bin/defaults write \"${PLIST}\" DTPlatformBuild -string ${platform_build}", - "/usr/bin/defaults write \"${PLIST}\" DTSDKBuild -string ${sdk_build}", - "/usr/bin/defaults write \"${PLIST}\" DTPlatformVersion -string ${platform_version}", - "/usr/bin/defaults write \"${PLIST}\" DTXcode -string ${xcode_version}", - "/usr/bin/defaults write \"${PLIST}\" DTXCodeBuild -string ${xcode_build}", - "/usr/bin/defaults write \"${PLIST}\" DTCompiler -string ${compiler}", - "/usr/bin/defaults write \"${PLIST}\" BuildMachineOSBuild -string ${os_build}", - "cat \"${PLIST}\" > " + getGeneratedEnvironmentPlist().getShellEscapedExecPathString(), - "rm -rf \"${PLIST}\""); - ruleContext.registerAction(ObjcRuleClasses.spawnBashOnDarwinActionBuilder(ruleContext, command) - .setMnemonic("EnvironmentPlist") - .addOutput(getGeneratedEnvironmentPlist()) - .build(ruleContext)); + String platformWithVersion = + String.format("%s%s", configuration.getBundlingPlatform().getLowerCaseNameInPlist(), + Strings.nullToEmpty(configuration.getIosSdkVersion())); + ruleContext.registerAction( + ObjcRuleClasses.spawnOnDarwinActionBuilder(ruleContext) + .setMnemonic("EnvironmentPlist") + .addInput(attributes.environmentPlistScript()) + .setExecutable(attributes.environmentPlistScript()) + .addArguments("--platform", platformWithVersion) + .addArguments( + "--output", getGeneratedEnvironmentPlist().getShellEscapedExecPathString()) + .addOutput(getGeneratedEnvironmentPlist()) + .build(ruleContext)); } private Artifact registerBundleSigningActions(Artifact ipaOutput) throws InterruptedException { @@ -877,6 +868,14 @@ public final class ReleaseBundlingSupport { return ruleContext.getPrerequisiteArtifact("$swiftstdlibtoolzip_deploy", Mode.HOST); } + /** + * Returns the location of the environment_plist.sh. + */ + public Artifact environmentPlistScript() { + return checkNotNull( + ruleContext.getPrerequisiteArtifact("$environment_plist_sh", Mode.HOST)); + } + String bundleId() { return checkNotNull(stringAttribute("bundle_id")); } |