@@ -25,16 +25,16 @@ class Node:
2525 target per bazel package.
2626 """
2727
28- def __init__ (self , parent , artifact_def , dependency ):
28+ def __init__ (self , parent , artifact_def , label ):
2929 assert artifact_def is not None , "artifact_def cannot be None"
30- assert dependency is not None , "dependency cannot be None"
30+ assert label is not None , "label cannot be None"
3131
3232 # the parent Nodes
3333 self .parents = [] if parent is None else [parent ]
3434 # parsed metadata (BUILD.pom etc) files
3535 self .artifact_def = artifact_def
3636 # the dependency pointing to this target
37- self .dependency = dependency
37+ self .label = label
3838 # all direct child nodes
3939 self .children = []
4040
@@ -182,7 +182,7 @@ def _register_dependencies(self, target_to_transitive_closure_deps):
182182 """
183183 for ctx in self .genctxs :
184184 target_key = self ._get_target_key (
185- ctx .artifact_def .bazel_package , ctx .dependency )
185+ ctx .artifact_def .bazel_package , ctx .label )
186186 directs = self .target_to_dependencies [target_key ]
187187 ctx .register_artifact_directs (directs )
188188 transitive_closure = target_to_transitive_closure_deps [target_key ]
@@ -199,7 +199,7 @@ def _get_deps_transitive_closure_for_library(self, library_path,
199199
200200 nodes = self .library_to_nodes [library_path ]
201201 for n in nodes :
202- target_key = self ._get_target_key (n .artifact_def .bazel_package , n .dependency )
202+ target_key = self ._get_target_key (n .artifact_def .bazel_package , n .label )
203203 all_deps .update (target_to_transitive_closure_deps [target_key ])
204204
205205 # also include every artifact that is part of this library
@@ -295,7 +295,7 @@ def _accumulate_deps_and_walk(self, node, accumulated_deps,
295295 target_to_all_dependencies: the result dictionary being built
296296 """
297297 package = node .artifact_def .bazel_package
298- target_key = self ._get_target_key (package , node .dependency )
298+ target_key = self ._get_target_key (package , node .label )
299299 this_node_deps = self .target_to_dependencies [target_key ]
300300
301301 processed_deps = set () # to remove duplicate deps
@@ -358,7 +358,7 @@ def _push_transitives_to_parent(self):
358358 def _push_transitives_and_walk (self , node , collected_dep_lists ,
359359 processed_nodes ):
360360 package = node .artifact_def .bazel_package
361- target_key = self ._get_target_key (package , node .dependency )
361+ target_key = self ._get_target_key (package , node .label )
362362 deps = self .target_to_dependencies [target_key ]
363363 if node .artifact_def .pom_generation_mode .produces_artifact :
364364 if len (collected_dep_lists ) > 0 :
@@ -484,24 +484,25 @@ def _crawl_packages(self, packages, follow_references):
484484 """
485485 nodes = []
486486 for package in packages :
487- n = self ._crawl (package , dep = None , parent_node = None ,
487+ n = self ._crawl (package , label = None , parent_node = None ,
488488 follow_references = follow_references )
489489 nodes .append (n )
490490 return nodes
491-
492- def _crawl (self , package , dep , parent_node , follow_references ):
491+
492+ # TODO combine package and label
493+ def _crawl (self , package , label , parent_node , follow_references ):
493494 """
494495 For the specified package, crawl BUILD file dependencies, unless
495496 follow_references is False.
496497
497- The dependency instance is the dependency pointing at this package.
498+ The given label instance is the label pointing at this package.
498499
499500 Returns a Node instance for the crawled package.
500501 """
501502 artifact_def = self .workspace .parse_maven_artifact_def (package )
502503 if artifact_def is None :
503504 raise Exception ("No artifact defined at package %s" % package )
504- target_key = self ._get_target_key (package , dep , artifact_def )
505+ target_key = self ._get_target_key (package , label , artifact_def )
505506 if target_key in self .target_to_node :
506507 # if we have already processed this target, we can re-use the
507508 # children we discovered previously
@@ -526,15 +527,16 @@ def _crawl(self, package, dep, parent_node, follow_references):
526527
527528 self .package_to_artifact [package ] = artifact_def
528529 self .library_to_artifact [artifact_def .library_path ].append (artifact_def )
529- if dep is None :
530- # make a real dependency instance here
530+ if label is None :
531+ # make a real label instance here
531532 # this is a bootstrapping problem: the root
532533 # artifacts (that we start with) have nothing pointing at them
533- dep = dependency .new_dep_from_maven_artifact_def (artifact_def )
534+ # (but this can be initialized earlier)
535+ label = labelm .Label ("%s:%s" % (package , artifact_def .bazel_target ))
534536 artifactctx = artifactgenctx .ArtifactGenerationContext (
535- self .workspace , self .pom_template , artifact_def , dep )
537+ self .workspace , self .pom_template , artifact_def , label )
536538 self .genctxs .append (artifactctx )
537- labels = self ._discover_dependencies (artifact_def , dep )
539+ labels = self ._discover_dependencies (artifact_def , label )
538540
539541 # TODO abstract this, as it assumes maven_install
540542 all_deps = self .workspace .parse_dep_labels ([lbl .name for lbl in labels ])
@@ -544,7 +546,7 @@ def _crawl(self, package, dep, parent_node, follow_references):
544546 logger .debug ("Determined labels for artifact: [%s] with target key [%s]" % (artifact_def , target_key ))
545547 logger .debug ("Labels: %s" % "\n " .join ([lbl .name for lbl in labels ]))
546548 logger .debug ("Dependencies: %s" % "\n " .join ([str (d ) for d in all_deps ]))
547- node = Node (parent_node , artifact_def , dep )
549+ node = Node (parent_node , artifact_def , label )
548550 if follow_references :
549551 # this is where we crawl is source label:
550552 for label in labels :
@@ -555,30 +557,30 @@ def _crawl(self, package, dep, parent_node, follow_references):
555557 # the parse method above
556558 continue
557559 child_node = self ._crawl (
558- label .package_path , deps [ 0 ] , node ,
560+ label .package_path , label , node ,
559561 follow_references )
560562 node .children .append (child_node )
561563 self .target_to_node [target_key ] = node
562564 self .library_to_nodes [node .artifact_def .library_path ].append (node )
563565 self ._store_if_leafnode (node )
564566 return node
565567
566- def _discover_dependencies (self , artifact_def , dep ):
568+ def _discover_dependencies (self , artifact_def , label ):
567569 """
568570 Discovers the dependencies of the given artifact (==bazel target).
569571
570572 This method returns a list of common.label.Label instances.
571573 """
572574 assert artifact_def is not None
573- assert dep is not None , "dep is None for artifact %s" % artifact_def
575+ assert label is not None , "label is None for artifact %s" % artifact_def
574576 labels = ()
575577 if artifact_def .deps is not None :
576578 labels = [labelm .Label (lbl ) for lbl in artifact_def .deps ]
577579 if artifact_def .has_build_file :
578- labels += self ._query_labels (artifact_def , dep )
580+ labels += self ._query_labels (artifact_def , label )
579581 return labels
580582
581- def _query_labels (self , artifact_def , dependency ):
583+ def _query_labels (self , artifact_def , label ):
582584 """
583585 Delegates to bazel query to get the value of a bazel target's "deps"
584586 and "runtime_deps" attributes. Returns an iterable of common.label.Label
@@ -588,13 +590,10 @@ def _query_labels(self, artifact_def, dependency):
588590 return ()
589591 else :
590592 assert artifact_def .bazel_package is not None
591- assert dependency .bazel_target is not None
592- assert len (dependency .bazel_target ) > 0
593- artifact_def_label = "%s:%s" % (artifact_def .bazel_package , dependency .bazel_target )
594593 try :
595594 labels = bazel .query_java_library_deps_attributes (
596595 self .workspace .repo_root_path ,
597- artifact_def_label ,
596+ label . name ,
598597 artifact_def .pom_generation_mode .dependency_attributes ,
599598 self .workspace .verbose )
600599 labels = [labelm .Label (lbl ) for lbl in labels ]
@@ -627,14 +626,14 @@ def _remove_package_private_labels(clazz, labels, owning_artifact_def):
627626 return updated_labels
628627
629628 @classmethod
630- def _get_target_key (clazz , package , dep , artifact_def = None ):
631- if dep is None :
629+ def _get_target_key (clazz , package , label , artifact_def = None ):
630+ if label is None :
632631 # initial bootstrap - we start a bazel package and we don't
633- # have a dep pointing here
632+ # have a label pointing here
634633 assert artifact_def is not None
635634 target = artifact_def .bazel_target
636635 else :
637- target = dep . bazel_target
636+ target = label . target
638637 assert target is not None , "Target is None for package %s" % package
639638 return "%s:%s" % (package , target )
640639
0 commit comments