{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":44672744,"defaultBranch":"master","name":"snapd","ownerLogin":"snapcore","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2015-10-21T11:51:46.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/19532717?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1714124731.0","currentOid":""},"activityList":{"items":[{"before":"1b2ecef37df6874ef6197b1c91078cafd234cd84","after":"1d0c82a19772c8fe378a3f61b2b7023d2c840866","ref":"refs/heads/master","pushedAt":"2024-06-05T17:35:22.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"sergiocazzolato","name":"Sergio Cazzolato","path":"/sergiocazzolato","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5382983?s=80&v=4"},"commit":{"message":"tests: add packaging link for fedora-40 (#14049)\n\nThis is needed to be able to run spread tests in fedora-40","shortMessageHtmlLink":"tests: add packaging link for fedora-40 (#14049)"}},{"before":"d9654348d0ce2e766e9905873a567c38db58cbd8","after":"1b2ecef37df6874ef6197b1c91078cafd234cd84","ref":"refs/heads/master","pushedAt":"2024-06-05T14:55:47.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"ernestl","name":"Ernest Lotter","path":"/ernestl","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5872705?s=80&v=4"},"commit":{"message":"o/snapstate: enable split refresh for auto-refresh (#14039)\n\n* o/snapstate: enable split refresh for auto-refresh\r\n\r\nEnable splitting the single reboot refresh for hybrid systems in the\r\nauto-refresh scenario.\r\n\r\nSigned-off-by: Miguel Pires \r\n\r\n* o/snapstate: replace test\r\n\r\nSigned-off-by: Miguel Pires \r\n\r\n---------\r\n\r\nSigned-off-by: Miguel Pires ","shortMessageHtmlLink":"o/snapstate: enable split refresh for auto-refresh (#14039)"}},{"before":"fb60be80963cf8bfed38e46df444fbddc4c9b328","after":"d9654348d0ce2e766e9905873a567c38db58cbd8","ref":"refs/heads/master","pushedAt":"2024-06-05T12:17:34.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"ernestl","name":"Ernest Lotter","path":"/ernestl","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5872705?s=80&v=4"},"commit":{"message":"interfaces/desktop: allow DBus communication with colord (#13353)\n\n* interfaces/desktop: allow DBus communication with colord\r\n\r\nThese set of rules allow for color managed applications to communicate with\r\ncolord, which will be able to tell such applications which ICC profile to load.\r\n\r\nSigned-off-by: Sergio Schvezov \r\n\r\n* interfaces/desktop: fix typo in colord comment\r\n\r\nCo-authored-by: Philip Meulengracht \r\n\r\n---------\r\n\r\nSigned-off-by: Sergio Schvezov \r\nCo-authored-by: Philip Meulengracht ","shortMessageHtmlLink":"interfaces/desktop: allow DBus communication with colord (#13353)"}},{"before":"d25e47407a588d0f6d1c4c55dd1e96ab584990da","after":"fb60be80963cf8bfed38e46df444fbddc4c9b328","ref":"refs/heads/master","pushedAt":"2024-06-05T11:30:09.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"ernestl","name":"Ernest Lotter","path":"/ernestl","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5872705?s=80&v=4"},"commit":{"message":"boot: do not import go-efilib on nosecboot (#14036)\n\ngo-efilib always queries for efivarfs on initialization, which is not\r\nneeded for most use of snapd. We can remove import of go-efilib\r\nwhen nosecboot tag is used.","shortMessageHtmlLink":"boot: do not import go-efilib on nosecboot (#14036)"}},{"before":"366f6d8e3ff8c06600d3d54b07e1aec7b8b5441c","after":"d25e47407a588d0f6d1c4c55dd1e96ab584990da","ref":"refs/heads/master","pushedAt":"2024-06-05T11:27:29.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"ernestl","name":"Ernest Lotter","path":"/ernestl","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5872705?s=80&v=4"},"commit":{"message":"tests/main/snapd-snap: stop testing building of snapd snap on 14.04 (#14030)\n\nNot very useful to build snapd snap from 14.04 given it has to use\r\nlxd. The VMs for 14.04 are not enough. So let's disable the test.","shortMessageHtmlLink":"tests/main/snapd-snap: stop testing building of snapd snap on 14.04 (#…"}},{"before":"1e0d03f761184e2f58b207920e41b61edcb23eca","after":"366f6d8e3ff8c06600d3d54b07e1aec7b8b5441c","ref":"refs/heads/master","pushedAt":"2024-06-05T10:49:21.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"ernestl","name":"Ernest Lotter","path":"/ernestl","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5872705?s=80&v=4"},"commit":{"message":"notify: Dont send refresh complete notification if snap refresh observe is connected (#13936)\n\n* notify: Don't show complete refresh notification if refresh-observe is connected\r\n\r\nThe new Refresh Awareness specification moves all the work of\r\nshowing refresh progress and notifications into a specific snap.\r\nTo detect when that snap is available or not, snapd checks if\r\nthere is a snap with the snap-refresh-observe interface\r\nconnected. In that case, it presumes that it will manage all\r\nthe notifications, and won't send any by itself.\r\n\r\nUnfortunately, only the \"Pending refresh\" notification checks\r\nthis case, while the \"Refresh complete\" notification doesn't.\r\nThis results in duplicated notifications.\r\n\r\nThis patch fixes this.\r\n\r\n* Fix tests\r\n\r\n* Remove debug print\r\n\r\n* Update overlord/snapstate/agentnotify/agentnotify.go\r\n\r\nCo-authored-by: Zeyad Yasser \r\n\r\n* Update overlord/snapstate/agentnotify/agentnotify.go\r\n\r\nCo-authored-by: Zeyad Yasser \r\n\r\n* Added tests as requested\r\n\r\n* Move the interface check into its own, shared function\r\n\r\n---------\r\n\r\nCo-authored-by: Zeyad Yasser ","shortMessageHtmlLink":"notify: Dont send refresh complete notification if snap refresh obser…"}},{"before":"3fc2456b9c4ed9afab922287917ff2b8b475e7f6","after":"1e0d03f761184e2f58b207920e41b61edcb23eca","ref":"refs/heads/master","pushedAt":"2024-06-05T10:46:07.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"ernestl","name":"Ernest Lotter","path":"/ernestl","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5872705?s=80&v=4"},"commit":{"message":"api-snaps: add refresh-observe access to /v2/snaps/{name} (#13931)\n\nAccess to /v2/snaps/{name} is required for snap-refresh-observe\r\nbecause it is needed to get the path for the XXXXX.desktop file,\r\nwhich is needed for the icon and the visible name.\r\n\r\nIt should not be a problem because /v2/snaps is already\r\nenabled.","shortMessageHtmlLink":"api-snaps: add refresh-observe access to /v2/snaps/{name} (#13931)"}},{"before":"ee7387f4d470785dfb2357eccadca6fb6c2363ae","after":"3fc2456b9c4ed9afab922287917ff2b8b475e7f6","ref":"refs/heads/master","pushedAt":"2024-06-05T10:12:51.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"ernestl","name":"Ernest Lotter","path":"/ernestl","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5872705?s=80&v=4"},"commit":{"message":"run-checks: skip high-level tests requirement for interfaces with a standalone test (#14033)\n\n* run-checks: skip high-level tests requirement for interfaces with a standalone test\r\n\r\ninterfaces-many-{core,snap}-provided tests are doing minimal testing for\r\nall interfaces. This became one of the slowest tests that it started to timeout.\r\n\r\nA check is added to relax the requirement for high-level tests and\r\nskip if a standalone test already exists for the interface which at\r\nleast connects and disconnects the interface.\r\n\r\nThe requirement can be relaxed further in the future to skip the\r\nconnect/disconnect checks allowing more tests to be skipped.\r\n\r\nSigned-off-by: Zeyad Gouda \r\n\r\n* run-checks: relax interface checks and error on redundant tests\r\n\r\nSigned-off-by: Zeyad Gouda \r\n\r\n* tests: s/interfaces-input/interfaces-raw-input\r\n\r\nSigned-off-by: Zeyad Gouda \r\n\r\n---------\r\n\r\nSigned-off-by: Zeyad Gouda ","shortMessageHtmlLink":"run-checks: skip high-level tests requirement for interfaces with a s…"}},{"before":"05c117cc187feeee8581629d32dc751a4e43c292","after":"ee7387f4d470785dfb2357eccadca6fb6c2363ae","ref":"refs/heads/master","pushedAt":"2024-06-05T08:04:52.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"ernestl","name":"Ernest Lotter","path":"/ernestl","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5872705?s=80&v=4"},"commit":{"message":".github/workflows: enable test workflow to retrieve pr labels for any repo (#14048)","shortMessageHtmlLink":".github/workflows: enable test workflow to retrieve pr labels for any…"}},{"before":"3e78b8073880c98b2b7e1918e2652ed80b5b6283","after":"05c117cc187feeee8581629d32dc751a4e43c292","ref":"refs/heads/master","pushedAt":"2024-06-04T01:43:10.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"sergiocazzolato","name":"Sergio Cazzolato","path":"/sergiocazzolato","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5382983?s=80&v=4"},"commit":{"message":"tests: revert change to used --comment in adduser (#14038)\n\nThe nested tests are failing bucause of this problem\r\n\r\n--comment is not supported by all the adduser versions (Unknown option:\r\ncomment)","shortMessageHtmlLink":"tests: revert change to used --comment in adduser (#14038)"}},{"before":"8e6c01a05491a2f12e5e59401aeebc7ef162769f","after":"3e78b8073880c98b2b7e1918e2652ed80b5b6283","ref":"refs/heads/master","pushedAt":"2024-06-03T20:23:41.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"alfonsosanchezbeato","name":null,"path":"/alfonsosanchezbeato","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3833021?s=80&v=4"},"commit":{"message":"tests/nested: use None as single datasource in the tests\n\nWe are not actually using the NoCloud datasource, so just use None\nwhich is the one really used by cloud-init if not specified by\nexternal means.","shortMessageHtmlLink":"tests/nested: use None as single datasource in the tests"}},{"before":"6abc1a3e6a7d9ba832510e7e9cf852fd1b7f4d40","after":"8e6c01a05491a2f12e5e59401aeebc7ef162769f","ref":"refs/heads/master","pushedAt":"2024-06-03T15:42:08.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"ernestl","name":"Ernest Lotter","path":"/ernestl","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5872705?s=80&v=4"},"commit":{"message":"o/snapstate: ensure default provider waits for base in split refresh (#13991)\n\nIn a split refresh, an app may refresh in parallel with the model base\r\n(if it doesn't depend on it). However, it might pull in a default\r\nprovider that depends on the model. This change ensures that the default\r\nprovider waits for the model base to refresh and becomes available but\r\nnot for the entire essential snap task chain to finish (since that\r\nrequires a reboot).\r\n\r\nSigned-off-by: Miguel Pires ","shortMessageHtmlLink":"o/snapstate: ensure default provider waits for base in split refresh (#…"}},{"before":"2e53b2fb538a74afb2a9fc2cc1d199ea81363dc9","after":"6abc1a3e6a7d9ba832510e7e9cf852fd1b7f4d40","ref":"refs/heads/master","pushedAt":"2024-06-03T15:29:13.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"ernestl","name":"Ernest Lotter","path":"/ernestl","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5872705?s=80&v=4"},"commit":{"message":"a/snapasserts, o/assertstate: implement validate-component task handler (#13964)\n\n* a/snapasserts: add helpers for checking validity of component against assertions\r\n\r\n* a/snapasserts, o/assertstate: implement validate-component task handler\r\n\r\n* o/assertstate: test validate-component handler with provenance","shortMessageHtmlLink":"a/snapasserts, o/assertstate: implement validate-component task handl…"}},{"before":"13676e7402dc5feccb69277fdffa5f3a334c1bc4","after":"2e53b2fb538a74afb2a9fc2cc1d199ea81363dc9","ref":"refs/heads/master","pushedAt":"2024-06-03T15:27:48.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"ernestl","name":"Ernest Lotter","path":"/ernestl","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5872705?s=80&v=4"},"commit":{"message":"o/ifacestate: properly undo setup-profiles on component installation (#13977)\n\n* o/ifacestate: properly undo setup-profiles on component installation\r\n\r\n* o/snapstate: remove check of task status when getting components from task\r\n\r\n* o/ifacestate: refactor setupProfilesForSnap to setupProfilesForAppSet\r\n\r\nThis allows us to pass in a different app sets in doSetupProfiles and in\r\nundoSetupProfiles. The latter will not have components that were just\r\nset up in it.","shortMessageHtmlLink":"o/ifacestate: properly undo setup-profiles on component installation (#…"}},{"before":"e532d3f8ae07d6ec68b64a63006ab08d53e46427","after":"13676e7402dc5feccb69277fdffa5f3a334c1bc4","ref":"refs/heads/master","pushedAt":"2024-06-03T15:27:24.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"ernestl","name":"Ernest Lotter","path":"/ernestl","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5872705?s=80&v=4"},"commit":{"message":"many: update snap.ReadComponentInfoFromContainer to take in an optional snap.ComponentSideInfo that contains the component revision (#13979)\n\n* many: update snap.ReadComponentInfoFromContainer to take in an optional snap.ComponentSideInfo that contains the component revision\r\n\r\n* snap: add back NewComponentInfo function\r\n\r\n* daemon, snap, interfaces: replace manual creation of ComponentInfo with usage of NewComponentInfo","shortMessageHtmlLink":"many: update snap.ReadComponentInfoFromContainer to take in an option…"}},{"before":"8377d7dbaebd36dcfdc142b30f63efbfc108f6d9","after":"e532d3f8ae07d6ec68b64a63006ab08d53e46427","ref":"refs/heads/master","pushedAt":"2024-06-03T15:26:59.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"ernestl","name":"Ernest Lotter","path":"/ernestl","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5872705?s=80&v=4"},"commit":{"message":"daemon: make sure to re-pin validation sets that were already pinned when enforcing new validation sets (#13989)\n\n* daemon: make sure to re-pin validation sets that were already pinned when enforcing new validation sets\r\n\r\n* tests: update snap-refresh-enforce to verify that validation sets do not become unpinned when enforcing new sets","shortMessageHtmlLink":"daemon: make sure to re-pin validation sets that were already pinned …"}},{"before":"018c9cf9572953222b55b90266e9431ff41d4c5a","after":"8377d7dbaebd36dcfdc142b30f63efbfc108f6d9","ref":"refs/heads/master","pushedAt":"2024-06-03T15:26:30.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"ernestl","name":"Ernest Lotter","path":"/ernestl","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5872705?s=80&v=4"},"commit":{"message":"store: interface with the store to request snap resources (#13982)\n\n* store: add resources to snap action results\r\n\r\n* store: parse resources into snap components in store responses\r\n\r\n* store: only request resources in SnapAction if one of the actions includes resources\r\n\r\n* snap: add function for converting a string to a ComponentType, with checks\r\n\r\n* store: explictly ignore unknown component types\r\n\r\n* store: remove usage of strings.CutPrefix\r\n\r\n* store: add comment noting that resources do not have download deltas\r\n\r\n* snap: correct doc comment on ComponentTypeFromString\r\n\r\n* store: remove incorrect usage of description in component summary","shortMessageHtmlLink":"store: interface with the store to request snap resources (#13982)"}},{"before":"9e2e5e206ad939044a9b8e1e9a9e58421bd2b77a","after":"018c9cf9572953222b55b90266e9431ff41d4c5a","ref":"refs/heads/master","pushedAt":"2024-06-03T15:19:13.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"ernestl","name":"Ernest Lotter","path":"/ernestl","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5872705?s=80&v=4"},"commit":{"message":"i/builtin/power-control: add paths for battery charging thresholds to power-control interface (#13722)\n\n* Add paths for battery charging thresholds to power-control interface\r\n\r\n* Set to use realpath for battery charging threshold\r\n\r\n* Extend paths for battery threshold & other functionality to work as part of auto-cpufreq\r\n\r\n* Remove redundant PROC pid cmdline rule\r\n\r\n* Move ` closing to an empty line","shortMessageHtmlLink":"i/builtin/power-control: add paths for battery charging thresholds to…"}},{"before":"75f813b41b70bec25a9515141fa54aaf2ccba944","after":"9e2e5e206ad939044a9b8e1e9a9e58421bd2b77a","ref":"refs/heads/master","pushedAt":"2024-06-03T13:18:49.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"ernestl","name":"Ernest Lotter","path":"/ernestl","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5872705?s=80&v=4"},"commit":{"message":"o/snapstate: handling of unexpected runtime restart (#14002)\n\n* o/snapstate: when invoked for rollback, check for any changes related to snapd\r\n\r\nWhen the snapd.service unit fails to be activated, an OnFailure handler will\r\nexecute snap-failure which in turn starts the snapd process from the previous\r\nrevision of the snap with SNAPD_REVERT_TO_REV set in its environment. It may\r\nhappen that the snapd unit fails at runtime without an associated change to the\r\nsnapd snap, however snap-failure is not able to detect such case, and so the\r\nsnapd process started in its context would continue to run. Avoid this by\r\nextending the logic within snapd to check it if has been started by snap-failure\r\nwith the intention of handling a rollback, and so whether there is a change\r\nrelated to snapd snap in the state. When the conditions have not been met, snapd\r\nexits and snap-failure continues to restart the snapd service.\r\n\r\nRelated issues: SNAPDENG-21605\r\n\r\nSigned-off-by: Maciej Borzecki \r\n\r\n* tests/core/snapd-failover: account for improved snap-failure behavior\r\n\r\nSigned-off-by: Maciej Borzecki \r\n\r\n* overlord: add Is() to startup error\r\n\r\nAdd Is() support to startupError, so that error can be introspected at runtime.\r\n\r\nSigned-off-by: Maciej Borzecki \r\n\r\n* o/snapstate: return an explicit error from StartUp() when no recovery was detected\r\n\r\nWhen snapd is invoked in a context of recovery but the state does not reflect\r\nthis, return an explicit error indicating that further startup should be carried out.\r\n\r\nSigned-off-by: Maciej Borzecki \r\n\r\n* daemon: return an explicit error when startup in recovery context was aborted\r\n\r\nReturn an explicit error when startup in failure recovery context was aborted\r\ndue to lack of operations in the state which may have triggered it.\r\n\r\nSigned-off-by: Maciej Borzecki \r\n\r\n* cmd/snapd: handle unnecessary failure recovery\r\n\r\nGracefully handle unnecessary failure recovery but exiting with 0 status, so\r\nthat snap-failure may continue with cleanup and restart.\r\n\r\nSigned-off-by: Maciej Borzecki \r\n\r\n* o/snapstate: improve the check for asserting if restart was warranted\r\n\r\nSigned-off-by: Maciej Borzecki \r\n\r\n* overlord: add managers test for handling of runtime restart with failure handling\r\n\r\nSigned-off-by: Maciej Borzecki \r\n\r\n* many: tweak names and comments\r\n\r\nSigned-off-by: Maciej Borzecki \r\n\r\n* o/snapstate: tweak unit test names\r\n\r\nSigned-off-by: Maciej Borzecki \r\n\r\n* cmd/snapd: use fmt.Fprintln\r\n\r\nSigned-off-by: Maciej Borzecki \r\n\r\n* overlord/snapstate: tweak naming\r\n\r\nSigned-off-by: Maciej Borzecki \r\n\r\n---------\r\n\r\nSigned-off-by: Maciej Borzecki ","shortMessageHtmlLink":"o/snapstate: handling of unexpected runtime restart (#14002)"}},{"before":"92c818d86b60fa3dbd296be29015c343fd9fc9c5","after":"75f813b41b70bec25a9515141fa54aaf2ccba944","ref":"refs/heads/master","pushedAt":"2024-06-03T12:59:03.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Meulengracht","name":"Philip Meulengracht","path":"/Meulengracht","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10059902?s=80&v=4"},"commit":{"message":"tests: do not use /etc/timezone\n\n/etc/timezone is an old file that was only supported on Debian and\nUbuntu but has been removed in 24.04 and upcoming Debian.\n\nWhether /etc/timezone works or not is a problem for systemd. We do not\nhave to test it.","shortMessageHtmlLink":"tests: do not use /etc/timezone"}},{"before":"2b3c68b0249df52628157a2cfe88692efaf3b8f7","after":"92c818d86b60fa3dbd296be29015c343fd9fc9c5","ref":"refs/heads/master","pushedAt":"2024-06-03T12:42:31.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"ernestl","name":"Ernest Lotter","path":"/ernestl","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5872705?s=80&v=4"},"commit":{"message":"sysconfig/cloudinit: check if disabled via kernel cmdline (#14034)\n\n* sysconfig/cloudinit: Check if disabled via kernel commandline\r\n\r\nAs documented:\r\n\r\nhttps://cloudinit.readthedocs.io/en/latest/howto/disable_cloud_init.html\r\n\r\nSigned-off-by: Brett Holman \r\n\r\n* sysconfig: made kernel cmdline disable comment similar to that of disable file\r\n\r\n---------\r\n\r\nSigned-off-by: Brett Holman \r\nCo-authored-by: Brett Holman ","shortMessageHtmlLink":"sysconfig/cloudinit: check if disabled via kernel cmdline (#14034)"}},{"before":"62e1d60f42bd4a584cd22e15d64708613ea3388b","after":"2b3c68b0249df52628157a2cfe88692efaf3b8f7","ref":"refs/heads/master","pushedAt":"2024-06-03T12:39:22.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"ernestl","name":"Ernest Lotter","path":"/ernestl","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5872705?s=80&v=4"},"commit":{"message":"notices: ensure that two notices don't have the same lastDateTime (#13816)\n\n* notices: Ensure that two notices don't have the same lastDateTime\r\n\r\nWhen a client wants to receive the notices using the /v2/notices\r\ninterface, it usually will first receive all the old\r\nnotifications, store the date and time of the last notification,\r\nand in the next calls use that date and time plus 1 nanosecond\r\nto avoid geting the same notices over and over again.\r\n\r\nUnfortunately, if, due to chance, two notifications have the\r\nsame date and time, this scheme will fail, because after\r\nreceiving the first one, the call will return it, and when the\r\nclient asks for the next, it will filter from the date/time plus\r\none microsecond, so the second notice won't be sent.\r\n\r\nThis patch fixes this by ensuring that no notice has the same\r\ndate/time value for lastReceived, by adding one or more\r\nnanoseconds when required.\r\n\r\n* Implement time.Time.Compare()\r\n\r\ntime.Time.Compare() was added in Go 1.20, but snapd uses Go 1.18\r\nso this method isn't available.\r\n\r\n* Added tests for CompareDate()\r\n\r\n* Simplified time.Time.Compare() function\r\n\r\n* Update overlord/state/notices.go\r\n\r\nCo-authored-by: Zeyad Yasser \r\n\r\n* Changes requested by Zeyad\r\n\r\n* Fix tests\r\n\r\n* Remove unneeded MockGetTimeNow\r\n\r\n* Changed timestamp name, and fixed test\r\n\r\n* Replace all notice-last-date with notice-last-timestamp\r\n\r\n* fix typo\r\n\r\n* Remove unneeded GetLastOccurred function\r\n\r\n* Change noticeLastTimestamp with lastNoticeTimestamp\r\n\r\n* Fix tests\r\n\r\n* Add a comment explaining why this is important\r\n\r\n* Add missing space\r\n\r\n---------\r\n\r\nCo-authored-by: Zeyad Yasser ","shortMessageHtmlLink":"notices: ensure that two notices don't have the same lastDateTime (#1…"}},{"before":"2034c7edb2001174986eeb2e14ed0fe0b50e91d2","after":"62e1d60f42bd4a584cd22e15d64708613ea3388b","ref":"refs/heads/master","pushedAt":"2024-06-03T12:13:00.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Meulengracht","name":"Philip Meulengracht","path":"/Meulengracht","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10059902?s=80&v=4"},"commit":{"message":"packaging/snapd.mk: generate GNU build ID for Go binaries\n\nThe Go toolchain only generates a Go build ID, but GNU build IDs are expected to\npresent almost universally. Make sure to generate GNU build IDs for Go binaries\nlike we do in Fedora packaging, so that rpmbuild is happy. Note, that not all Go\ntoolchains we build with support -B gobuildid, hence populate the GNU build ID\nwith random bytes, but leave a note about a fix we need here.\n\nSigned-off-by: Maciej Borzecki ","shortMessageHtmlLink":"packaging/snapd.mk: generate GNU build ID for Go binaries"}},{"before":"1f1ffe3557570b270dfdfe80dd7d300e4d454f05","after":"2034c7edb2001174986eeb2e14ed0fe0b50e91d2","ref":"refs/heads/master","pushedAt":"2024-06-03T08:03:50.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"ernestl","name":"Ernest Lotter","path":"/ernestl","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5872705?s=80&v=4"},"commit":{"message":"boot,bootloader: add support for shim fallback and setting EFI boot variables on install (#13511)\n\n* boot: added function to set EFI variables\r\n\r\nSigned-off-by: Oliver Calder \r\n\r\nboot: renamed trustedShimFallbackBinary to seedShimPath\r\n\r\nSigned-off-by: Oliver Calder \r\n\r\nboot: refactored setting EFI boot variables at install\r\n\r\nSigned-off-by: Oliver Calder \r\n\r\nboot: adjusted variable names and fixed variable initialization\r\n\r\nSigned-off-by: Oliver Calder \r\n\r\nboot: improve setting Boot#### EFI variable\r\n\r\nNotably, splits off the process of reading a Boot#### variable and\r\nextracting its DevicePath into its own function `readBootVariable` which\r\ncan be mocked and otherwise simplifies the `setBootNumberVariable`\r\nfunction.\r\n\r\nAlso, fixes behavior around the final BootFFFF variable. Previously, it\r\nwas not possible to select the BootFFFF variable if it was unused, due\r\nto overflow concerns on uint16. Now, the behavior around BootFFFF is\r\nidentical to that of any other boot variable, by using an int internally\r\ninstead of uint16, which also allows a more robust check for whether\r\nthere were no matching variables.\r\n\r\nSigned-off-by: Oliver Calder \r\n\r\nboot: added unit tests for setting EFI Boot#### variable\r\n\r\nSigned-off-by: Oliver Calder \r\n\r\nboot: refactored setting EFI boot variables\r\n\r\nRewrote EFI boot variable functions to more closely match the behavior\r\nof shim fallback: https://github.com/rhboot/shim/blob/main/fallback.c\r\n\r\nIn particular, the following have changed:\r\n\r\n1. Existing Boot#### variables must fully match the new load option to\r\n be considered a match. In particular, the load option attributes,\r\n label, and device path must all be byte-for-byte identical.\r\n Previously, only the device paths were compared.\r\n2. Matching Boot#### variables are no longer overwritten. Since the\r\n variable data must now byte-for-byte match the new load option, there\r\n is no need to overwrite the existing variable.\r\n3. Since existing Boot#### variables are no longer overwritten, the\r\n variable attributes are no longer checked for those variables.\r\n Instead, it is assumed that the Boot#### variable attributes are\r\n viable for it to be used as a boot option. This matches the behavior\r\n of `rhboot/shim/fallback.c`, for better or for worse.\r\n4. When modifying the BootOrder variable, boot option numbers are no\r\n longer pruned if there is no matching Boot#### variable.\r\n\r\nSigned-off-by: Oliver Calder \r\n\r\nboot,bootloader: introduce UefiBootloader to build EFI load options\r\n\r\nPreviously, the path of the shim binary relative to the EFI partition\r\nwas passed into `SetEfiBootVariables`. However, different bootloaders\r\nmay wish to set up `OptionalData` in the load option.\r\n\r\nAdditionally, not all `TrustedAssetBootloaders` will attempt to set\r\nEFI boot variables, and not all bootloaders which should set EFI boot\r\nvariables necessarily support secure boot. Thus, these should be\r\ndecoupled.\r\n\r\nThis commit adds a new `UefiBootloader` interface with the\r\n`ConstructShimEfiLoadOption` method, which builds an EFI load option\r\nfrom the shim path for the given bootloader.\r\n\r\nSigned-off-by: Oliver Calder \r\n\r\nboot,bootloader: fixed linting errors and improved EFI boot variable test clarity\r\n\r\nSigned-off-by: Oliver Calder \r\n\r\nbootloader: improved unit test for grub EFI load option creation\r\n\r\nSigned-off-by: Oliver Calder \r\n\r\nboot: set EFI boot variables in `MakeRunnableSystem`\r\n\r\nPreviously, attempted to set boot variables in\r\n`MakeRecoverySystemBootable`, which is called by `MakeBootableImage`,\r\nwhich is called when building the image file, rather than during install\r\nmode.\r\n\r\n`MakeRunnableSystem` is called on first boot during install mode, and\r\nthus should be responsible for setting EFI boot variables.\r\n\r\nSigned-off-by: Oliver Calder \r\n\r\nboot: use seed bootloader when setting EFI variables\r\n\r\nIn install mode, the bootloader located in ubuntu-seed should be used\r\nwhen setting the EFI boot variables. Previously, the bootloader in\r\nubuntu-boot was accidentally re-used.\r\n\r\nSigned-off-by: Oliver Calder \r\n\r\ntests: added simple test to execute setefibootvar.go code\r\n\r\nSigned-off-by: Oliver Calder \r\n\r\ntests: fixed standalone set EFI vars code test to work with different layouts\r\n\r\nSigned-off-by: Oliver Calder \r\n\r\ntests: moved simple setefibootvar.go check to nested test\r\n\r\nSigned-off-by: Oliver Calder \r\n\r\ntests: added check for idempotence when setting EFI boot variables\r\n\r\nSigned-off-by: Oliver Calder \r\n\r\nbootloader: adjust comments, organization, and add TODO\r\n\r\nSigned-off-by: Oliver Calder \r\n\r\nboot,bootloader: fix setting EFI boot variables\r\n\r\nMake function to search for EFI asset device path and construct load\r\noption common so each UefiBootloader does not have to re-implement it.\r\nInstead, the bootloader returns the description, asset file path, and\r\noptional data, which can then be used to create the EFI load option.\r\n\r\nAlso, in `makeRunnableSystem`, the bootloader in ubuntu-seed must have\r\n`NoSlashBoot` in order to correctly find the grub.cfg file and thus the\r\ngrub bootloader. This commit fixes this bug, and refactors a bit to\r\naccount for the changes in responsibilities between the bootloader and\r\nthe setefibootvars.go code.\r\n\r\nSigned-off-by: Oliver Calder \r\n\r\nbootloader: fixed grub EFI load option test with tmp rootdir\r\n\r\nSigned-off-by: Oliver Calder \r\n\r\ngo.mod: move golang.org/x/text import next to other golang.org/x/ imports\r\n\r\nSigned-off-by: Oliver Calder \r\n\r\nboot: adjust opts to look for recovery bootloader when setting EFI variables\r\n\r\nSigned-off-by: Oliver Calder \r\n\r\nboot: do not overwrite BootOrder if unchanged, and unexport EFI variable helper functions\r\n\r\nSigned-off-by: Oliver Calder \r\n\r\nboot: unexport `setEfiBootOrderVariable`\r\n\r\nSigned-off-by: Oliver Calder \r\n\r\nboot: move code to detect bootloader and set EFI variables accordingly into dedicated function\r\n\r\nSigned-off-by: Oliver Calder \r\n\r\nboot: unexport `setUbuntuSeedEfiBootVariables` and accompanying error\r\n\r\nSigned-off-by: Oliver Calder \r\n\r\nboot,bootloader: ensure nil optionalData for EFI variable is equivalent to 0-length slice\r\n\r\nSigned-off-by: Oliver Calder \r\n\r\nboot: handle empty boot order and other boot var improvements\r\n\r\nSigned-off-by: Oliver Calder \r\n\r\nboot: make setefibootvars functions linux-only\r\n\r\nSigned-off-by: Oliver Calder \r\n\r\n* tests: add nested spread test for setting EFI vars\r\n\r\nThe test checks that EFI boot variables exist for the following:\r\n1. A Boot#### variable pointing to the shim file path.\r\n2. A BootOrder variable with the #### from the above Boot#### as first.\r\n\r\nSince the layout of EFI assets is dependent on the gadget snap, the test\r\ndownloads and unpacks the gadget, then modifies the contents so that one\r\nvariant has the shim and grub binaries in `EFI/boot/` and another\r\nvariant has the shim and grub binaries in `EFI/ubuntu/` and the fallback\r\nbinary in `EFI/boot/`.\r\n\r\nAfter building a core image around that modified gadget, the VM is\r\nbooted and the test checks that the EFI variables are set correctly.\r\nThen, the test modifies the gadget to match the other variant's initial\r\nlayout, and then installs the newly modified gadget. This should trigger\r\nre-setting EFI boot variables as well.\r\n\r\nSigned-off-by: Oliver Calder \r\n\r\ntests: fix problems in spread test for setting EFI boot variables\r\n\r\nSigned-off-by: Oliver Calder \r\n\r\ntests: disabled TPM on EFI boot vars test and separated gadget script\r\n\r\nSigned-off-by: Oliver Calder \r\n\r\ntests: fixed EFI vars test to use correct toolbox and include all EFI assets\r\n\r\nSigned-off-by: Oliver Calder \r\n\r\ntests: modify-gadget.sh re-use existing gadget so edition is incremented\r\n\r\nSigned-off-by: Oliver Calder \r\n\r\ntests: fix mangled EFI var search string and other improvements\r\n\r\nSigned-off-by: Oliver Calder \r\n\r\ntests: polish tests for setting EFI boot variables\r\n\r\nNotably, allow tests/nested/core/core20-set-efi-boot-variables to run on\r\narm64 as well as amd64, simplify setefivars.go to search for multiple\r\nassets on multiple architectures, and allow\r\ntests/nested/manual/core20-set-efi-boot-vars to run on any ubuntu-2*.\r\n\r\nSigned-off-by: Oliver Calder \r\n\r\n* bootloader/grub.go: only consider new shim asset in boot entry for now\r\n\r\n* tests/nested/core/core20-set-efi-boot-variables: fix details\r\n\r\n* boot: update uefi variables on gadget update\r\n\r\n* tests/nested/manual/core20-set-efi-boot-vars: work-around file not deleted\r\n\r\n* tests/nested/manual/core20-set-efi-boot-vars: use fb.efi like other tests\r\n\r\n* tests/nested/manual/core20-set-efi-boot-vars: drop use of toolbox snap\r\n\r\n* tests/nested/manual/core20-set-efi-boot-vars: drop work-around for not deleted files\r\n\r\n* tests/nested/manual/core20-set-efi-boot-vars: verify install does add a boot entry\r\n\r\n* tests/nested/manual/core20-set-efi-boot-vars: run only on version that have UC\r\n\r\n* tests/nested/manual/core20-set-efi-boot-vars: obey GADGET_CHANNEL\r\n\r\n* tests/nested/manual/core20-set-efi-boot-vars: move get_boot_entry.py to libs\r\n\r\n* tests/nested/manual/core20-set-efi-boot-vars: factorize copy of variables\r\n\r\n... so we can reuse the script in other tests\r\n\r\n* tests/nested/core/core20-set-efi-boot-variables: stop using toolbox snap\r\n\r\n* tests/nested/core/core20-set-efi-boot-variables: only run on versions with UC available\r\n\r\n* overlord/devicestate: test using EfiLoadOptionParameters\r\n\r\n* boot: test that variables are set\r\n\r\n* boot: test observers' UpdateBootEntry\r\n\r\n* tests/nested/manual/core20-set-efi-boot-vars: also test without secure boot\r\n\r\n* many: use trusted install observer when UEFI variables are supported\r\n\r\n* boot/makebootable.go: rename sealer to observer\r\n\r\n* boot/grub.go: fix function name in doc\r\n\r\n* cmd/snap-bootstrap: verify that ObserveExistingTrustedRecoveryAssets is called\r\n\r\n* boot: add tests for SetEfiBootVariables\r\n\r\n* many: comment on calls to ObserveExistingTrustedRecoveryAssets\r\n\r\n---------\r\n\r\nSigned-off-by: Oliver Calder \r\nCo-authored-by: Oliver Calder ","shortMessageHtmlLink":"boot,bootloader: add support for shim fallback and setting EFI boot v…"}},{"before":"c182ed01ff9f73d4fc7ad94be5e9f688b9143316","after":"1f1ffe3557570b270dfdfe80dd7d300e4d454f05","ref":"refs/heads/master","pushedAt":"2024-05-31T19:04:01.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"sergiocazzolato","name":"Sergio Cazzolato","path":"/sergiocazzolato","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5382983?s=80&v=4"},"commit":{"message":"tests: create test user with useradd in uc24 (#14028)\n\n* tests: create test user with useradd in uc24\r\n\r\nThis change is needed to create the test user in uc24 with home\r\ndirectory.\r\n\r\nThis is needed to fix tests in uc24 (edge validation)\r\n\r\n* use --create-home and --comment\r\n\r\n--gecos is deprecated","shortMessageHtmlLink":"tests: create test user with useradd in uc24 (#14028)"}},{"before":"f582c23b1c4c6edbd8501e27a35d979c6cb27e4b","after":"c182ed01ff9f73d4fc7ad94be5e9f688b9143316","ref":"refs/heads/master","pushedAt":"2024-05-31T15:36:17.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"ernestl","name":"Ernest Lotter","path":"/ernestl","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5872705?s=80&v=4"},"commit":{"message":"daemon: attach affected-snaps data to tasks (#13953)\n\n* o/snapstate: export affectedSnaps, so it can be used by daemon package\r\n\r\nSigned-off-by: Zeyad Gouda \r\n\r\n* daemon: attach affected-snaps data to tasks\r\n\r\nThis allows API caller to associate each task with the\r\nrelevant snaps which is useful in the case change progress\r\ntracking when a change is associated with multiple snaps.\r\n\r\nThis exact use case is needed by snapd-desktop-integration.\r\n\r\nSigned-off-by: Zeyad Gouda \r\n\r\n---------\r\n\r\nSigned-off-by: Zeyad Gouda ","shortMessageHtmlLink":"daemon: attach affected-snaps data to tasks (#13953)"}},{"before":"61be59e81dfd1728255ec2a8f68942f72bb791aa","after":"f582c23b1c4c6edbd8501e27a35d979c6cb27e4b","ref":"refs/heads/master","pushedAt":"2024-05-31T15:35:39.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"ernestl","name":"Ernest Lotter","path":"/ernestl","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5872705?s=80&v=4"},"commit":{"message":"cmd/snap: improve error message on running a non-existing snap (#13895)\n\nRunning a non-existing snap was showing a confusing message about\r\nrace condition detection.\r\n\r\nThis fixes confusing error by differentiating between snap not\r\nexisting and a missing current symlink due to ongoing refresh.\r\n\r\nSigned-off-by: Zeyad Gouda ","shortMessageHtmlLink":"cmd/snap: improve error message on running a non-existing snap (#13895)"}},{"before":"f95aa7e21e04a94f1dea3f7b1253b729bd69ec44","after":"61be59e81dfd1728255ec2a8f68942f72bb791aa","ref":"refs/heads/master","pushedAt":"2024-05-31T15:10:55.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"ernestl","name":"Ernest Lotter","path":"/ernestl","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5872705?s=80&v=4"},"commit":{"message":"usersession: Use the app name from .desktop file in notifications (#13678)\n\n* usersession: Use the app name from .desktop file in notifications\r\n\r\nCurrently, when a notification is shown to the user to inform\r\nthey that there is an update for an open snap, the snap name is\r\nused, which can be misleading to the user.\r\n\r\nThis PR uses the application name from the .desktop file, taking\r\ninto account the current locale of the user.\r\n\r\n* Add tests for localized name getter\r\n\r\n* Take into account the instance key\r\n\r\n* Change variable name\r\n\r\n* Code simplification\r\n\r\n* Try to pass the static analyzer\r\n\r\n* Revert \"Try to pass the static analyzer\"\r\n\r\nThis reverts commit 3c031bef098d1a1fab6afad02aa456a80fb84154.\r\n\r\n* Another try to pass the static analyzer\r\n\r\n* Revert \"Another try to pass the static analyzer\"\r\n\r\nThis reverts commit 39a37d9e129d1220566e7da9e4be4dd2d3f7324f.\r\n\r\n* Added extra tests to check notification text\r\n\r\nThese four tests ensure that the notification text is correct\r\nwhen there is an instance key and/or there is a .desktop file\r\nfrom where a translatable name can be obtained.\r\n\r\n* Renamed TestGuessAppIcon... to TestGuessAppData...","shortMessageHtmlLink":"usersession: Use the app name from .desktop file in notifications (#1…"}},{"before":"b9ee8ce48eb2e088f608708af766c16370910dc2","after":"f95aa7e21e04a94f1dea3f7b1253b729bd69ec44","ref":"refs/heads/master","pushedAt":"2024-05-31T14:10:56.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"ernestl","name":"Ernest Lotter","path":"/ernestl","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5872705?s=80&v=4"},"commit":{"message":"snapcraft.yaml: use expected path for snap-confine apparmor profile (#14029)\n\nThis is a work-around for LP#1673247, which in theory should not\r\naffect the snap. But for now, since the code and tests depend on that\r\npath we should use that name, and then fix the code later.","shortMessageHtmlLink":"snapcraft.yaml: use expected path for snap-confine apparmor profile (#…"}},{"before":"6c0f90cd93b8d9da70ae1118fe76db3ca9847fd9","after":"b9ee8ce48eb2e088f608708af766c16370910dc2","ref":"refs/heads/master","pushedAt":"2024-05-31T14:10:40.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"ernestl","name":"Ernest Lotter","path":"/ernestl","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5872705?s=80&v=4"},"commit":{"message":"tests/nested/manual/recovery-system-reboot: use updated core22 base (#14024)\n\nBecause we need /snap/snapd/current symlink for the snapd snap to work\r\nwhen seeded, we need to update the test to use an up to date base.\r\nWe cannot use an old core22 snap with a new snapd snap.","shortMessageHtmlLink":"tests/nested/manual/recovery-system-reboot: use updated core22 base (#…"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEXWZkggA","startCursor":null,"endCursor":null}},"title":"Activity · snapcore/snapd"}