diff options
author | 2017-09-17 22:24:02 +0200 | |
---|---|---|
committer | 2017-09-18 11:29:19 +0200 | |
commit | 7d67e02616c198f5cb8947cd813e313c819047ec (patch) | |
tree | 3d969d2537c2e2f21a1ddc65dbcfd4cf6cdf9ba9 /src/main/java/com/google/devtools/build/lib/analysis/actions | |
parent | 2aee44b68bbbc29397993062b8757b419f6a5614 (diff) |
Change param file arg string to a format string instead of a prefix string.
Makes it easier to do Skylark param file support which uses a format string.
PiperOrigin-RevId: 169019600
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis/actions')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/analysis/actions/ParamFileInfo.java | 34 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java | 6 |
2 files changed, 22 insertions, 18 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/ParamFileInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/ParamFileInfo.java index 33a9245c2b..6e94070ff1 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/actions/ParamFileInfo.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/ParamFileInfo.java @@ -31,13 +31,14 @@ import javax.annotation.concurrent.Immutable; public final class ParamFileInfo { private final ParameterFileType fileType; private final Charset charset; - private final String flag; + private final String flagFormatString; private final boolean always; - private ParamFileInfo(ParameterFileType fileType, Charset charset, String flag, boolean always) { + private ParamFileInfo( + ParameterFileType fileType, Charset charset, String flagFormatString, boolean always) { this.fileType = Preconditions.checkNotNull(fileType); this.charset = Preconditions.checkNotNull(charset); - this.flag = Preconditions.checkNotNull(flag); + this.flagFormatString = Preconditions.checkNotNull(flagFormatString); this.always = always; } @@ -55,11 +56,9 @@ public final class ParamFileInfo { return charset; } - /** - * Returns the prefix for the params filename on the command line (typically "@"). - */ - public String getFlag() { - return flag; + /** Returns the format string for the params filename on the command line (typically "@%s"). */ + public String getFlagFormatString() { + return flagFormatString; } /** Returns true if a params file should always be used. */ @@ -69,7 +68,7 @@ public final class ParamFileInfo { @Override public int hashCode() { - return Objects.hash(charset, flag, fileType, always); + return Objects.hash(charset, flagFormatString, fileType, always); } @Override @@ -83,7 +82,7 @@ public final class ParamFileInfo { ParamFileInfo other = (ParamFileInfo) obj; return fileType.equals(other.fileType) && charset.equals(other.charset) - && flag.equals(other.flag) + && flagFormatString.equals(other.flagFormatString) && always == other.always; } @@ -95,7 +94,7 @@ public final class ParamFileInfo { public static class Builder { private final ParameterFileType fileType; private Charset charset = ISO_8859_1; - private String flag = "@"; + private String flagFormatString = "@%s"; private boolean always; private Builder(ParameterFileType fileType) { @@ -108,9 +107,14 @@ public final class ParamFileInfo { return this; } - /** Sets a prefix to use for the flag that is passed to original command. */ - public Builder setFlag(@CompileTimeConstant String flag) { - this.flag = flag; + /** + * Sets a format string to use for the flag that is passed to original command. + * + * <p>The format string must have a single "%s" that will be replaced by the execution path to + * the param file. + */ + public Builder setFlagFormatString(@CompileTimeConstant String flagFormatString) { + this.flagFormatString = flagFormatString; return this; } @@ -121,7 +125,7 @@ public final class ParamFileInfo { } public ParamFileInfo build() { - return new ParamFileInfo(fileType, charset, flag, always); + return new ParamFileInfo(fileType, charset, flagFormatString, always); } } } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java index ac9aa7266a..a6af9fc364 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java @@ -1327,8 +1327,8 @@ public class SpawnAction extends AbstractAction implements ExecutionInfoSpecifie result.add((String) value); } else if (value instanceof Artifact) { Artifact paramFile = (Artifact) value; - String flag = (String) values[++i]; - result.add(flag + paramFile.getExecPathString()); + String flagFormatString = (String) values[++i]; + result.add(flagFormatString.replaceFirst("%s", paramFile.getExecPathString())); } else if (value instanceof CommandLine) { CommandLine commandLine = (CommandLine) value; if (artifactExpander != null) { @@ -1351,7 +1351,7 @@ public class SpawnAction extends AbstractAction implements ExecutionInfoSpecifie Builder addParamFile(Artifact paramFile, ParamFileInfo paramFileInfo) { values.add(paramFile); - values.add(paramFileInfo.getFlag()); + values.add(paramFileInfo.getFlagFormatString()); return this; } |