use of com.facebook.buck.step.fs.MkdirStep in project buck by facebook.
the class JavaSymbolsRule method getBuildSteps.
@Override
public ImmutableList<Step> getBuildSteps(BuildContext context, BuildableContext buildableContext) {
Step mkdirStep = new MkdirStep(getProjectFilesystem(), outputPath.getParent());
Step extractSymbolsStep = new AbstractExecutionStep("java-symbols") {
@Override
public StepExecutionResult execute(ExecutionContext context) throws IOException {
Symbols symbols = symbolsFinder.extractSymbols();
Symbols symbolsToSerialize;
if (generatedSymbols.isEmpty()) {
symbolsToSerialize = symbols;
} else {
symbolsToSerialize = new Symbols(Iterables.concat(symbols.provided, generatedSymbols), symbols.required, symbols.exported);
}
try (OutputStream output = getProjectFilesystem().newFileOutputStream(outputPath)) {
context.getObjectMapper().writeValue(output, symbolsToSerialize);
}
return StepExecutionResult.SUCCESS;
}
};
return ImmutableList.of(mkdirStep, extractSymbolsStep);
}
use of com.facebook.buck.step.fs.MkdirStep in project buck by facebook.
the class SrcZipAwareFileBundler method copy.
public void copy(ProjectFilesystem filesystem, final SourcePathResolver resolver, ImmutableList.Builder<Step> steps, Path destinationDir, ImmutableSortedSet<SourcePath> toCopy) {
Map<Path, Path> relativeMap = createRelativeMap(filesystem, resolver, toCopy);
for (Map.Entry<Path, Path> pathEntry : relativeMap.entrySet()) {
Path relativePath = pathEntry.getKey();
Path absolutePath = Preconditions.checkNotNull(pathEntry.getValue());
Path destination = destinationDir.resolve(relativePath);
if (relativePath.toString().endsWith(Javac.SRC_ZIP) || relativePath.toString().endsWith(Javac.SRC_JAR)) {
steps.add(new UnzipStep(filesystem, absolutePath, destination.getParent()));
continue;
}
if (destination.getParent() != null) {
steps.add(new MkdirStep(filesystem, destination.getParent()));
}
steps.add(CopyStep.forFile(filesystem, absolutePath, destination));
}
}
use of com.facebook.buck.step.fs.MkdirStep in project buck by facebook.
the class Zip method getBuildSteps.
@Override
public ImmutableList<Step> getBuildSteps(BuildContext context, BuildableContext buildableContext) {
Path output = getOutput();
Path scratchDir = BuildTargets.getScratchPath(getProjectFilesystem(), getBuildTarget(), "%s.zip.scratch");
ImmutableList.Builder<Step> steps = ImmutableList.builder();
steps.add(new RmStep(getProjectFilesystem(), output));
steps.add(new MkdirStep(getProjectFilesystem(), output.getParent()));
steps.add(new MakeCleanDirectoryStep(getProjectFilesystem(), scratchDir));
SrcZipAwareFileBundler bundler = new SrcZipAwareFileBundler(getBuildTarget());
bundler.copy(getProjectFilesystem(), context.getSourcePathResolver(), steps, scratchDir, sources);
steps.add(new ZipStep(getProjectFilesystem(), output, ImmutableSortedSet.of(), /* junk paths */
false, ZipCompressionLevel.DEFAULT_COMPRESSION_LEVEL, scratchDir));
buildableContext.recordArtifact(output);
return steps.build();
}
use of com.facebook.buck.step.fs.MkdirStep in project buck by facebook.
the class CxxLink method getBuildSteps.
@Override
public ImmutableList<Step> getBuildSteps(BuildContext context, BuildableContext buildableContext) {
buildableContext.recordArtifact(output);
Optional<Path> linkerMapPath = getLinkerMapPath();
if (linkerMapPath.isPresent() && LinkerMapMode.isLinkerMapEnabledForBuildTarget(getBuildTarget())) {
buildableContext.recordArtifact(linkerMapPath.get());
}
Path scratchDir = BuildTargets.getScratchPath(getProjectFilesystem(), getBuildTarget(), "%s-tmp");
Path argFilePath = getProjectFilesystem().getRootPath().resolve(BuildTargets.getScratchPath(getProjectFilesystem(), getBuildTarget(), "%s.argsfile"));
Path fileListPath = getProjectFilesystem().getRootPath().resolve(BuildTargets.getScratchPath(getProjectFilesystem(), getBuildTarget(), "%s__filelist.txt"));
// Try to find all the cell roots used during the link. This isn't technically correct since,
// in theory not all inputs need to come from build rules, but it probably works in practice.
// One way that we know would work is exposing every known cell root paths, since the only rules
// that we built (and therefore need to scrub) will be in one of those roots.
ImmutableSet.Builder<Path> cellRoots = ImmutableSet.builder();
for (BuildRule dep : getDeps()) {
cellRoots.add(dep.getProjectFilesystem().getRootPath());
}
return ImmutableList.of(new MkdirStep(getProjectFilesystem(), output.getParent()), new MakeCleanDirectoryStep(getProjectFilesystem(), scratchDir), new RmStep(getProjectFilesystem(), argFilePath), new RmStep(getProjectFilesystem(), fileListPath), CxxPrepareForLinkStep.create(argFilePath, fileListPath, linker.fileList(fileListPath), output, args, linker, getBuildTarget().getCellPath(), context.getSourcePathResolver()), new CxxLinkStep(getProjectFilesystem().getRootPath(), linker.getEnvironment(context.getSourcePathResolver()), linker.getCommandPrefix(context.getSourcePathResolver()), argFilePath, getProjectFilesystem().getRootPath().resolve(scratchDir)), new FileScrubberStep(getProjectFilesystem(), output, linker.getScrubbers(cellRoots.build())), new LogContentsOfFileStep(getProjectFilesystem().resolve(argFilePath), Level.FINEST), new RmStep(getProjectFilesystem(), argFilePath), new LogContentsOfFileStep(getProjectFilesystem().resolve(fileListPath), Level.FINEST), new RmStep(getProjectFilesystem(), fileListPath), new RmStep(getProjectFilesystem(), scratchDir, RmStep.Mode.RECURSIVE));
}
use of com.facebook.buck.step.fs.MkdirStep in project buck by facebook.
the class CxxInferCapture method getBuildSteps.
@Override
public ImmutableList<Step> getBuildSteps(BuildContext context, BuildableContext buildableContext) {
ImmutableList<String> frontendCommand = getFrontendCommand();
buildableContext.recordArtifact(context.getSourcePathResolver().getRelativePath(getSourcePathToOutput()));
Path inputRelativePath = context.getSourcePathResolver().getRelativePath(input);
return ImmutableList.<Step>builder().add(new MkdirStep(getProjectFilesystem(), resultsDir)).add(new MkdirStep(getProjectFilesystem(), output.getParent())).add(new WriteArgFileStep(inputRelativePath)).add(new DefaultShellStep(getProjectFilesystem().getRootPath(), frontendCommand, ImmutableMap.of())).build();
}
Aggregations