← Back to issue list

Python exception when stage dir does not exist

View original Launchpad issue

Metadata

Project
snapcraft
Number
#1814430
Type
issue
State
open
Author
~tim-sueberkrueb
Labels
Created
2019-02-03 10:02:24.066035+00:00
Updated
2019-02-03 10:02:24.066035+00:00
Closed

Current evaluation

No evaluation has been recorded for this issue yet.

Issue body

When a folder specified with the `stage` key does not actually exist, this Python exception is thrown: ``` # cat /tmp/tmpryszj5if/trace.txt Traceback (most recent call last): File "/snap/snapcraft/2374/bin/snapcraft", line 11, in <module> load_entry_point('snapcraft==3.0.1', 'console_scripts', 'snapcraft')() File "/snap/snapcraft/2374/lib/python3.5/site-packages/snapcraft/cli/__main__.py", line 81, in run run_snapcraft(prog_name="snapcraft") File "/snap/snapcraft/2374/lib/python3.5/site-packages/click/core.py", line 722, in __call__ return self.main(*args, **kwargs) File "/snap/snapcraft/2374/lib/python3.5/site-packages/click/core.py", line 697, in main rv = self.invoke(ctx) File "/snap/snapcraft/2374/lib/python3.5/site-packages/click/core.py", line 1066, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File "/snap/snapcraft/2374/lib/python3.5/site-packages/click/core.py", line 895, in invoke return ctx.invoke(self.callback, **ctx.params) File "/snap/snapcraft/2374/lib/python3.5/site-packages/click/core.py", line 535, in invoke return callback(*args, **kwargs) File "/snap/snapcraft/2374/lib/python3.5/site-packages/snapcraft/cli/lifecycle.py", line 236, in snap _execute(steps.PRIME, parts=[], pack_project=True, output=output, **kwargs) File "/snap/snapcraft/2374/lib/python3.5/site-packages/snapcraft/cli/lifecycle.py", line 94, in _execute lifecycle.execute(step, project_config, parts) File "/snap/snapcraft/2374/lib/python3.5/site-packages/snapcraft/internal/lifecycle/_runner.py", line 80, in execute executor.run(step, part_names) File "/snap/snapcraft/2374/lib/python3.5/site-packages/snapcraft/internal/lifecycle/_runner.py", line 134, in run self._handle_step(part_names, part, step, current_step, cli_config) File "/snap/snapcraft/2374/lib/python3.5/site-packages/snapcraft/internal/lifecycle/_runner.py", line 148, in _handle_step getattr(self, "_run_{}".format(current_step.name))(part) File "/snap/snapcraft/2374/lib/python3.5/site-packages/snapcraft/internal/lifecycle/_runner.py", line 212, in _run_stage self._run_step(step=steps.STAGE, part=part, progress="Staging") File "/snap/snapcraft/2374/lib/python3.5/site-packages/snapcraft/internal/lifecycle/_runner.py", line 267, in _run_step getattr(part, step.name)() File "/snap/snapcraft/2374/lib/python3.5/site-packages/snapcraft/internal/pluginhandler/__init__.py", line 689, in stage self._runner.stage() File "/snap/snapcraft/2374/lib/python3.5/site-packages/snapcraft/internal/pluginhandler/_runner.py", line 84, in stage "override-stage", self._override_stage_scriptlet, self._stagedir File "/snap/snapcraft/2374/lib/python3.5/site-packages/snapcraft/internal/pluginhandler/_runner.py", line 137, in _run_scriptlet scriptlet_name, function_call.strip() File "/snap/snapcraft/2374/lib/python3.5/site-packages/snapcraft/internal/pluginhandler/_runner.py", line 193, in _handle_builtin_function function(**function_args) File "/snap/snapcraft/2374/lib/python3.5/site-packages/snapcraft/internal/pluginhandler/__init__.py", line 711, in _do_stage fixup_func=fixup_func, File "/snap/snapcraft/2374/lib/python3.5/site-packages/snapcraft/internal/pluginhandler/__init__.py", line 1064, in _migrate_files os.remove(dst) IsADirectoryError: [Errno 21] Is a directory: '/root/stage/lib' ``` The expected behavior is for snapcraft to handle the exception or prevent it beforehand and print a nice error message.

Evaluation history

No evaluation history available.