cphang99 opened a new issue, #1891:
URL: https://github.com/apache/buildstream/issues/1891

   ## How to reproduce
   
   Using a nested junction reference (or referencing it from a `link` element) 
results in the following python exception traceback occurring:
   
   ```shell
   [--:--:--][        ][    main:core activity                 ] BUG     'dict' 
object has no attribute 'clone'
   
       Traceback (most recent call last):
         File 
"/home/christopherphang/.pyenv/versions/3.10.4/envs/bst2/lib/python3.10/site-packages/buildstream/_loader/loader.py",
 line 409, in _load_one_file
           element = self._elements[filename]
       KeyError: 'components/libyaml.bst'
       
       During handling of the above exception, another exception occurred:
       
       Traceback (most recent call last):
         File "/home/christopherphang/.pyenv/versions/bst2/bin/bst", line 8, in 
<module>
           sys.exit(cli())
         File 
"/home/christopherphang/.pyenv/versions/3.10.4/envs/bst2/lib/python3.10/site-packages/click/core.py",
 line 1157, in __call__
           return self.main(*args, **kwargs)
         File 
"/home/christopherphang/.pyenv/versions/3.10.4/envs/bst2/lib/python3.10/site-packages/buildstream/_frontend/cli.py",
 line 271, in override_main
           original_main(self, args=args, prog_name=prog_name, 
complete_var=None, standalone_mode=standalone_mode, **extra)
         File 
"/home/christopherphang/.pyenv/versions/3.10.4/envs/bst2/lib/python3.10/site-packages/click/core.py",
 line 1078, in main
           rv = self.invoke(ctx)
         File 
"/home/christopherphang/.pyenv/versions/3.10.4/envs/bst2/lib/python3.10/site-packages/click/core.py",
 line 1688, in invoke
           return _process_result(sub_ctx.command.invoke(sub_ctx))
         File 
"/home/christopherphang/.pyenv/versions/3.10.4/envs/bst2/lib/python3.10/site-packages/click/core.py",
 line 1434, in invoke
           return ctx.invoke(self.callback, **ctx.params)
         File 
"/home/christopherphang/.pyenv/versions/3.10.4/envs/bst2/lib/python3.10/site-packages/click/core.py",
 line 783, in invoke
           return __callback(*args, **kwargs)
         File 
"/home/christopherphang/.pyenv/versions/3.10.4/envs/bst2/lib/python3.10/site-packages/click/decorators.py",
 line 45, in new_func
           return f(get_current_context().obj, *args, **kwargs)
         File 
"/home/christopherphang/.pyenv/versions/3.10.4/envs/bst2/lib/python3.10/site-packages/buildstream/_frontend/cli.py",
 line 521, in build
           app.stream.build(
         File 
"/home/christopherphang/.pyenv/versions/3.10.4/envs/bst2/lib/python3.10/site-packages/buildstream/_stream.py",
 line 397, in build
           elements = self._load(
         File 
"/home/christopherphang/.pyenv/versions/3.10.4/envs/bst2/lib/python3.10/site-packages/buildstream/_stream.py",
 line 1641, in _load
           elements, except_elements, artifacts = 
self._load_elements_from_targets(
         File 
"/home/christopherphang/.pyenv/versions/3.10.4/envs/bst2/lib/python3.10/site-packages/buildstream/_stream.py",
 line 1456, in _load_elements_from_targets
           elements, except_elements = self._load_elements([element_names, 
except_targets])
         File 
"/home/christopherphang/.pyenv/versions/3.10.4/envs/bst2/lib/python3.10/site-packages/buildstream/_stream.py",
 line 1406, in _load_elements
           elements = self._project.load_elements(targets)
         File 
"/home/christopherphang/.pyenv/versions/3.10.4/envs/bst2/lib/python3.10/site-packages/buildstream/_project.py",
 line 431, in load_elements
           load_elements = self.loader.load(targets)
         File 
"/home/christopherphang/.pyenv/versions/3.10.4/envs/bst2/lib/python3.10/site-packages/buildstream/_loader/loader.py",
 line 132, in load
           element = loader._load_file(name, None)
         File 
"/home/christopherphang/.pyenv/versions/3.10.4/envs/bst2/lib/python3.10/site-packages/buildstream/_loader/loader.py",
 line 498, in _load_file
           dep_element = loader._load_file(dep.name, dep.node)
         File 
"/home/christopherphang/.pyenv/versions/3.10.4/envs/bst2/lib/python3.10/site-packages/buildstream/_loader/loader.py",
 line 466, in _load_file
           top_element = self._load_one_file(filename, provenance_node, 
load_subprojects=load_subprojects)
         File 
"/home/christopherphang/.pyenv/versions/3.10.4/envs/bst2/lib/python3.10/site-packages/buildstream/_loader/loader.py",
 line 421, in _load_one_file
           element = self._load_file_no_deps(filename, provenance_node)
         File 
"/home/christopherphang/.pyenv/versions/3.10.4/envs/bst2/lib/python3.10/site-packages/buildstream/_loader/loader.py",
 line 313, in _load_file_no_deps
           self.project.ensure_fully_loaded()
         File 
"/home/christopherphang/.pyenv/versions/3.10.4/envs/bst2/lib/python3.10/site-packages/buildstream/_project.py",
 line 485, in ensure_fully_loaded
           self.junction._get_project().ensure_fully_loaded()
         File 
"/home/christopherphang/.pyenv/versions/3.10.4/envs/bst2/lib/python3.10/site-packages/buildstream/_project.py",
 line 487, in ensure_fully_loaded
           self._load_second_pass()
         File 
"/home/christopherphang/.pyenv/versions/3.10.4/envs/bst2/lib/python3.10/site-packages/buildstream/_project.py",
 line 832, in _load_second_pass
           self._project_includes.process(project_conf_second_pass, 
process_project_options=False)
         File 
"/home/christopherphang/.pyenv/versions/3.10.4/envs/bst2/lib/python3.10/site-packages/buildstream/_includes.py",
 line 46, in process
           self._process(node, only_local=only_local, 
process_project_options=process_project_options)
         File 
"/home/christopherphang/.pyenv/versions/3.10.4/envs/bst2/lib/python3.10/site-packages/buildstream/_includes.py",
 line 66, in _process
           self._process_node(
         File 
"/home/christopherphang/.pyenv/versions/3.10.4/envs/bst2/lib/python3.10/site-packages/buildstream/_includes.py",
 line 105, in _process_node
           include_node, file_path, sub_loader = self._include_file(include, 
current_loader)
         File 
"/home/christopherphang/.pyenv/versions/3.10.4/envs/bst2/lib/python3.10/site-packages/buildstream/_includes.py",
 line 175, in _include_file
           variables_node = current_loader.project.base_variables.clone()
       AttributeError: 'dict' object has no attribute 'clone'
   ```
   
   This can be achieved by having an element that references a nested junction 
element directly:
   
   ```yaml
   - foo-junction.bst:freedesktop-sdk.bst:components/libyaml.bst
   ```
   
   Even if the junction element is referenced via a link element, so:
   
   `freedesktop-sdk.bst`
   ```yaml
   kind: link
   
   config:
     target: foo-junction.bst:freedesktop-sdk.bst
   ```
   
   and then:
   
   ```yaml
   - freedesktop-sdk.bst:components/libyaml.bst
   ```
   
   results in the same error.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to