/srv/irclogs.ubuntu.com/2016/03/31/#snappy.txt

wililupyQuestion: I'm trying to build a kernel snap from Kernel Source 4.5 and I need to build custom kernel modules for some drivers. I have successfully compiled the kernel on my build machine, built the headers, and compiled the drivers, but how do I do all of this using Snapcraft?00:09
=== chihchun_afk is now known as chihchun
=== chihchun is now known as chihchun_afk
=== xnox_ is now known as xnox
=== Michaela is now known as Mikaela
=== stgraber_ is now known as stgraber
=== chihchunl is now known as chihchun
=== clemensv_ is now known as clemensv
=== mjl_ is now known as mjl
wililupy...helllooo...04:12
stevebiscuitwililupy: it's night time for a lot of the snappy people04:51
wililupyyeah, I figured. I'm having issues building a kernel snap for a vendor, and was hoping to get some guidance.04:51
dholbachgood morning06:49
=== SaMnCo-laptop is now known as SaMnCo-desktop
=== chihchun is now known as chihchun_afk
=== chihchun_afk is now known as chihchun
zygajdstrand: ping11:04
asacsudo is broken now in classic?11:32
asac(classic)ubuntu@localhost:~$ sudo apt-get install snapcraft bzr11:32
asacsudo: no tty present and no askpass program specified11:32
asacguess related to https://bugs.launchpad.net/snappy/+bug/156431611:32
ubottuLaunchpad bug 1564316 in Snappy "classic dist-upgrade fails on sudo and tzdata..." [Critical,New]11:32
asace.g. to the upgrade that came in11:32
asachttps://bugs.launchpad.net/snappy/+bug/156436911:34
ubottuLaunchpad bug 1564369 in Snappy "sudo broken in latest classic" [Undecided,New]11:34
asacmdeslaur: ^11:36
asacanything you can think of being wrong with your sudo upload?11:36
mdeslaurasac: not off hand, no. needs investigating11:38
asacits hard blocker on developing snappy11:38
asacor on snappy11:38
asacanyway, lets see if one of snappy folks gets on i11:38
asact11:38
asacmdeslaur: no complains from normal ubuntuf olks?11:38
* asac doesnt have rthe latest sudo yet on xenial desktop and wonders if i should rather not upgrade11:39
mdeslaurasac: nope, works fine on regular desktop11:39
asacok let me upgrade11:40
asac:)11:40
asaclets hope you are right11:40
asacmdeslaur: were there any snappy changes in your merge?11:40
asacor in the version that we had before :)11:40
mdeslaurthere's nothing snappy-specific in the sudo package, no11:41
asacok11:41
asacodd11:41
mdeslaurdo you get any apparmor denials?11:41
asaclets wait for snappy crew to come in11:41
* ogra_ sees the same on a rpi here11:42
mdeslaurwhat's the output of "tty"11:43
ogra_(classic)ubuntu@localhost:~$ tty11:44
ogra_not a tty11:44
ogra_(classic)ubuntu@localhost:~$11:44
mdeslaurwell, there you go11:44
ogra_well, that was guessable from the error :P11:44
mdeslaurand downgrading sudo works?11:44
mdeslaurdid you get a new glibc too?11:45
jdstrandmdeslaur: fyi, 'snappy shell classic' does not run under apparmor (it is just a command to get into an ubuntu chroot)11:45
* ogra_ only just did "snappy enable-classic" ... this was a fresh install11:45
ogra_you have to ask asac for an upgrade log11:45
jdstrandbug #1564316 has the upgrade log11:45
ubottubug 1564316 in Snappy "classic dist-upgrade fails on sudo and tzdata..." [Critical,New] https://launchpad.net/bugs/156431611:45
ogra_ah11:46
* jdstrand notes he hasn't tried any of this yet11:46
jdstrandI wonder if it is the pt_chown removal11:46
ogra_well, i wonder why it mounts /etc/sudoers at all11:47
asacwe cnanot downgrade11:47
asaci had to install fresh11:47
asacbecause dist-upgrade failed11:47
asacbecause sudoers cannot be written on snappy11:47
asacogra_: it does that so you can sudo apt-get install11:48
ogra_yeah, it shouldnt bind mount it11:48
asacwe could have a copy11:48
asacsure11:48
asacthink thats mvos work11:48
ogra_why ?11:48
asacjust said... think we could create a copy :)11:48
ogra_the relevant info isnt in there11:48
ogra_on snappy11:48
asacso i remember initially in classic you couldnt sudo apt-get install11:49
asacthen mvo landed something11:49
asacmaybe it was this :)11:49
* jdstrand is unable to enable classic11:49
ogra_the relevant file is /etc/sudoers.d/90-cloud-init-users11:49
asacjdstrand: it works well11:49
jdstrandGet https://images.linuxcontainers.org/meta/1.0/index-system: dial tcp 192.99.34.219:443: i/o timeout11:49
asacsudo snappy enable-classic11:49
asac:)11:49
asacoh we still use those images11:49
asacheh11:49
ogra_not /etc/sudoers11:49
jdstrandheh, I know, except not :)11:49
asacthast a critical bug too11:49
ogra_yes :(11:50
asaclets put bets on how likely this is still in when we release :)11:50
asacanyway11:50
ogra_well, we need an arm64 image at least11:50
asacjdstrand: just try again11:50
* jdstrand has tried 8 times11:50
asacits amateur server that probably will come back11:50
asac:P11:50
* jdstrand keeps trying11:50
asac(sorry for being ironic)11:50
jdstrandah, the 9th time's the charm11:50
asacsee11:51
asacCDN11:51
asaci am sure though its your internet net11:51
asac:P11:51
asaccool thanks for trying11:51
jdstrandI can confirm the bug11:51
asacgreat... that makes it three :)11:52
ogra_sudo umount /writable/classic/etc/sudoers11:52
ogra_sudo mount --bind /etc/sudoers.d /writable/classic/etc/sudoers.d11:52
ogra_then try again11:52
asacthat works?11:52
ogra_should work11:52
asacthe upgrade or the sudo?11:52
asacok11:52
ogra_sudo11:52
asacupgrade would work too i guess11:52
ogra_yeah11:52
asacor at least less likely to conflict aka break11:53
jdstrandI can confirm ogra_'s commands fix it11:53
jdstrandit is still not a tty, but sudo works11:54
asacogra_: added it as workaround giving credits to you11:54
asacogra_: https://bugs.launchpad.net/snappy/+bug/156436911:54
ubottuLaunchpad bug 1564369 in Snappy "sudo broken in latest classic" [Critical,New]11:54
mdeslaurhuh, that's odd11:54
asacthink now we can wait for mvo to come back unless you guys know what to do11:54
ogra_mdeslaur, nah, not odd11:54
ogra_mdeslaur, /etc/sudoers lives in a squashfs and then gets bind mounted into the container11:54
asacbah11:54
ogra_so it is ro underneath11:54
asaci cannot save the workaround11:54
asaclaunchpad!!!11:55
asacposting as comment instead then11:55
asacalso not working :(11:55
ogra_re-login ?11:55
asacwhy? i used lp a few minutes ago11:55
asacWORKAROUND (credits to ogra):11:55
asac  ubuntu@localhost:~$ sudo umount /writable/classic/etc/sudoers11:55
asac  ubuntu@localhost:~$ sudo mount --bind /etc/sudoers.d /writable/classic/etc/sudoers.d11:55
ogra_heh11:56
jdstrandogra_: that makes sense for 'sudo apt-get upgrade' in the chroot failing, but not sure how it explains sudo not working in a fresh 'enable-classic'11:56
asacwell needed to paste it somewhere so it doesnt get lost :)11:56
ogra_jdstrand, yeah, thats indeed a bit weird, especially the tty bit11:56
jdstrandbut tty returns 'not a tty' before and after your workaround11:57
jdstrandthat doesn't seem to be the issue...11:57
mdeslaurwhat's in the file in the sudoers.d directory?11:57
asaco/11:57
asacffox is king of lp11:57
asacmdeslaur: two files11:57
jdstrandmdeslaur: with ogra's bind mount, it is empty11:57
ogra_shouldnt11:58
jdstrandsorry, I lied11:58
* ogra_ waits for apt-get install snapcraft to finish11:58
jdstrandI wasn't root do didn't get bash completion11:58
asacmdeslaur:11:58
asacroot@localhost:/home/ubuntu# cat /etc/sudoers.d/10-ubuntu-core-secure-path11:58
asacDefaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snaps/bin"11:58
asacroot@localhost:/home/ubuntu# cat /etc/sudoers.d/90-cloud-init-users11:58
asac# Created by cloud-init v. 0.7.7 on Thu, 31 Mar 2016 11:23:15 +000011:58
asac# User rules for ubuntu11:58
asacubuntu ALL=(ALL) NOPASSWD:ALL11:58
asacand README11:58
asacyay upgrading xenial proper also failed ;)11:58
mdeslaurah, no the NOPASSWD alleviated the need for a tty11:58
asaccups-browsed :011:59
ogra_oh, indeed !11:59
asacnot sudo... so no panic :)11:59
asacbut why did this change?11:59
asacwhere did we change something?11:59
asacbefore we had sudoers bindmounted11:59
mdeslaurit didn't change, it just never properly handled a sudo package upgrade properly11:59
asacwait12:00
asactahts not true12:00
asaci install fresh classic12:00
asacwhich just downloads a prebuilt image and unpacks12:00
asacno uptgrade etc.12:00
asacand then i got the sudo problem12:00
asacupgrading wasnt possible at all12:00
asacso its not upgrade issue12:00
jdstrandyeah, that is what I was saying12:00
asacat least not an upgrade on my side12:00
ogra_yeah, there must still be something wrt tty12:00
asacsomething changed for sure12:00
asacsomewhere :)12:00
mdeslaurhrm12:00
jdstrandI wonder if 10-ubuntu-core-secure-path isn't being copied into place with enable-classic or something12:01
jdstrandso then you need a password12:01
ogra_remove the bind mount and check from outsuide the container ;)12:01
asacmaybe mr. graber though hacked up his container tarball ... just so we stop using those unsupported things12:01
ogra_ubuntu@localhost:~$ sudo ls /writable/classic/etc/sudoers.d12:02
ogra_README12:02
ogra_but thats not the issue12:02
jdstrandyeah12:02
ogra_there is something wonky about ttys12:02
jdstrandogra_: I think that explains it12:02
ogra_(classic)ubuntu@localhost:~$ tty12:02
ogra_not a tty12:02
* ogra_ has a non upgraded container, gimme a minute12:02
jdstrandogra_: we aren't bind mounting /etc/sudoers.d so 90-cloud-init-users isn't getting in there12:03
ogra_ubuntu@localhost:~$ mount|grep sudoers12:03
ogra_/dev/mmcblk0p2 on /etc/sudoers.d type ext4 (rw,relatime,data=ordered)12:03
ogra_/dev/loop0 on /writable/classic/etc/sudoers type squashfs (ro,relatime)12:03
ogra_thats with the old classic container12:03
jdstrandogra_: but, why is 90-cloud-init-users there at all on my system...12:04
ogra_ubuntu@localhost:~$ sudo ls /writable/classic/etc/sudoers.d/12:04
ogra_README12:04
ogra_ubuntu@localhost:~$ snappy shell classic12:04
ogra_...12:04
ogra_(classic)ubuntu@localhost:~$ tty12:04
ogra_not a tty12:04
jdstrandlike, why is the ubuntu user not supposed to enter a password?12:04
asacjdstrand: we use cloud-init still no?12:04
ogra_(classic)ubuntu@localhost:~$ sudo ls12:04
ogra_[sudo] password for ubuntu:12:04
ogra_...12:04
ogra_so here it works12:04
asacjdstrand: i think we never ask for password in snappy for sudo?12:04
asacasked12:04
ogra_despite not having a tty12:04
asachmm12:04
asacnot true indeed12:05
jdstrandasac: sure, but haven't we always required a password for sudo?12:05
asacso in classic we dont12:05
ogra_in classic we obviously did12:05
jdstrandI'm talking outside the classic shell12:05
ogra_outside we dont12:05
asacogra_: we asked for pass?12:05
ogra_yeah12:05
asacoh :)12:05
ogra_see above12:05
* asac old12:05
ogra_thats a container from about a week ago12:05
ogra_not upgraded12:05
asacso what is expected experience? i assume we want same behaviour for sudo in and outside container?12:06
ogra_but even there tty says there is no tty12:06
asace.g. either pass or not?12:06
jdstrandmeh, even 15.04 has 90-cloud-init-users12:06
ogra_inside the classic container ?12:06
* ogra_ has never tried classic on 15.04 12:06
asacthere isnt classic12:07
ogra_right12:07
asacon 15.0412:07
asaccloud-init is our first boot tool12:07
ogra_i thought i missed something12:07
asacit has always been there12:07
jdstrandogra_: not what I meant. I got distracted by the fact that there is no password prompt for sudo at all in snappy12:07
ogra_sadly, yeah :PO12:07
ogra_jdstrand, thats a cloud init config thing12:07
jdstrandogra_: is that something with udf options?12:08
ogra_nope, something with the cloud init defaults12:08
jdstrandcause jeez, I have two live systems with this12:08
ogra_/var/lib/cloud/seed/nocloud-net/user-data and /var/lib/cloud/seed/nocloud-net/meta-data are pre-created12:08
ogra_and iirc theer is an option you can set in user-data to make it ask12:09
* jdstrand adds this as a todo to discuss with mvo12:09
* jdstrand edits this file on his live systems12:09
jdstrandogra_: ok, so, back to asac's issue12:10
ogra_the ubuntu user is in the sudp group by default so dropping the 90-cloud-init-users would be fine12:10
jdstrandogra_: I guess something in earlier image worked and something in latest doesn't12:10
jdstrandogra_: I'm on 16.04+20160321.17-27 on the host here12:11
jdstrandif I enable-classic and shell classic, I have the no tty issue12:11
ogra_you could try sideloading a newer ubuntu-core (breaks upgrades though)12:11
jdstrandogra_: your bind mount papers over the underlying issue I think12:12
ogra_it does12:12
jdstrandbut at least it allows people to keep working, so that's good :)12:12
jdstrandogra_: I can say that /usr/lib/pt_chown does not exist in the container12:12
* jdstrand wishes he had an earlier classic12:12
ogra_wow12:13
jdstrand/usr/lib/pt_chown is not supposed to exist btw12:13
ogra_looking at the cloud-init docs it seems thats actually a default12:13
jdstrandogra_: right, I knew that is what they set12:13
ogra_how awful12:13
jdstrandI am a lot less sure that is the correct default for snappy12:13
jdstrandogra_: I forget their rationale. smoser could certainly remember12:14
ogra_he's on vacation :)12:14
jdstrandugh12:15
ogra_but i guess there is a reason and there were discussions ... so i wont bother :)12:15
jdstrandthat is why I want to bring it up with mvo rather than filing a bug, doing the mailing list, etc12:16
jdstrandbut it's a trap!12:16
jdstrand:)12:16
ogra_hah12:16
jdstrandI have to know I need to edit that file12:16
jdstrandI don't think the snappy docs mention this anywhere12:17
zygajdstrand: hey12:17
ogra_you could boot with cloud-init=disabled on the kernel cmdline ;)12:17
jdstrandzyga: hey12:18
ogra_(though then you end up without ssh keys ... iirc thats the only thing we need cloud-init for nowadays)12:18
zygajdstrand: I posted some cleanups and seccomp12:18
zygajdstrand: and I'm about to post dbus12:18
jdstrandzyga: I was actually going to respond to your ping and then all that ^ came up at the same time12:18
zygajdstrand: no worries :)12:18
zygajdstrand: I already forgot what I wanted then12:18
jdstrandzyga: yeah, I was going through the emails for that12:18
jdstrandogra_: ah, so, interesting. I happened to have a vm with a previous enable-classic that hasn't been upgraded12:22
jdstrand(classic)ubuntu@snappy-20160324-amd64:~$ tty12:22
jdstrandnot a tty12:22
jdstrand(classic)ubuntu@snappy-20160324-amd64:~$ sudo uptime12:22
jdstrand[sudo] password for ubuntu:12:22
jdstrand 12:21:46 up 0 min,  1 user,  load average: 0.43, 0.11, 0.0412:22
ogra_yeah12:22
ogra_thats what i said above12:22
jdstrandso, no tty but it still works12:22
jdstrandpassword prompting works that is12:22
ogra_the bind mounts are all the same on both12:23
jdstrandthere is no /usr/lib/pt_chown there either, so that should be unrelated12:23
ogra_so nothing changed wrt /dev/pts or so12:23
jdstrandI can confirm that12:25
jdstrand/dev/ptmx is 0666 and nothing in /dev/pts12:25
jdstrandI suspect we actually want to mount /dev/pts/ptmx though12:26
ogra_yeah12:26
ogra_ubuntu@localhost:~$ sudo mount --bind /dev/pts /writable/classic/dev/pts12:27
ogra_ubuntu@localhost:~$ snappy shell classic12:27
ogra_...12:27
ogra_(classic)ubuntu@localhost:~$ sudo ls12:27
ogra_[sudo] password for ubuntu:12:27
ogra_...12:27
ogra_ubuntu@localhost:~$ sudo umount /writable/classic/dev/pts12:28
ogra_ubuntu@localhost:~$ snappy shell classic12:28
ogra_(classic)ubuntu@localhost:~$ sudo ls12:28
ogra_sudo: no tty present and no askpass program specified12:28
ogra_so yes, that fixes it properly12:28
jdstrandyeah, so bind mounting /dev/pts /writable/classic/dev/pts 'solves' the tty issue (I suspect we actually want a devpts newinstance,ptmxmode=0666,gid=5 mount instead of a bind mount though12:28
jdstrand)12:28
ogra_in any case something inside the snappy enable-classic chain ...12:29
jdstrandyeah12:29
jdstrandok, I'm wandering off to look at zyga's PRs12:29
zygajdstrand: cool :)12:29
zygajdstrand: ah, I wanted to ask about dbus and developer mode12:30
zygajdstrand: do we have plans to support anything similar for dbus?12:30
jdstrandzyga: I'll first say that I'm fairly in the dark wrt all things developer mode. All I know about it is that it is supposed to be per-snap complain mode for the security sandbox12:31
zygajdstrand: yes, that's accurate so far12:31
jdstrandzyga: with that said, I think it is sufficient to have apparmor in complain mode for dbus12:31
zygajdstrand: ok12:31
jdstrandie, let's not fiddle with dbus bus policy12:31
zygajdstrand: we don't have any dbus snippets yet (nothing uses it) but I suspect we'll need something fairly soon12:32
jdstrandzyga: I get pinged by the bluez, nm, pulse, mir, etc guys all the time and been telling them once this interfaces (and really the state engine) stuff all lands, we can circle back to them12:33
jdstrandzyga: so very soon you and I will have an opportunity to check out the dbus interface12:33
jdstrandzyga: I just looked at https://dbus.freedesktop.org/doc/dbus-daemon.1.html. dbus bus policy doesn't (currently) have a concept of complain mode. it is either deny or allow12:36
zygaok, that's good to know, thansk12:37
zygaI'll put this into the code as a note12:37
jdstrandzyga: so don't do anything for developer mode and dbus. I suspect a dbus service author is going to be just fine with tuning the bus policy as needed so long as we have apparmor in complain mode12:37
jdstrandperhaps some day if it becomes a requirement dbus can be modified to allow but log (ie, support complain)12:38
zygajdstrand: I have one more issue (udev) but I wrote it down and we can discuss it when reviweing the patches12:38
jdstrandzyga: I had some questions regarding udev, cgroups and the launcher that can probably wait until then. there is an interesting intersection of apparmor, udev and the launcher that we need to be careful about12:42
jdstrandzyga: cause as it stands now, the launcher won't setup a cgroup if /var/lib/apparmor/clicks/%s.json.additional doesn't have a particular string12:43
zyga_clicks_?12:43
jdstrandyes12:43
zygathat's not good12:43
zygagiven the time frame, do we have hands on the launcher?12:43
jdstrandmy hands are on the launcher all the time lately12:44
jdstrandI'm not sure what you are referring to though12:44
jdstrandI'll put it another way12:44
zygaah, I wasn't sure, I recall you were transitioning but were still busy as a manager12:44
jdstrandI'm fine with updating the launcher, but it is going to need to make a choice to apply a cgroup or not12:45
jdstrandzyga: I am functioning as interim manager. people have given me some space, but it is more like I have 1.5 jobs atm12:45
jdstrandzyga: anyway, historically, as you know, constantly recompiling the apparmor profile because a usb device came up differently or was unplugged, etc, etc was not viable. so we came up with the idea to add devices to an app-specific cgroup (fine)12:48
zygayes12:48
jdstrandzyga: the idea was then, when a device was assigned to the snap, apply lenient apparmor policy for /dev, and then just let device cgroups handle the mediation (also fine)12:49
zygaright12:49
jdstrandzyga: so, then docker came along and broke when it ws run under a cgroup (iirc)12:49
jdstrandso the idea was, have the launcher conditionally setup the cgroup *if* it detected the lenient apparmor policy12:50
jdstrandthat lenient policy was applied to /var/lib/apparmor/clicks/%s.json.additional12:50
jdstrandso the launcher would look in there12:50
zygaah12:51
zygaman,12:51
jdstrandI think what we could do instead is look in the udev db to see if any devices are assigned12:51
jdstrandand make that the conditional12:51
zygaI'm inclined to agree12:51
zygabut I'd like to sit down and write down variou things we need to and can do and see if it all adds up12:51
jdstrandsure12:52
jdstrandcause the thing is, you'll want an apparmor snippet for the lenient /dev policy on device assignment since the launcher isn't going to modify policy12:52
jdstranddevice grant*12:53
jdstrandand on revoke, remove that12:53
jdstrandzyga: I'll add a card for my to adjust snappy_udev_setup_required() to check udev for assignments12:53
jdstrands/my/me/12:54
jdstrandzyga: but I'll wait to act on it til I hear back from you12:54
jdstrandI have several MPs for the launcher that are in play, so I can keep moving forward12:54
jdstrandthis area is admittedly too twisty, but whenever we get apparmor profile composition, we can get rid of this12:55
jdstrand(there is a bug on this btw)12:56
jdstrandthat is almost certainly not a 16.10 thing12:57
jdstrandso we'll need to get this right12:57
jdstrandzyga: ^12:57
* jdstrand makes sure profile composition is in the planning doc tyhicks and I are putting together12:57
zygajdstrand: when you say it is not a 16.10 thing, do you mean it needs to be done for 16.04 or that it will take more time than 16.10?12:59
jdstrandzyga: I mean I doubt it will even be done for 17.04 (yes, *17*)13:00
jdstrandwe need to live with this udev/cgroup stuff for a while yet13:01
zygaouch13:01
zygaok13:01
josephtwhat is the preferred way on 16.04 to do initialization (think add user to extrausers, add ssh public keys, etc.) for a snap?13:01
zygajdstrand: you should join our standups13:04
zygajdstrand: perhaps not today (too late) but I think it would be useful13:04
=== _bjf is now known as bjf
jdstrandif now is too late, then every day is too late13:09
jdstrandI started very early today. my normal start of day is 9 minutes ago13:09
ogra_josepht, you cant13:11
kyrofaGood morning13:12
zygajdstrand: we just started, I think you could still join reguarly13:12
popeyshould webdm start on boot? if not, how do I start it, and what port does it run on?13:13
ogra_(and you shouldnt, everything inside a snap will run as root or if it is a user executable binary, as the user that execs it)13:13
beowulfpopey: snappy install webdm, then it should be on webdm.local:420013:13
ogra_popey, it should (but there seem to be issues with platforms that use WLAN) ... port is 420013:13
popeyaha!13:14
popeyhm, all wired here. works on my pi 2 but not pi3, your image ogra_13:15
popeydidn't start it seems13:15
popeyI get no updates on that pi3 image either, wondering if I should expect any?13:17
jdstrandzyga: fyi, https://bugs.launchpad.net/ubuntu/+source/ubuntu-core-launcher/+bug/156440113:18
ubottuLaunchpad bug 1564401 in ubuntu-core-launcher (Ubuntu) "launcher does not apply cgroups on 16.04" [High,Triaged]13:18
zygajdstrand: since you already look at that area13:19
zygajdstrand: how would it work if two separate apps/snapps wanted to get a device in their cgroup?13:19
ogra_popey, the one from my people.u.c ?13:20
zygajdstrand: the rules that we'd make today, from what I know about udev, would overwrite one another13:20
jdstrandzyga: I assigned that to me already13:20
ogra_popey, i think that still has sideloaded bits ... which would prevent automatic upgrades13:20
zygajdstrand: I might be getting this wrong13:20
zygajdstrand: but just something raised my eyebrow yesterday13:21
jdstrandzyga: I'm not a udev expert, but would hope that the rules were written such that they would be cumulative. ie, a device has multiple tags. so a device is tagged with foo and bar, but not baz13:21
zygajdstrand: well, now there are no rules13:21
popeyogra_: yeah, it's all listed as sideloaded13:21
jdstrandzyga: I suggest asking pitti about that part (he came up with this snappy tagging scheme)13:21
zygajdstrand: but as soon as we want to write some, the simplistic snippets might require parsing/processing to really express this13:21
zygajdstrand: ok, noted13:21
jdstrandzyga: that said, I think for 15.04 the decision was a device could only be assigned to a single snap13:22
zygajdstrand: mmmmmm13:22
zygajdstrand: that's good to know13:22
zygajdstrand: anyway, I've got this written down and I'll explore this further with udev code soon13:22
jdstrandzyga: we need mvo and pitti to comment-- I was only on the periphery of that and reviewed the code13:22
ogra_popey, right, so you could only update it manually ... (or re-build a fresh image witgh all bits from the store)13:23
popeyis there a plan to make a working image?13:23
ogra_once i find the time13:24
ogra_or once elopio gets the auto-uploading of snaps to work13:25
popeyij13:25
ogra_whatever happens first :)13:25
vilaelopio: https://github.com/ubuntu-core/snapcraft/pull/414 failed the example tests again, not sure I understand what is going on there, can you help ?13:26
josephtogra_: I'm trying to make a git snap.  It sounds like I'd only be able to do a basic read-only mirroring server or an HTTP[S] authenticated push/pull server by pulling in a static web server and somehow managing an application level authentication scheme.13:33
ogra_josepht, yeah, i fear ... unless jdstrand can tell you a method to use users from the actual system in snaps13:36
ogra_(i have a similar prob trying to package dovecot since a while)13:36
josephtogra_: I still wonder about initialization.  Perhaps I'm going at it wrong and should make my service idempotently setup it's directory structure, clone repos, etc.13:39
jdstrandsnappy doesn't currently provide access to the pam stack in this manner13:39
ogra_package a bzr server instead, just needs sshd after all ;)13:42
zygajdstrand: https://github.com/ubuntu-core/snappy/pull/767 (dbus)13:51
jdstrandniemeyer: hey, thanks for the merges. if there is anything for me to do in that card, please add me to it14:02
niemeyerjdstrand: Thank you for the branches!14:03
niemeyerjdstrand: I think some of the renames there make sense, but they are trivial and we can easily do on this side14:03
niemeyerjdstrand: One thing I was just wondering which you might have some info on regards the "unity7" interface14:03
niemeyerjdstrand: Is that unity7 or unity?14:03
niemeyerjdstrand: In other words, do we expect unity7 software to talk to unity8?14:04
jdstrandniemeyer: I chose unity7 to differentiate it from unity8 which would have completely different policy14:04
niemeyerjdstrand: Why/how would it be different?14:04
jdstrandunity7 is X and unity8 is mir. unity8 has things like content-hub, etc that unity7 doesn't. I was thinking unity8 is basically the existing touch policy whereas unity7 is something considerably more lenient14:05
zygajdstrand: remember that we can use "unity" as an interface and require "version" attribute to hide the nasty details14:06
jdstrandI don't think they should be combined since we wouldn't want to give a designed for unity8 app the wide access required for unity714:06
zygajdstrand: but then again we cannot yet require "unity version 7" on the consuming side14:06
jdstrandzyga: ok, I actually didn't know that14:06
zygajdstrand: there's some support planned for $version: 7 (eg) on a plug14:07
zygajdstrand: but it's not 16.04 material14:07
zygajdstrand: but the snippets we hand out can easily look at attributes14:07
jdstrandperhaps this is a refinement we can talk about once we are enforcing these interfaces and all the glue/etc is working?14:07
niemeyerzyga: I'm not entirely sure it would make sense in the case described14:08
jdstrandif you want to change it to 'unity', that's fine. we can add the version at a later date and if that doesn't pan out, add a unity8 separate from unity for that14:08
niemeyerzyga: If indeed most software using one cannot use the other, there's little reason to munge them under a single name14:08
zygammmm14:08
zygais that really true? I was under the impression that SDK apps work on both versions without modification14:09
niemeyerzyga: It's not just a parameter (a path, a max speed limit, etc), but a different protocol altogether14:09
niemeyer<jdstrand> unity7 is X and unity8 is mir.14:09
niemeyer?14:09
jdstrandzyga: sdk apps may work without modification but the underlying systems in use are different14:10
zygajdstrand: right, that is true14:10
zygawell, this was just a note that we have the ability, perhaps it doesn't makes sense to use it in this case14:10
jdstrandand those underlying systems greatly change the access to the rest of the system14:10
jdstrandsure14:10
jdstrandwe can discuss at a more appropriate time14:11
jdstrandbut, that is why I named it unity714:11
niemeyerjdstrand: Makes sense, thanks14:11
jdstrandto differentiate between it and unity8. I envisioned unity7 is what I implemented and unity is unity8 down the line14:11
niemeyerzyga: If the same software might use both, it's a question worth asking down the line.. today what we have is simpler14:11
jdstrandbut we can do unity as what is implemented and then decide if unity8 down the line vs unity with version if you prefer14:12
niemeyerjdstrand: Yeah, "unity" being the new one makes sense14:12
zygayeah, let's get basics working now14:12
zygaand polish this later if there's something we want to change14:12
niemeyerjdstrand: Also, just for the record, note the interface might return different snippets (different policy) depending on a parameter of the interface14:12
niemeyerjdstrand: Not that we should change this now, but it's a tricky that will come handy often14:13
niemeyers/tricky/trick14:13
jdstrandniemeyer: ack14:13
jdstrandniemeyer: curious on this point-- right now I thought we would have this14:14
jdstrandapps:14:14
jdstrand  foo:14:14
jdstrand    plugs: [unity7]14:14
jdstrandbut what you are suggesting means:14:14
jdstrandapps:14:14
jdstrand  foo:14:14
jdstrand    plugs: [unity]14:14
jdstrandplugs:14:14
jdstrand  unity:14:14
jdstrand    interface: unity14:15
jdstrand    version: 814:15
jdstrandis that right?14:15
* jdstrand has a followup question if it is14:15
zygajdstrand: (even without the interface: unity) (that's the default)14:15
niemeyerjdstrand: That's right14:16
jdstrandzyga: ok, I have two things I am getting at here. 1) the top-level 'plus' is not normally needed unless you are tweaking parameters and 2) if there are tweakable parameters (like version), is there a default (eg, '8') so that you don't need the top-level 'plugs'?14:17
niemeyerjdstrand: Or, that's feasible, rather14:17
jdstrands/plus/plugs/14:17
zygajdstrand: there are no defaults yet14:17
niemeyerzyga: Hm?14:17
zyganiemeyer: no defaults for attributes14:18
niemeyerzyga: The interface can trivially default to something14:18
niemeyerzyga: "if version is unset, use 8"14:18
zygajdstrand: if the interface requires that attribute to be present (say) then it would not validate14:18
zygajdstrand: sure14:18
zygaer14:18
zyganiemeyer: ^ sure14:18
jdstrandok14:18
jdstrandthat might get interesting (I'm not blocking or anything, just observing)14:18
zyganiemeyer: the interface can do that; what I meant to say is that we're not using this capability yet14:18
zygabut it sure can, in Sanitize()14:18
niemeyerzyga: That's not what jdstrand asked14:19
niemeyerzyga: He asked whether it was possible.. yes, it's possible14:19
jdstrandcause in the case of unity, version 7 is 'unsafe' and version 8 is 'safe' (whatever safe/unsafe ends up meaning in terms of store/snappy/etc notwithstanding)14:19
jdstrandjust mentioning that as something to think about with this sort of thing14:19
jdstrandok, I don't mean to distract. thanks! :)14:20
niemeyerjdstrand: Right.. I think for the scenario we have at hand, your proposal is the easiest/cleanest14:20
jdstrandcool14:20
niemeyerjdstrand: the unity7 interface will likely just die a cold death14:20
jdstrandhehe14:20
niemeyerjdstrand: and "unity" will rule without all that extra complexity14:21
jdstrandsounds great14:21
niemeyerjdstrand: For your point (1) above, note that global interfaces are defined at the top level14:21
niemeyerjdstrand: Without any per-app mentions14:21
jdstrandsure14:21
niemeyerjdstrand: to be clear, by global I mean "for all apps"14:21
jdstrandyou can do global plugs that are for all, or you can do per-app plugs14:22
niemeyerYeah14:22
jdstrandI was mainly trying to get if you are doing per-app, you don't need the global if you are doing all defaults14:22
niemeyerzyga, jdstrand: Question about the template clean up that is on the queue for review:14:22
niemeyer+// TODO: use modern variables when default template is compatible14:23
niemeyer +// with them and the custom template is not used.14:23
zygayes?14:23
niemeyerzyga, jdstrand: What's left to do about this?14:23
jdstrandjust have INSTALL_DIR14:23
jdstrandremove the others for a future commit14:23
jdstrandthe idea is, those new variables should happen in the same commit as the policy changes14:23
niemeyerjdstrand: Can you jump in with that?14:24
zyganiemeyer: from my POV we need to patch the default template to use less variables (I"ll let jdstrand pick which) and commit this in one change as he just said14:24
jdstrandsure14:24
zyganiemeyer: then for legacy (old-security) we're covered - we can still use legacy variables and for all other cases we have a clean definition of what the policy depends on14:25
jdstrandI'd like to wait until after we are using the interfaces code for generation and enforcement though14:25
jdstrandie, lets get all the interfaces and glue landed so it is doing stuff14:25
niemeyerjdstrand: Sounds good14:26
jdstrandthen I can tweak the policy, etc14:26
niemeyerjdstrand: Will add a card for that, thanks!14:26
jdstrandI have a small queue of minor other updates. I'll add this to my list14:26
jdstrandniemeyer: thanks! please assign it to me14:26
niemeyerjdstrand: Will do, thank you14:28
jdstrandzyga (and niemeyer): and to be clear about the launcher. I've got a number of things I'm working on: seccomp argument filtering, adding @complain, adding @deny, and fixing the cgroups issue on 16.04 we talked about earlier (LP: #1564401)14:31
ubottuLaunchpad bug 1564401 in ubuntu-core-launcher (Ubuntu) "launcher does not apply cgroups on 16.04" [High,Triaged] https://launchpad.net/bugs/156440114:31
jdstrandI have time to do these things, so you don't have to worry about them14:31
niemeyerjdstrand: Thanks, certainly a relief14:31
niemeyerzyga: #759 is ready for your attention again14:32
jdstrandI even have a branch for arg filtering. that'll be a nice feature14:32
zygathanks, looking14:32
jdstrandniemeyer: I also wanted you to know that I implemented and landed a change to the launcher that creates a devpts newinstance. I closed a card in some snappy trello board, but I feel like it might not be the board you are currently using14:33
jdstrandniemeyer: regardless, that closed a hole in the confinement story that I really wanted addressed in 16.0414:34
jdstrandniemeyer: just fyi for awareness14:34
niemeyerjdstrand: Ah, nice!14:35
zyganiemeyer: replied, have a look and tell me what to do about } issue14:35
jdstrandmorphis_: hey, I think the meeting you sceduled is premature14:36
niemeyerzyga: I don't get the comment.. can you please expand on why that's not appropriate?  Starter for the conversation: the template has a curly brace in it, why are we taking it off?14:36
jdstrandscheduled14:36
niemeyerjdstrand: Your observation/input on that one would be welcome ^14:36
jdstrandmorphis_: I just had a meeting with jhodapp yesterday explaining things. and mentioned those things to kgunn, and awe, etc14:37
zyganiemeyer: we take it off because this function returns the header of the full policy, then we inject any number of snippets and then the terminating }14:37
niemeyerzyga: We take it off because we inject it again, yes.. why do we do that?14:37
zyganiemeyer: to not remove } we'd have to know where to insert the snippets somehow14:37
zyganiemeyer: the snippets have to be "in the middle" of the { }14:37
zyganiemeyer: and there is no ### marker for where that is currently14:38
jdstrandmorphis_: can you sync up with jhodapp-- he has the whole story. the summary is: we can't do anything with bluez, nm, pulse, mir, etc until the interfaces/state engine stuff lands. it is close to landing (days). when it lands zyga and I will come knocking14:38
niemeyerzyga: If only we had a variable system to do that.. :)14:38
zyganiemeyer: yes but remember that this has to stay compatible with 3rd party templates14:38
jdstrandI wanted to ask about that14:39
morphis_jdstrand: did already sync with him, just wanted a pre-check so see if what we will get satisfies already the different bits we need14:39
zyganiemeyer: I can easily define ###SNIPPETS### and replace it with the actual snippets. Then we don't have to parse the template in any way but then if anyone ships a custom policy it has to include that section.14:39
jdstrandwhy are we supporting 3rd party templates? I thought we said that old-security/security-template was going away?14:39
zyganiemeyer: and since we wanted to stay compatible with 15.04, I didn't do that by default14:40
morphis_jdstrand: more technically sided talking, but fine if you don't have time, I think zyga can fill us in as well14:40
jdstrandmorphis_: it wasn't so much about time as the timing14:40
jdstrandmorphis_: if zyga thinks the timing is ok, that's fine (but note, the dbus bits are only under review right now)14:41
zyganiemeyer: given the interfaces that are coming, is old-security something that will look relevant for 16.04?14:41
morphis_jdstrand: I know that we're close to land this, but we still don't know what we really get when this lands, so just wanted to get an early heads up14:41
niemeyerzyga: I'm not sure, to be honest.. perhaps we should close that down so we don't need to support that forever14:41
niemeyerzyga: With the mechanism we have in place we can quickly cook new interfaces that support old logic14:42
niemeyerjdstrand: What's your opinion on that one?14:42
jdstrandzyga: in the meeting we had last month between you me and niemeyer we decided that old-security/security-override and old-security/security-policy must stay. old-security/caps and old-security/security-template could stay, but to use the interfaces code14:42
zyganiemeyer: I think that doing ###SNIPPETS### as a mandatory thing is a quick and easy solution and is quite clearner than parsing the template14:42
jdstrandzyga: as in, 'caps' just maps internally to plug the right thing and so does security-template. we don't read ubuntu-core-security files any more14:43
zygajdstrand: hmm, so we don't need custom apparmor policy in any way?14:43
zygajdstrand: (sorry not policy) custom base template?14:43
zyga(woring is confusing sometimes)14:43
niemeyerjdstrand: Right, but that implies having to parse third-party templates, which was zyga's point which you seemed to object about14:43
jdstrandyou misunderstand14:43
jdstrandthere are 4 directives:14:43
niemeyer(I misunderstand too, I'm sure)14:44
jdstrandold-security/caps: )possibly) support but with internal map to plugs14:44
jdstrandold-security/security-template: (possibly) support but always use defaultTemplate14:44
jdstrandold-security/security-override: support and adds to snippets14:44
jdstrandold-security/security-policy: support for hand-crafted security policy14:45
zygaah14:45
zygayes, I misunderstood difference between template and policy14:45
jdstrandthe first two use ubuntu-core-security policy14:45
jdstrandlets just get rid of old-security/security-template because we decided we don't want an unconfined template and that leaves only the default template14:46
jdstrandit is your choice to keep old-security/caps, but if you keep it, map it to plugs under the hood. don't parse template policy groups from ubuntu-core-security14:46
niemeyerjdstrand: What's the meaning of security-template again?  I misunderstand what it would mean to support it but force defaultTemplate usage (seems contradictory, so I probably misunderstand their meaning)14:47
* zyga feels the same, 14:47
jdstrandold-security/security-policy would completely skip defaultTemplate. it probably needs support for snippets for interface grants14:47
zygawe either respect the template given or we use default template14:47
jdstrandniemeyer: in 15.04 you could specify a template from ubuntu-core-security14:47
jdstrandlet me back up14:47
jdstrandin 15.04 policy was generated by picking a template and adding caps to it14:48
jdstrandsecurity-template was used to specify the template and caps was use to specify the caps14:48
jdstrandin 16.04, policy is generated by adding interfaces to defaultTemplate14:49
jdstrandso just make security-template go away14:49
jdstrandin 15.04 there werre only two templates: default and unconfined14:49
niemeyerAha!14:49
jdstrandunconfined was rarely used cause, well, it was unconfined and triggered manual review14:50
jdstrandand we decided last month that if someone actually wanted unconfined in 16.04, they would use old-security/security-policy to handcraft a lenient policy (and also triggers manual review)14:50
zygaI think I understand now14:51
niemeyerjdstrand: and why did we ever feel the need to have security-policy?14:51
jdstrandso there is no reason at all to support old-security/security-template in 16.0414:51
niemeyerjdstrand: (vs. an override)14:51
jdstrandniemeyer: old-security/security-override is not rich. it is easy to use. it is 'add this syscall' and 'add this file for reading'14:51
elopiokyrofa: https://spi.canonical.com/assets/api-reference.html14:52
jdstrandnessita: old-security/security-policy is raw security policy-- full apparmor, full list of seccomp. no templated policy14:52
jdstrandniemeyer: ^14:52
jdstrandnessita: sorry, nm14:52
niemeyerjdstrand: Hmm14:52
elopiokyrofa: and here are my notes for setting it up for ubuntu-core: http://pad.ubuntu.com/spi14:53
niemeyerjdstrand: Okay.. thanks a lot.. have much better context now14:53
jdstrandniemeyer: old-security/security-policy going forward is our escape hatch for when something must be done fast and interfaces aren't in place for it yet14:53
jdstrandniemeyer: it will always trigger a manual review in the store and is not intended for normal use14:53
niemeyerjdstrand: It's a dangerous one too14:53
jdstrandoh yes14:53
niemeyerjdstrand: Not in the sense you're thinking, though :)14:54
jdstrandincredibly14:54
niemeyerjdstrand: I mean it's dangerous because it's a cheap short cut for an otherwise well designed system14:54
jdstrandniemeyer: well, yes, but time constraints...14:54
niemeyerjdstrand: Well, exactly14:54
vilaelopio: https://github.com/ubuntu-core/snapcraft/pull/414 failed the example tests again, not sure I understand what is going on there, can you help ?14:54
jdstrandniemeyer: but the plan is always to use interfaces and not that14:55
niemeyerjdstrand: Why am I not trusting that too much? :)14:55
niemeyerjdstrand: Time constraints win14:55
elopiovila: it says: connection timed out. So the testbed died somehow. It's running again.14:55
jdstrandniemeyer: I endup seeing all of the security manual reviews in the store for touch and snappy14:55
zyganiemeyer: I think I will agree with you on this, the moment someone learns how to use old-security, there is no incentive to look at interfaces further14:55
zyga"just use sudo"14:55
zygaaka, old -secuirty14:55
jdstrandniemeyer: they are exceedingly rare because the developer is blocked-- the upload doesn't go through. I say no a lot, etc14:55
jdstrandso I wouldn't get hung up on developers just choosing it14:56
niemeyerjdstrand: What if we instead tried to go without it?14:56
jdstrandthe store doesn't let them and I am very strict14:56
niemeyerjdstrand: We can always put it back in14:56
niemeyerjdstrand: It'll be very hard to remove it later14:56
jdstrandniemeyer: I don't think it will be hard to remove in 1714:57
jdstrandit would of course be hard to remove from 1614:57
zygaI think that once the developer mode is in place we can give developers enough tools to do self-provisioning to the point where they can ask us to implement a proper interface14:57
jdstrandbut we discussed this last month14:57
jdstrandI promise you that we'll need it for something14:57
niemeyerjdstrand: Yeah, I know we discussed this14:57
jdstrandsomeone will need an app for a demo tomorrow that will blow a sales call14:57
jdstrandand the interfaces don't support it, etc14:58
niemeyerjdstrand: developer mode..14:58
vilaelopio: thanks !14:58
jdstrandas the one who always gets that call, I am very uncomfortable taking it out14:58
vilaelopio: Is re-running something I could have done ?14:58
zyga(even if we don't give advice, just turn off process killing, developer mode sounds like the universal way out)14:59
jdstrandniemeyer: sure, but someone will want to demo an app without having to go into that14:59
niemeyerjdstrand: Well, to me this is a good reason for us to not have it14:59
niemeyerjdstrand: Precisely because once we have the mechanism, people with bigger guns will be constantly forcing hacks in14:59
elopiovila: only if you are in the whitelist. But we need to get more resources before we add people to the whitelist. fgimenez is on that.15:00
jdstrandI mean we can take it out-- but when security blocks them and there is no escape hatch for the demo or for the client for a must have thingamajig, can I forward them to you? :)15:00
vilaelopio: nm then15:00
niemeyerjdstrand: Yes!15:00
zygawe'll setup a FAQ that says: $ snap enable developer-mode (or similar)15:00
jdstrandone could make the same argument for security override then15:00
niemeyerjdstrand: Yep15:00
niemeyerjdstrand: My goal is to have quick turnarounds for real interfaces15:01
jdstrandok. don't say I didn't warn you :)15:01
zyganiemeyer: hmm, so are you inclined to kill old-security right here, right now15:01
code1o6ls15:01
niemeyerjdstrand: I want to establish a process for us to release meaningful improvements every other week15:01
ogra_no such file or directory15:01
jdstrandniemeyer: sure. I think some interfaces will be fast. some will not. I think over time, hopefully they'll get faster and faster15:01
vilaogra_: ha, thanks, exactly the bit I was missing from the error message15:02
niemeyerzyga: Yes.. just thinking about the best way to do that15:02
niemeyerzyga: Definitely before 16.0415:02
jdstrandcause we'll have seen more and more exceptional cases, etc15:02
* ogra_ hugs vila ... happy to help :)15:02
zyganiemeyer: is there a spec on how to enable / disable developer mode for a given snap?15:02
niemeyerjdstrand: Right, agreed15:02
niemeyerjdstrand: As a rule of thumb, I'd prefer to release a half-baked interface that is under the entire control of the security team, than a security policy that is hand coded15:03
niemeyerjdstrand: hand-coded security policies break the whole system organization15:03
niemeyerzyga: snap install ---devel, or similar15:04
vilajoke aside, I just did 'snapcraft upload wrong-filename' and the output was: 'wrong-filename' and nothing else. --debug told me it was FIleNotFound but I found --debug while already under pdb ;)15:04
zyganiemeyer: I'll see if I can patch that in15:04
vilaogra_: not sure how you knew that... ;)15:04
ogra_intuition :)15:04
jdstrandniemeyer: I agree. I will mention that the security team would review the hand-crafted policy (or flat refuse to accept it)15:04
niemeyerjdstrand: I reckon, but it's still a different relationship15:05
niemeyerjdstrand: It's something the security team can review, have an opinion about, and change15:05
niemeyerjdstrand: vs. something lost inside a snap15:05
jdstrandniemeyer: but anyhoo. to be clear, obviously the security team will take part in interface security policy, but the snappy team will be there for approval to add/design/non-security policy changes/etc, correct?15:05
jdstrandniemeyer: ie, no interface will go through without collaborating?15:06
zygajdstrand: well, that would be hard to sneak in15:06
jdstrandI'm not talking about a malicious actor15:06
niemeyerjdstrand: Of course15:06
zygajdstrand: even non-malicious15:06
jdstrandniemeyer: perfect15:06
niemeyerjdstrand, zyga: So I think the easiest is to flip the switch when the new security logic is used15:07
jdstrandzyga: I'm just getting at defining the process that if an interface is added by snappy core, there is (at least) security team ack and vice versa15:07
zygajdstrand: yes, I think we need to have a clearly documented process to create or alter interfaces15:08
jdstrandniemeyer: my hope is that security-override will be needed less with seccomp arg filtering15:08
niemeyerzyga: In other words, once the InterfaceManager goes live, old-security is obsoleted and starts to refuse installs15:08
zyganiemeyer: woot, that's nice15:08
zyganiemeyer: and simplifies many issues that were special cased15:08
jdstrandcause we can add a few things that people get blocked on currently, but in a controlled way15:08
jdstrandeg, setpriority15:08
jdstrandkyrofa: ^15:08
jdstrand:)15:08
niemeyerjdstrand: Right, exactly15:09
zyganiemeyer: I'll make that happen, and I know have the answer to }15:09
kyrofajdstrand, haha, your memory is scary15:09
niemeyerzyga: +115:09
zyganiemeyer: is there a card for $ snap install --devel15:09
jdstrandand I people are using security-override today mostly to work around seccomp policy. occasionally for an apparmor read or write here and there15:09
zygasergiusens: ^^ (old-security is dead)15:10
niemeyersergiusens: s/dead/dying/15:10
niemeyerzyga: ^15:10
zyganiemeyer: sure, I'll be hard at work to kill it entirely :)15:10
jdstrandkyrofa: in fact, this is in my test in my branch: 'setpriority - 0 >=0'15:11
niemeyerjdstrand: Right, there you go.. there are likely patterns already being established via the use of overrides which would be trivial to have an interface for15:11
niemeyerjdstrand: But because it's so cheap, we never cooked it15:11
* zyga has some cool ideas15:11
jdstrandniemeyer: well, note, there may be a pattern, but it is only for like 3 things :)15:11
kyrofajdstrand, nice :)15:11
zygabut I'll let those wait for next week when it all works15:11
jdstrandniemeyer: ie, people hate using these cause the upload gets hung up, but I mentioned that already15:12
niemeyerjdstrand: It's okay.. migth be even just one thing to be clear.. we want to have people covered anyway15:12
jdstrandso yeah, I'm fine with removing it. if developer mode is working right, that is the escape hatch. if someone complains and complains, I'll redirect to 'the decider' :)15:13
=== chihchun is now known as chihchun_afk
jdstrandtyhicks: hey, so heads up on my queue of launcher changes: 1. sarnold's review fixes (MP awaiting review), 2. preprocessor review (will request MP this morning), 3. seccomp arg filtering (will be requesting MP soon), 4. support @deny rules (in progress), 5. support @complain mode (not started), 6. fix bug #1564401 (not started, likely start after preprocessor)15:22
ubottubug 1564401 in ubuntu-core-launcher (Ubuntu) "launcher does not apply cgroups on 16.04" [High,Triaged] https://launchpad.net/bugs/156440115:22
beunopedronis, niemeyer, matiasb_, invite sent for our call!15:22
=== matiasb_ is now known as matiasb
jdstrandtyhicks: 2-6 depend on '1'. 4 and 5 depend on 215:23
matiasback15:23
jdstrandtyhicks: I'd really like '1' to get reviewed soon (ideally today), but please advise on how to proceed15:24
jdstrandtyhicks: I guess the review fixes aren't required for today, but I'd like to talk through the timing of these things15:27
wililupyIn my kernel snap, I have pre-built modules, if I use the copy plugin to install them to /lib/modules/`uname -r`/kernel/drivers/net/ethernet/igb and so on, does that have to happen before I run the kbuild and build my kernel?15:31
ogra_wililupy, i would think so since you want them to be picked up by the depmod run that the kernel build does15:32
ogra_else modprobe wont know about them15:32
wililupyThats what lool was saying, so will the copy plugin also create the uname -r directory I need?15:32
wililupyogra_: ^^15:33
wililupyMy snapcraft.yaml: https://pastebin.canonical.com/153091/15:33
ogra_hmm, no idea, thats a sergiusens question15:34
ogra_45679315:46
loolwililupy: checkout snapcraft/plugins/kernel.py in snapcraft15:49
loolwililupy: it basically copies modules deps files directly15:49
loolso can't use this plugin to compute new deps15:49
ogra_oh, the kernel build process doesnt run depmod at the target dir ?15:50
loolwililupy: you could extend the plugin or do some postprocessing, or use kbuild to rebuild the kernel (not sure how this will play with module deps either)15:50
loologra_: there are two kernel plugins; I believe wililupy was trying to use a kernel .deb so the kernel plugin15:50
ogra_we have a kernel plugin using debs ?15:50
wililupylool: I was going to use kbuild to build the kernel15:51
loolnow the kbuild module does basically a make install; I dont know if it would pickup third party vendor directories in the deps, it's possible15:51
loolbut in any case, you would need these to be installed before the kbuild plugin builds15:51
tyhicksjdstrand: I'll do the review for #1 now15:51
* wililupy wonders if I put them in the right location in staging if that will work?15:52
jdstrandtyhicks: well, I didn't mean for you to stop what you were doing (I mean it's fine if you want to review)15:52
jdstrandtyhicks: I just wanted you to be aware of the queue and if you had opinions on how we should time the reviews, etc15:53
tyhicksjdstrand: you've been waiting for a while and I don't want to pull sarnold off of MIRs so it falls in my lap15:53
tyhicksjdstrand: it isn't a problem :)15:53
tyhicksI'm in between things anyways15:54
jdstrandok, thanks15:54
zygajdstrand, niemeyer: ###SNIPPETS### https://github.com/ubuntu-core/snappy/pull/759/files15:57
kyrofawililupy, let me try to help15:58
wililupythank you kyrofa15:59
kyrofawililupy, so you have pre-built modules that your kernel requires?15:59
wililupyyes. I built them against the kernel I will be using in snappy.16:00
sergiusenszyga, niemeyer jdstrand can we sync after a call I have now? If not a snapcraft bug to keep track or anything would be welcome16:01
sergiusensd16:01
zygasergiusens: we can file the bug on old-security when it is about to happen16:01
niemeyersergiusens: Happy to sync16:01
jdstrandI also need to update the review tools16:01
sergiusenszyga, thanks16:01
niemeyersergiusens: Let me know when you're available16:01
sergiusenssync can just be, tell me what do do ;-)16:02
kyrofawililupy, why not ship them in the kernel itself?16:02
kyrofawililupy, closed-source stuff?16:02
wililupykyrofa, thats not a bad idea. It is closed source, so I can't put it upstream, but I can do it in my build environment.16:02
kyrofawililupy, right16:03
wililupywhat if my module has the same name as a current driver in the kernel, ie igb?16:19
kyrofawililupy, ah, which comes back to the depmod stuff I see above16:22
niemeyersergiusens: We're dropping old-security before 16.04.. that's the core of it16:32
niemeyersergiusens: It's there for the time being, so no immediate action needed16:32
niemeyersergiusens: Once the new security infra goes live, we'll kill old-security with it and reject snaps that attempt to be installed with it16:32
niemeyersergiusens: This should happen over the next week.. we'll ping you before released16:32
niemeyerjdstrand: There's a note on https://github.com/ubuntu-core/snappy/pull/759/files which says // XXX: This needs to be verified by security team.16:33
niemeyerjdstrand: It looks straightforward to me.. can you please +/-1 it so we can drop the note?16:33
sergiusensniemeyer, ok, will we have replacements for what is currently done in old security for our examples or will they just not work at all?16:34
kyrofawililupy, at least on my ubuntu machine my /etc/depmod.d directory has a conf file containing "search updates ubuntu built-in"16:35
kyrofawililupy, assuming I understand that correctly (big assumption) one could get away with placing newer modules in the updates directory under modules16:36
wililupyThis is an interresting error: Issues while validating snapcraft.yaml: mapping values are not allowed here on line 19 of snapcraft.yaml16:37
zygajdstrand: is https://github.com/ubuntu-core/snappy/pull/759/files#diff-57dc34ab6f4bf9730b356d0439daa0fdR123 okay?16:37
zyga(attach_disconnected,complain)16:38
kyrofawililupy, same YAML you pasted earlier?16:38
wililupykyrofa yes16:38
kyrofawililupy, the syntax looks okay, so try quoting the strings16:38
niemeyersergiusens: We have several of the old school profiles migrated already16:39
niemeyersergiusens: to first class interfaces16:39
niemeyersergiusens: https://github.com/ubuntu-core/snappy/tree/master/interfaces/builtin16:40
sergiusensniemeyer, thanks for the link! this will help a lot :-)16:42
wililupykyrofa, sorry, that is my old snapcraft.yaml. Here is the current one I am using: https://pastebin.canonical.com/153114/16:42
kyrofawililupy, try not nesting the kconfigs in like that16:44
kyrofawililupy, the key `kconfigs` I mean16:44
wililupykyrofa, wow, it was that picky... lol16:46
kyrofawililupy, it's yaml16:46
wililupyHere's an interresting error: Pulling kernel 'NoneType' object has no attribute 'headers'16:50
kyrofawililupy, run with the --debug flag16:56
wililupykyrofa: http://pastebin.canonical.com/15311817:00
kyrofawililupy, ah, https://bugs.launchpad.net/snapcraft/+bug/156055317:01
ubottuLaunchpad bug 1560553 in Snapcraft "snapcraft error message is not very helpful when using storeapi without being logged in" [Medium,Fix committed]17:01
kyrofawililupy, you need to be authenticated to download the OS snap, so run `snapcraft login` first17:01
wililupykyrofa, thank you. May need to update the documentation so that others don't hit this easy mistake in the future... ;)17:04
kyrofawililupy, yeah that bug has been fixed, just not released17:04
jdstrandzyga: yes17:04
zygajdstrand: perfect, thanks17:04
kyrofasergiusens, can you remind me why we need to be logged in at all to download that snap? No more anonymous snap downloads?17:05
jdstrandzyga: though at line 138 aren't you undoing that change?17:06
zygajdstrand: hmm let's see17:06
wililupyBuilding kernel!! See how long this takes. Time for lunch. Thanks kyrofa17:06
sergiusenskyrofa, because that is going away17:06
kyrofasergiusens, ah, okay17:06
kyrofawililupy, no problem :)17:06
jdstrandzyga: oh, no, I think its ok17:07
zygajdstrand: I don't see how17:07
zygajdstrand: that part is not a ### ... ### so we don't change it17:07
zyga(in retrospective, we should)17:07
jdstrandzyga: yeah, my mistake17:07
sergiusenswililupy, there is no documentation for the kernel snap though, it is in experimental mode; once the core supports multiple initrds this download phase will go away17:07
wililupyGot it. Thanks sergiusens17:08
niemeyerzyga: So let's please drop the comment there17:09
zyganiemeyer: gladly17:09
niemeyerzyga, jdstrand: and I think it's ready to go in?17:09
zyganiemeyer: removed now17:10
zyganiemeyer: yes, I think so too :)17:10
zyganiemeyer: I'll post some follow-up patches, one thing that's still a TODO is to remove cache elements but I have this written down and I'd like to first make use of this in snap install17:11
jdstrandboy, took me a minute to wrap my head around the func(placehlder []... bits17:11
zygaok17:11
jdstrandI think it's ready17:14
code1o6guys is there any steps prior to running snappy login?17:15
niemeyerzyga: Cool17:15
code1o6*snapcraft login17:17
zyganiemeyer: shall we merge with one +117:17
code1o6snapcraft: error: argument cmd: invalid choice: 'login'17:17
zyganiemeyer: (we could count jdstrand's as a +1 though :-)17:17
code1o6sergiusens, any ideas ^^?17:18
jdstrandI didn't really do a go code review17:19
sergiusenscode1o6, snapcraft --version ?17:19
jdstrandzyga, niemeyer: so, looking at this dbus PR I'm reminded that 'Type=dbus' dbus needs to be added to the systemd service file. is that handled properly with this new work or are we expecting the dev to set 'daemon: dbus' in their yaml?17:23
zygajdstrand: hmmmm, I'm not sure17:23
zygajdstrand: so does that mean that service file depends on interfaces?17:24
zygajdstrand: (the contents of the service file may needs to change when dbus is in use?)17:24
jdstrandzyga: for a service that plugs a dbus bus policy interface, systemd won't start the service correctly without Type=dbus in the service file, no17:25
jdstrandie, bluez needs bluez bus policy17:25
jdstrandit won't start correctly without Tyle=dbus17:25
jdstrandType=dbus17:25
jdstrandbut, we could say for the moment the dev needs to do:17:26
jdstrandapps:17:26
jdstrand  bluez:17:26
jdstrand    plugs: [bluez5]17:26
jdstrand    daemon: dbus17:26
jdstrandand avoid magic17:26
zyganiemeyer: ^^ opinions17:26
zygajdstrand: I like that much better17:26
* niemeyer reads17:27
zygajdstrand: I don't like the hidden magic dependency17:27
jdstrandthe review tools could try to help their too17:27
jdstrandthere*17:27
jdstrandie, they could know that bluez5 needs daemon: dbus17:27
niemeyerjdstrand: What's the real effect of having Type: dbus in systemd?17:28
niemeyerjdstrand: e.g. how will systemd know when to start the service?17:28
jdstrand"Behavior of dbus is similar to simple; however, it is expected that the daemon acquires a name on the D-Bus bus, as configured by BusName=. systemd will proceed with starting follow-up units after the D-Bus bus name has been acquired. Service units with this option configured implicitly gain dependencies on the dbus.socket unit. This type is the default if BusName= is specified."17:29
jdstrandhttps://www.freedesktop.org/software/systemd/man/systemd.service.html17:29
jdstrandright, the service file also needs BusName17:29
jdstrandhrmm, that means the service file generation does need to interact with interface17:30
jdstrandinterfaces*17:30
niemeyerjdstrand: Yeah, that's what I was wondering.. it needs information about what is being listened on17:31
niemeyerjdstrand: Note that it's also a slot above, not a plug17:31
jdstrandno, this is a plug17:31
niemeyer?17:31
jdstrandthis isn't what bluez provides to clients, this is what bluez needs itself17:31
niemeyerjdstrand: It doesn't make sense to me17:32
zygajdstrand: that's still a slot17:32
zygajdstrand: (think where plugs go to)17:32
niemeyerjdstrand: bluez is consuming bluez?17:32
jdstrandyes17:32
zygahmm?17:32
niemeyerjdstrand: This seems a bit off17:32
jdstrandI mean, it could be a different name17:32
jdstrandok let's back up17:32
zygajdstrand: I though that this is what permanent snippet on bluez slot would do17:32
jdstrandthe system needs to provide an interface (slot) that the bluez dbus service can use to run at all17:33
jdstrandbluez provides a slot that clients can use to talk to bluez17:33
jdstrandmy plug referred to the former17:33
niemeyerjdstrand: That's similar to the cases we discussed for x11 and mir17:33
zygajdstrand: what does the system need to provide and how is this different from what we managed to simplify with mir?17:33
jdstrandwe didn't simplify anything with mir17:34
niemeyerjdstrand: We actually did, I think17:34
zygajdstrand: we replaced two interfaces with one17:34
zygajdstrand: no mir-server, mir-client; there's just a mir interface17:34
jdstrandwe haven't been able to explore any of these yet cause it is blocked on what you are trying to land17:34
zygajdstrand: and mir interface slot grants rights that would be granted by mir-server17:34
jdstrandoh, maybe I am confused17:34
jdstrandok, regardless17:34
niemeyerjdstrand: This feature is already in place in the interface system you're currently committing to17:35
jdstrandif something is using a dbus interface in this manner, the service file needs Type=dbus and BusName=<something from the interface>17:35
niemeyerjdstrand: As an interesting side note, we also need to restrict who offers those slots at all17:35
niemeyerjdstrand: As offering the slot implies having access to resources already17:35
zyganiemeyer: good point, it's also more iffy since there's no snap id yet17:35
niemeyerzyga: The joys of implementing a non-trivial system under time pressure17:36
zyga:-)17:36
jdstrandthat's fine. my head isn't totally wrapped around all that yet cause I haven't played with these things yet17:36
zygajdstrand: is it correct to assume that a snap may have many .service files?17:36
zygajdstrand: and it may need many bus names?17:36
zygajdstrand: so this is an app-level property17:36
jdstrandzyga: I would think any entry under apps could potentially be a separate dbus service, yet17:37
jdstrandyes17:37
niemeyerjdstrand: Will that systemd auto-start feature work when there are multiple bus names involved?  It should, right?17:37
jdstrandeg, a thick snap that provides ofono and nm17:37
zygaright, so this is something that's aligned with what we have now;17:37
jdstrandniemeyer: each is a different service file that is snap_app....service so yeah it should all be fine17:38
niemeyerjdstrand: Don't think I get it..17:38
jdstrandthough, that assumes ordering of dbus services within the snap doesn't matter17:39
niemeyerjdstrand: Question was what if one app provides multiple dbus services.. same process, multiple services17:39
jdstrandniemeyer: perhaps I didn't understand your question17:39
zygahmmm17:39
jdstrandthat is unusual17:39
niemeyerjdstrand: Per systemd documentation, BusName can apparently only be a single bus name17:39
niemeyerjdstrand: But that's not a constraint on the dbus system17:39
jdstrandyou'd have to fork separate threads that each bind to a separate name17:39
niemeyerjdstrand: It's trivial for a process to provide N dbus services17:40
jdstrandBusName= is a well-known name that clients connect to17:40
jdstrandthen they can add any number of interfaces, etc17:40
niemeyerjdstrand: Okay, I'll buy that and pretend it's all fine while breathing in a bag17:40
zygaas long as systemd has the constrain that one bus name per process is the way to go, we can expect this not to be a problem for the immdeiate future where with existing snaps17:41
zygaconstraint*17:41
jdstrandreading the systemd service specification, systemd doesn't seem to support multiple BusNames in a single service file17:41
zygaI think this is fine, I wonder how interface details will look like for something like bluez or nm17:42
zygajust <policy> ... blobs?17:42
zygaor something more elaborate17:42
jdstrandI think it is ok to say that is not supported17:42
jdstrandor at least, if you do it, your have to deal with systemd not making sure things are ordered correctly17:42
niemeyerzyga: We could in theory auto-assign the bus name to the application offering the bluez slot17:43
niemeyerzyga: But it's easier to leave those disentangled17:43
niemeyerAt least for now17:44
zyganiemeyer: I agree, I think this will need more love later, especially with an evolving snap (e.g. new bluez) the interface implementation might also have to change17:44
zygaI feel there will be some lock-step necessary in general17:44
zygabut a simple approach is enough for 16.0417:45
jdstrandI agree that we'll need to refine dbus once we start looking at things like bluez17:46
jdstrandI see in awe's bluez bus policy he has:17:46
jdstrand<allow own="org.bluez"/>17:46
jdstrand<allow own="org.bluez.obex"/>17:46
jdstrandbut he ships two different daemons17:47
jdstrandbluez and obex17:47
jdstrandboth are 'daemon: simple'17:47
jdstrandinteresting17:48
jdstrandso he is opting out of systemd integration17:48
zygajdstrand: maybe that's not deliberate17:48
jdstrandand saying "just start me however you want". it starts, dbus-daemon looks at the bus policy (which is combined in one file here) and dbus allows it to start17:49
zygajdstrand: here we'd make two files (with the code I'm proposing)17:49
zygahmmm17:49
zygaactually17:49
zygathat's bad17:50
jdstrandis it?17:50
zygaand interesting but bad17:50
zygaso bluez and obex are separate apps17:50
zygathey need separate slots17:50
zygaand separate interfaces17:50
jdstrandthey are, but he used one bus config17:50
jdstrandbut I think it would be ok to use 2 bus configs17:50
zygato get two xml snippets that's appropriate to each app17:50
zygathen again dbus is not enforced per app really17:51
zygait's enforced per bus name17:51
zygaright?17:51
jdstrandI don't know what you mean by enforce there17:51
zygaI feel that app/snippet/bus triplet is not so clean as in apparmor/seccomp17:51
zygajdstrand: sorry perhaps my language is wrong17:51
zygajdstrand: does dbus flitering care about our apps in _any_ way?17:51
zygajdstrand: (dbus policy files)17:51
jdstrandtraditionally, dbus policy files are plopped into a .d directory that dbus reads and decides what to do with it17:52
jdstrandI don't know if first wins or last wins or if it is undefined17:52
jdstrandso it is up to snappy to keep things clean17:52
zygajdstrand: so we currently do a file-per-app17:53
jdstrandso the current approach I think is just fine17:53
jdstrandyeah, sure17:53
zygajdstrand: (we could do something else but that's the status quo)17:53
zygajdstrand: but my point is that it's a bit subtle17:53
zygajdstrand: because from what I see we can have one app say "this and that bus policy applies"17:53
jdstrandwell, sorta17:53
zygajdstrand: and in reality that will affect *other* apps that just use that bus name17:53
zygajdstrand: right?17:53
jdstrandwith seccomp it is quite clear-- the file is what is the seccomp policy17:54
jdstrandwith apparmor it is like dbus. the contents of the file could technically be for something else, multiple things, etc17:54
jdstrandwe just need to add dbus files in a controlled way like we do with apparmor17:54
zygajdstrand: the thing we won't catch though is people misassigning slots to apps17:55
zygajdstrand: so looking at snap.yaml you will see that some interface is on some app17:55
jdstrandwe control the interfaces, we control how the dbus files are written, so we should be ok17:56
zygajdstrand: but in reality it will apply to a different app at runtime17:56
zygajdstrand: and unless all such cases flag for manual review17:56
zygajdstrand: we're going to miss it17:56
jdstrandif I assign nm to the bluez daemon, is the system supposed to prevent that?17:56
zygajdstrand: well, that's a different problem, this is more like obex/bluez case above17:56
jdstrandlets leave manual review out of it for now. that is a whole other conversation17:57
zygajdstrand: because it's not something that ubuntu-core-laucher applies / enforces on process startup17:57
zygajdstrand: I think it's not a major problem17:57
zygajdstrand: just a potential source of confusion17:57
jdstrand(cause it gets into safe/unsafe, etc which would be a distraction for landing stuff)17:57
zygajdstrand: I'll take a break for home duties and I'll get back to udev and snap install support17:57
zygajdstrand: we now have apparmor backend, seccomp reviewed and dbus with some changes (comments mailny I think)17:58
jdstrandzyga: the launcher doesn't, no. it is all dbus-daemon17:58
jdstrandI'm not done with dbus. I got distracted wby this conversation17:58
zygajdstrand: so I think that's enough to get hello-world snap working :)17:58
zygajdstrand: that's okay, it's not essential for initial stab at install support17:59
zygajdstrand: I'll leave you to reviews and other work, ttyl17:59
jdstrandI think we should keep pushing the current dbus direction and refine as we look at bluez, pulse, nm, etc17:59
jdstrandzyga: bye, thanks!17:59
niemeyerjdstrand: Hmm17:59
jdstrandniemeyer: ?18:00
niemeyerjdstrand: we have the x(11) interface in already.. what does it do?18:00
jdstrandniemeyer: adds /etc/apparmor.d/abstractions/X18:00
niemeyerjdstrand: Which will ...?18:01
jdstrandniemeyer: essentially a few files in home for X to work, a few things in /usr and connection to the X socket18:01
niemeyerjdstrand: Okay, that's not quite what we had in mind in that meeting, same reason as the bluez discussion above18:01
NetphreakHi, guys!18:02
jdstrandI implemented it in the context of sdoc, not for providing an X server as a snap18:02
NetphreakAny news om snappy om rpi3?18:02
niemeyerjdstrand: Hmm.. so by "a few files in home for X to work" you actually mean "for X applications to connect to X" rather than "for the X server itself to work"18:03
niemeyer?18:03
jdstrandniemeyer: yes, exactly18:03
jdstrandniemeyer: this is the client part18:03
niemeyerjdstrand: Aha, gotcha, thanks18:03
jdstrandI want to run xeyes on classic18:03
niemeyerjdstrand: Yep, got it.. that's fine then18:04
niemeyerStepping out for some sprint-related errands.. back later18:06
code1o6I'm having issues publishing my app to the ubuntu store. I currently have version 1.1.0 in ubuntu 15.04. Should I add sudo add-apt-repository ppa:snappy-dev/snapcraft-daily ? I need my app to be for 15.04 snappy core systems19:10
code1o6snapcraft login apparently doesn't exist in 1.1.019:11
kyrofacode1o6, you'll need to upload your snap via myapps19:20
kyrofacode1o6, http://myapps.developer.ubuntu.com/19:20
kyrofaLogin to your account and upload your snap there19:20
kyrofacode1o6, snapcraft 2.x will do that for you, 1.x does not19:20
=== blr_ is now known as blr
code1o6kyrofa, thank you19:39
code1o6kyrofa, I already have an account where do you click next19:41
kyrofacode1o6, click the Ubuntu Core tab at the top, and then the "New Package" button19:42
josephtkyrofa: what's needed to run the snapcraft example_tests?  './runtests.sh examples' on 16.04 is trying to create 15.04 images with ubuntu-device-flash and snappy is failing with "Unknown command `internal-unpack'."19:45
kyrofajosepht, try ./runtests.sh examples --skip-install19:45
kyrofajosepht, by default it wants to install them into an ubuntu core machine and actually run them19:46
kyrofajosepht, if you have one lying around you can use that too, of course19:46
kyrofajosepht, check out examples_tests/__main__.py for the options19:47
josephtkyrofa: ack, thank you19:47
sergiusenskyrofa, josepht much better `python3 -m examples --help`19:58
kyrofasergiusens, josepht or that. If you like pretty help printouts instead of source code19:59
sergiusenskyrofa, lol; I want to get rid of the runtests script; it has less options than running the package20:00
kyrofasergiusens, I'm on board with that20:00
sergiusensjosepht, if your snap is failing to build, run it in a cleanbuild; so `snapcraft cleanbuild`20:03
kyrofajosepht, yeah good idea-- cleanbuild the git example and you'll probably find the missing dependencies20:03
code1o6kyrofa, thanks for the help!20:16
code1o6I got rejected for this error20:16
code1o6required description field not specified snappy-systemd_package_yaml_description_present (webui)20:16
kyrofacode1o6, your service needs a description20:16
code1o6description: A basic webserver20:17
code1o6https://github.com/arfvidsonUIS/unisys-test-snappy/blob/master/snapcraft.yaml20:17
code1o6here is my snapcraft.yaml ^^20:17
code1o6kyrofa, could you take a look20:18
kyrofacode1o6, the webui service needs a description of its own20:19
code1o6so just add description in line 1320:19
kyrofacode1o6, right20:20
zygajdstrand: hey20:26
zygajdstrand: still around?20:26
code1o6How long is the review process?20:28
code1o6I'm using network-admin20:28
zygajdstrand: https://github.com/ubuntu-core/snappy/pull/768/files20:29
zygajdstrand: last one :)20:29
kyrofacode1o6, yeah network-admin requires a manual review. It could take some time20:30
code1o6hours, days, or months?20:33
code1o6kyrofa, ^^20:34
zygajdstrand: https://github.com/ubuntu-core/snappy/pull/769/files20:34
kyrofacode1o6, no clue. I'm not one of the reviewers, sorry20:34
code1o6kyrofa, thanks for the information20:34
jdstrandtyhicks: fyi, https://code.launchpad.net/~jdstrand/ubuntu-core-launcher/preprocessor/+merge/29065220:39
jdstrandzyga: looking20:40
zygajdstrand: nice20:40
zygajdstrand: I'm working on one more patch for apparmor, to remove the binary cache20:40
tyhicksjdstrand: I'm in the process of reviewing that MP21:06
jdstrandcool, thanks21:07
josephtsergiusens, kyrofa: thanks for the tips.  Sorry I got distracted by a baby squirrel that needed some help.21:28
zygajdstrand: https://github.com/ubuntu-core/snappy/pull/77021:54
zygajdstrand: I'm about to EOD (day is running out)21:55
zygajdstrand: I'll see you tomorrow21:55
jdstrandzyga: have a nice evening :)21:55
zygajdstrand: likewise :)21:56
chilukHey what arm64 boards are people getting for running snappy/ubuntu on?  right now it looks like pi3 and odroid-c2, and odroid-xu423:08
chilukare all pretty awesome.23:08

Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!