IRC logs for #buildstream for Thursday, 2017-02-16

*** tristan has joined #buildstream05:04
*** ChanServ sets mode: +o tristan06:00
* tristan pushed the gcc build failure issue to build-essential in buildstream-tests fwiw10:05
ironfootta10:12
*** ssam2 has joined #buildstream10:16
tristancache keys fixed with this: https://gitlab.com/tristanvb/buildstream/commit/bf7643a131b3d964b64e970b4be0d1f362e4958f ... will rebuild world11:46
tristannow would be the right time to land a cache key version11:46
tristan(and test case)11:47
ironfootgreat :)11:51
* tristan is cooking up something nice actually right now :)11:54
ironfootheh, i dont know if you are talking about code, or food :)11:55
* tristan hasnt cooked food in many years :-/ 11:55
ironfootlol11:57
tristandoes ramen noodles count ?11:57
tristanheh11:57
ironfoot:)11:58
tristanmkay, network unreachable pipeline failure https://gitlab.com/tristanvb/buildstream/builds/1059932012:23
tristanmeh12:23
ironfootI'm testing I can build the converted core.bst12:35
ironfootand.. I'm still waiting :/12:35
tristanwaiting how so ?12:36
* tristan pushed his last but it doesnt provide the awesome that he wanted to include, it will have to wait for a bit of the frontend/UI refactor12:36
ironfoottristan: I've pushed https://gitlab.com/palvarez89/buildstream-tests/commits/pedro/defs2bst-tests if you want to give them a try12:39
tristanironfoot, are you using the <target>.yml now ?12:42
tristanironfoot, also... I'm curious about "I'm still waiting :/"12:43
tristanwaiting... for a download to complete ?12:43
tristanironfoot, also it may be good to do that in a fork of buildstream-tests, branched off of build-essential for now12:43
ironfootwaiting for any output12:44
ironfootand yes, using the <target>.yml now12:45
tristanfor any output12:45
tristanhmm :-/12:45
tristanwhat does ps tell you ?12:45
tristanOh sorry I didnt notice it was actually based on a fork of buildstream-tests12:47
ironfooti don't know how to use `ps` to get useful information12:47
ironfoot:P12:47
tristanps axf ?12:47
tristanand look for buildstream process12:47
tristansee if it's got any children12:47
ironfootah12:48
ironfootnope12:48
tristanironfoot, it could be that, maybe ostree cloning is stuck on something ?12:48
tristanmaybe something choking on a stale lock from a previous CNTL-C ?12:48
ironfootif I build a single element from core/ seems to work12:48
ironfootI'll do some straces12:48
tristanironfoot, ok so first of all; looking at your output...12:49
tristanyou are setting dependencies all to type: build12:49
tristanSee https://people.gnome.org/~tvb/buildstreamdocs/format.html#dependency-types12:49
tristanironfoot, "build" dependencies are dependencies only required for building, as in they are not required to run; also they are not transitive as such12:50
tristanironfoot, so if a "build" depends on b which "build" depends on c, c is not staged to build a12:50
tristanonly implicitly brought in if c is also required for b to "run"12:51
tristanironfoot, simple shorthand notation of the element path (with no filename: or type:) implies both build & run12:51
ironfootyeah, I assumed I wasn't going to get all the dependencies right13:06
ssam2that's a nice design, more expressive than Baserock without losing the simplicity13:06
tristanyeah I think so :)13:08
tristanwe offload a lot of complexity by treating distribution separately, and this is one place it pays off13:08
tristan(no need to consider split "package" based dependencies in the model, which costs brain cells)13:09
ironfootstrace shows no activity13:12
ironfootstrace shows no activity after opening the files described in core.bst13:13
tristanmkay, odd13:13
tristancircular dependencies should be caught13:13
tristanironfoot, no core is at 100% cpu ?13:13
ironfootheheh yes13:15
ironfootbst, 100%13:15
ironfootI've removed all the deps in core.bst but one, and it started building13:15
tristanOk, there is some context :)13:15
tristanSo I presume our test cases are not finding all of the possible circular dependencies, or smth13:16
* tristan doesnt see other ways we can spin, circular deps did make us spin13:16
tristanironfoot, see if you can find any circular dep in your conversion first, and I'll have to reproduce and fix13:20
tristanironfoot, or you could reproduce and fix if you like of course :) ... in any case a bug report with the offending .bst situation would be great13:21
*** tristan has quit IRC13:51
*** tristan has joined #buildstream14:13
*** ChanServ sets mode: +o tristan14:14
ironfootsure, I'll investigate a bit more :)14:23
* tristan was on the verge of a nice interactive UX today... build fails, pause current tasks: "Sir, this build has failed, would you like to: a.) shell into the build sandbox and debug the failure ? b.) Abort current tasks ? c.) Continue building components which do not depend on this build ?"14:30
tristanbut the frontend UI is in need of a cleanup first14:30
tristanall the context is in place though14:31
ironfoot--interactive mode14:32
tristanI dont even think that's necessary, perhaps non-interactive optional switch14:32
tristanironfoot, one of the nice things about the click library, is it "knows" if you are connected to a terminal14:33
ironfootmaybe the other way around, yes.14:33
ironfootah, good14:33
tristanso enable interactive mode by default only when connected to terminal14:33
tristanin fact, I think it has input prompts which automatically do that, even14:34
ironfootI'm unsure this is a case of circular deps15:32
ironfootbut I do think this is related to how BuildStream calculates the dependencies15:33
*** tristan has quit IRC15:39
ironfootfor example. 4m to start building core/libtool.bst15:41
*** tristan has joined #buildstream15:43
*** ChanServ sets mode: +o tristan15:43
ironfootheh, so disabling the circular deps check, is the bit that makes it go really really slow17:41
ironfooterm.. words17:41
ironfootbut you know what I mean, I'll try to understand it and see if we can improve it17:42
ironfootIt's really expensive right now, making BuildStream unusable to build core.bst17:42
ssam2it's quite hard to solve17:43
ironfootI left the build running for one hour, when having lunch, and hadn't started when I came back17:45
ssam2Morph just added each source it encountered to a list, and if it finds something with the same name already in the list, raises an error17:45
ssam2http://git.baserock.org/cgit/baserock/baserock/morph.git/tree/morphlib/sourceresolver.py#n39217:45
ironfootI assume it can be improved :)17:45
ssam2hah, yeah17:45
ssam2YBD I think just starts building without resolving the build graph, then raises an error if it's building something it built before17:46
ssam2but that approach limits what you can reuse the code to do17:46
ironfooti think the first approach fits better with the current codebase17:49
tristanironfoot, the circular deps check itself takes hours to complete ?!17:50
ironfootyou can test it yourself, and tell me that I'm wrong17:50
* tristan does not see how that many build paths are possible17:50
tristanI will17:50
tristanfwiw, BuildStream's dependency graph resolution is exponentially tricky because of variants (but wont be unless there *are* variants)17:51
tristanit's besides the point but explains the crazy loops which were needed in _loader.py17:51
tristanthat could probably be optimized, but I'm not convinced that its required17:52
tristanheh, /me sees his own comment: # XXX FIXME: This is horribly expensive17:53
tristanironfoot, question: Have you ever seen it complete ?17:56
ironfootyep17:57
tristanwow17:57
ironfooti mean17:57
ironfootfor the entire core.bst? nope17:57
tristanOh17:57
ironfootfor parts of core.bst, yes (i tried removing some components to check)17:57
tristanAnd how long did that take ?17:58
tristanwhen you saw it complete17:58
tristanand how much of core.morph did you need to remove ?17:58
ironfootit takes about 4 minutes to start building some of the components in core/*.bst17:58
tristanwhere some = ... 5 or 10 components ?17:59
tristancore is not *that* huge after all17:59
ironfootsome = 117:59
tristanwow so essentially, build-essential with all of its components is almost free18:00
ironfootI mean, 4 minutes to start building only linux-pam18:00
tristanbut adding one component which depends on it, costs 4 minutes ?18:00
tristanOk how many components was in the dependency graph for it to take 4 minutes to check circular deps ?18:00
ironfootI haven't noted down my findings sadly, I thought i was tracking down other problems18:00
tristanwell ok... in the meantime, ssam2 I'm looking at that sourceresolver.py and I'm unsure how/what it's doing18:02
tristanssam2, of course the same element shows up multiple times in a build graph, that is expected right ?18:02
tristanso you cant bail out18:02
tristanOr this is all thanks to the containing nature of "strata", which allow this to be true ?18:03
tristanOr rather, morph was never even able to build more than one component in parallel ?18:03
ssam2yeah, maybe strata made that true18:04
tristanbut even within one stratum, you have multiple chunks which depend on a common chunk, so its a bit confusing :-/18:05
ssam2yeah18:06
tristanwell, I'm sure we can optimize that well, although... it really didnt strike me as something that would take more than say, 10 seconds when you have > 10,000 chunks to build18:06
tristanbut eh18:06
* tristan was considering some denormalization at load time, making sort-by-depth less of a contorted thing, perhaps that might help18:08
tristanalthough, seems that would you try to calculate depth, that could be dangerous pre-circular-dep-check18:08
* tristan thinks he has a plan... the list approach will work18:32
tristanif, a.) its a recursive algorithm descending into dependency branches18:32
tristanand b.) the said list is copied and modified for each recursion18:33
*** ssam2 has quit IRC19:38
*** tristan has quit IRC21:36
*** jjardon has quit IRC22:40
*** jjardon has joined #buildstream22:56

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