Node as stage-snap still not working

Adding node/12/stable to my stage-snaps breaks my build.

When I comment out these two lines in my snapcraft.yaml, it works:

    stage-snaps:
      - node/12/stable

I get an error that might be similar to the one described here. Instead of a segmentation fault, I get a python MemoryError exception

...
Priming mypartname

Traceback (most recent call last):
  File "/snap/snapcraft/4673/bin/snapcraft", line 11, in <module>
    load_entry_point('snapcraft==3.9.1', 'console_scripts', 'snapcraft')()
  File "/snap/snapcraft/4673/lib/python3.6/site-packages/click/core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "/snap/snapcraft/4673/lib/python3.6/site-packages/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/snap/snapcraft/4673/lib/python3.6/site-packages/click/core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/snap/snapcraft/4673/lib/python3.6/site-packages/snapcraft/cli/_command.py", line 88, in invoke
    return super().invoke(ctx)
  File "/snap/snapcraft/4673/lib/python3.6/site-packages/click/core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/snap/snapcraft/4673/lib/python3.6/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/snap/snapcraft/4673/lib/python3.6/site-packages/snapcraft/cli/lifecycle.py", line 272, in snap
    _execute(steps.PRIME, parts=tuple(), pack_project=True, output=output, **kwargs)
  File "/snap/snapcraft/4673/lib/python3.6/site-packages/snapcraft/cli/lifecycle.py", line 77, in _execute
    lifecycle.execute(step, project_config, parts)
  File "/snap/snapcraft/4673/lib/python3.6/site-packages/snapcraft/internal/lifecycle/_runner.py", line 134, in execute
    executor.run(step, part_names)
  File "/snap/snapcraft/4673/lib/python3.6/site-packages/snapcraft/internal/lifecycle/_runner.py", line 188, in run
    self._handle_step(part_names, part, step, current_step, cli_config)
  File "/snap/snapcraft/4673/lib/python3.6/site-packages/snapcraft/internal/lifecycle/_runner.py", line 202, in _handle_step
    getattr(self, "_run_{}".format(current_step.name))(part)
  File "/snap/snapcraft/4673/lib/python3.6/site-packages/snapcraft/internal/lifecycle/_runner.py", line 277, in _run_prime
    self._run_step(step=steps.PRIME, part=part, progress="Priming")
  File "/snap/snapcraft/4673/lib/python3.6/site-packages/snapcraft/internal/lifecycle/_runner.py", line 322, in _run_step
    getattr(part, step.name)()
  File "/snap/snapcraft/4673/lib/python3.6/site-packages/snapcraft/internal/pluginhandler/__init__.py", line 878, in prime
    self._do_runner_step(steps.PRIME)
  File "/snap/snapcraft/4673/lib/python3.6/site-packages/snapcraft/internal/pluginhandler/__init__.py", line 263, in _do_runner_step
    return getattr(self._runner, "{}".format(step.name))()
  File "/snap/snapcraft/4673/lib/python3.6/site-packages/snapcraft/internal/pluginhandler/_runner.py", line 101, in prime
    "override-prime", self._override_prime_scriptlet, self._primedir
  File "/snap/snapcraft/4673/lib/python3.6/site-packages/snapcraft/internal/pluginhandler/_runner.py", line 164, in _run_scriptlet
    scriptlet_name, function_call.strip()
  File "/snap/snapcraft/4673/lib/python3.6/site-packages/snapcraft/internal/pluginhandler/_runner.py", line 220, in _handle_builtin_function
    function(**function_args)
  File "/snap/snapcraft/4673/lib/python3.6/site-packages/snapcraft/internal/pluginhandler/__init__.py", line 904, in _do_prime
    dependency_paths = self._handle_elf(snap_files)
  File "/snap/snapcraft/4673/lib/python3.6/site-packages/snapcraft/internal/pluginhandler/__init__.py", line 914, in _handle_elf
    elf_files = elf.get_elf_files(self._project.prime_dir, snap_files)
  File "/snap/snapcraft/4673/lib/python3.6/site-packages/snapcraft/internal/elf.py", line 649, in get_elf_files
    elf_file = ElfFile(path=path)
  File "/snap/snapcraft/4673/lib/python3.6/site-packages/snapcraft/internal/elf.py", line 301, in __init__
    self._extract_attributes()
  File "/snap/snapcraft/4673/lib/python3.6/site-packages/snapcraft/internal/elf.py", line 339, in _extract_attributes
    for note in segment.iter_notes():
  File "/snap/snapcraft/4673/lib/python3.6/site-packages/elftools/elf/notes.py", line 32, in iter_notes
    desc_data = bytes2str(elffile.stream.read(note['n_descsz']))
MemoryError

Has anyone gotten it to work?

Edit

This is probably because node is a classic snap. Is it not possible to have a classic snap as a stage-snap?

If so, how should I install node? Is the plugin the only way? I have no need for installing npm/yarn, and I’d like to keep the snap as small as possible.

I don’t think it is because of classic.

Indeed I just tried a super simple test and it built fine:

mkdir foo && cd foo
snapcraft init

add the following stage-snaps line of snap/snapcraft.yaml:

parts:
  my-part:
    # See 'snapcraft plugins'
    plugin: nil
    stage-snaps: [ node/12/stable ]

and it built fine.

Did you change confinement to strict?