← Back to issue list

`developer-id` of the `snap-revision` is not asserted

View original Github issue

Metadata

Project
craft-providers
Number
#445
Type
issue
State
open
Author
mr-cal
Labels
Type: Bug
Created
Updated
Closed

Current evaluation

Valid bug: craft-providers fails to assert developer-id when it differs from publisher-id, causing snap injection to fail for snaps like rockcraft revision 1194. Issue is 1032 days old with no maintainer comments.

Suggested action: keep open

Reason: This is a valid bug with clear reproduction steps and a concrete fix outlined in the issue body. The code in snap_installer.py still only asserts publisher-id (line 283-286), not developer-id, confirming the bug persists. Related PR #948 claims to fix this but remains open. Despite being 1032 days old, the issue remains relevant as the underlying code hasn't changed to address it.

Impact: 70 Quick Win: 42.0 Staleness: 70 Complexity: 40 Confidence: 60 Support Request: 10

Issue body

### Bug Description The ownership of rockcraft was transferred from @sergiusens to Canonical with the release of rockcraft to the stable branch. This caused the following error: ``` * Command standard error output: b'error: cannot assert: assert failed: cannot resolve prerequisite assertion: account (pMLNwd28ezFdozetvrAOlLj3UqC9HKpe)\n' ``` ### Root cause Typically, the `publisher-id` of the snap and the `developer-id` of the `snap-revision` assertion are the same. However, in rockcraft revision 1194, Canonical is the `publisher-id` and Sergio's account is the `developer-id`. This means that Sergio's account is not asserted. Related to https://github.com/canonical/craft-providers/pull/159, which adds an assertion for the publisher of a snap. ### Solution Craft-providers should: 1. collect the `developer-id` of the `snap-revision` 2. get the assertion 3. add it to the assertion file before the `snap-revision` is asserted ### To Reproduce snap install rockcraft --revision=1194 --classic rockcraft init rockcraft ### Relevant log output ```shell 2023-11-08 09:18:57.602 Set instance timer to '2023-11-08T07:18:57.431420+00:00' 2023-11-08 09:18:58.504 Holding refreshes for snaps. 2023-11-08 09:18:58.504 Executing in container: lxc --project rockcraft exec local:base-instance-buildd-base-v3-craft-comub-523148486bd0c6cc722c -- env CRAFT_MANAGED_MODE=1 snap refresh --hold 2023-11-08 09:18:58.871 Waiting for pending snap refreshes to complete. 2023-11-08 09:18:58.872 Executing in container: lxc --project rockcraft exec local:base-instance-buildd-base-v3-craft-comub-523148486bd0c6cc722c -- env CRAFT_MANAGED_MODE=1 snap watch '--last=auto-refresh?' 2023-11-08 09:18:59.082 Executing in container: lxc --project rockcraft exec local:base-instance-buildd-base-v3-craft-comub-523148486bd0c6cc722c -- env CRAFT_MANAGED_MODE=1 snap unset system proxy.http 2023-11-08 09:18:59.428 Executing in container: lxc --project rockcraft exec local:base-instance-buildd-base-v3-craft-comub-523148486bd0c6cc722c -- env CRAFT_MANAGED_MODE=1 snap unset system proxy.https 2023-11-08 09:18:59.803 Installing snap 'rockcraft' with channel=None and classic=True 2023-11-08 09:18:59.804 Installing snap 'rockcraft' from host (classic=True) 2023-11-08 09:18:59.832 Executing in container: lxc --project rockcraft exec local:base-instance-buildd-base-v3-craft-comub-523148486bd0c6cc722c -- env CRAFT_MANAGED_MODE=1 test -f /etc/craft-instance.conf 2023-11-08 09:19:00.054 Executing on host: lxc --project rockcraft file pull local:base-instance-buildd-base-v3-craft-comub-523148486bd0c6cc722c/etc/craft-instance.conf /home/developer/tmpb3lduyeh.tmp-craft/tmpi44u7gev 2023-11-08 09:19:00.238 Revisions found: host='1194', target=None 2023-11-08 09:19:00.240 Creating an assert file for snap 'rockcraft' 2023-11-08 09:19:00.241 Executing command on host: ['snap', 'known', 'account-key', 'public-key-sha3-384=BWDEoaqyr25nF5SNCvEv2v7QnM9QsfCc0PBMYD_i2NGSQ32EF2d4D0hqUel3m8ul'] 2023-11-08 09:19:00.254 Executing command on host: ['snap', 'known', 'snap-declaration', 'snap-name=rockcraft'] 2023-11-08 09:19:00.276 Executing command on host: ['snap', 'known', 'snap-revision', 'snap-revision=1194', 'snap-id=3mPIBn6L9IYLyBAZsaqjlnMk7huEtqlv'] 2023-11-08 09:19:00.298 Executing command on host: ['snap', 'known', 'account', 'account-id=canonical'] 2023-11-08 09:19:00.309 Executing in container: lxc --project rockcraft exec local:base-instance-buildd-base-v3-craft-comub-523148486bd0c6cc722c -- env CRAFT_MANAGED_MODE=1 test -d /tmp 2023-11-08 09:19:00.474 Executing on host: lxc --project rockcraft file push /home/developer/tmpgoedy3kq.tmp-craft/tmpo9zlv0h8 local:base-instance-buildd-base-v3-craft-comub-523148486bd0c6cc722c/tmp/rockcraft.assert --gid=0 --uid=0 2023-11-08 09:19:00.606 Executing on host: lxc --project rockcraft config set local:base-instance-buildd-base-v3-craft-comub-523148486bd0c6cc722c user.craft_providers.timer 2023-11-08T07:19:00.606066+00:00 2023-11-08 09:19:00.642 Executing in container: lxc --project rockcraft exec local:base-instance-buildd-base-v3-craft-comub-523148486bd0c6cc722c -- env CRAFT_MANAGED_MODE=1 snap ack /tmp/rockcraft.assert 2023-11-08 09:19:00.823 Set instance timer to '2023-11-08T07:19:00.606066+00:00' 2023-11-08 09:19:00.852 failed to inject host's snap 'rockcraft' into target environment. * Command that failed: 'lxc --project rockcraft exec local:base-instance-buildd-base-v3-craft-comub-523148486bd0c6cc722c -- env CRAFT_MANAGED_MODE=1 snap ack /tmp/rockcraft.assert' * Command exit code: 1 * Command standard error output: b'error: cannot assert: assert failed: cannot resolve prerequisite assertion: account (pMLNwd28ezFdozetvrAOlLj3UqC9HKpe)\n' 2023-11-08 09:19:00.860 Traceback (most recent call last): 2023-11-08 09:19:00.861 File "/snap/rockcraft/1194/lib/python3.10/site-packages/craft_providers/actions/snap_installer.py", line 304, in _add_assertions_from_host 2023-11-08 09:19:00.861 executor.execute_run( 2023-11-08 09:19:00.861 File "/snap/rockcraft/1194/lib/python3.10/site-packages/craft_providers/lxd/lxd_instance.py", line 293, in execute_run 2023-11-08 09:19:00.861 return self.lxc.exec( 2023-11-08 09:19:00.861 File "/snap/rockcraft/1194/lib/python3.10/site-packages/craft_providers/lxd/lxc.py", line 386, in exec 2023-11-08 09:19:00.861 return runner(final_cmd, timeout=timeout, check=check, **kwargs) 2023-11-08 09:19:00.861 File "/snap/rockcraft/1194/usr/lib/python3.10/subprocess.py", line 526, in run 2023-11-08 09:19:00.861 raise CalledProcessError(retcode, process.args, 2023-11-08 09:19:00.861 subprocess.CalledProcessError: Command '['lxc', '--project', 'rockcraft', 'exec', 'local:base-instance-buildd-base-v3-craft-comub-523148486bd0c6cc722c', '--', 'env', 'CRAFT_MANAGED_MODE=1', 'snap', 'ack', '/tmp/rockcraft.assert']' returned non-zero exit status 1. 2023-11-08 09:19:00.861 2023-11-08 09:19:00.861 The above exception was the direct cause of the following exception: 2023-11-08 09:19:00.861 Traceback (most recent call last): 2023-11-08 09:19:00.861 File "/snap/rockcraft/1194/lib/python3.10/site-packages/craft_providers/base.py", line 676, in _install_snaps 2023-11-08 09:19:00.861 snap_installer.inject_from_host( 2023-11-08 09:19:00.861 File "/snap/rockcraft/1194/lib/python3.10/site-packages/craft_providers/actions/snap_installer.py", line 362, in inject_from_host 2023-11-08 09:19:00.861 _add_assertions_from_host(executor=executor, snap_name=snap_name) 2023-11-08 09:19:00.861 File "/snap/rockcraft/1194/lib/python3.10/site-packages/craft_providers/actions/snap_installer.py", line 311, in _add_assertions_from_host 2023-11-08 09:19:00.861 raise SnapInstallationError( 2023-11-08 09:19:00.861 craft_providers.actions.snap_installer.SnapInstallationError: failed to add assertions for snap 'rockcraft' 2023-11-08 09:19:00.861 * Command that failed: 'lxc --project rockcraft exec local:base-instance-buildd-base-v3-craft-comub-523148486bd0c6cc722c -- env CRAFT_MANAGED_MODE=1 snap ack /tmp/rockcraft.assert' 2023-11-08 09:19:00.862 * Command exit code: 1 2023-11-08 09:19:00.862 * Command standard error output: b'error: cannot assert: assert failed: cannot resolve prerequisite assertion: account (pMLNwd28ezFdozetvrAOlLj3UqC9HKpe)\n' 2023-11-08 09:19:00.862 2023-11-08 09:19:00.862 The above exception was the direct cause of the following exception: 2023-11-08 09:19:00.862 Traceback (most recent call last): 2023-11-08 09:19:00.862 File "/snap/rockcraft/1194/lib/python3.10/site-packages/craft_providers/lxd/lxd_provider.py", line 152, in launched_environment 2023-11-08 09:19:00.862 instance = launch( 2023-11-08 09:19:00.862 File "/snap/rockcraft/1194/lib/python3.10/site-packages/craft_providers/lxd/launcher.py", line 714, in launch 2023-11-08 09:19:00.862 _create_instance( 2023-11-08 09:19:00.862 File "/snap/rockcraft/1194/lib/python3.10/site-packages/craft_providers/lxd/launcher.py", line 146, in _create_instance 2023-11-08 09:19:00.862 base_configuration.setup(executor=base_instance) 2023-11-08 09:19:00.862 File "/snap/rockcraft/1194/lib/python3.10/site-packages/craft_providers/base.py", line 1041, in setup 2023-11-08 09:19:00.862 self._setup_snaps(executor=executor) 2023-11-08 09:19:00.862 File "/snap/rockcraft/1194/lib/python3.10/site-packages/craft_providers/base.py", line 917, in _setup_snaps 2023-11-08 09:19:00.862 self._install_snaps(executor=executor) 2023-11-08 09:19:00.862 File "/snap/rockcraft/1194/lib/python3.10/site-packages/craft_providers/base.py", line 682, in _install_snaps 2023-11-08 09:19:00.863 raise BaseConfigurationError( 2023-11-08 09:19:00.863 craft_providers.errors.BaseConfigurationError: failed to inject host's snap 'rockcraft' into target environment. 2023-11-08 09:19:00.863 * Command that failed: 'lxc --project rockcraft exec local:base-instance-buildd-base-v3-craft-comub-523148486bd0c6cc722c -- env CRAFT_MANAGED_MODE=1 snap ack /tmp/rockcraft.assert' 2023-11-08 09:19:00.863 * Command exit code: 1 2023-11-08 09:19:00.863 * Command standard error output: b'error: cannot assert: assert failed: cannot resolve prerequisite assertion: account (pMLNwd28ezFdozetvrAOlLj3UqC9HKpe)\n' 2023-11-08 09:19:00.863 2023-11-08 09:19:00.863 The above exception was the direct cause of the following exception: 2023-11-08 09:19:00.863 Traceback (most recent call last): 2023-11-08 09:19:00.863 File "/snap/rockcraft/1194/lib/python3.10/site-packages/craft_application/application.py", line 342, in run 2023-11-08 09:19:00.863 self.run_managed(platform, build_for) 2023-11-08 09:19:00.863 File "/snap/rockcraft/1194/lib/python3.10/site-packages/craft_application/application.py", line 222, in run_managed 2023-11-08 09:19:00.863 with self.services.provider.instance( 2023-11-08 09:19:00.863 File "/snap/rockcraft/1194/usr/lib/python3.10/contextlib.py", line 135, in __enter__ 2023-11-08 09:19:00.863 return next(self.gen) 2023-11-08 09:19:00.864 File "/snap/rockcraft/1194/lib/python3.10/site-packages/craft_application/services/provider.py", line 101, in instance 2023-11-08 09:19:00.864 with provider.launched_environment( 2023-11-08 09:19:00.864 File "/snap/rockcraft/1194/usr/lib/python3.10/contextlib.py", line 135, in __enter__ 2023-11-08 09:19:00.864 return next(self.gen) 2023-11-08 09:19:00.864 File "/snap/rockcraft/1194/lib/python3.10/site-packages/craft_providers/lxd/lxd_provider.py", line 167, in launched_environment 2023-11-08 09:19:00.864 raise LXDError(str(error)) from error 2023-11-08 09:19:00.864 craft_providers.lxd.errors.LXDError: failed to inject host's snap 'rockcraft' into target environment. 2023-11-08 09:19:00.864 * Command that failed: 'lxc --project rockcraft exec local:base-instance-buildd-base-v3-craft-comub-523148486bd0c6cc722c -- env CRAFT_MANAGED_MODE=1 snap ack /tmp/rockcraft.assert' 2023-11-08 09:19:00.864 * Command exit code: 1 2023-11-08 09:19:00.864 * Command standard error output: b'error: cannot assert: assert failed: cannot resolve prerequisite assertion: account (pMLNwd28ezFdozetvrAOlLj3UqC9HKpe)\n' 2023-11-08 09:19:00.864 Full execution log: '/home/developer/.local/state/rockcraft/log/rockcraft-20231108-091748.770373.log' ```

Evaluation history

Date Model Scores Action Summary
qwen3.6-35b-a3b-mtp-q6
Impact: 70
Quick Win: 42.0
Staleness: 70
Complexity: 40
Confidence: 60
Support Request: 10
keep open Valid bug: craft-providers fails to assert developer-id when it differs from publisher-id, causing snap injection to fail for snaps like rockcraft revision 1194. Issue is 1032 days old with no maintainer comments.
qwen/qwen3.6-35b-a3b
Staleness: 90
Complexity: 15
Confidence: 85
Support Request: 0
needs triage craft-providers fails to inject snaps when the developer-id differs from the publisher-id, causing snap assertion failures in containers. Currently open with no maintainer comments since November 2023.
qwen3.6-35b-a3b-mtp-q6
Staleness: 70
Complexity: 30
Confidence: 65
Support Request: 5
needs triage craft-providers fails to inject rockcraft snap into containers because it misses the developer-id assertion from the snap-revision, causing snap ack to fail. Open since 2023, awaiting implementation.
qwen3.6-35b-a3b-mtp-q6
Staleness: 85
Complexity: 30
Confidence: 80
Support Request: 5
needs triage craft-providers fails to inject snaps when developer-id differs from publisher-id due to missing developer-id assertion. Open for ~2.6 years with no maintainer response or triage.

Update history

No update history recorded yet.

Related work

  • Related To: craft-providers#948 (confidence 85%)

    PR #948 is a failing reproducer claiming to fix this issue by parsing developer-id from snap-revision assertions, but the fix hasn't been merged and the issue remains open.

Related issues

Issue Project State Summary Similarity
#948 test: failing reproducer - snap developer-id not asserted craft-providers open PR claims to fix #445 by parsing developer-id from snap-revision assertions, but the fix (commit 5df1922) does not exist in the codebase and the issue remains open.
76%