From 1beb5db30eee5cda6b2a751677c55f9a1d020998 Mon Sep 17 00:00:00 2001 From: Brian McNamara Date: Thu, 27 Jun 2024 17:16:19 +0000 Subject: [PATCH 01/11] Add import_depth to allow controlling transative dependency depth --- ...dVisibilityDrivenProvisioningStrategy.java | 22 +++--------- .../discovery/JavaAspectsClasspathInfo.java | 11 +++++- ...ProjectPerPackageProvisioningStrategy.java | 35 ++++++++++++++++++- .../ProjectPerTargetProvisioningStrategy.java | 26 +++++++++++++- .../projectview/BazelProjectFileReader.java | 8 ++++- .../core/projectview/BazelProjectView.java | 3 +- 6 files changed, 82 insertions(+), 23 deletions(-) diff --git a/bundles/com.salesforce.bazel.eclipse.core/src/com/salesforce/bazel/eclipse/core/model/discovery/BuildFileAndVisibilityDrivenProvisioningStrategy.java b/bundles/com.salesforce.bazel.eclipse.core/src/com/salesforce/bazel/eclipse/core/model/discovery/BuildFileAndVisibilityDrivenProvisioningStrategy.java index bd251444..20542574 100644 --- a/bundles/com.salesforce.bazel.eclipse.core/src/com/salesforce/bazel/eclipse/core/model/discovery/BuildFileAndVisibilityDrivenProvisioningStrategy.java +++ b/bundles/com.salesforce.bazel.eclipse.core/src/com/salesforce/bazel/eclipse/core/model/discovery/BuildFileAndVisibilityDrivenProvisioningStrategy.java @@ -8,7 +8,6 @@ import static java.util.stream.Collectors.groupingBy; import static java.util.stream.Collectors.joining; import static java.util.stream.Collectors.toCollection; -import static java.util.stream.Collectors.toSet; import static org.eclipse.core.resources.IResource.DEPTH_ZERO; import java.util.ArrayList; @@ -248,29 +247,17 @@ public Map> computeClasspaths(Collectio // query for rdeps to find classpath exclusions var projectTargets = activeTargetsPerProject.get(bazelProject); - var rdeps = workspace.getCommandExecutor() - .runQueryWithoutLock( - new BazelQueryForLabelsCommand( - workspaceRoot, - format( - "kind(java_library, rdeps(//..., %s))", - projectTargets.stream().map(BazelLabel::toString).collect(joining(" + "))), - true, - format( - "Querying for reverse dependencies of '%s' for classpath computation", - bazelProject.getName()))) - .stream() - .map(BazelLabel::new) - .collect(toSet()); + var targets = projectTargets.stream().map(BazelLabel::toString).collect(joining(" + ")); // get all accessible targets based on visibility Set allVisibleTargets = workspace.getCommandExecutor() .runQueryWithoutLock( new BazelQueryForLabelsCommand( workspaceRoot, format( - "kind(java_library, visible(%s, //...))", - projectTargets.stream().map(BazelLabel::toString).collect(joining(" + "))), + "kind(java_library, visible(%s, //...)) except kind(java_library, rdeps(//..., %s))", + targets, + targets), true, format( "Querying for Java targets visibile to '%s' for classpath computation", @@ -295,7 +282,6 @@ public Map> computeClasspaths(Collectio // get the remaining list of visible deps based on workspace dependency graph var visibleDeps = new ArrayList<>(allVisibleTargets); - visibleDeps.removeAll(rdeps); // exclude reverse deps visibleDeps.removeAll(projectTargets); // exclude project targets (avoid dependencies on itself) // compute the classpath diff --git a/bundles/com.salesforce.bazel.eclipse.core/src/com/salesforce/bazel/eclipse/core/model/discovery/JavaAspectsClasspathInfo.java b/bundles/com.salesforce.bazel.eclipse.core/src/com/salesforce/bazel/eclipse/core/model/discovery/JavaAspectsClasspathInfo.java index f9c53759..e42877f8 100644 --- a/bundles/com.salesforce.bazel.eclipse.core/src/com/salesforce/bazel/eclipse/core/model/discovery/JavaAspectsClasspathInfo.java +++ b/bundles/com.salesforce.bazel.eclipse.core/src/com/salesforce/bazel/eclipse/core/model/discovery/JavaAspectsClasspathInfo.java @@ -66,6 +66,7 @@ import com.salesforce.bazel.eclipse.core.model.discovery.classpath.AccessRule; import com.salesforce.bazel.eclipse.core.model.discovery.classpath.ClasspathEntry; import com.salesforce.bazel.sdk.command.BazelBuildWithIntelliJAspectsCommand; +import com.salesforce.bazel.sdk.model.BazelLabel; /** * Holds information for computing Java classpath configuration of a target or a package. @@ -132,10 +133,13 @@ static boolean isJavaProtoTarget(TargetIdeInfo target) { /** set of exports (insertion order is not relevant) */ final Set