IRC logs for #buildstream for Wednesday, 2017-11-01

*** semanticdesign has quit IRC01:05
*** tristan has quit IRC04:58
*** tristan has joined #buildstream05:27
*** adds68 has joined #buildstream08:22
*** valentind has joined #buildstream08:31
*** tlater has joined #buildstream09:47
tristantlater, I dont feel super strongly about the fix for https://gitlab.com/BuildStream/buildstream/merge_requests/133/diffs fwiw09:54
tlatertristan:09:54
tristantlater, just curious if there is a reason why we had to change the API at all09:54
tlaterGah, stupid enter key. Well, it turns out the platform needed arguments, and it seemed odd to have mandatory arguments for get_platform() yet not use them most of the time.09:55
tristanI mean, we could roll with that... but feels weird that a singleton needs to have a new "create_instance" explicitly called09:55
tristantlater, that is a fair point09:56
*** jude has joined #buildstream09:56
tlaterI was a little iffy about that too.09:56
tristantlater, but... waait a sec09:56
tristanWhy does it need a project ?09:56
tlatertristan: I... don't remember. I think it needed some of the API09:57
tristanostree cache seems to need a project09:57
tristanMkay09:58
tristanSo, that is going to have to change09:58
tristantlater, alright well lets roll with your patch as is then09:58
* tristan expects that juergbi's branch will remove the 'project' parameter from Platform() constructors, and either will create a separate ArtifactCache for each project, or make a single ArtifactCache be able to work with multiple projects10:00
tristanjuergbi, that makes sense right ?10:00
tristanafiacs, the Project being a parameter of the singleton Project, is only there as a detail for the ArtifactCache to read per-project configuration about where to push/pull to/from10:01
gitlab-br-botpush on buildstream@platform_singleton (by Tristan Van Berkom): 9 commits (last: Catch attempts to compose a list) https://gitlab.com/BuildStream/buildstream/commit/8c4d8ca2b7c886690fb933428c6768c745667db710:01
gitlab-br-botbuildstream: merge request (platform_singleton->master: Make the platform object a singleton) #133 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/13310:01
juergbitristan: at this point a single ArtifactCache is used with the configuration from the top-level project, but yes, we probably want to switch to one of these two options10:05
juergbiat least for the future import-style 'subprojects'10:05
*** ssam2 has joined #buildstream10:07
tristanjuergbi, I would honestly expect that initially, in contrast with project options; shouldnt the artifact cache default to the project.conf declaring the elements ?10:09
tristanjuergbi, rationale here (and original rationale for ensuring projects declare their own artifact caches), is that we mostly want to "by default" make sure that people dont push stuff to the wrong place10:10
tristani.e. with inter-dependent projects, you can have proprietary code building with FOSS code, and you should not be able to easily and accidentally push proprietary binaries to a public share10:10
juergbiyes, it's probably the way to go10:11
juergbiit's not completely clear cut as for downstream kind of operation you might not want to push things with a tweaked build to upstream cache10:12
juergbibut it's probably still sensible as default10:12
tristanindeed10:12
tristanI think we're also looking into multiple artifact cache bla-bla-ness in the next cycle10:12
tristanso some flexibility in configuration will probably come along with that, too10:13
juergbiif the top-level project is proprietary, pushing FOSS subprojects to your top-level cache is not really an issue, though10:13
juergbiand i don't expect FOSS projects to have junctions to proprietary projects10:13
tristanTrue10:13
juergbiso i don't consider it essential10:14
juergbifrom cache reuse perspective, it still makes sense to me, though10:14
tristanHrrrm10:14
tristanmaybe you're right - I wont get too deep into this right now10:15
tristanI do find it a bit weird that "A Platform singleton needs a project" but "A session can be building multiple projects"10:15
tristanjuergbi, We do interrogate the element for it's project for most purposes in the artifact cache code10:15
tristanAnd untangling things is always a priority10:16
tristanin general10:16
juergbii agree10:16
juergbiuntangling definitely makes sense, no matter what policy we want in the end10:16
tristanyes :)10:16
*** givascu has joined #buildstream10:26
tlatertristan: You said you wanted to change something about the completion scripts - all my current failing test cases somehow revolve around that, could that perhaps be cleared up by your intended changes?10:27
tristantlater, that part wont change10:27
tristantlater, the completion tests unfortunately, need to be updated when some (not all) of the frontend command lines change10:28
tristani.e. we use some of our own commands to test that completion features work10:28
* tlater wonders if there's a way to do that automatically through click10:28
tristanit's not like we check every single command, but we do some10:28
tristantlater, our completions are a hack around click, so not really10:29
tristanbecause click's completions behave like crap, and the maintainer is overworked and doesnt have time to consider the patches I've sent10:30
tristanin fairness, they're not *that* bad10:30
tristanbut ours are much better :)10:30
*** tristan has quit IRC10:58
*** tristan has joined #buildstream11:02
*** tiagogomes has joined #buildstream11:09
gitlab-br-botbuildstream: merge request (platform_singleton->master: Make the platform object a singleton) #133 changed state ("merged"): https://gitlab.com/BuildStream/buildstream/merge_requests/13311:33
gitlab-br-botpush on buildstream@master (by Tristan Van Berkom): 2 commits (last: Make the platform object a singleton) https://gitlab.com/BuildStream/buildstream/commit/d64ea749379100f61ed2c3342bcda4d8e5a46d7111:33
gitlab-br-botbuildstream: Tristan Van Berkom deleted branch platform_singleton11:33
*** tiagogomes has quit IRC11:56
*** adds68 has quit IRC11:57
*** tiagogomes has joined #buildstream11:57
*** adds68 has joined #buildstream11:58
tlatertristan: I'm really struggling to understand the completions code... If I try to complete 'bst build ', what does that trigger? options/arguments, their values, subcommands or chained commands?12:03
tlaterLogically it would be argument values, but that only gives the default values click specifies, and so we get 'bst build ./*', instead of 'bst build elements/*'12:05
tristantlater, I dont understand why you have to understand completions code12:13
tlatertristan: Well, we support unlimited numbers of arguments for various commands now, and that seems to break the completions code12:13
tlaterI just have no clue why yet.12:13
tristantlater, in tests/completions/completions.py, there are a few expected lists12:14
tristanand when a test fails, it shows you what was reported in the output12:14
tristanall that should be needed, is updating those lists with the new things found in the output, right ?12:14
tristanAh, unlimited number breaks that ?12:14
tristaninteresting12:14
tlatertristan: No, the actual completions are broken - it doesn't complete the correct paths anymore. Presumably because we're dealing with lists and not strings now.12:14
tristanahhh, probably has to do with code I mean to refactor12:15
tristantlater, so... right now there is some yucky stuff in _frontend/main.py which decides what to delegate to what completion12:17
tristannamely, the target option12:17
tristantlater, if you've renamed target to targets for instance... you'll need to update that stuff12:18
tlaterAh12:18
tlaterThat makes sense12:18
tristantlater, seems right now there is target or element12:18
tristanI mean to take care of refactoring that at the same time as supporting the except stuff12:18
tristanby subclassing the click.File() or click.Path() param types12:18
tristanand casing on that instead12:19
tristanfor your purposes, dont get too deep, just update the hack is fine :)12:19
tristanmain.py:override_completions()12:19
tristanis what you're looking for12:19
tlaterCool, I just couldn't track back to that since it doesn't show up when throwing exceptions in related functions.12:20
tlaterta tristan :)12:20
tristanyeah, the imported complete.py originating from click is not the easiest to follow12:20
* tristan hopes maybe we can upstream this stuff next year12:21
gitlab-br-botpush on buildstream@multiple_targets (by Tristan Maat): 14 commits (last: main.py: Adjust app to multiple targets) https://gitlab.com/BuildStream/buildstream/commit/1aaf031a0dd3f543aff07823b43384f0ff66e5bc12:41
tlaterHm, is anything that doesn't specify a dependency type just a runtime dependency?14:11
* tlater finds that a bit counter-intuitive, especially when runtime dependencies are built *with* their parents.14:11
tristantlater, both14:22
tristantlater, if it's not specified, it's assumed to be required for building and also required for running14:23
tlatertristan: Oh, so then for the purposes of planning it should be considered a build element since it is required to have been built before its parent?14:23
tristantlater, a dependency that is only required for runtime, can be - something like a font, or a dbus service14:24
tristansuchlike14:24
tristanno14:24
tristanwell, I dont know what you mean by that14:24
tlatertristan: If I understood juergbi 's code correctly RUN dependencies are built at the same time as their parents, whereas BUILD dependencies are built beforehand.14:24
* paulsherwood notices that tristan seems to be enjoying the bd role :)14:25
tristanhttp://buildstream.gitlab.io/buildstream/format.html#format-dependencies <-- of course that is worth a read14:25
tlatertristan: With my current implementation these elements are built twice...14:25
juergbitlater: deps of type 'both' definitely need to be built beforehand, yes14:26
tlaterGah, that's going to look nasty, but I guess there's no way around it.14:27
tristantlater, also take note of the Note: in the referred docs - if you only build depend on something, that thing is assumed to be required to run14:27
tlatertristan: Ah, right, ta :)14:29
tristanit's also not a huge requirement to like, rewrite juergbi's whole algorithm which has been working well enough, there must be a possible approach which just transforms that algo to work on a list of toplevel targets rather than a single one14:30
juergbii think so as well14:31
juergbiisn't it more or less the same as an implicit stack with all the top-level targets?14:31
juergbi(haven't given it much thought yet)14:31
tlaterjuergbi: If you extend a long line of nodes from the graph and also use that as a target you end up with an order that misses some parallelization.14:33
tlaterKahn's algorithm builds this a little differently so all elements that can be built simultaneously end up next to each other.14:34
juergbinot sure what you mean with a long line of nodes. it would just be one extra level independent of the number of target nodes14:35
juergbifor optimal parallelization we'd anyway need more dynamic scheduling14:35
juergbii don't know how significant the differences between the approaches would be in practice14:36
juergbito me it seems you're doing two things at once14:36
juergbiadding support for multiple targets14:36
juergbiand switching to a different algorithm that may allow more parallelization14:37
juergbii don't think the two really need to be done at the same time14:37
tlaterjuergbi: Fair, although I think currently with only one target this one creates the correct ord14:37
tlaterer anyway14:38
juergbihow is it different compared to creating a stack and adding all targets as dep?14:38
tlaters/this one/the old one/14:38
tlaterjuergbi: Kahn's algorithm is a breadth first search, so you end up visiting all nodes at their deepest depth.14:39
tlaterThat also means that sibling nodes are found together, as opposed to the depth search where you essentially build each target individually.14:40
juergbidoesn't the current depth sorting take care of this?14:41
juergbiwe determine the maximum depth as well, just in a different manner14:41
tlaterjuergbi: Not with multiple elements, from some manual testing14:41
juergbihm, siblings should definitely get the same depth value14:42
* tlater tries this again14:42
juergbiah, is the issue that we return a flat list in the end?14:42
juergbibut we do have the depth values, so we could possible do something smarted with the result14:43
juergbi*smarter14:43
tlaterjuergbi: No, I don't think that's an issue, if the algorithm does assign the correct depth values with multiple targets14:44
juergbian example may help if you think supporting multiple top-level targets with the current/old algorithm introduces an issue (functional or performance)14:47
*** jude has quit IRC14:47
juergbiif it's 'just' an optimization mostly independent of the multiple target support, i'd suggest to splitting the branch14:47
juergbi-to14:47
*** paulsherwood has quit IRC14:48
*** waltervargas[m] has quit IRC14:48
*** benbrown has quit IRC14:48
*** laurenceurhegyi has quit IRC14:48
tlaterjuergbi: Yeah, that's sensible. Also why I asked for review so early, didn't want to waste time on a fancy new algorithm if it's not necessary :)14:49
*** ptomato[m] has quit IRC14:49
* tlater looks to have made a mistake while calculating this...14:52
tlaterAaaand the old algorithm performs just fine.14:52
tlaterDamnit, I knew I should have checked another time.14:53
*** laurenceurhegyi has joined #buildstream14:59
*** paulsherwood has joined #buildstream15:03
*** benbrown has joined #buildstream15:03
*** llo has joined #buildstream15:15
lloTHOSE STUPID MUSLIM SAND NIGGERS HAVE KILLED INNOCENT AMERICANS AGAIN15:15
lloTHE NAZI ORGANIZATION OF AMERICA IS PLANNING AN EMERGENCY MEETING15:15
persiaApologies for joining the discussion late, but there are a few cases where something is required to build, but not to run.  Examples include a) optional bindings that would be dynamically loaded at runtime, if available (e.g. codec support), b) toolchain elements (e.g. compilers or image transcoders), c) source transformation utilities (e.g. yacc, sed, etc.) used by a buildsystem15:15
lloTODAY @ #/JOIN ON IRC.FREENODE.NET. DO NOT COMPLAIN IN #FREENODE15:15
lloTHIS MEETING IS INTENDED TO BE FOR MORE LIKEMINDED INDIVIDUALS15:15
lloIF YOU HAVE QUESTIONS PLEASE DONT HESISTATE SENDING A MESSAGE TO15:15
lloVAP0R ON IRC.FREENODE.NET.15:15
llobenbrown paulsherwood laurenceurhegyi adds68 tiagogomes tristan givascu ssam2 tlater valentind juergbi kailueke[m] cs_shadow gitlab-br-bot brlogger anahuelamo mrmcq2u[m] cgmcintyre[m] mattiasb jjardon[m] ironfoot persia hergertme15:15
*** llo has left #buildstream15:16
* persia repeats, to ease later log editing, if anyone is bothering15:16
persiaApologies for joining the discussion late, but there are a few cases where something is required to build, but not to run.  Examples include a) optional bindings that would be dynamically loaded at runtime, if available (e.g. codec support), b) toolchain elements (e.g. compilers or image transcoders), c) source transformation utilities (e.g. yacc, sed, etc.) used by a buildsystem15:16
juergbipersia: yes, build-only dependencies are supported15:18
persiaAh, good.  I feared that might not be the case from "Note: in the referred docs - if you only build depend on something, that thing is assumed to be required to run "15:20
tlaterpersia: It's assumed to be required to run while building, i.e., it's runtime dependencies are required.15:21
persiaAh,. yes.  That makes sense.15:21
persiaThank you both for resolving my confusion.15:22
* tlater slaps himself for automatically adding ' to every "its" he types15:23
persiaThere are a few things in Debian that build-depend on odd bits like XSL templates or RFC text, which don't actually "run" as such, but I presume the providers would have no runtime dependencies for those, so that assumption would have no ill side effects.15:23
persiatlater: It's one of the most common typos :)15:23
juergbiyes, the runtime terminology may not make sense for some elements but i don't think it's an issue in practice. it's also in line with other build systems, afaik15:25
*** waltervargas[m] has joined #buildstream15:41
gitlab-br-botpush on buildstream@multiple_targets (by Tristan Maat): 20 commits (last: _loader.py: Adjust the loader to support multiple targets) https://gitlab.com/BuildStream/buildstream/commit/1027a8e3c8f3df712b2e8682a0e92dda9141723415:42
gitlab-br-botpush on buildstream@multiple_targets (by Tristan Maat): 1 commit (last: load.py: Add tests for loading multiple targets) https://gitlab.com/BuildStream/buildstream/commit/34fb37af3ed848d4a007fe8ac47ea280c23b8e7a15:51
*** ptomato[m] has joined #buildstream15:54
gitlab-br-botpush on buildstream@multiple_targets (by Tristan Maat): 1 commit (last: load.py: Add tests for loading multiple targets) https://gitlab.com/BuildStream/buildstream/commit/85b93c73d4d915ccc215455bc23e4c1c954bd32a15:59
gitlab-br-botbuildstream: Tristan Maat created branch tracking-changes16:00
gitlab-br-botbuildstream: merge request (tracking-changes->master: WIP: Tracking changes) #119 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/11916:00
tlaterSo right now all commands except `bst shell|source-bundle|checkout|workspace *` support multiple targets. I think it makes little sense with the first three, but `bst workspace close|reset` could have multiple targets. Should that also be a goal?16:08
tlaterActually, thinking about it, the other three might also want this, so that I can have a result that contains multiple elements that aren't related through dependencies...16:10
gitlab-br-botpush on buildstream@multiple_targets (by Tristan Maat): 20 commits (last: _pipeline.py: Adjust to new loader API) https://gitlab.com/BuildStream/buildstream/commit/601e4c3c5591f3abf9a0de147b38310c3ed5aeb817:19
tristantlater, nah I dont think so17:38
tristantlater, its gonna be weird I think for checkout, nonsensical for workspace or shell17:39
tristansource-bundle, maybe ?17:39
tlatertristan: Same use case as build, I suppose17:39
tristanyeah source-bundle is similar, if it's not problematic to do17:40
tristanif it causes even the most minor of side effect changes, I'd leave it alone and spend time on actually important things17:40
tlatertristan: It might be, because it turns out to be quite difficult to create a dummy element, which we need to stage a sandbox.17:40
tristantalking about different things are we ?17:41
tlaterAh, wait, we don't do that anymore17:41
* tristan should stop ever using the word "it" in any conversation17:41
tlatertristan: nvm, I misremembered how source-bundle worked.17:41
tlatertristan: Yeah, it looks possible for source-bundle17:42
tristansource-bundle might require refactoring of how the main script (is there a main script ?) works17:43
tristanin which case I'd just say screw it, seconds add up to minutes, those seconds would be wasted17:43
tlatertristan: That's fair.17:44
tlatertristan: In which case, I'll set up an MR for this soon, and move on to --except tomorrow.17:44
tristanit wouldnt be an API break to extend it to support multiple targets afaics, so not a blocker either17:44
tristanthere I go again with the hand waving vague "it" word ;-)17:45
tlatertristan: Hard to go without 'it' ;P17:46
* tlater blesses his linter for pointing out accidental pipeline.target references17:46
gitlab-br-botpush on buildstream@multiple_targets (by Tristan Maat): 20 commits (last: _pipeline.py: Fix metaelement resolution) https://gitlab.com/BuildStream/buildstream/commit/44a91df2a2cc57b1f878edd5be416f092c2180e417:52
gitlab-br-botbuildstream: merge request (incremental-build->master: WIP: Incremental build) #126 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/12617:58
gitlab-br-botbuildstream: merge request (incremental-build->master: WIP: Incremental build) #126 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/12618:08
gitlab-br-botbuildstream: merge request (incremental-build->master: WIP: Incremental build) #126 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/12618:10
gitlab-br-botbuildstream: merge request (incremental-build->master: WIP: Incremental build) #126 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/12618:11
gitlab-br-botbuildstream: merge request (incremental-build->master: Add support for doing incremental builds) #126 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/12618:11
*** tlater has quit IRC18:12
*** ssam2 has quit IRC18:13
*** tristan has quit IRC19:57
*** tristan has joined #buildstream19:58
jjardon[m]hi!20:29
jjardon[m]does bst provides a tool to check if a project / bst file is "bst compliant" ?20:30
tristanjjardon[m], what is "bst compliant" ?20:31
tristanjjardon[m], if there is any problem with a project / element, running `bst show` on it will bail out with an error message indicating the filename, line, column and reason of the error20:32
tristangood enough ?20:32
tristanrunning `bst anything` for that matter, will do the same20:33
jjardon[m]tristan: a bst file that instead having "kind: tar" has kind: archive", when that plugin doesnt exist, for example. Yeah, that looks exactly what I need, cheers!20:36
jjardon[m]we simply want to check our conversion script does the correct thing, even if its not perfect20:38
tristanjjardon[m], yeah `bst show` is not perfect for validation but it almost is20:42
tristanit might not catch problems on untested sides of conditional statements20:43
tristanand it wont catch elements it doesnt load20:43
tristanjjardon[m], maybe a `bst validate` command could be a reasonable feature request, to validate every possible project option and bst file20:44
tristanbut still, you are quite 'almost there' with just `bst show`20:44
*** givascu has quit IRC21:10

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