I get a buildtime error when I use $SNAP/usr/bin/ruby $SNAP/usr/share/librarian-puppet/bin/librarian-puppet
:
Priming my-part
Traceback (most recent call last):
File "/usr/bin/snapcraft", line 9, in <module>
load_entry_point('snapcraft==2.34', '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 1060, in invoke
return _process_result(sub_ctx.command.invoke(sub_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/snapcraft/cli/lifecycle.py", line 132, in snap
project_options, directory=directory, output=output)
File "/usr/lib/python3/dist-packages/snapcraft/internal/lifecycle.py", line 349, in snap
execute('prime', project_options)
File "/usr/lib/python3/dist-packages/snapcraft/internal/lifecycle.py", line 130, in execute
_Executor(config, project_options).run(step, part_names)
File "/usr/lib/python3/dist-packages/snapcraft/internal/lifecycle.py", line 228, in run
self._create_meta(step, part_names)
File "/usr/lib/python3/dist-packages/snapcraft/internal/lifecycle.py", line 269, in _create_meta
self.config.snapcraft_yaml_path)
File "/usr/lib/python3/dist-packages/snapcraft/internal/meta.py", line 84, in create_snap_packaging
packaging.write_snap_yaml()
File "/usr/lib/python3/dist-packages/snapcraft/internal/meta.py", line 111, in write_snap_yaml
snap_yaml = self._compose_snap_yaml()
File "/usr/lib/python3/dist-packages/snapcraft/internal/meta.py", line 276, in _compose_snap_yaml
snap_yaml['apps'] = self._wrap_apps(self._config_data['apps'])
File "/usr/lib/python3/dist-packages/snapcraft/internal/meta.py", line 385, in _wrap_apps
self._wrap_app(app, apps[app])
File "/usr/lib/python3/dist-packages/snapcraft/internal/meta.py", line 392, in _wrap_app
app[k] = self._wrap_exe(app[k], '{}-{}'.format(k, name))
File "/usr/lib/python3/dist-packages/snapcraft/internal/meta.py", line 365, in _wrap_exe
with open(exepath, 'rb') as exefile:
FileNotFoundError: [Errno 2] No such file or directory: '/root/build_snaplib/prime/$SNAP/usr/bin/ruby'
Using usr/bin/ruby usr/share/librarian-puppet/bin/librarian-puppet
I get a bit further; it builds, executes and crashes:
$ snap install snaplib_0.1_amd64.snap --devmode --dangerous
snaplib 0.1 installed
$ snaplib.librarian-puppet
<internal:gem_prelude>:4:in `require': cannot load such file -- rubygems.rb (LoadError)
from <internal:gem_prelude>:4:in `<internal:gem_prelude>'
I’m honestly a bit surprised that it takes this much effort to include a simple apt dependency in a snap, I thought most of the snap magic was invisible to the snapped app itself? I was under the impression that any stage-package
would just be overlaid on top of the root filesystem, as if it was installed on the core snap…?