It is not possible to install a build-snap with a closed risk

Bug #1716055 reported by Leo Arias on 2017-09-08
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Snapcraft
High
Sergio Schvezov

Bug Description

When trying to install a snap from a risk that is closed, the snap from the lower risk level that follows it will be installed.

For example, in:

$ snapcraft status u1test-snap-with-tracks
Track Arch Channel Version Revision
latest all stable latest-stable 2
                      candidate ^ ^
                      beta ^ ^
                      edge latest-edge 3
test-track-1 all stable - -
                      candidate - -
                      beta test-track-1-beta 5
                      edge ^ ^

If I run sudo snap install u1test-snap-with-tracks --candidate, because candidate is closed, stable will be installed instead.

However, when using build-snaps in snapcraft, if I specify:

build-snaps: [u1test-snap-with-tracks/latest/candidate]

I get:

Traceback (most recent call last):
  File "/home/ubuntu/venv/snapcraft/bin/snapcraft", line 6, in <module>
    exec(compile(open(__file__).read(), __file__, 'exec'))
  File "/home/ubuntu/workspace/canonical/snapcraft/bin/snapcraft", line 36, in <module>
    obj=dict(project=snapcraft.ProjectOptions()))
  File "/home/ubuntu/venv/snapcraft/lib/python3.5/site-packages/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/home/ubuntu/venv/snapcraft/lib/python3.5/site-packages/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/home/ubuntu/venv/snapcraft/lib/python3.5/site-packages/click/core.py", line 1043, in invoke
    return Command.invoke(self, ctx)
  File "/home/ubuntu/venv/snapcraft/lib/python3.5/site-packages/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/ubuntu/venv/snapcraft/lib/python3.5/site-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/home/ubuntu/venv/snapcraft/lib/python3.5/site-packages/click/decorators.py", line 17, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/home/ubuntu/workspace/canonical/snapcraft/snapcraft/cli/__init__.py", line 110, in run
    ctx.forward(lifecyclecli.commands['snap'])
  File "/home/ubuntu/venv/snapcraft/lib/python3.5/site-packages/click/core.py", line 553, in forward
    return self.invoke(cmd, **kwargs)
  File "/home/ubuntu/venv/snapcraft/lib/python3.5/site-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/home/ubuntu/workspace/canonical/snapcraft/snapcraft/cli/lifecycle.py", line 132, in snap
    project_options, directory=directory, output=output)
  File "/home/ubuntu/workspace/canonical/snapcraft/snapcraft/internal/lifecycle.py", line 349, in snap
    execute('prime', project_options)
  File "/home/ubuntu/workspace/canonical/snapcraft/snapcraft/internal/lifecycle.py", line 120, in execute
    repo.snaps.install_snaps(config.build_snaps)
  File "/home/ubuntu/workspace/canonical/snapcraft/snapcraft/internal/repo/snaps.py", line 167, in install_snaps
    snap_pkg.install()
  File "/home/ubuntu/workspace/canonical/snapcraft/snapcraft/internal/repo/snaps.py", line 136, in install
    if self.is_classic():
  File "/home/ubuntu/workspace/canonical/snapcraft/snapcraft/internal/repo/snaps.py", line 119, in is_classic
    return store_channels[self.channel]['confinement'] == 'classic'
KeyError: 'latest/candidate'

To reproduce, run the latest unreleased snapcraft with the snapcraft.yaml from http://paste.ubuntu.com/25492456/

It works when an open channel is specified, like:

build-snaps: [u1test-snap-with-tracks/latest/stable]

Changed in snapcraft:
importance: Undecided → High
assignee: nobody → Sergio Schvezov (sergiusens)
milestone: none → 2.35
status: New → Triaged
Changed in snapcraft:
milestone: 2.35 → none
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers