IRC logs for #buildstream for Tuesday, 2017-11-07

*** semanticdesign has quit IRC00:18
*** cs_shadow has quit IRC03:43
*** bochecha has joined #buildstream04:26
*** bochecha has quit IRC05:37
*** tristan has joined #buildstream06:18
*** givascu has joined #buildstream09:03
*** givascu has quit IRC09:10
*** givascu has joined #buildstream09:10
*** tiagogomes has joined #buildstream09:17
*** jonathanmaw has joined #buildstream09:18
*** givascu has quit IRC09:22
*** Ebardie has joined #buildstream09:24
*** givascu has joined #buildstream09:39
*** ssam2 has joined #buildstream10:06
*** valentind has joined #buildstream10:09
tlatertristan: Have you seen sanders' response to my mail?10:38
tristantlater, havent read it yet, replied to various other emails and bug reports today10:39
tristantlater, will be looking at it presently10:40
valentindIt seems integration commands on compose cannot delete files. Or replace a directory or a file by a symbolic link.10:41
valentindIt would be nice compose only staged in / and returned / as output directory.10:42
tristanvalentind, I dont understand exactly precisely what you are saying, I need verbosity :-/10:45
valentindI guest script with no commands and install-root set to / is exactly it.10:45
tristanA script element can be used to do a morph directly on / indeed10:45
valentindSo I wrote an integration command that moved a directory and replaced by a symbolic link to the new place.10:45
valentindAnd I had a compose depending on the element with that integration command.10:46
tristanwe use it do run `dpkg --configure -a` on a multistrap output for instance10:46
valentindThe result was just a copy of the directory.10:46
tristanThat *might* be a bug10:46
valentindAnd the problem is because compose stages twice dependencies.10:46
tristansymlinks are hard things - also we normalize them at stage time10:47
valentindAnd tries to detect changes on the first staging and apply it to the second inside %{install-root}10:47
tristanAhhh10:47
tristanI see10:47
tristanYes this is very tricky10:47
valentindBut if we had compose to have %{install-root} as / we probably would not need to stage twice.10:48
valentindBut I am not sure why we need to have %{install-root} to not be /.10:48
tristanErrrm, not sure of this10:48
valentindBecause there is not much you can do with compose anyway. And the runtime is not used.10:48
valentindSo we could put it anywhere.10:48
tristanThe compose element handles a problem we had with other tooling which tries to produce slimmed down sysroot output10:49
tristanThat problem is basically...10:49
tristanYou have 2 competing interests here, one is you want to remove stuff that you dont want in your output10:49
tristanThe other is that you want the output to be runnable / chrootable and possibly bootable, which requires integration commands10:50
tristanThese are at odds with eachother, because removing things from the output, if done first; means that integration commands cant run10:50
tristanI.e. you've removed the tools which you need to run, in order to run those commands10:50
valentindBut how can you do this with compose?10:51
valentindYou meant remove the sysroot component from the path?10:51
tristanThere is no order of "split before running commands" or "run commands before split" which works, running the commands before split means you no longer know which files to capture using regex patterns or globs (there was more to this, but I dont recall every single thing)10:51
valentindThere does not seem to be any configuration to be able to do that.10:51
tristanvalentind, this is the reason why we stage twice10:52
tristanvalentind, if we asked for integration, first we stage everything, no split rules apply10:52
valentindAh, strip rule?10:53
valentindOK10:53
tristanvalentind, at which point we snapshot the staged sysroot before and after running integration commands10:53
tristanif we asked to include integration, the files which were effected, are included in the result, after staging the split portions of the artifacts we want to include, into %{install-root}10:53
tristanso updated caches and newly created files which dont exist in any artifact (are created by integration commands), squash whatever is in the compose output10:54
*** Beth has joined #buildstream10:55
tristan"split rule" is ... http://buildstream.gitlab.io/buildstream/public.html#split-rules10:55
valentindCan we give the result of split rules to utils.move_files?10:55
valentindAnd not restage10:55
tristanPerhaps10:55
valentindThen that would solve my problem.10:56
tristanCertainly not as a split second decision10:56
tristanvalentind, can you open a bug and outline the problem and proposed solution so we can take a bit of time to think about it ?10:56
valentindOK, I will do that this evening.10:57
tristanit sounds to me like it's a sane approach10:57
valentindI will also try it.10:57
valentindMaybe make an example with split rules.10:57
tristanbut it's also delicate :)10:57
tristanit will also maybe require some changes in how we do things; currently I think we have Element.stage() which accepts split domains, maybe we need Element.manifest() which accepts split rules and lists the files which match the splits as an intermediate function used by Element.stage()10:58
tristans/maybe we need Element.manifest() which accepts split rules/maybe we need Element.manifest() which accepts split domains/11:00
*** Beth has quit IRC11:00
*** bethwhite has joined #buildstream11:02
valentindAh I see, the split rules apply to the dependency. For example if you say "bin/*" it is only for the files of the dependency.11:06
tristanexactly11:06
tlatertristan: The except algorithms are both going to be a lot more efficient if we keep track of the parents of an element, can I talk you into allowing that?11:06
tristanelements themselves can also override/modify the rules for themselves11:06
tristanderiving from the project defaults11:07
valentindNew files from integration commands have to obey the split rules of the same dependency, I suppose.11:08
tristantlater, as in, both approaches (choice in how to treat the "purple elements") are improved by storing reverse dependencies ?11:08
tristanvalentind, no - integration commands are not captured by split rules11:09
tristanvalentind, which is why the compose element either does it, or doesnt do it11:09
valentindAh ok11:09
tlatertristan: Yes, because in either case elements will have to be removed from their parents' dependencies11:09
valentindThen it is simpler.11:09
tristantlater, I dont follow11:10
valentindWe still have to track which files have been modified to remove them from the split rule of the dependency the original file depended on.11:10
tristantlater, we're not modifying the build graph here, we're masking a list of which elements we're going to process11:11
tristantlater, if we've excepted things - the build graph still has the dependencies, only the list we feed to the scheduler has changed11:11
tristanvalentind, we have to track what files the integration commands modified (or created), yes11:12
tristanvalentind, whether we have to consider which artifact they are related to, or which element's integration commands effected it, I dont think is relevant11:12
tristanvalentind, in any case; we just copy (or move) them over *after* preparing the rest of the result11:13
tlaterYeah, you're right, that's still possible.11:16
tlatero\11:16
tristanvalentind, I think what you're getting at is basically "In a world where we move instead of re-stage at compose time, we need an utils.move_files() which explicitly ignores EEXIST errors on the source)11:16
tristan"11:16
valentindI will look at that later. Have to go. Thanks for the answers.11:32
*** valentind has quit IRC11:32
tristantlater, so my understanding of sander's reply is that he would prefer to keep the purple element, right ?11:42
tlatertristan: Yup11:43
tlaterThough I think the other part is more interesting11:43
tlaterWe managed to create an option for `bst build --track` that `bst track` doesn't have11:43
tlaterI mean, there's --deps none, but it's not as flexible11:44
* tristan is getting to that...11:45
tristanwhew, finally got that out12:10
* tlater agrees with just having --track be recursive12:14
tristantlater, I'm gonna scram now...12:15
tristanyeah I think it was a good idea to raise this on the list12:15
tristanseeing at how explosive this is, how many options can ensue12:15
tristantracking profiles will also be cooler12:16
tristanI guess this means --track OR --track-save (mutually exclusive options ?) --track-except (can be specified multiple times, ONLY allowed if either --track or --track-save have been specified) ?12:17
tristantlater, want to consider that for me, the goal being having a minimal but convenient CLI API surface, and summarize on the thread ?12:18
tlatertristan: Sure... Though I think --track-save works best as flag that just turns saving on/off12:18
tlaterRather than having different functionality from --track12:18
tristanmaybe you're right12:18
tristanyeah12:18
tlaterIt's the same number of options anyway12:19
tristanbut less of a huge CLI invocation12:19
tristanbut anyway12:19
tlatertristan: ciao :)12:19
tristanit's better as a flag, because it will also apply to --track-profile <profile_name>12:19
tristantlater, thanks for handling it !12:20
tlater:)12:20
*** tristan has quit IRC12:23
ssam2is it normal for the test suite to take 16 minutes to run ?13:02
gitlab-br-botpush on buildstream@sam/compose-log-splits (by Sam Thursfield): 1 commit (last: Log details of artifact splitting when building 'compose' elements) https://gitlab.com/BuildStream/buildstream/commit/6559b2e728a52a8ed566d2976be3a18c1643a71813:26
gitlab-br-botpush on buildstream@sam/compose-log-splits (by Sam Thursfield): 1 commit (last: Log details of artifact splitting when building 'compose' elements) https://gitlab.com/BuildStream/buildstream/commit/2f497ab7f18f0bfe475b267ed8b9fac067b8e0be13:28
gitlab-br-botbuildstream: merge request (sam/compose-log-splits->master: Log details of artifact splitting when building 'compose' elements) #140 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/14013:28
gitlab-br-botbuildstream: merge request (sam/compose-log-splits->master: Log details of artifact splitting when building 'compose' elements) #140 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/14013:29
gitlab-br-botpush on buildstream@sam/compose-log-splits (by Sam Thursfield): 1 commit (last: Log details of artifact splitting when building 'compose' elements) https://gitlab.com/BuildStream/buildstream/commit/93b7841bdee20d3daf4103985b5a4f1c199e8a8113:29
gitlab-br-botbuildstream: merge request (sam/compose-log-splits->master: Log details of artifact splitting when building 'compose' elements) #140 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/14013:29
ssam2with that patch out of the way; time to look at why my split rules are bonkers13:34
*** tlater has quit IRC13:36
*** laurenceurhegyi has quit IRC13:36
ssam2oh, they seem less bonkers now. perhaps i was printing something wrongly before13:36
*** anahuelamo has quit IRC13:37
*** anahuelamo has joined #buildstream13:37
*** jonathanmaw has quit IRC13:37
*** jonathanmaw has joined #buildstream13:37
*** bethwhite has left #buildstream13:38
*** tpollard has quit IRC13:39
*** tiagogomes has quit IRC13:47
*** tiagogomes has joined #buildstream13:47
*** jonathanmaw has quit IRC13:48
*** tiagogomes has quit IRC13:48
*** tiagogomes has joined #buildstream13:48
*** jonathanmaw has joined #buildstream13:48
*** jonathanmaw has quit IRC13:51
*** jonathanmaw has joined #buildstream13:51
*** Ebardie has quit IRC13:51
*** tiagogomes has quit IRC13:52
*** tiagogomes has joined #buildstream13:52
*** laurenceurhegyi has joined #buildstream13:59
*** WSalmon has joined #buildstream14:00
*** tlater has joined #buildstream14:00
ssam2i have a gnu-toolchain.bst stack.. which contains glibc, gcc, gawk, m4, make, etc.14:10
ssam2my final system contains m4, gawk and make, which is not what I want14:10
ssam2but how do I remove those ...14:10
ssam2do I put /usr/bin/make into the 'devel' artifact for make ?14:11
ssam2do I put /usr/bin/gawk into the 'devel' artifact for gawk ?14:11
ssam2but then what if there's a program which actually depends on gawk at runtime ?14:11
ssam2i guess the alternative is to remove gawk from the gnu-toolchain.bst stack14:13
ssam2and force anything that requires gawk at runtime to actually depend on gawk14:13
ssam2which seems a better way, really14:13
*** tpollard has joined #buildstream14:42
ssam2i think I must have a bug here somewhere... sometimes the binaries from busybox end up in the 'devel' artifact14:50
ssam2but no rule could be putting them there14:50
ssam2and devel shouldn't be included in my artifact anyway!14:51
ssam2maybe it's just being reported wrong14:52
ssam2ah, my code to show domains was indeed wrong15:08
*** jude has quit IRC15:20
*** jude has joined #buildstream15:36
*** cs_shadow has joined #buildstream15:58
gitlab-br-botpush on buildstream@sam/compose-log-splits (by Sam Thursfield): 1 commit (last: Log details of artifact splitting when building 'compose' elements) https://gitlab.com/BuildStream/buildstream/commit/25974124bae37dd60db2bb43e9642abd3f1ad5ce16:04
gitlab-br-botbuildstream: merge request (sam/compose-log-splits->master: Log details of artifact splitting when building 'compose' elements) #140 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/14016:04
ssam2bah, another 15 minutes of building GCC wasted because of disk space being too low16:58
*** tiagogomes has quit IRC17:04
*** valentind has joined #buildstream17:08
gitlab-br-botpush on buildstream@97-apply-pep-3102-to-all-public-api-surfaces (by Jonathan Maw): 2 commits (last: Revert "Apply pep 3102 to Element.dependencies") https://gitlab.com/BuildStream/buildstream/commit/4347640c34059db55180920f9e953b00abc478ac17:33
gitlab-br-botbuildstream: merge request (97-apply-pep-3102-to-all-public-api-surfaces->master: WIP: Resolve "Apply pep 3102 to all public API surfaces") #127 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/12717:33
*** givascu has quit IRC17:46
*** WSalmon has quit IRC17:48
*** adds68 has quit IRC17:56
gitlab-br-botpush on buildstream@sam/overwrite-list-with-empty-list (by Sam Thursfield): 1 commit (last: Allow overwriting a list with an empty list using (=) operator) https://gitlab.com/BuildStream/buildstream/commit/cb6df173ef00b28bdc5c0055fbd6f111d23217e918:01
gitlab-br-botbuildstream: merge request (sam/overwrite-list-with-empty-list->master: Allow overwriting a list with an empty list using (=) operator) #141 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/14118:02
* ssam2 deletes 51GB of BuildStream cache18:05
*** jonathanmaw has quit IRC18:05
ssam2oops, didn't realise he was in the cache18:06
gitlab-br-botbuildstream: merge request (sam/overwrite-list-with-empty-list->master: Allow overwriting a list with an empty list using (=) operator) #141 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/14118:08
gitlab-br-botpush on buildstream@multiple_targets (by Tristan Maat): 4 commits (last: main.py: Fix app initialization) https://gitlab.com/BuildStream/buildstream/commit/b354b0f62e82b1d46193f1454c7d0d4c5bcaba2818:08
*** jude has quit IRC18:09
valentindI get 49 errors running the tests.18:15
valentindIs that normal not all the tests pass? Or is it just on my computer?18:15
ssam2all the tests should pass18:15
ssam2you might be missing a dependency ? e.g. the bzr source tests require you to have bzr installed, I think18:16
valentind    from buildstream import LoadError, LoadErrorReason18:16
valentindE   ImportError: cannot import name 'LoadError'18:16
valentindThis is what I get.18:16
ssam2weird; what commit of buildstream.git ?18:16
valentindI just fetched master now.18:17
valentind0f134712d3efb31cd1e3d53d464a8e66ee92a5f118:17
ssam2the tests for that all passed in GitLab CI: https://gitlab.com/BuildStream/buildstream/commit/0f134712d3efb31cd1e3d53d464a8e66ee92a5f1/pipelines18:17
ssam2perhaps you have extra files in the build tree, or __pycache__ messing things up ?18:17
ssam2removing python cache can sometimes fix weird errors like that18:18
valentindNow it is working but I am not sure why.18:20
valentindI removed __pycache__ already before.18:20
valentindI also uninstalled it from the system. Not sure if it was causing problems.18:21
ssam2hmm, possibly an old buildstream installation in PYTHONPATH could cause that18:21
ssam2seems like a bug in the test runner if so, we should keep an eye on that18:22
ssam2anyway, i'm glad it works now :-)18:22
*** jude has joined #buildstream18:25
valentindtests/frontend/pull.py::test_push_pull[user-config] seems to hang18:33
ssam2could be the testutils.create_artifact_share()  stuff ?18:37
ssam2that doesn't seem to do much beyond calling ostree though18:37
valentindRestarted it and it seems to have gone through.18:38
ssam2i seem to recall a test randomly failing in CI18:38
ssam2i wonder if it was the same one18:38
ssam2it was: https://gitlab.com/BuildStream/buildstream/issues/14418:38
*** ssam2 has quit IRC18:41
valentindNow I have only one test failing: test_build[zip]18:50
valentindBUG: Message handling out of sync, unable to retrieve failure message for element import element at workspace-test-zip.bst [line 1 column 0]18:51
valentindI might have ctrl-c'ed it.19:04
*** tristan has joined #buildstream19:05
valentindWere pull and push commands recently added? I did not realize they existed before.19:05
valentindFinally all the tests passed. I installed all the test dependencies on the system. Maybe there is a new version of some of those dependencies that make the tests unstable.19:24
valentindtristan, I wanted to write tests for the deleted files bug with integration on compose. I do not find any test doing integration with compose. Is that normal? Is it because it requires a runtime?19:36
tristanvalentind, integration-tests directory is the place for that sort of test20:16
tristanit used to be a separate repo, we're thinking of making it use pytest but currently it's just some shell scripts20:17
tristanindeed, it's because it requires a runtime + downloading external resources, the regular `./setup.py test` suite in contrast is self contained and doesnt take loads of time to complete20:18
valentindOK, but I have started working on a mock plugin that overrides integration.20:25
valentindVery simple.20:25
*** tristan has quit IRC22:52
*** adds68 has joined #buildstream23:28
*** adds68 has quit IRC23:35
*** jude has quit IRC23:40
gitlab-br-botbuildstream: merge request (compose-integration-delete->master: Handle removed files from integration in compose plugin) #142 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/14223:55

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