aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/tools/xcode-common
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/xcode-common')
-rw-r--r--src/tools/xcode-common/java/com/google/devtools/build/xcode/actoolzip/ActoolZip.java19
-rw-r--r--src/tools/xcode-common/java/com/google/devtools/build/xcode/ibtoolzip/IbtoolZip.java21
-rw-r--r--src/tools/xcode-common/java/com/google/devtools/build/xcode/zippingoutput/Wrappers.java24
3 files changed, 44 insertions, 20 deletions
diff --git a/src/tools/xcode-common/java/com/google/devtools/build/xcode/actoolzip/ActoolZip.java b/src/tools/xcode-common/java/com/google/devtools/build/xcode/actoolzip/ActoolZip.java
index b028ae5947..8839fae067 100644
--- a/src/tools/xcode-common/java/com/google/devtools/build/xcode/actoolzip/ActoolZip.java
+++ b/src/tools/xcode-common/java/com/google/devtools/build/xcode/actoolzip/ActoolZip.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.xcode.actoolzip;
-import com.google.common.base.Function;
import com.google.common.base.Optional;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
@@ -35,22 +34,6 @@ import java.util.Set;
*/
public class ActoolZip implements Wrapper {
- private static final Function<String, String> CANONICAL_PATH =
- new Function<String, String>() {
- @Override
- public String apply(String path) {
- File file = new File(path);
- if (file.exists()) {
- try {
- return file.getCanonicalPath();
- } catch (IOException e) {
- // Pass through to return raw path
- }
- }
- return path;
- }
- };
-
@Override
public String name() {
return "ActoolZip";
@@ -69,7 +52,7 @@ public class ActoolZip implements Wrapper {
.add(outputDirectory)
// actool munges paths in some way which doesn't work if one of the directories in the path
// is a symlink.
- .addAll(Iterables.transform(args.subtoolExtraArgs(), CANONICAL_PATH))
+ .addAll(Iterables.transform(args.subtoolExtraArgs(), Wrappers.CANONICALIZE_IF_PATH))
.build();
}
diff --git a/src/tools/xcode-common/java/com/google/devtools/build/xcode/ibtoolzip/IbtoolZip.java b/src/tools/xcode-common/java/com/google/devtools/build/xcode/ibtoolzip/IbtoolZip.java
index 892053b1f6..180f541bc8 100644
--- a/src/tools/xcode-common/java/com/google/devtools/build/xcode/ibtoolzip/IbtoolZip.java
+++ b/src/tools/xcode-common/java/com/google/devtools/build/xcode/ibtoolzip/IbtoolZip.java
@@ -15,6 +15,7 @@
package com.google.devtools.build.xcode.ibtoolzip;
import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Iterables;
import com.google.devtools.build.xcode.zippingoutput.Arguments;
import com.google.devtools.build.xcode.zippingoutput.Wrapper;
import com.google.devtools.build.xcode.zippingoutput.Wrappers;
@@ -39,11 +40,27 @@ public class IbtoolZip implements Wrapper {
@Override
public Iterable<String> subCommand(Arguments args, String outputDirectory) {
+ // If we are running into problems figuring out ibtool issues, there are a couple
+ // of env variables that may help. Both of the following must be set to work.
+ // IBToolDebugLogFile=<OUTPUT FILE PATH>
+ // IBToolDebugLogLevel=4
+ // you may also see if
+ // IBToolNeverDeque=1
+ // helps.
+
+ // IBTool needs to have absolute paths sent to it, so we call CANONICALIZE_IF_PATH
+ // on all of them.
+ // Radar 21045660 ibtool has difficulty dealing with relative paths.
return new ImmutableList.Builder<String>()
.add(args.subtoolCmd())
+ .add("--errors")
+ .add("--warnings")
+ .add("--notices")
+ .add("--auto-activate-custom-fonts")
+ .add("--output-format").add("human-readable-text")
.add("--compile")
- .add(outputDirectory)
- .addAll(args.subtoolExtraArgs())
+ .add(Wrappers.CANONICALIZE_IF_PATH.apply(outputDirectory))
+ .addAll(Iterables.transform(args.subtoolExtraArgs(), Wrappers.CANONICALIZE_IF_PATH))
.build();
}
diff --git a/src/tools/xcode-common/java/com/google/devtools/build/xcode/zippingoutput/Wrappers.java b/src/tools/xcode-common/java/com/google/devtools/build/xcode/zippingoutput/Wrappers.java
index 7d4df044d7..99af344362 100644
--- a/src/tools/xcode-common/java/com/google/devtools/build/xcode/zippingoutput/Wrappers.java
+++ b/src/tools/xcode-common/java/com/google/devtools/build/xcode/zippingoutput/Wrappers.java
@@ -14,11 +14,13 @@
package com.google.devtools.build.xcode.zippingoutput;
+import com.google.common.base.Function;
import com.google.common.collect.ImmutableList;
import com.google.common.io.CharStreams;
import com.google.devtools.build.singlejar.ZipCombiner;
import com.google.devtools.build.xcode.zip.ZipInputEntry;
+import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
@@ -39,6 +41,28 @@ public class Wrappers {
}
/**
+ * Takes the string and canonicalizes if it is a path that exists on the file system.
+ * If it does not exist on the file system, returns the string passed in unchanged.
+ */
+ public static final Function<String, String> CANONICALIZE_IF_PATH =
+ new Function<String, String>() {
+ @Override
+ public String apply(String path) {
+ if (!path.startsWith("-")) {
+ File file = new File(path);
+ if (file.exists()) {
+ try {
+ return file.getCanonicalPath();
+ } catch (IOException e) {
+ // Pass through to return raw path
+ }
+ }
+ }
+ return path;
+ }
+ };
+
+ /**
* Executes the command specified by argsArray and wrapper, writing the output directly to this
* Java process's stdout/stderr. Calling this method should be the last thing you do in
* {@code main}, because it may exit prematurely with {@link System#exit(int)}.