[03:28] PR snapcraft#2158 opened: rust plugin: fix cargo builds and run tests [05:05] morning [05:14] hey hey :) [05:15] zyga: hey [05:29] PR snapd#5273 closed: testutil: add test support for Fstatfs [05:30] woot, thank you! [05:38] so are we doing the `snap list --format=..` thing or not? [05:40] I ... don't know [05:40] I think not [05:42] mborzecki: 5266 is simple and green [05:45] mborzecki: it looks like no, lets see if the bugreport is happy about the snap list|awk|tail +2 solution [05:53] it was a nice feature :( [05:53] mborzecki: yeah, I have grown to like it as well [05:58] there was a panic from spread in #5271 https://paste.ubuntu.com/p/XXqr7TY9KM/ [05:58] PR #5271: [WIP] cmd: attempt to start the document portal if running with a session bus [05:58] niemeyer: ^^ [06:15] mborzecki: I think we saw a few panics yesterday and gustavo is aware of them [06:15] but I'm not sure if those are the same panics or if spread was changed but some panics remained [06:15] hey mvo, good morning [06:17] PR snapd#5266 closed: interfaces/builtin/docker: use commonInterface over specific struct [06:17] https://github.com/snapcore/snapd/pull/5230 needs a 2nd review [06:17] PR #5230: interfaces/udisks2: also implement implicit classic slot [06:18] zyga: good morning to you as well! [06:18] mvo: what's the state of https://github.com/snapcore/snapd/pull/5250 [06:18] PR #5250: interfaces/udev,misc: only trigger udev events on input subsystem as needed [06:18] there's a conflict but I see that you took care of the feedback [06:18] are you working on this or is the conflict recent [06:18] er [06:18] sorry [06:18] bad PR [06:18] https://github.com/snapcore/snapd/pull/5226 [06:18] PR #5226: data: add systemd user environment generator [06:18] this is what I meant [06:24] zyga: the user envirronment generator? iirc it had some packaging issues I need to look at them [06:24] ack, [06:24] I asked some follow up packaging questions there [06:24] ta [06:24] +1 on everything if it works :) [06:24] ta² [06:24] unicode :D [06:26] https://forum.snapcraft.io/t/organize-another-dir-causes-the-items-under-host-root-directory-to-be-copied-in-another-dir/5806 [06:58] PR snapd#5259 closed: devicestate: support seeding from a base snap instead of core === pstolowski|afk is now known as pstolowski [07:04] morning o/ [07:06] pstolowski: hey [07:06] hey pstolowski [07:26] hey pawel [07:45] * zyga -> walk [07:46] or maybe in 15 minutes [07:53] PR snapd#5275 opened: cmd/snap: use snaptest.MockSnapCurrent in `snap run` tests [07:53] trivial pr ^^ [08:08] PR snapd#5276 opened: devicestate: support seeding from a base snap instead of core [08:18] mborzecki: https://github.com/snapcore/snapd/pull/5277 :) [08:18] PR #5277: cmd/snap-update-ns: add helper for checking for read-only filesystems [08:18] I'll take your PR for snap run [08:18] PR snapd#5277 opened: cmd/snap-update-ns: add helper for checking for read-only filesystems [08:18] haha ;) trade PRs [08:18] spread still panics [08:18] can we revert spread somehow? [08:18] i'm looking into spread right now [08:19] +1 on the PR [08:19] and I need to go or my dog will hate me [08:20] zyga: it won't hate you, it'll just piss on the floor :P [08:20] and *then* he will hate me ;) [08:20] no, he's too humble for that I'm not that evil [08:20] * zyga -> walk [08:21] the spread crash is not happening all the time, right? I saw at least one green PR from me this morning [08:22] mborzecki: can I restart your failed MockSnapCurrent PR? or do you want to keep it for the error ? [08:22] mvo: go ahead [08:26] mvo: some comments on #5274 [08:26] PR #5274: configstate: deny configuration of base snaps and for the "snapd" snap [08:28] niemeyer: https://github.com/snapcore/spread/pull/59 [08:28] PR spread#59: spread: do not panic if error message from google backend is empty [08:28] pedronis: great, thank you! [08:35] mvo: I don't understand the changer about errDoNothing in 5276 [08:40] mvo: I probably read the new code wrong but it's a bit unclear what's the intention of it [08:41] pedronis: let me double check [08:41] just avoid calling trivialSeeding twice? [08:41] I mean from two places [08:42] but then the comment in import Assertion is misleading [08:43] pedronis: thanks, let me rework this [08:45] mvo: I mean we will not use the model returned by importAssertionsFromSeed in that case [08:48] also it doesn't get set in state anyway so it wouldn't help later code that needs a model in all cases [08:48] Hi! Does anybody knows something the vim snap? https://forum.snapcraft.io/t/vim-snap/5573 [08:53] pedronis: yeah, I think this was a misconception my part, these bits can be undone [08:53] mvo: I suppose maybe because at some point you were passing model in trivialSeeding ? [08:53] pedronis: exactly [08:54] pedronis: using "core" for the config makes all of this much simpler [08:54] I see, anyway as I said return a model that way from importAssertionsFromSeed breaks its invariant so we would needed to do something else anyway [08:54] * pedronis errands [08:54] pedronis: there will be some small complications in the followups because some code checks for that the snap is installed when getting config [08:55] pedronis: thank you, I will update the PRs [09:06] re [09:06] pachulo: hey [09:07] pachulo: since snap crafters are the publisher I would suggest asking popey about it [09:16] mborzecki: my PR is green :) [09:16] no better chance to review it than now :) [09:16] oh I see it's reviewed already [09:17] * zyga will forever ponder what is the condition under GitHub updates the page without a reload [09:17] mvo: ^ quick 2nd review on 5277 [09:17] heh, github ui is terrible [09:17] I _like_ the way it looks but _hate_ the way it is stale without apparent reason [09:17] the funniest is when you comment on a hunk that gets changed in another patch, and you forgot to switch to 'show all patches' [09:19] thank you for the review on 5272 pawel [09:23] thanks zyga ! [09:23] pachulo: note that you also got a response on the foruom [09:23] *forum [09:24] jamie there is right that there should be a repository under snapcrafters on github [09:26] mvo: thank you mvo [09:26] mborzecki: to the point about GitHub UX being not too great, I got a comment (approval) from mvo and it was shown as a comment but the comment / approval count below was stale [09:28] PR snapd#5277 closed: cmd/snap-update-ns: add helper for checking for read-only filesystems [09:31] pedronis: thanks again for the review(s), I update the PRs, I added a testcase that loads a snap-setup without a type. interesstingly this does not crash, it only crashes if there is an empty (or invalid) "type":"" in the json [09:31] pedronis: but maybe you have something different in midn? [09:31] mind [09:48] PR snapd#5275 closed: cmd/snap: use snaptest.MockSnapCurrent in `snap run` tests [10:16] pachulo: wassup? [10:17] popey: is the vim snap owned by snapcrafters/ [10:17] popey: and if so, where is the snapcraft.yaml [10:17] sergio initially created the snap, sergiusens ^ [10:20] mborzecki: one more helper before the main meat of the validation logic [10:20] mborzecki: #5278 [10:20] PR #5278: cmd/snap-update-ns: add IsTrustedTmpfs and tests [10:20] mvo: ah see, no, nothing different, just forgot that behavior of the json umarshaller [10:20] PR snapd#5278 opened: cmd/snap-update-ns: add IsTrustedTmpfs and tests [10:24] pedronis: thank you! I feel much better having a test for this :) [10:26] mvo: I will re-review after lunch [10:26] Hi all. A notice and reminder that I'm off work today and tomorrow. [10:29] Chipaca: ack [10:31] pedronis: ta [10:31] Chipaca: enjoy! we miss you already [10:32] mvo: :-) [10:37] * zyga considers lunch for a change [10:45] Chipaca, after implementing the /v2/snaps?select=...&snaps=... API in snapd-glib, can you think of any reason to ever have a client use the /v2/snaps/[name] API? I'm thinking of deprecating those old methods. [10:46] I guess we continue to use it with POST, but not GET [10:49] robert_ancell: I'd say if there is it's because of a bug [10:49] Chipaca, so be clear, /v2/snaps/[name] is really redundant now? [10:50] robert_ancell: well, it's going to be faster but probably not an issue in practice [10:50] robert_ancell: but, yeah [10:51] and it might not even be measurably faster -- i'd have to try to measure [10:58] zyga ping [11:00] Go [11:02] ah, there is a bit of a difference /v2/snaps?snaps=blah returns 200 and /v2/snaps/blah returns 404 [11:03] zyga do we treat kernel snap differently when it comes to interfaces used by hooks? [11:04] Not that I know of [11:04] Kernel should not have interfaces or hooks AFAIR [11:08] hmm snapshots separate elements using _ in snaphot file names, will need some extra care for parallel installs [11:11] zyga I think joc spotted my error here [11:11] zyga indeed it's a bit special case I have here, but let's see :) [11:11] What is the use case? [11:12] zyga pi3 kernel update :) [11:12] Oj [11:12] Tell me more please [11:12] zyga let me proof tested first :) [11:12] Ok [11:18] zyga: I updated 5263 based on your feedback (thanks for this btw). also thanks to mborzecki [11:18] Ack [11:18] I will check after lunch [11:24] zyga, popey: that was my first classic snap ever, we didn't even have a build service yet iirc [11:34] one huge renames patch coming up, 97 files changed, 875 insertions(+), 702 deletions(-) [11:35] What is that [11:36] Switching to under_score ;-)) [11:36] I’m almost done with lunch [11:36] Will be home soon [11:42] mborzecki: why renaming the dir ones ? [11:43] me is probably missing something [11:44] pedronis: because some paths end up using StoreName() instead of InstanceName(), hence *Dir() were changed to make me go though each place and update it accordingly [11:45] mborzecki: why would a path use StoreName ? [11:45] genuine question [11:46] pedronis: eg. inside snap-exec after remount, apparmor profiles which refer to the paths inside the mount ns [11:47] mborzecki: but there is no store variant of them, you then do snap.MountDir(snapName, rev) and similar ? [11:48] pedronis: yes [11:48] and the Instance*Dir() use the same snap.*Dir() helpers [11:48] mborzecki: I suppose we could mount files at some point, not sure the it easy though [11:48] sorry [11:48] I mean share mount files [11:49] it'd be nice [11:49] right now each instance will get own copy [11:49] that's an easier starting point [11:49] there are fun questions also about conflicts [11:50] given that they can be on different revisions that's also a bit easier to handle [11:50] mborzecki: anyway afaiu snap-confine and snap-exec are the only things that need to deal with dirs without instance-key, right? [11:51] pedronis: and apparmor backend so far [11:52] mborzecki: I see an StoreName indeed, why ? [11:53] to repelace SNAP_NAME, but unclear SNAP_NAME can still be used in profiles? [11:54] ah, it's because inside vs outside? [11:57] mborzecki: ok, I see, we could really sort of keep the old names, but maybe the new names are clearer [11:58] because of this inside vs outside issue [11:58] pedronis: yup [11:58] pedronis: we can roll back the *Dir() renames later on when the store vs instance name thing is sorted out [12:01] mborzecki: anyway it's not tragically big, just a bit, anyway will need a span of quite time to go over it [12:03] mborzecki: did you see test that needed doubling, or did you still not look into that? [12:07] pedronis: i doubled only few tests, mostly in snap [12:09] mborzecki: most places that need StoreName probably need one, places using InstanceName it depends I suppose [12:10] re === pstolowski is now known as pstolowski|lunch [12:27] zyga: what comment should I add to 5263 [12:27] that there's no locking done by specific functions [12:27] (so that we don't forget this) [12:29] zyga: aha, ok [12:29] hmm [12:29] spread keeps crashing [12:29] zyga: will do [12:29] yeah, spread is not happy today [12:30] which is odd because some PRs are just ireland-grass-green [12:30] while others fail after 1st minute [12:31] mborzecki: I haven't really been following the conversation (I was conducting and interview-- note to channel: there are open positions on the Ubuntu Security team!) [12:32] mborzecki: but otoh the things to think about are file paths (both where snaps live, things are mounted, but also apparmor, seccomp, udev, dbus policy files) [12:33] mborzecki: then the security label ('profile foo' in apparmor policy) and the udev tag (which annoyingly must use underscores) [12:34] jdstrand: do the underscores have any special meaning there? [12:34] mborzecki: yes! :) they are the delimiter instead of '.'. udev tags can't have periods [12:35] mborzecki: eg: SUBSYSTEM=="drm", KERNEL=="card[0-9]*", TAG+="snap_0ad_0ad" [12:35] mborzecki: that's ok though. we are very strict that it is 'snap_name_cmd' [12:35] mborzecki: so to date, there will only ever be exactly two underscores [12:36] jdstrand: right, but then if you have snap_0ad_local_0ad it's fine too right? [12:36] that would be difficult [12:36] snap_0ad_0ad_local would be better [12:36] well [12:36] you could do it [12:37] i mean, the snap is named 0ad_local in this case [12:37] if count(underscores) == 3, then name is 0ad_local [12:37] it does mean we'll need to adjust that parsing everywhere though [12:41] and to finish my PSA for security team position: https://boards.greenhouse.io/canonical/jobs/1158266. it's a great team to work for! :) [12:42] jdstrand: hmm snap-device-helper seems to do some funny stuff with those names [12:43] jdstrand: I would totally apply if I hadn't a great team already [12:43] hehe [12:43] I'm not trying to poach snapd team members :) [12:43] there are others in the channel who may see it ;) [12:43] jdstrand: I know :) [12:44] jdstrand: still you guys have a great team [12:44] mvo: that said, you would be a wonderful addition, as would any of the snapd devs (but I'm not poaching-- I just love working with all of you. good thing I get to continue doing so :) [12:44] mvo: thanks! it's true. the security team is awesome [12:44] heh :) [12:44] * mvo blushes [12:46] mborzecki: right, it needs to convert back to '.' for the device cgroup name in /sys/fs/cgroup/devices [12:46] mborzecki: eg: /sys/fs/cgroup/devices/snap.firefox.firefox [12:46] mborzecki: so it would have to learn to do snap_firefox_local_firefox -> snap.firefox_local.firefox [12:47] jdstrand: right, so another small update there :/ [12:47] mborzecki: btw do you have that huge rename PR ready? [12:47] mborzecki: we try to use '.' as the delimiter everywhere we can for consistency (I tried to use '_' in the early days, but '.' was deemed prettier (is is)) [12:47] it* is [12:48] zyga: yes, #5253 [12:48] PR #5253: snap: introduce new fields for parallel snap installation [12:48] I'll review it after standupo [12:48] jdstrand: use # and watch as the world burns :P [12:48] hehe [12:50] zyga: I think you made me write locking code in the errtracker "db". its just too embarassing to write a comment that there is none [12:50] zyga: smart move ;) [12:50] hahaha [12:51] * zyga mutters "success" ;) [12:55] mborzecki: note that in the apparmor profile itself, the security label is set in various apparmor variables at the top: [12:55] @{SNAP_NAME}="0ad" [12:55] @{SNAP_REVISION}="18" [12:55] @{PROFILE_DBUS}="snap_2e0ad_2e0ad" [12:55] @{INSTALL_DIR}="/{,var/lib/snapd/}snap" [12:55] profile "snap.0ad.0ad" (attach_disconnected,mediate_deleted) { [12:55] mborzecki: you probably saw that, but I mention it specifically for PROFILE_DBUS [12:56] this is such an old concept it will take a while to change everywhere [12:57] mborzecki: that will probably just work, but do make sure you get snap_2e0ad_2elocal_2e0ad when have snap.0ad.0ad [12:57] mborzecki: sorry [12:57] jdstrand: SNAP_NAME=0ad_local, then PROFILE_DBUS will be snap_2e0ad_local_2e0ad [12:57] mborzecki: that will probably just work, but do make sure you get snap_2e0ad_2elocal_2e0ad when have snap.0ad_local.0ad [12:57] jdstrand: and profile "snap.0ad_local.0ad" [12:58] jdstrand: snap_2e0ad_2elocal_2e0ad instead of snap_2e0ad_local_2e0ad then? [12:58] snap.0ad_local.0ad translated to dbus is snap_2e0ad_2elocal_2e0ad [12:58] oh no [12:59] _2e is '.' [12:59] gimme a sec [12:59] mborzecki: seems SNAP_NAME is sometimes used in places that really need the instance name in the templates [13:00] what you use depends on how the mounts are setup [13:00] not all uses are for directories in the namespace [13:00] standup time [13:00] right [13:00] I don't know what is happening at the filesystem level [13:01] but you'll the security label to include _local for IPC, etc [13:01] you'll want [13:02] mborzecki: it would be easiest if the file accesses looked like /snap/foo_local/... instead of /snap/foo/... [13:03] jdstrand: hm well, it was requested that we bind mount to /snap/foo [13:04] mborzecki: but if that isn't possible/desirable, you'll need to introduce another apparmor variable: SNAP_NAME_FILE (or something) [13:04] eg: [13:04] @{SNAP_NAME}="0ad_local" [13:04] @{SNAP_NAME_FILE}="0ad" [13:04] with file accesses using @{SNAP_NAME_FILE} and everything else @{SNAP_NAME} [13:06] mborzecki: that is tricky though. $SNAP is easy enough, but SNAP_DATA, SNAP_COMMON and especially SNAP_USER_DATA and SNAP_USER_COMMON are going to be harder, since you'll have to manage all those addition bind mounts [13:06] it is possible, just more complexity [13:07] it is only possible because of the recent user mount work btw since a root processes will be mucking around in the user's home for SNAP_USER_DATA and SNAP_USER_COMMON [13:09] mvo: https://github.com/snapcore/snapd/pull/5263 is green and has +2 [13:09] we are setting ourselves up for if there is a bug, then 0ad_local might be able to write to 0ad's user data. from a complexity/secure design perspective, I recommend 0ad_local everywhere [13:09] PR #5263: errtracker: do not send duplicated reports [13:10] mborzecki: ^. that doesn't mean I would block the design. but I think that there needs to be an active decision that the benefit outweighs the complexity/risk [13:12] mborzecki: I would like to be involved in the PR reviews as they pertain to security [13:12] jdstrand: sure [13:12] * jdstrand adds a card to trello so ratliff is aware [13:12] ratliff: this'll be a blue item [13:13] * ratliff reads back to understand the priority [13:15] mborzecki: hmm, I'm not sure how parallel installs are going to work with IPC. eg, two network-managers or two dockers installed [13:16] mborzecki: they necessarily need to have their service in the global namespace, so will conflict with each other... [13:18] jdstrand: i suppose common sense will have to prevail here, unless the other docker instance is configured to listen on different path things will break [13:19] jdstrand: maybe postgres usecase is simpler, local snaps on different ports (docker mangles some kernel state so it's probably not the best thing to be installed mulitple times) [13:19] mborzecki: yes... perhaps we can start be saying "if you implement a slot, you can't do this" [13:20] mborzecki: that said, gnome apps all need to slot a dbus interface for the well-known name [13:20] mborzecki: so they are going to break if parallel installed [13:21] (and it isn't just gnome) [13:21] jdstrand: this, probably snaps that have socket activation too [13:21] yeah [13:22] at least using abstract socket paths [13:22] mborzecki: can you describe the feature of parallel installs? is it documented somewhere? [13:22] jdstrand: https://forum.snapcraft.io/t/parallel-snap-installs/5763 [13:23] mborzecki: well, any path where the client expects to find the server somewhere specific. it could be a dbus well-known name, abstract socket, named socket, pipe, ... all kinds of stuff [13:24] jdstrand, mborzecki: Can we have a quick sync up call shortly? (after standup, on going) [13:24] niemeyer: ok [13:25] niemeyer: maybe after that we can discuss update-alternatives and interface docs [13:25] jdstrand: Sounds good! [13:27] ratliff: I created a preliminary card in trello === pstolowski|lunch is now known as pstolowski [13:39] uhhh [13:39] my coffee machine erupted :/ [13:39] niemeyer: pstolowski: this can be re-reviewed now: https://github.com/snapcore/snapd/pull/5221 [13:39] PR #5221: snap: parse connect instructions in gadget.yaml [13:39] ok [13:39] it punctured the capsule incorrectly and all the coffee went outside the wrong way [13:40] zyga: Perhaps it's one of those recalled Keurigs [13:40] no, I'm not familiar with those [13:40] zyga: just get a moka pot ;) [13:40] I'll get a mop and a pot ;) [13:54] guys, if you see econnreset test failure again please let me know, i lost yesterday's log when I re-loaded the tab with travis log today [13:56] pstolowski: should we add some logging to the retry logic to see the error when we don't retry? [13:57] pedronis: yep, that may help [14:00] niemeyer, mborzecki: I tried to summarize much of the above in https://forum.snapcraft.io/t/parallel-snap-installs/5763/3 [14:03] jdstrand: thanks! [14:08] zyga: a second review for 5274 would be great, you did a first pass already afaict [14:10] ACLU [14:10] Ack [14:10] I wonder what spellchecker contains ACLU [14:10] niemeyer, mborzecki: I'm ready whenever you are [14:11] jdstrand: Just finishing a pre-scheduled meeting I had until the half hour.. should be off in 20 or so [14:11] ack [14:18] PR snapd#5279 opened: interfaces/builtin: create socketcan interface [14:30] fyi, I've added a review of PR 5279 to my list. I have a number of questions. others might want to wait until I do my first review [14:30] PR #5279: interfaces/builtin: create socketcan interface [14:31] joc: fyi ^ (and thanks for the PR. I'm stepping into a meeting so it'll be a bit) [14:31] np, thanks for looking at it jdstrand [14:35] jdstrand, mborzecki: https://meet.google.com/dnp-muwd-mng [14:36] PR snapd#5280 opened: httputil: extra debug if an error is not retried [14:41] who can I poke to get a human reviewer for https://launchpad.net/~gerboland/+snap/chromium-mir-kiosk/+build/241717 [14:41] PR snapcraft#2128 closed: project_loader: stop setting LD_LIBRARY_PATH [14:45] ah, there's a button. ignore me [15:01] jdstrand: hey, around [15:05] didrocks: hey, so we were thinking we were going to have the update-alternatives meeting now, but it'll be in an hour or so [15:06] didrocks: your attendance isn't stricly required, so if you can't attend that's ok, but if you can that would be great. is that an ok time? [15:06] jdstrand: hum, I can't be around at that time, I have some family duties [15:06] jdstrand: I don't think indeed that I'm required, you know update-alternatives as well as I do if not better :) [15:07] didrocks: that's fine. I understand the problem and even the specifics of the access you desire [15:07] jdstrand: the only thing to remember is that the alternative isn't on a binary, but on a css file used by gdm via gnome-shell [15:07] gdm3.css [15:07] yep [15:07] which doesn't match the snap name [15:07] nope [15:07] :) [15:07] I guess that's all you need to know :) [15:07] ok, thanks! [15:08] jdstrand: ah, and you got why I separated that in 2 snaps, one arch:all and the other one? [15:08] didrocks: I'll summarize the outcome in the forum after the meeting [15:08] perfect! [15:08] didrocks: actually, I forgot that detail [15:08] there is gsettings and update alternatives [15:08] jdstrand: basically, I built the theme via Travis CI [15:08] which is using the docker image [15:08] niemeyer, PR for gc ready https://github.com/snapcore/spread/pull/60 [15:08] and so, I need to have the theme snap arch: all [15:09] PR spread#60: Garbage collection for google backend [15:09] niemeyer, and tested [15:09] I can't use snapcraft.io because the theme is made of 5 github projects [15:09] and any commit in any of those can trigger a new revisino [15:10] if you are interested into the glory detail, the snapcraft.yaml is: https://github.com/ubuntu/communitheme-snap-helpers/blob/master/snap/snapcraft.yaml [15:10] and the build script is https://github.com/ubuntu/communitheme-snap-helpers/blob/master/build/prepare-build-snap (pulled by the 5 projects in Travis) [15:10] Note: sed -i "s# source: .*$TRAVIS_REPO_SLUG\.git# source: \.#" snap/snapcraft.yaml [15:10] which means "for the current project, take the local branch" (handling PR) [15:11] I guess that's it, more details about what I do for the theme and CI is at https://didrocks.fr/2018/04/10/welcome-to-the-ubuntu-bionic-age-new-wip-ubuntu-theme-as-a-snap/ [15:11] didrocks: it seems you could instead of pointing at 5 repositories, point at one (yours, has files from all 5), and then pull in git commits from the 5 into your one as desired. then you can hook that up and do arch specific builds [15:12] jdstrand: it won't work easily for proposed changes though [15:12] didrocks: it still isn't clear why the 5 trees requires arch stuff.. [15:13] jdstrand: see https://github.com/ubuntu/gtk-communitheme/pull/526#issuecomment-395422606 [15:13] PR ubuntu/gtk-communitheme#526: Made suggested action label button more visible when disabled [15:13] it would be maintenance overhead, so would have to weigh the options [15:13] thanks to this, on each project, I can detect PR in Travis [15:13] and build a particular snap with that changes on those PR [15:13] that people can switch to, test… [15:13] #5280 hit that spread panic [15:14] you can't really do that with snapcraft.io, which is only one branch on one project [15:14] PR #5280: httputil: extra debug if an error is not retried [15:14] didrocks: perhaps that is more of an ev thing then [15:14] didrocks: but the two-snaps approach doesn't really change the conversation regarding update-alternatives/gsettings, right? [15:15] jdstrand: got the confirmation that's not planned/doable right now on the store side, and I have a solution which works. All this, I mean, "I have to use Travis CI, so docker image, so one arch build, hence arch: all, hence 2 snaps" [15:15] jdstrand: no, it's just to explain why there are 2 snaps instead of one :) [15:15] mborzecki: how far is your spread fix from landing? do you need a review? [15:15] I see. ok, well, if it comes up, I can refer back to this [15:15] thanks! [15:16] jdstrand: thank you! :) [15:17] pstolowski: niemeyer said he'll do a slightly different fix, we'll have to wait a bit [15:17] ok [15:19] mborzecki: re hard link vs symlink> of course, you can't hard link a dir. since we are only talking about $SNAP, you could symlink from the local ones to /snap/foo/current then adjust the template policy as needed [15:20] mborzecki: that could probably be made to work [15:24] hrm, 5274 consistently fails with a spread panic here :/ [15:24] * mvo takes a break [15:24] jdstrand: afaiu hardlinking was in the context of *.snap (the squashfs images) [15:29] mborzecki: that would work. it does mean the kernel then has 3 different mount points. I wonder if it will dedupe? [15:31] mborzecki: I left some more input into the PR, some of it is really note about areas that will need attention, might want to add a TODO now or keep a note [15:31] but didn't go to the end of it [15:34] niemeyer, did you fixed the spread panic issue ? [15:35] niemeyer, I can work on that if you want [15:36] No, have been in calls all morning, and having lunch now.. sure, if you have a clear view of the fix, please open a PR.. otherwise I can quickly look at it [15:38] niemeyer, ok, I'll take a look now [15:52] jdstrand: hey, re: https://forum.snapcraft.io/t/classic-confinement-for-subsurface/5795 - should raw-usb give me access to /dev/ttyUSB0? any idea why I'm not seeing denials even though the app can't open the serial port? [16:07] cachio: you can take a look at https://github.com/snapcore/spread/pull/59 niemeyer mentioned he wanted something more informative (maybe some logging there as well?) [16:07] PR spread#59: spread: do not panic if error message from google backend is empty [16:09] cachio: don't know if spread is doing direct http calls to the api, if you suspect it's due to 500s the maybe it'd be possible to catch the problem earlier [16:09] Saviq: if you aren't seeing logged denials, I'm not sure why unless you are non-root or the device didn't end up in the snap's device cgroup [16:09] Saviq: the raw-usb interface uses var rawusbConnectedPlugUDev = []string{`SUBSYSTEM=="usb"`} [16:10] Saviq: it does not have /dev/ttyUSB*, but I would expect a denial to be logged [16:11] Saviq: you can see what is allowed to the snap in the cgroup with: cat /sys/fs/cgroup/devices/snap.name.cmd/devices.list [16:12] mborzecki, sure, I'll take a look [16:12] Saviq: (but you will need to have run the snap once for that to show anything) [16:12] cachio: this will only prevent the panic, if you can catch the problem earlier that'd be great [16:14] jdstrand: hey, can you please enqueue https://github.com/snapcore/snapd/pull/5278/files [16:14] PR #5278: cmd/snap-update-ns: add IsTrustedTmpfs and tests === pstolowski is now known as pstolowski|afk [16:17] mborzecki: btw another thing to consider is that there might be places that assume there is one local snap name for each snap-id, which will no longer be true, UpdateMany and helpers is example (but problably not the only one), they use a stateByID map [16:17] atm [16:20] ok [16:20] thank you [16:22] nacc: o/ [16:22] nacc: oh, I'm wrong [16:22] gpgrt_get_syscall_clamp appears in usr/lib/libgpg-error.so.0.22.0 both the good and bad snaps [16:22] mborzecki, cachio: No logging at this point.. we already have logging.. it's the creation of the error that is wrong [16:23] That doesn't seem right [16:23] rbasak: yeah it's right :) [16:24] rbasak: the only thing i've been able to determine is when _pygit2's ldd shows the wrong libgpg-error [16:24] where determine == indicates a good or bad snap [16:24] rbasak: it's what makes me think our build is fine and it's a bug in snapcraft :) [16:24] mvo: did another pass over 5274 [16:25] ogra_: poke; ubuntu-core-libs, do you want to get that seeded somewhere (tbh, I'm not sure where) so it ends up in main? [16:25] (bug LP: #1572539) [16:25] nacc: yes, that does look different: https://pastebin.ubuntu.com/p/xtnYDMhYR7/ [16:26] nacc: OK, I think I might be caught up with you now :) [16:26] Bug #1572539: [MIR] ubuntu-core-libs [16:26] rbasak: sorry, otp right now; and thit is almost exactly what we hit before, so i had a lot of context in my head [16:26] rbasak: and yep, that's exactly the symptom i see [16:26] i think it's a bug in the rpath/patchelf usage by snapcraft [16:27] Would you agree it's non-deterministic in snapcraft? And I'm just unlucky that it only happens on Launchpad and not locally? [16:27] rbasak: that's my suspicion; did you notice one of my CI runs failed the way your didn't? [16:27] and in the same way as LP's build did [16:27] I didn't, but I guess you're just luckier than I am then :) [16:28] kyrofa: mentioned that the deterministic ordering stuff is in a PR now [16:28] Even if it's made deterministic, how do we make sure that the one used is the one we want? [16:28] like i mentioned in #launchpad, it might make us fully broken or it might fully fix it :) [16:28] Right :) [16:28] mborzecki: can you do a quick pass over 5287 [16:28] er [16:29] 5278 [16:29] yeah, it depends on what the bug we're hitting actually is, and for that i think we need kyrofa or sergiusens to look [16:29] I think we also need snapcraft to follow our ignores from the stage directive [16:29] rbasak: i think it does, right? do we ever see the wrong libgpg-error in stage? [16:29] * zyga has some mental thing where sometimes last two characters and almost always last two digits get swapped [16:29] rbasak: *possibly* the rpath needs to respect the eliding [16:29] I don't know what's present in stage in the broken case since I can't reproduce a broken build tree [16:30] yeah [16:30] But I don't see anything in stage/lib/ in the successful case, which is where I'd expect that one to go [16:31] So I think the ignore is working, but it's later being unignored. [16:31] right, could be [16:31] this was a pain to debug, and kyrofa just understood the details a lot better than i did and was able to figure it out faster than i could :) [16:32] So I guess we're broken until this can be addressed in snapcraft. In the meantime, the best I can do is manually build the snap locally and upload after verification that it's OK. [16:33] I wonder if I can hack an actual deletion of the file from parts/ [16:33] And if that would break anything [16:34] Not that I could test that since I can't reproduce :( [16:35] rbasak, nacc yeah I think the first thing we need is a way to reproduce [16:35] rbasak, have you tried using edge, by any chance? One (of two) deterministic-fixing things has landed there [16:36] mborzecki, niemeyer the PR works well [16:36] niemeyer, but there is something else which is causing this 500 [16:36] kyrofa: I could try locally where I can't reproduce, but I'm not sure where that'll get me [16:36] rbasak, i.e. with edge, you should notice that snapcraft handles parts in the same order between runs [16:36] rbasak, it may allow you to reproduce every time, or it may fix LP, haha [16:36] jdstrand: #5279 is interesting [16:37] PR #5279: interfaces/builtin: create socketcan interface [16:37] I don't think I have any choice about what LP runs [16:37] But I can see if it reproduces every time, sure :) [16:37] Indeed, and it won't be fixed there yet anyway [16:37] Yeah see if changes anything for you locally [16:37] I'm running out of time today. I'll try that tomorrow. [16:37] cachio: What PR? [16:37] niemeyer, https://github.com/snapcore/spread/pull/59 [16:37] PR spread#59: spread: do not panic if error message from google backend is empty [16:37] kyrofa, nacc: thank you for your help. [16:38] zyga: yes I mentioned that earlier [16:38] Of course. I'll chat with sergiusens and see if we can get the other deterministic thing sorted as well [16:38] oh, sorry I missed trhat [16:38] (library search order) [16:38] cachio: No it doesn't work well.. an error value that says "error" is quite pointless [16:38] rbasak: np, sorry for not documenting what i found better [16:40] rbasak, nacc: since you are building with jenkins, I would suggest you use the snap instead of the deb. We are waiting for that change to happen for buildd's as well [16:40] zyga: the question about whether to use network interfaces is indeed interesting, i'll wait to see what you all think! [16:40] jdstrand: AFAIK some filesystems are toying with hardlinking directories but it's not mainline yet [16:41] joc: I'm +0.8 on making it a socket type and going with existing interfaces [16:43] pstolowski|afk: here is a econnereset https://api.travis-ci.org/v3/job/389153950/log.txt for you (you asked earlier) [16:43] jdstrand: oh and totally forgot to ask you [16:43] mvo: great, thanks, i'll save it and inspect tomorrow [16:43] jdstrand: the new seccomp deferral to userspace feature that was on LWN looks super juicy [16:43] jdstrand: do you think we should eye supporting that? [16:44] zyga: 5263 is also ready for another look [16:44] pstolowski|afk: yw [16:45] mvo: I was reading it already [16:45] just approved it again [16:45] (with two questions) [16:45] PR snapd#5272 closed: cmd/snap-update-ns: improve wording in many errors [16:46] pstolowski|afk: econreset: https://api.travis-ci.org/v3/job/389153950/log.txt [16:47] zyga: yep, just got it from mvo above, thanks [16:47] do you want me to save the log and restart? [16:49] mvo: shall we close https://github.com/snapcore/snapd/pull/5234 ? [16:49] PR #5234: snap: add `snap list --format=...` option [16:51] zyga: I think that is the bit that lxd and other container managers wanted. tyhicks could probably comment further. iirc, that is potentially interesting for prompting, but iirc, jjohansen mentioned that it wasn't sufficient. jjohansen already started apparmor prompting [16:52] I was wondering about how fast it is and if it could be used to make changes to seccomp "profiles" instant without process recycling [16:52] https://lwn.net/Articles/754789/ is what I presume you looked at [16:52] _perhaps_ https://lwn.net/Articles/756233/ [16:53] jdstrand: this is also potentially super useful for... classic confinement [16:53] we could do smart exec interception [16:54] execing inside $SNAP would give you the dynamic linker interception with correct flags [16:54] its interesting, arguments from it are still a problem [16:54] execing outside would give you the regular behaviour [16:54] (so finally we could ship bash as a classically confined app) [16:54] jjohansen: yes, I understand it's still WIP [16:55] I'd love if some work to copy the arguments for inspection was applied to seccomp as this would make it x10 more useful [16:55] niemeyer, yes, that's true, I am still researching what it is causing that google returns the error [16:55] hmm, apparently my subscription expired [16:55] jjohansen: hey :-) how are you? [16:55] hey zyga [16:55] that's weird [16:55] cachio: I don't think that's critical in this case.. a 500 is an error on Google side.. it's blowing up beyond our control.. what we need is to simply be able to display that, and to retry if needed. [16:56] cachio: Most backends, and I suspect Google included, already have logic for retrying on such errors [16:56] jdstrand: I sent you a subscriber link [16:56] niemeyer: spread broke google? :-) [16:56] next up, azure! [16:56] zyga: Apparently.. [16:56] hehehe [16:56] I would have to believe there would be a significant performance hit [16:56] jdstrand: people in the thread there say it's next to none [16:57] zyga: like, we have the old policy in the kernel and ask userspace if it has something new? [16:57] I didn't read the patches or anything, it just looks interesting on the outside [16:57] zyga: the problem with seccomp args is that copying them is TOCTTOU race [16:57] jdstrand: I think the point is that there is no policy [16:57] which is always bad for security [16:57] it's a decision that goes to userspace to ack (perform) and return a result / error / fd [16:57] jjohansen: I know but I was hinting at a way to copy them out once [16:57] jjohansen: and then pass them to other layers already in the kernel [16:58] niemeyer, it is nice to this this comment in the code [16:58] / Repeat on 500s. Comes from Linode logic, not observed on Google so far. [16:58] jjohansen: it's doable, just nobody is doing that apparently [16:58] jjohansen: perhaps not everything can be copied but common string / stat buffers should be ok [16:58] sure, problem is you need to rewrite the whole syscall stack todo that [16:58] :D [16:58] I should update it too [16:58] I understand that's probably the reason [16:59] jjohansen: it's the kernel, I don't doubt it will happen, initially people will hate it, then several years later it will be better than sliced bread [16:59] just after more drivers in userspace and other microkernel things ;) [16:59] zyga: uhmmm, probably not ever going to happen [16:59] jjohansen: well, isn't that _already_ happening? [17:00] it might happen on a couple syscalls [17:00] zyga: no [17:00] elf in userspace [17:00] ah, the syscall thing [17:00] but the syscall data has to be copied out anyway [17:00] well, I'm not a kernel hacker, I'm sure it's not trivial and very performance sensitive [17:01] zyga: they are just copying the 6 register values for the syscall, regardless of whether the syscall actually uses 6 register values [17:01] it's just that I don't believe in "no" anymore as the kernel has crazier stuff thrown into it every year [17:01] cachio: Do you have that debug output which observed the 500 at hand? [17:02] zyga: eg. ioctl, that syscall has different params values sizes, .. based on which ioctl it is and new ones are always being added [17:02] niemeyer, this it what I have https://paste.ubuntu.com/p/HMvvxNMq9G/ [17:02] jjohansen: that's a good point [17:02] its a complete mess, and only the specific ioctl handler deals with it [17:02] jjohansen: still, handling open and a few related calls this way would make seccomp incredibly more powerful [17:02] some syscalls maybe will get the treatment but not all of them [17:02] ioctl can stay as is [17:03] zyga: there are other reasons it problematic for seccomp to access the args [17:03] like it needs to do the copy from user but its in the syscall assembly code level [17:03] cachio: Nice, thanks.. let me cook something up quickly [17:03] its not impossible, but it sure makes things uglier [17:11] jdstrand: so ttyUSB0 seems to be 188:0 AFAICT and devices.list does not have that [17:11] but agreed I don't understand why no DENIED [17:14] Saviq: DAC is evaluated first, so if it isn't in the device cgroup, then no denial [17:14] Saviq: what is the output of: udevadm info /dev/ttyUSB0 [17:14] jdstrand: http://paste.ubuntu.com/p/vtxzQHHVWQ/ [17:15] Saviq: it isn't tagged: E: TAGS=:systemd: [17:16] btw, jdstrand I don't know if you are aware of an issue with systemd and the recent introduction of bind/unbind events [17:16] Saviq: what is the output of: snap interfaces -i raw-usb [17:16] it apparently has caused issues with udev tagging [17:16] * zyga stumbled upon systemd bug report about this [17:17] zyga: I'm not on that specific issue. when was it introduced? I needed to redo things some time ago for a change in behavior [17:18] niemeyer: is now a good time to meet? [17:20] niemeyer, I am not getting the panic anymore with this change https://paste.ubuntu.com/p/VhKjqwdnyf/ [17:20] Saviq: fyi, the device.list with c:188:0 is 'character device' with major 188 and minor 0. ls -l /dev/ttyUSB0 will of course give you major minor. I don't have a USB serial plugged in so didn't confirm 188:0 [17:21] niemeyer, basically because the error message is comming empty [17:21] jdstrand: Just finishing the proposed change and will be with you [17:21] Saviq: but, clearly the device isn't udev-tagged so I wouldn't expect it in there [17:21] cachio: I don't know how to say that more clearly.. we discussed this in the meeting, and I just explained above.. of course the error is gone if you kill the error message [17:21] cachio: We don't want that [17:22] cachio: We want to fix the error message instead.. please leave it with me.. I'll push a change in a minute [17:22] jdstrand: let me find the bug link [17:22] jdstrand: it's already deployed to bionic [17:23] jdstrand: the summary of the bug is: systemd sees bind/unbind events and treats them as add/remove, dropping tags [17:23] https://github.com/systemd/systemd/issues/8221 [17:23] the comments indicate that this has caused widespread issues [17:25] zyga: this seems different from what I saw and that systemd will need a patch [17:26] PR snapd#5280 closed: httputil: extra debug if an error is not retried [17:30] cachio: Please give this a shot and let me know how it goes: https://github.com/snapcore/spread/commit/9aa319e [17:30] cachio: It's in master [17:31] mborzecki: ^ [17:31] niemeyer, sure [17:31] Most of the change in the loop is just indenting it in so we can repeat the call from later on [17:32] jdstrand: I'm ready [17:32] jdstrand: https://meet.google.com/ipr-very-aqb [17:33] ok [17:35] niemeyer, it is working [17:35] spread images was failing 100% of the runs and now it does not fail anymore [17:40] cachio: Nice, so retrying is working as well [17:41] yes [17:41] jdstrand: so devices.list http://paste.ubuntu.com/p/x6h58TrPPk/ does not have 188:0 in it, where would you say the missing piece is? udev rules? [17:47] PR snapd#5281 opened: snap: reject more layout locations [17:57] * zyga -> teak [17:57] tea [18:24] Pharaoh_Atem: https://www.linux.com/learn/intro-to-linux/2018/5/get-started-snap-packages-linux :-) [18:24] nice [18:26] well then [18:26] that's surprising [18:26] on Fedora :) [18:38] niemeyer, with this error on spread I could test the garbage colletion very well [18:38] Currently I am running it [18:43] niemeyer, I am cleaning more than 400 machines [19:01] cachio: Wow [19:02] cachio: How come we have that many leftovers? [19:04] niemeyer, all the builds that failed in travis because of the issue left all the machines alive [19:04] and the testing I did to reproduce errors too [19:06] Ah, makes sense [19:20] * zyga breaks for some book reading [19:42] PR snapd#5263 closed: errtracker: do not send duplicated reports [19:51] Pharaoh_Atem, hey, did you see this one? [19:52] https://travis-ci.org/snapcore/snapd/builds/389407059#L1973 [19:52] looks like someone needs to fix the sed command [19:52] I think that was originally added by mvo [19:53] also, bogus date should be fixed too [20:00] niemeyer: ok, I sketched out a pretty complete design that someone could run with here: https://forum.snapcraft.io/t/classic-confinement-request-communitheme-set-default/5146/24 [20:00] Pharaoh_Atem, ok, I'll try [20:00] niemeyer: please review and ack since I made a couple tweaks and thought about future iterations that might affect the yaml [20:10] zyga: did my answers to 5274 look reasonable? I whish there was a "stack this PR on top of the other" feature in GH, I have a nice cleanup pending on top of 5274 [20:15] Saviq: sorry, I was in a meeting. what is the output of: snap interfaces -i raw-usb? [20:25] Mvo: I didn’t check yet. My computer is occupied by the family [20:27] rbasak: fwiw, i thought i had a brilliant idea, that maybe we weren't specifying that pygit2 needed to be built/staged after libgpg-error, but afaict, pygit2 comes from git-ubuntu's dependencies, which is after devscripts which is after gnupg2 which is after libgpg-error. [20:27] rbasak: but i think that might be the way to debug it, if we can get a failure and success log [20:29] jdstrand: will alternatives allow coping of binaries out? [20:29] zyga: not by a strict definition of what you just said, but yes it allows confinement escape. the post discusses that [20:30] niemeyer, did you already updated spread on amazonaws? [20:30] Rather than escape I was wondering about just working outside of the namespace [20:30] niemeyer, some builds still failing with the spread issue [20:31] last error that I saw was 30 minutes ago [20:31] jdstrand: http://paste.ubuntu.com/p/Zpq4mKT6vt/ [20:31] zyga: the mechanism would allow substituting, say, /usr/bin/vim, for something copied from the snap into /var/lib/snapd/alternatives. the process regulating the use of the interface would not [20:32] Saviq: ok, and what is in /etc/udev/rules.d/70-snap.subsurface.rules [20:32] I don’t follow how a binary copied out of a snap would operate [20:33] zyga: it wouldn't [20:33] Shared libraries, data, etc [20:33] zyga: we wouldn't allow it [20:33] Ah [20:33] So what would we allow [20:33] but the interface is general [20:33] I assume the copy is for a specific purpose [20:33] did you read the topic? [20:33] :) [20:33] On the forum [20:33] yeah [20:33] Yes, maybe misread or missed the point [20:34] it is prompted to change out the the gdm css theme file [20:34] Or probably just sleeping :-) [20:34] s/the the// [20:34] Yeah data would work fine [20:34] Btw [20:34] Could this be the general exports mechanism? [20:35] from a mount namespace perspective, yes, not for confinement escape. that is why it is manual [20:35] Eg export wallpapers/man pages/themes/other data [20:35] With alternatives on top [20:35] zyga: general exports> no, it is specifically for updating symlinks in the 'update-alternatives' system (see the man page if you are unfamiliar with it) [20:36] Right [20:36] zyga: I mean, maybe [20:36] Ok [20:36] it depends on how it is all put together. it might be good, it might not [20:36] jdstrand: http://paste.ubuntu.com/p/bH6cXrmqFx/ [20:37] Btw: very nice write-up [20:37] zyga: alternatives is about files, not directories, so for a general export mechanism it wouldn't work well. for a handful of files, sure [20:38] I was thinking just about the copy part [20:38] And perhaps about /var/lib/snapd/e ports [20:39] Saviq: that looks correct. what happens if in one terminal you do: 'sudo udevadm monitor --subsystem-match=usb' and then you unplug and plug in the device [20:39] Saviq: then, give my the output of the monitor command and 'sudo udevadm info /dev/ttyUSB0' [20:40] zyga: the locations and dir structure in /var/lib/snapd/alternatives could change. I had to make that up as I wrote it cause I realized gdm might crash if it starts before the communitheme-set-defaults snap was mounted [20:41] Mmm [20:41] (we initially said that the alternative would point to /snap/name/current/... [20:41] ) [20:41] that won't work great for a number of things [20:42] I will watch this closely, I can help with the code as well [20:43] I don't know who will work on it. I just participated in the design. if I am to do it, would need to get it prioritized with stakeholders, etc, etc [20:43] but I tried to lay it all out so someone could run with it [20:43] but we need a final approval on the design/write-up [20:45] Agreed [20:47] jdstrand: https://pastebin.ubuntu.com/p/34x4k6RjxW/ [20:47] zyga: I added a note to the writeup that only files are supported [20:47] Thanks [20:47] Saviq: oh, this is on bionic? [20:48] Saviq: I think you hit zyga's bug: https://github.com/systemd/systemd/issues/8221 [20:50] Saviq: I suspect this might work on a xenial system (or perhaps bionic with just the xenial kernel). can you file this against systemd in Ubuntu if it works on xenial and not bionic [20:50] I really wonder how something this huge went under everyone’s radar since 4.12 [20:51] zyga: it looks like it is subsystem dependent. eg, the input subsystem has no bind/unbind event if I plugin a joystick [20:52] Mm [20:52] I see a swarm of bins/unbind messages but I didn’t check the details [20:52] It may also explain why my .. battery doesn’t work [20:53] I have a battery that ought to charge a ThinkPad via usb-c pd [20:53] It supposedly works in windows [20:53] But when I plug it I see a bazillion of errors and bind/unbind calls [20:53] Oh well [20:54] Software [20:54] seems this would plausibly be it. the bug had a patch you could run locally if you were desperate :) [20:54] As long as we don’t have GNU/Linux toilets [20:54] Yeah, I think I’ll pass for now. I mostly work on a desktop [20:55] heh [20:57] we might be able to work around this in snapd based on https://github.com/freedesktop/ModemManager/commit/c07382a486f53e1b3cf729b41518d2a0ba528f5a [20:58] jdstrand: oh! [20:58] * Saviq boots xenial up [20:59] * jdstrand tries to find his usb serial [21:03] PR snapcraft#2143 closed: lifecycle: don't clean priming area if the snap is being tried [21:12] niemeyer, https://travis-ci.org/snapcore/snapd/builds/389166279 [21:12] niemeyer, it is not happening in all the builds, it is more sporadic now [21:23] Saviq: actually, I figured it out [21:23] zyga: you may want to listen [21:23] I'm here actually [21:24] Saviq (cc zyga): snapd isn't affected by that systemd issue because while bind and unbind come through, snap-device-helper ignores them [21:25] Saviq (cc zyga): the problem is that udevadm info /dev/ttyUSB0 is reporting the subsystem as tty [21:25] do we need to update any bundled udev rules that don't involve just tagging via s-d-h ? [21:25] zyga: probably [21:25] someone should look at that. modem-manager was specifically affected [21:26] Saviq (cc zyga); but if I change the rules file in /etc/udev/rules.d/70... to have something like this, it works (on 18.04 and 4.15): [21:27] SUBSYSTEM=="usb", TAG+="snap_test-policy-app-consumer_raw-usb" [21:27] SUBSYSTEM=="tty", ENV{ID_BUS}=="usb", TAG+="snap_test-policy-app-consumer_raw-usb" [21:27] TAG=="snap_test-policy-app-consumer_raw-usb", RUN+="/usr/lib/snapd/snap-device-helper $env{ACTION} snap_test-policy-app-consumer_raw-usb $devpath $major:$minor" [21:27] Saviq (cc zyga): it is the second rule that I added [21:27] Saviq: I'll create a PR [21:31] hmmmm? [21:31] wait [21:31] so we append a tag (to a set of tags) [21:31] then if tag is .. what we added we run the helper [21:31] is this exploiting the fact that bind/unbind reset tags? [21:31] zyga: huh? [21:31] no [21:31] the subsystem doesn't match [21:32] the first is what we have now [21:32] this is what I don't understand https://www.irccloud.com/pastebin/vLHFJYLd/ [21:32] udevadmin info /dev/ttyUSB0 shows the subsystem as E: SUBSYSTEM=tty [21:32] therefore the first rule will never match [21:33] so we add a tty rule that only adds tty devices that are usb [21:33] zyga: what's the problem? [21:34] I think I just need sleep [21:34] :) [21:34] I will read it with fresh mind tomorrow [21:34] if subsystem is tty and the property ID_BUS is set to usb, tag the device [21:34] I perhaps need to see it on a wider screen [21:34] not on IRC [21:34] and check where the newlines are [21:34] well, you'll see it in a PR in a moment [21:34] as wrapping and udev using most horrid syntax makes it confusing [21:34] systemd guys, really, udev rules are the worst [21:45] PR snapd#5282 opened: interfaces/raw-usb: also allow usb serial devices [21:45] Saviq, zyga: ^ [21:54] jdstrand: can you please review https://github.com/snapcore/snapd/pull/5281 :) [21:54] PR #5281: snap: reject more layout locations [21:54] it's just a rescue from a PR I closed [22:03] PR snapcraft#2159 opened: many: extract lifecycle ordering into own module [22:16] cachio: No, haven't updated the Travis binaries.. will do so today still [22:21] PR snapcraft#2156 closed: snap: use apt from the archive instead of compiling [23:19] cachio: Updated.. please let me know how it goes [23:20] Just restarted that build as well [23:39] niemeyer, great, thanks [23:59] Does anyone know how stage-packages are resolved? Do they refer to regular Ubuntu packages or something else? Thanks