@mvo and @zyga-snapd: it looks like 2.28 regressed regarding udev tagging. I verified today that udev tagging is working correctly in 2.27.6
With 2.28, if I create a snap that connects the opengl interface, I expected to see a file created in /etc/udev/rules.d/70-snap.$SNAPNAME.rules on install (classic distro), but it is not created. If I disconnect and connect it is also not created. Interestingly, if I connect the uhid interface the file is created (but it has its own problems, see below).
diffing opengl.go and uhid.go there is nothing that jumps out as being a problem in opengl.go. If I update interfaces/udev/backend.go Setup() in line 95 to have:
logger.Debugf("JAMIE: snippet=%v", snippet)
then I see in the logs this:
Sep 18 17:20:59 sec-xenial-amd64 snapd: 2017/09/18 17:20:59.302199 backend.go:69: DEBUG: JAMIE: snippet=
snippet is always empty. There are quite a few levels of indirection to disentangle wrt spec, etc that I didn’t have time to do before EOD, so reporting here in the hopes it is obvious to @zyga-snapd or someone else what the problem is.
The snap I am using is: https://code.launchpad.net/~jdstrand/+git/test-policy-app
Regarding uhid, it looks like it doesn’t have entries in sysfs, so it isn’t getting properly udev tagged. This is a separate issue that needs to be addressed. Perhaps in the same manner I worked around nvidia: https://github.com/snapcore/snapd/pull/3938