IRC logs for #buildstream for Tuesday, 2018-02-20

*** Prince781 has joined #buildstream01:11
*** Prince781 has quit IRC01:23
*** Prince781 has joined #buildstream01:29
*** Prince781 has quit IRC01:31
*** Prince781 has joined #buildstream01:32
*** mcatanzaro has quit IRC03:29
*** Prince781 has quit IRC05:41
*** tristan has joined #buildstream07:40
*** xjuan has quit IRC07:44
*** xjuan has joined #buildstream07:45
*** tm has joined #buildstream08:45
*** toscalix has joined #buildstream08:46
*** jonathanmaw has joined #buildstream08:55
*** valentind has joined #buildstream09:09
*** ssam2 has joined #buildstream09:37
*** aday has joined #buildstream09:53
*** dominic has joined #buildstream10:00
*** valentind has quit IRC10:54
gitlab-br-botbuildstream: issue #262 ("Information about host machine architecture leaks into sandbox") changed state ("opened") https://gitlab.com/BuildStream/buildstream/issues/26211:50
gitlab-br-botbuildstream: merge request (sam/doc-sandbox->master: doc: Add 'sandboxing' section) #279 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/27911:52
gitlab-br-botbuildstream: merge request (sam/doc-sandbox->master: doc: Add 'sandboxing' section) #279 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/27911:58
*** ironfoot has quit IRC12:08
*** ironfoot has joined #buildstream12:16
*** ChanServ sets mode: +o ironfoot12:17
gitlab-br-botbuildstream: issue #263 ("Allow checking out an artifact as a 'tar' stream") changed state ("opened") https://gitlab.com/BuildStream/buildstream/issues/26312:19
*** xjuan has quit IRC12:28
*** ironfoot has quit IRC12:30
*** ironfoot has joined #buildstream12:42
gitlab-br-botbuildstream: issue #172 ("pkg_resources module causes a delay of between 0 and many seconds every time `bst` starts up") changed state ("closed") https://gitlab.com/BuildStream/buildstream/issues/17212:52
gitlab-br-botbuildstream: merge request (sam/doc-sandbox->master: doc: Add 'sandboxing' section) #279 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/27913:15
gitlab-br-botbuildstream: issue #109 ("Add 'flatpak' element to allow generating flatpak apps and runtimes") changed state ("closed") https://gitlab.com/BuildStream/buildstream/issues/10913:34
jjardon[m]Uh , did bst grew a flatpak element? ^13:38
gitlab-br-botbuildstream: issue #255 ("Document sandbox/artifact cache limitations") changed state ("closed") https://gitlab.com/BuildStream/buildstream/issues/25513:38
gitlab-br-botbuildstream: merge request (sam/doc-sandbox->master: doc: Add 'sandboxing' section) #279 changed state ("merged"): https://gitlab.com/BuildStream/buildstream/merge_requests/27913:38
tlaterjjardon[m]: It was merged to bst-external13:39
ssam2jjardon[m], it's just a copy of the one from freedesktop-sdk13:41
ssam2works for building apps too, see https://mail.gnome.org/archives/buildstream-list/2018-February/msg00011.html13:41
tristanjjardon[m], you have good privileges in bst-external repo; for the short term at least - you can feel free to just modify it at will13:46
tristanjjardon[m], longer term we'll want it to be more stable and not drastically changing, of course13:47
jjardon[m]Cool, is there any plan for a bst-external tag/release?13:48
* tristan has a "decent" working prototype of project.refs, but it needs: A.) optionality (otherwise it's API break)... B.) more thought for junctions13:48
tristanjjardon[m], currently no; vision is a bit blurry; it's possible though that we dont want to do that in bst-external13:49
persiaI think it makes sense to never release bst-external13:50
tristanjjardon[m], the reason being that, currently things which live there are both A.) Pretty case specific ... and B.) Not well analyzed enough yet to be stable13:50
juergbitristan: do you want input from me regarding handling of refs for junctions?13:50
tristanjjardon[m], pretty much for the reason of (B) above, I'm thinking we may want to instead wait a time period and then migrate plugins which become stable to some other, more specific repos13:50
jjardon[m]OK, problem here is that I need to tell my users what version of bst-external they should use, and a SHA is not very human friendly13:51
juergbidate-based tags?13:51
juergbi18.02 or so?13:51
tristanThat could be an option13:52
jjardon[m]That would work for me13:52
tristanIf tags are desired in a scenario without hard API stability guarantees13:52
persiajuergbi: Problem being that doing so encourages updates by consumers, which may not be ideal if the repo isn't under some sort of release governance.13:52
* persia is not convinced anyone would appreciate that date-based-tags aren't supported releases13:53
tristanwell, fair point I guess13:53
juergbian alternative could be to import bst-external as submodule into freedesktop-sdk13:53
persiaI think the better answer is to polish the plugin as appropriate and put it somewhere that does have releases, etc.13:53
tristanpersia, well yeah, we're talking about the time it takes for that to be appropriate13:54
persiaBut that is related to my conception of bst-external as an ungoverned collaboration space: I don't know if others share this concept.13:54
tristanI dont think it's reasonable to think that flatpak plugin YAML format will be API stable before trying to use it for a few months13:54
persiatristan: Understood.  My thought is that if we need unstable software, we should use a SHA (as ugly as this might be), and work to make it stable.13:55
persiaThere's not enough folk involved for us vs. them to be a big factor, really.13:55
* tristan is rather ambivalent on this point13:55
persiaUnless someone has a specific audience in mind as the users of a plugin before it is stable, where that audience cannot be encouraged to help make it stable.13:55
jjardon[m]A tag can mark an unstable version as well ...13:56
tristanjuergbi, I think for project.refs, what I think I need is (A) from the TrackQueue, I need to know what is the frontend/toplevel project being built (there is probably a pointer hanging around for that)13:56
tristanjuergbi, and (B), I think the right approach here is that 'subproject' refs stored in project.refs are only ever useful from the toplevel project being built (i.e. we never consult the subproject refs found in project.refs files in subprojects recursively)13:57
tristanjuergbi, still in pondering stage here but that is sort of the tricky part13:57
persiajjardon[m]: Technically, yes, but man folk fail to understand that: the x.even/x.odd naming scheme confuses people regularly, as they want to "upgrade" to x.odd, and then complain when it breaks.13:57
persias/man/many/13:58
tristanpersia, I have never really had time to sympathize with folks who dont understand even/odd stable/unstable versioning schemes, rather when questions pop up over the years, we just inform how versioning works in project "foo"13:59
tristanI'm not sure it's the best approach either to tip-toe around what we think people might randomly perceive a tag to mean14:00
juergbitristan: (A) you could take the first entry of context._get_projects() if that's available14:00
persiatristan: Such an explanation works well when there are proper releases.  For something that never releases (and never intends to release), especially in the case where any feature is lost once it becomes stable, I think it behooves us to consider naive perceptions.14:00
juergbiotherwise Pipeline has a ref, of course, might have to pass it in14:00
tristanpersia, but still, rather ambivalent, I would like to leave this decision up to jjardon[m], as he is the one with practical needs today.14:01
* persia is mostly concerned about complaints that "bst-external 18.08 is broken because buildstream no longer supports flatpaks"14:01
*** tristan has quit IRC14:06
jonathanmawnexus: would you like me to review https://gitlab.com/BuildStream/bst-external/merge_requests/19 ?14:12
*** tristan has joined #buildstream14:13
*** tm has quit IRC14:13
nexusjonathanmaw: i just need to make a quick alteration, after that, yes pls14:18
nexusok, done, yes please jonathanmaw14:19
juergbitristan: (B) if we assume that project.refs will mainly be used outside version control, that makes sense14:21
juergbiotherwise not sure14:21
tristanI would not assume that14:21
tristan(B) is certainly tricky14:21
tristanthe more I think of it14:21
tristanWell, maybe not so much14:21
juergbihm but if a project uses project.refs as main way to track refs and has that in vcs; it needs to be usable the same way as inline refs14:22
tristanAssume that a master project is allowed to override what a subproject said it's refs should be14:22
*** jonathanmaw has quit IRC14:23
tristanHowever, it's a bit rude that a simple `bst track --deps all` without --except on junction points will track every subproject recursively14:23
*** jonathanmaw has joined #buildstream14:23
jonathanmawah, I thought gitlab had gone down. nope, just my internet.14:23
juergbiagreed, i think track shouldn't go across junctions by default14:24
tristanjuergbi, It means also that at load time; we need to squash active refs which exist in subproject's project.ref files (or inline)14:24
tristanYeah maybe something explicit should be introduced for descending into junctions at tracking time14:24
tristanjuergbi, what also boggles my mind; I'm not sure what happens in a recursive track session currently14:26
juergbii actually forgot to check but i guess it updates the temp directory14:27
tristanjuergbi, when you track a junction element, it will upgrade the subproject and then the elements which need tracking have changed in mid-flight ?14:27
juergbiah no, tracking recursively will only track regular elements, not junctions themselves14:27
juergbijunctions can only be tracked explicitly at this point14:27
tristanOh ?14:27
juergbijunctions can't be dependencies, so they are also never in a plan etc14:28
tristanOkay, that is... more tricky than the changes I'm making, but sounds pretty non-symmetric14:28
tristanOh wait, maybe I misunderstand; yes this sounds right14:28
tristanSo you have elements which depend *into* junctions14:28
juergbiyes14:29
juergbiand those can be tracked14:29
tristanbut you cannot depend on a junction, yet; a junction is still an element14:29
juergbiright14:29
tristanHmmm14:29
juergbiyou should get a sensible error message if you try14:29
tristanI feel/suspect that we need a way to bring these junction elements into the pipeline - at least in some ways14:30
juergbifor tracking or other reasons?14:31
tristanfor instance; it's possible right now that if we use a project with junctions and build it; the build session log will fail to print out the cache keys for the junctions themselves14:31
tristanat least there14:31
juergbiok but they are also not too relevant14:32
tristanWhat happens when you `bst build junction.bst` ?14:32
juergbishould result in an error14:33
tristanOk14:33
juergbiwe could support it if we had a default target14:33
juergbifor a project14:33
tristanNah14:33
tristanI think though we may need some API churn around this to make things a bit more clear14:33
tristanor maybe a different file extension or smth14:34
tristanthey behave much like an element, yes from the core's perspective, this makes sense because we leverage the featuresets we need14:35
juergbipossibly. we discussed this a while ago but the conclusion back then was to just use .bst14:35
tristanfrom a user perspective, it's a bit confusing14:35
tristanwell, I think anyway I have to get used to using them :)14:35
tristanwith more use, we will be able to form better opinions14:36
juergbii've found an interesting (ab)use of junctions14:36
tristanluckily this is still early 1.1 cycle, so we have a lot of discovery time14:36
juergbiuse a local path: . junction to depend on the same project with different options14:36
juergbiuseful for multiple bootstrapping stages14:36
tristanYeah14:37
tristanI thought of another thing which might be an interesting use of junctions14:37
gitlab-br-botbuildstream: issue #264 ("The build environment should set UTF-8 by default") changed state ("opened") https://gitlab.com/BuildStream/buildstream/issues/26414:38
tristanpersia, and I were discussion the weird situations which arise where "Software stacks are rather vertical dependency wise, and it makes sense to split projects by stack layer"14:38
tristan*but*14:38
tristanorganizations generally want to manage a set of modules, sprinkled across the stack (an out of tree kernel module here, a middleware library there, and some full on GUI apps)14:39
tristanthat's a drastic case where it's not really recommendable to maintain one project with those components, but there is gray area14:39
persiaIs this about creating a project that depends on several upstream projects and then modifies only a couple of things in the middle?14:40
tristanjuergbi, so I was thinking, maybe it's possible to have freedesktop-sdk build glib from GNOME, for freedesktop-sdk level things which depend on glib14:40
tristanand then also have GNOME depend on freedesktop for things which in turn depend on it's glib14:41
juergbihm14:41
tristanjuergbi, maybe that's "going too far" with junctions, though; maintainability wise; even if it worked14:41
juergbione potential issue here is that we don't support doing this forth and back without actually loading the top-level project twice14:42
juergbiwe generally support the coalescing of subprojects for nested subprojects but not between the top-level and a subproject14:43
juergbi(as there is no junction name to match to for the top-level project)14:43
tristanright, resolving the correct refs and project state becomes difficult14:44
tristanor not resolving them, but synchronizing them14:44
tristanand there is no sensible way for a subproject to refer to "The project which included me"14:44
juergbiindeed14:45
juergbitristan: btw: i was thinking about cross compilation over the weekend and i believe a scratchbox-like approach (also using qemu-user + cross compiler but much simpler) could still be feasible and reliable14:51
persiaI don't really like the idea of projects depending on each other (circular dependency loops are bad).14:58
persiaOn the other hand, I think GNOME should be able to override the freedesktop-sdk glib definition (if appropriate), and then reuse other definitions in freedesktop-sdk, such that GNOME binaries are subtly different (as everything is built against GNOME glib).14:59
juergbiyes, i also don't think cycles really make sense in general14:59
persiaBut that the GNOME project *does not* need to redefine anything else in freedesktop-sdk: the other definitions just get used as-is (except consuming the GNOME glib as a dependency vs. the freedesktop glib)15:00
persiaThis does mean different cache keys, but since they are different objects, that's probably a good thing.15:00
juergbioverriding a single element in the subproject is not possible at this point15:01
persiaFor me, that would be a killer feature.15:02
tristanjuergbi, interestingly, the scratchbox approach was approximately the most hacked out, contorted way I could possibly find to do cross compilation (http://www.merproject.org/~lbt/SB2_internals_1st_ed_20120425.pdf)15:02
juergbipersia: it's definitely interesting. having junction config for this should be possible15:03
tristanit is a challenge to come up with a less maintainable design :)15:03
persiajuergbi: That would be really cool, as it should allow us to avoid the circular dependency issue.15:04
persiaOtherwise we end up with different people arguing about what features to enable in a given source, which limits definition reuse.15:04
tristanjuergbi, that said; I did experiment with something similar, qemu + distcc to well known cross compiler (from the same build which was used to construct the runtime)15:04
tristanjuergbi, build farm approach seems to me still cleaner15:05
juergbipersia: yes, i could certainly see it being useful but we have to think about whether such connected projects would still be reliably maintainable15:06
juergbitristan: i prefer qemu-user + in-tree cross compiler in disguise to qemu + distcc. should be much easier to manage and even more efficient. but it certainly goes into the same direction15:07
juergbibuild farm: sure, that's fine for cases where you can have a reasonable one for the target ISA15:07
tristanwe're going to break all sorts of sandboxing rules I think if we go down into scratchbox territory15:08
juergbii don't want to build webkitgtk natively on ARM, though, not even with a buildfarm15:08
juergbino, i think it should be possible without breaking any rules15:08
juergbiexcept for qemu-user registration15:09
tristanif we ever do an LD_PRELOAD in a build environment, then we're bust15:09
juergbino, that shouldn't be necessary15:09
tristanthat's what scratchbox is doing15:09
juergbii know. i definitely don't want to recreate scratchbox15:09
tristanbut yeah, qemu-user mode; maybe; but if we can do build-farm I'm not sure it's right15:10
tristani.e. once down that path, you are presented with the world of "cheats" you can decide to do, or not, to optimize build time15:10
tristanif you dont do the cheats, I'm not sure you get better performance than a build-farm approach15:11
juergbito some extent yes but stripping down the 'cheats' to the bare minimum could result in a sensible compromise15:11
tristanjuergbi, a remote worker implemented as a portal into a local qemu-user session might be interesting, though15:11
juergbibuilding everything via emulation is too slow in practice, imo15:12
tristanYes15:12
tristanAnd the cross compiler thing... ehhh; I dont think we want to go there unless we really really have to15:12
tristanthat will be a *lot* of design to get something well defined15:13
juergbii don't think it needs that much infrastructure but maybe i'm forgetting something15:13
juergbii did some experiments a few years ago which worked pretty well15:13
tristanIt needs to be a cross compiler that we built15:13
juergbiyes, of course15:14
juergbiwith the approach i'm thinking of, the cache key would depend on the actual build host architecture15:14
juergbibut i think that's acceptable15:14
juergbiit's just a cache15:14
tristanwell, there is no guarantee that the output is the same anyway15:14
juergbiindeed nothing that buildstream can control15:15
juergbiin practice, i expect/hope it to be reliable15:15
juergbii.e., bit-for-bit reproducible15:15
tristanso that's a sensible choice (i.e. cross-compile from x86 vs cross-compile from arm, vs native compile on real mips... as far as we're concerned; they are all different binaries)15:15
juergbi(with native compilation)15:15
tristanwell, sounds like a plausible sandbox implementation; but would require much experimentation too; I'm not personally clear on how you invoke native binaries in a qemu-user session for cross compile15:17
tristanalso; you need to have a properly tuned compiler, which we recently discovered yocto does not (iirc, the native compiler it installs on ${target} still needs to be told about it's target board features)15:19
tristanthe aboriginal gcc builds are probably better in this regard15:19
juergbiqemu-user is per process15:19
juergbituning shouldn't really differ between native and cross compilers15:19
juergbiassuming you don't use -mtune=native15:19
tristanI mean, you build a cross compiler for arm with vfp3 and neon enabled15:20
tristanand when you use that cross compiler, you dont have to specify the features15:20
juergbiyes but that's the same as for a native compiler15:21
tristanexcept that we dont have cross build models to compare (that I know of) where we've seen this work all the way up the stack15:21
tristan(hence, experimentation)15:22
juergbii'll try to hack something up in the evening or weekend15:22
tristanjuergbi, actually, from what I'm gathering now; it sounds like you dont need a special sandbox for this15:22
tristanyou just build-only depend on qemu user mode and the cross compiler that you build, in the sandbox15:23
juergbino, no special sandbox required15:23
tristanand voiala15:23
juergbino, qemu-user registration is the exception15:23
juergbithat has to happen on the host as root15:23
juergbiyou can think of it like installing an ARM co-processor ;)15:23
juergbiit might be possible to do it in a namespace in the future15:24
juergbiotherwise you'd have to trap execve but i consider this wasted given that there is binfmt_misc, at least on linux15:24
jonathanmawnexus: I'm finished reviewing your merge request.15:24
nexusyay15:25
nexusdid i fail?15:25
jonathanmawnexus: well, the tests fail, but it looks like that's a small fix15:26
nexuskk, shall look15:28
*** mcatanzaro has joined #buildstream15:33
*** tristan has quit IRC15:38
*** tristan has joined #buildstream15:38
*** manj-gnome has joined #buildstream16:31
manj-gnomeHello16:31
gitlab-br-botbuildstream: merge request (239-use-pylint-for-linting->master: WIP: Resolve "Use pylint for linting") #283 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/28316:32
gitlab-br-botbuildstream: merge request (239-use-pylint-for-linting->master: WIP: Resolve "Use pylint for linting") #283 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/28316:49
persiamanj-gnome: Hi.16:49
*** manj-gnome has quit IRC16:50
*** toscalix has quit IRC17:00
gitlab-br-botbuildstream: merge request (239-use-pylint-for-linting->master: WIP: Resolve "Use pylint for linting") #283 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/28317:19
*** noisecell has quit IRC17:31
*** Prince781 has joined #buildstream17:38
gitlab-br-botbuildstream: merge request (239-use-pylint-for-linting->master: WIP: Resolve "Use pylint for linting") #283 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/28317:39
*** xjuan has joined #buildstream17:49
adds68Is there a way to see error logs from a previous build?17:52
ssam2look in the cache directory17:53
ssam2there's a logs/ subdir17:53
ssam2you need to know the cache ID of the build, or look at the timestamps17:54
*** ssam2 has quit IRC17:58
*** dominic has quit IRC18:00
*** bochecha has left #buildstream18:03
*** jonathanmaw has quit IRC18:03
adds68cheers ssam218:04
*** Prince781 has quit IRC18:22
*** Prince781 has joined #buildstream20:34
*** mcatanzaro has quit IRC20:55
*** aday has quit IRC21:03
*** Prince781 has quit IRC21:27
*** Prince781 has joined #buildstream21:29
*** Prince781 has quit IRC21:35
*** Prince781 has joined #buildstream21:40
*** mcatanzaro has joined #buildstream21:43
*** valentind has joined #buildstream21:54
*** xjuan has quit IRC22:27
*** Prince781 has quit IRC22:46
*** tristan has quit IRC22:59
*** Prince781 has joined #buildstream23:17

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