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

Bug #1716055 reported by Leo Arias
10
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Snapcraft
Triaged
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  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.