Search in sources :

Example 6 with RuleKeyFieldLoader

use of com.facebook.buck.rules.keys.RuleKeyFieldLoader in project buck by facebook.

the class ActionGraphCacheTest method getRuleKeysFromBuildRules.

private Map<BuildRule, RuleKey> getRuleKeysFromBuildRules(Iterable<BuildRule> buildRules, BuildRuleResolver buildRuleResolver) {
    RuleKeyFieldLoader ruleKeyFieldLoader = new RuleKeyFieldLoader(0);
    SourcePathRuleFinder ruleFinder = new SourcePathRuleFinder(buildRuleResolver);
    SourcePathResolver pathResolver = new SourcePathResolver(ruleFinder);
    ContentAgnosticRuleKeyFactory factory = new ContentAgnosticRuleKeyFactory(ruleKeyFieldLoader, pathResolver, ruleFinder);
    HashMap<BuildRule, RuleKey> ruleKeysMap = new HashMap<>();
    for (BuildRule rule : buildRules) {
        ruleKeysMap.put(rule, factory.build(rule));
    }
    return ruleKeysMap;
}
Also used : RuleKeyFieldLoader(com.facebook.buck.rules.keys.RuleKeyFieldLoader) HashMap(java.util.HashMap) ContentAgnosticRuleKeyFactory(com.facebook.buck.rules.keys.ContentAgnosticRuleKeyFactory)

Example 7 with RuleKeyFieldLoader

use of com.facebook.buck.rules.keys.RuleKeyFieldLoader in project buck by facebook.

the class TargetsCommand method computeShowRules.

/**
   * Assumes at least one target is specified.  Computes each of the
   * specified targets, followed by the rule key, output path, and/or
   * target hash, depending on what flags are passed in.
   * @return  An immutable map consisting of result of show options
   * for to each target rule
   */
private ImmutableMap<BuildTarget, ShowOptions> computeShowRules(CommandRunnerParams params, ListeningExecutorService executor, TargetGraphAndTargetNodes targetGraphAndTargetNodes) throws IOException, InterruptedException, BuildFileParseException, BuildTargetException, CycleException {
    Map<BuildTarget, ShowOptions.Builder> showOptionBuilderMap = new HashMap<>();
    if (isShowTargetHash()) {
        computeShowTargetHash(params, executor, targetGraphAndTargetNodes, showOptionBuilderMap);
    }
    // We only need the action graph if we're showing the output or the keys, and the
    // RuleKeyFactory if we're showing the keys.
    Optional<ActionGraph> actionGraph = Optional.empty();
    Optional<BuildRuleResolver> buildRuleResolver = Optional.empty();
    Optional<DefaultRuleKeyFactory> ruleKeyFactory = Optional.empty();
    if (isShowRuleKey() || isShowOutput() || isShowFullOutput()) {
        ActionGraphAndResolver result = Preconditions.checkNotNull(ActionGraphCache.getFreshActionGraph(params.getBuckEventBus(), targetGraphAndTargetNodes.getTargetGraph()));
        actionGraph = Optional.of(result.getActionGraph());
        buildRuleResolver = Optional.of(result.getResolver());
        if (isShowRuleKey()) {
            SourcePathRuleFinder ruleFinder = new SourcePathRuleFinder(result.getResolver());
            ruleKeyFactory = Optional.of(new DefaultRuleKeyFactory(new RuleKeyFieldLoader(params.getBuckConfig().getKeySeed()), params.getFileHashCache(), new SourcePathResolver(ruleFinder), ruleFinder));
        }
    }
    for (TargetNode<?, ?> targetNode : targetGraphAndTargetNodes.getTargetNodes()) {
        ShowOptions.Builder showOptionsBuilder = getShowOptionBuilder(showOptionBuilderMap, targetNode.getBuildTarget());
        Preconditions.checkNotNull(showOptionsBuilder);
        if (actionGraph.isPresent()) {
            BuildRule rule = buildRuleResolver.get().requireRule(targetNode.getBuildTarget());
            if (isShowRuleKey()) {
                showOptionsBuilder.setRuleKey(ruleKeyFactory.get().build(rule).toString());
            }
            if (isShowOutput() || isShowFullOutput()) {
                Optional<Path> outputPath = getUserFacingOutputPath(new SourcePathResolver(new SourcePathRuleFinder(buildRuleResolver.get())), rule, isShowFullOutput(), params.getBuckConfig().getBuckOutCompatLink());
                if (outputPath.isPresent()) {
                    showOptionsBuilder.setOutputPath(outputPath.get().toString());
                }
            }
        }
    }
    ImmutableMap.Builder<BuildTarget, ShowOptions> builder = new ImmutableMap.Builder<>();
    for (Entry<BuildTarget, ShowOptions.Builder> entry : showOptionBuilderMap.entrySet()) {
        builder.put(entry.getKey(), entry.getValue().build());
    }
    return builder.build();
}
Also used : RuleKeyFieldLoader(com.facebook.buck.rules.keys.RuleKeyFieldLoader) Path(java.nio.file.Path) DefaultRuleKeyFactory(com.facebook.buck.rules.keys.DefaultRuleKeyFactory) ActionGraph(com.facebook.buck.rules.ActionGraph) HashMap(java.util.HashMap) SourcePathRuleFinder(com.facebook.buck.rules.SourcePathRuleFinder) SourcePathResolver(com.facebook.buck.rules.SourcePathResolver) BuildRuleResolver(com.facebook.buck.rules.BuildRuleResolver) ImmutableMap(com.google.common.collect.ImmutableMap) BuildTarget(com.facebook.buck.model.BuildTarget) ActionGraphAndResolver(com.facebook.buck.rules.ActionGraphAndResolver) BuildRule(com.facebook.buck.rules.BuildRule)

Aggregations

RuleKeyFieldLoader (com.facebook.buck.rules.keys.RuleKeyFieldLoader)7 SourcePathResolver (com.facebook.buck.rules.SourcePathResolver)5 SourcePathRuleFinder (com.facebook.buck.rules.SourcePathRuleFinder)5 DefaultRuleKeyFactory (com.facebook.buck.rules.keys.DefaultRuleKeyFactory)5 BuildRule (com.facebook.buck.rules.BuildRule)3 BuildTarget (com.facebook.buck.model.BuildTarget)2 BuildRuleResolver (com.facebook.buck.rules.BuildRuleResolver)2 StackedFileHashCache (com.facebook.buck.util.cache.StackedFileHashCache)2 Path (java.nio.file.Path)2 HashMap (java.util.HashMap)2 ActionGraphEvent (com.facebook.buck.event.ActionGraphEvent)1 Pair (com.facebook.buck.model.Pair)1 NoSuchBuildTargetException (com.facebook.buck.parser.NoSuchBuildTargetException)1 ActionGraph (com.facebook.buck.rules.ActionGraph)1 ActionGraphAndResolver (com.facebook.buck.rules.ActionGraphAndResolver)1 DefaultTargetNodeToBuildRuleTransformer (com.facebook.buck.rules.DefaultTargetNodeToBuildRuleTransformer)1 SourcePath (com.facebook.buck.rules.SourcePath)1 ContentAgnosticRuleKeyFactory (com.facebook.buck.rules.keys.ContentAgnosticRuleKeyFactory)1 HumanReadableException (com.facebook.buck.util.HumanReadableException)1 ImmutableMap (com.google.common.collect.ImmutableMap)1