Building Snapcraft Error: Could not determine a constructor for the tag '!ExtractedMetadata'

When I try to build a recent revision I made to the snapcraft.yaml, the build process now errors out with the following message

'yaml.constructor.ConstructorError: could not determine a constructor for the tag ‘!ExtractedMetadata’.

Traceback (most recent call last):
  File "/usr/bin/snapcraft", line 9, in <module>
    load_entry_point('snapcraft==2.35', 'console_scripts', 'snapcraft')()
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 542, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2569, in load_entry_point
    return ep.load()
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2229, in load
    return self.resolve()
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2235, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
  File "/usr/lib/python3/dist-packages/snapcraft/cli/__main__.py", line 19, in <module>
    run(prog_name='snapcraft')
  File "/usr/lib/python3/dist-packages/click/core.py", line 716, in __call__
return self.main(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/click/core.py", line 696, in main
    rv = self.invoke(ctx)
  File "/usr/lib/python3/dist-packages/click/core.py", line 1037, in invoke
    return Command.invoke(self, ctx)
  File "/usr/lib/python3/dist-packages/click/core.py", line 889, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/lib/python3/dist-packages/click/core.py", line 534, in invoke
    return callback(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/click/decorators.py", line 17, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/usr/lib/python3/dist-packages/snapcraft/cli/__init__.py", line 124, in run
    ctx.forward(lifecyclecli.commands['snap'])
  File "/usr/lib/python3/dist-packages/click/core.py", line 552, in forward
    return self.invoke(cmd, **kwargs)
  File "/usr/lib/python3/dist-packages/click/core.py", line 534, in invoke
    return callback(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/snapcraft/cli/lifecycle.py", line 140, in snap project_options, directory=directory, output=output)
  File "/usr/lib/python3/dist-packages/snapcraft/internal/lifecycle/_packer.py", line 45, in snap
execute('prime', project_options)
  File "/usr/lib/python3/dist-packages/snapcraft/internal/lifecycle/_runner.py", line 80, in execute
_Executor(config, project_options).run(step, part_names)
  File "/usr/lib/python3/dist-packages/snapcraft/internal/lifecycle/_runner.py", line 138, in __init__
self._steps_run = self._init_run_states()
  File "/usr/lib/python3/dist-packages/snapcraft/internal/lifecycle/_runner.py", line 146, in _init_run_states
dirty_report = part.get_dirty_report(step)
  File "/usr/lib/python3/dist-packages/snapcraft/internal/pluginhandler/__init__.py", line 171, in get_dirty_report
state = states.get_state(self.plugin.statedir, step)
  File "/usr/lib/python3/dist-packages/snapcraft/internal/states/_state.py", line 99, in get_state
state = yaml.load(f.read())
  File "/usr/lib/python3/dist-packages/yaml/__init__.py", line 72, in load
return loader.get_single_data()
  File "/usr/lib/python3/dist-packages/yaml/constructor.py", line 37, in get_single_data
return self.construct_document(node)
  File "/usr/lib/python3/dist-packages/yaml/constructor.py", line 46, in construct_document
for dummy in generator:
  File "/usr/lib/python3/dist-packages/yaml/constructor.py", line 408, in construct_yaml_object
state = self.construct_mapping(node)
  File "/usr/lib/python3/dist-packages/yaml/constructor.py", line 204, in construct_mapping
return super().construct_mapping(node, deep=deep)
  File "/usr/lib/python3/dist-packages/yaml/constructor.py", line 129, in construct_mapping
value = self.construct_object(value_node, deep=deep)
  File "/usr/lib/python3/dist-packages/yaml/constructor.py", line 86, in construct_object
data = constructor(self, node)
  File "/usr/lib/python3/dist-packages/snapcraft/__init__.py", line 445, in dict_constructor
return OrderedDict(loader.construct_pairs(node))
  File "/usr/lib/python3/dist-packages/yaml/constructor.py", line 141, in construct_pairs
value = self.construct_object(value_node, deep=deep)
  File "/usr/lib/python3/dist-packages/yaml/constructor.py", line 86, in construct_object
data = constructor(self, node)
  File "/usr/lib/python3/dist-packages/yaml/constructor.py", line 414, in construct_undefined
node.start_mark)
yaml.constructor.ConstructorError: could not determine a constructor for the tag '!ExtractedMetadata' in "<unicode string>", line 9, column 13:
  metadata: !ExtractedMetadata

I’ve tried reverting my changes, however, I’m still experiencing this issue

My apologizes. I’m working off of a weird setup right now. I’m working off of an Ubuntu VM. Please let me know if there is anything I could do.

When reverting the changes. Did you rebuild the snap ?
Upload the snapcraft.yaml as well. It will facilitate the mentors to find the error.

Any chance that’s LP: #1741752? The fix has been proposed, and the workaround is in the bug.

1 Like

@kyrofa yup!! Same one. I came across this bug fix in my research as well and cleaning the snap resolved my issue. I’m facing a new one however it is not related to this issue. @kyrofa & @Nissaar, thank you for your help.

1 Like