IRC logs for #buildstream for Tuesday, 2018-05-08

*** ssssam[m] has joined #buildstream00:11
*** mattiasb has joined #buildstream00:20
*** waltervargas[m] has joined #buildstream00:52
*** ptomato[m] has joined #buildstream01:39
*** m_22[m] has joined #buildstream01:42
*** inigomartinez has joined #buildstream01:47
*** albfan[m] has joined #buildstream01:47
*** kailueke[m] has joined #buildstream02:07
*** jjardon[m] has joined #buildstream02:15
*** theawless[m] has joined #buildstream02:59
*** asingh_[m] has joined #buildstream03:08
*** rafaelff[m] has joined #buildstream03:50
*** awacheux[m] has joined #buildstream04:30
*** alatiera has joined #buildstream04:34
*** segfault3[m] has joined #buildstream04:35
*** oknf[m] has joined #buildstream05:36
*** tristan has joined #buildstream06:05
*** connorshea[m] has joined #buildstream06:17
*** pro[m] has joined #buildstream06:20
albfan[m]tristan: cannot open a bst shell using flatpak runtimes as deps, any trick for that?06:49
tristanalbfan[m], can you show me the project in question ?07:16
tristanif you push a git repo somewhere I can probably tell you right away what's up07:16
*** tristan has quit IRC07:18
*** tristan has joined #buildstream07:18
tristanalbfan[m], sorry lost network... minute...07:18
tristanalbfan[m], yeah so buildstream-tests are definitely outdated... can I see what it is you "tried" ?07:20
tristanalbfan[m], as I remember, for a while we were doing something dumb, like staging the platform AND the sdk07:20
tristanbut only the sdk is needed07:20
albfan[m]tristan: I found it updated in https://gitlab.com/BuildStream/buildstream/commit/963098df8170185d367c8c7f3edceba5fc4c6e7807:25
albfan[m]Just expected to be able to get into a shell and see how things are deployed, but lack of sh or bash (which I didn't understand)07:26
tristanhmmm07:39
tristanHow can I see the tree at that commit :-S07:39
tristan"Browse Files"07:40
tristanOk, so I know why07:41
tristanalbfan[m], basically that is the dumb thing we were doing07:41
tristanalbfan[m], in here https://gitlab.com/BuildStream/buildstream/tree/963098df8170185d367c8c7f3edceba5fc4c6e78/integration-tests/autotools-test/elements/dependencies07:41
tristanalbfan[m], in there we are staging the platform at / and the sdk at /usr, that's wrong07:42
tristanalbfan[m], there are a couple of reasons why this cannot work07:44
tristanOne is, you dont have an element which runtime depends on those07:44
tristanalbfan[m], if you create a simple 'stack' element which just depends on base-platform.bst and base-sdk.bst, that can work, but you wont have a /bin/sh07:45
tristanSo you could do for instance: bst shell stack.bst -- /usr/bin/sh07:45
tristanthat would work07:45
tristanalbfan[m], the amhello.bst and amhello-run.bst in that directory intentionally only build depend on the runtimes07:45
tristanbecause in those tests, we wanted the output of a `bst checkout` to not include the huge runtimes07:46
tristanalbfan[m], the *correct* way to do it though, is only with base-sdk.bst, and another element which creates symlinks /bin -> /usr/bin, /lib -> /usr/lib, /etc -> /usr/etc, and maybe /var -> /usr/var07:47
tristanalbfan[m], note that in Flatpak, the SDK is a "superset" of the Platform, they are not "both" needed, you only need one or the other07:48
tristanalso they only contain the content of /usr in the /files directory of the OSTree repo07:49
tristanalbfan[m], notice we stage files/ content into usr/ this way: https://gitlab.com/BuildStream/buildstream/blob/963098df8170185d367c8c7f3edceba5fc4c6e78/integration-tests/autotools-test/elements/dependencies/base-sdk.bst#L1407:49
tristanwith the "import" element's configurations07:49
tristansource: files, target: usr07:50
*** toscalix has joined #buildstream07:50
*** jonathanmaw has joined #buildstream08:09
albfan[m]tristan: I see. Happy to be finally trying this. Afk now, will check as soon as possible08:09
*** finn has joined #buildstream08:10
*** noisecell has joined #buildstream08:25
toscalixtristan: available08:32
toscalix?08:32
tristanyup08:34
tlaterArgh, my scheduler reworking will need some changes to the frontend as well - we currently can't handle failed jobs that *don't* use the fancy prompt :|08:49
*** bethw has joined #buildstream08:53
gitlab-br-botbuildstream: merge request (valentindavid/359_cross_junction_elements->master: WIP: Cross junction elements) #454 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/45408:59
finnFor the example, do we want the official alpine docker image, or the BST prepared Alpine image?09:03
tlaterfinn: Probably the official image, but would you remind me what the bst one is?09:04
tlaterThe one for the x86image plugin?09:04
finnaye09:04
finnjust installs some dependencies09:05
finnhttps://gitlab.com/BuildStream/buildstream-docker-images/tree/master/image-tools09:05
tlaterYeah, I made that image specifically for another sample project, we thought it might end up useful for a handful of things, but it will probably be superseded by the freedesktop SDK.09:05
*** jennis has joined #buildstream09:05
tlaterIt's better to stick to the official image for a generic example :)09:06
*** dominic has joined #buildstream09:19
tristanjuergbi, alright, I want to drop the bomb, are you ready ?10:01
tristanneed help ?10:01
* juergbi ducks10:01
juergbiwith rebasing and moving to the discussed approach?10:02
tristanjuergbi, basically rebasing is not going to work10:03
tristanthe dynamic queuing thing flies kind of directly in the face of what I wanted to do10:03
juergbiyes, I'll change the implementation to what we discussed10:03
juergbishould be fine10:03
juergbifirst wanted to get CAS with push/pull in better shape, that shouldn't really conflict10:04
tristanI was thinking of a few things, one was that maybe the Queues themselves could be making the decisions, but then again having the Element tell it's dependencies they will need to be pulled-or-built sounds similar, and probably has a performance benefit10:05
juergbithe Queues don't know about dependencies, so I don't think that option would make sense at all10:06
tristanWell, the elements are essentially given to the scheduler/queues, so the Queues can call Element.dependencies(), but in any case that's not necessarily better (and involves more looping than necessary)10:08
tristanThe other thing I was thinking was that if we really wanted dynamic Queueing, it would sit better if we had something to take ownership of all the build graph for the session, and have that register to events which occur, and then decide to requeue things10:10
tristanrather than having elements themselves actually call directly into their owners10:10
tristanthat would require some kind of event callback notification boilerplate10:11
tristanI'm personally happy with an approach which has everything queued at once though10:11
tristantlater, I have a question related to incremental workspace builds10:12
tristantlater, Do we force the mtimes of files in the actual workspace ? and if we do, do you think there is a way we can avoid that ?10:13
juergbitristan: the callback approach would be closer to what I have in my branch now, just avoiding that Element has to know about the pipeline10:14
juergbihowever, I was planning to switch to the just queue everything and suspend possibly unneeded elements10:14
tristanjuergbi, right, I was mentioning the callback approach as a possibility as you might prefer it, still I'm not sure what it would look like10:15
tristani.e. it would be nice if we had something else do that work than Stream itself, I was thinking a decent candidate for handling those callbacks might be the potential QueueManager object tlater and I were discussion in relation to his changes10:16
tristanbut again, I dont really have a huge preference, what I want is to keep roles clearly separated10:17
tristanOk... lets drop the bomb then10:19
tristanin 310:21
tristan210:21
tristan110:21
gitlab-br-botbuildstream: merge request (tristan/pipeline-refactor->master: The mega pipeline refactor) #453 changed state ("merged"): https://gitlab.com/BuildStream/buildstream/merge_requests/45310:21
jennishaha "The mega pipeline refactor"10:23
tristanYeah, that is very disruptive10:23
tristanbut the world will be a better place10:23
tlatertristan: We change the mtimes of files in staged artifacts, not workspaces10:23
tristantlater, excellent10:23
tristantlater, I am thinking of changing workspace cache key calculation to use mtimes rather than checksums10:24
tristanjuergbi, any thoughts about that ^^^ ?10:24
gitlab-br-botbuildstream: merge request (jmac/virtual_directories->master: WIP: Abstract directory class and filesystem-backed implementation) #445 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/44510:24
juergbionly mtime?10:24
tristanfilename & mtime10:24
tristans/checksum/mtime10:25
juergbihm, that would be an extremely weak key, not sure what problems could arise10:25
tristanIf we think about it practically, we dont share workspace builds, they are always local... when we open one... it is initially there10:25
tristanthen, if something changes, the mtime should change10:25
jmacWhy the change? Is it just for performance?10:26
tristanjmac, "just" is putting it very lightly I think10:26
juergbiI still think we should have VCS-optimized workspace checksums, in which case the other optimization would no longer be relevant10:26
jmacOK, is it only for performance?10:27
* tlater wonders if it's worth the trade-off, considering there will only ever be a handful of open workspaces at a time10:27
tristanjmac, yes it is... basically, it takes about 7 or 8 minutes currently to calculate the cache key of a workspace10:27
jmacThat is a lot10:28
tristanwhen you consider a moderately sized workspace, like say webkit10:28
tristanSo the question is more... if the rules of the game fit... why not use the mtime ?10:28
tristanThat is the important part, "Do the rules of the game fit" ?10:28
tristanjuergbi, any VCS-optimized approach is heuristics, that is the problem10:29
tristanjuergbi, for instance... gnome-build-meta has WebKit as a tarball, but the user would want to open a workspace for WebKit using a git checkout10:29
tristanjuergbi, BuildStream has no way of knowing that, yet the activity is a perfectly reasonable thing to do10:30
jmacIt seems unlikely, but anyone using an odd file system which doesn't use mtimes properly10:30
jmacoops10:30
jmac... an odd file system which doesn't use mtimes properly, or an automated process that modifies things quickly will have problems10:30
tristanSo workspaces are really strictly local things... the question of the workspace cache key is mostly about identifying changed-ness10:31
juergbitristan: ah, I didn't think of users using VCS workspaces with tarball sources. I understand the use case but that's pretty odd10:31
tristanjuergbi, except it's not odd, it's actually a really natural choice10:32
juergbiin a way, yes, a workspace is essentially a replacement source10:33
tristanMy preference is not to stray into heuristics10:33
jmacmtimes are also the way we currently determine which files have changed after a build; I don't really like that, but there is precedent10:33
tristanSo yes, mtimes is weak, and it might not even be enough by itself, I will have to try it out and see honestly; but it seems to me a reasonable thing10:35
tristanfilesystems acting weirdly is weird... if the file changes and the mtime doesnt, is also weird10:35
jmacFiles can easily change without updating the mtime10:35
tristanExcept it's a very regular contract10:36
tristanI.e. if you edit a .c file and fail to update it's mtime... you do *not* expect the .o file to be updated at `make` time10:36
tristanWhich is *exactly* the use case here, coincidentally10:36
jmacActually I do, I'd consider that a bug in make.10:37
tristanHah10:37
jmacI regularly work on personal projects on which the edit->compile->test cycle can be less than a second10:38
juergbiwe do have much finer precision these days, though10:38
juergbithat said, I also prefer the checksum approach10:38
jmacAh, if you have sub-second precision on mtimes, than I have far less concern10:39
juergbiI assume that's accessible from Python and would definitively use that10:39
tristansub-second precision should be a thing certainly10:40
tristanthat said, if I can get the edit/compile/test cycle for a webkit workspace to be sub-second, I will be VERY happy about it :)10:40
tristanfor anything buildstream, actually10:40
tristanI remain doubtful that it will be enough on it's own, though10:42
tristanOh note: https://gitlab.com/BuildStream/buildstream/issues/39210:42
jmacjuergbi: It's possible to get subsecond precision with python's standard library, yes. Whether you will get them or not, I don't know10:42
tristanThis is basically... we are checksumming the workspace of a failed build... because we want to print the cache keys which were discovered during the build10:43
tristanthat is in fact wrong, but it is the same bug10:43
* tlater wonders if there's any point trying to optimize things like pipeline aggregation in C10:44
tristanhttps://gitlab.com/BuildStream/buildstream/issues/295 and https://gitlab.com/BuildStream/buildstream/issues/294 are all essentially the same bug10:44
tlaterSeeing as buildstream is already difficult to install, the only trade-off would be having a little bit of ugly C code around.10:45
* tristan clones https://github.com/WebKit/webkit to observe performance10:51
laurenceis there an official maintainer for the examples repo? jennis ?10:51
laurenceand do we have the maintainers documented anywhere?10:51
* tlater has sort of been acting as such, laurence10:52
tlaterWe don't have a list yet10:52
tristanlaurence, we do not, maintainers should be documented in their respective repos in the normal way in fact10:52
tristani.e. in a doap file or just the old school MAINTAINERS file10:52
laurencetristan, ok, i'll get onto said maintainers then, make sure that's the case10:53
laurencetlater, thanks for the info10:53
tristanWhat is buildstream-examples for ?10:53
tlatertristan: It's the repository of not-quite-documentation example projects whose fate has been sort of afloat for a while now10:54
jennistristan, currently it contains two projects10:54
tristanI see10:55
tlaterjennis: I assume you've been working with it to see if it can fit in the documentation somehow?10:55
tlaterIt's possible we should just add a link to it in the documentation, warning that it may not be up-to-date10:55
jennisHowever, for finn's spin up on BuildStream, he's created an example that imports a fresh alpine image10:55
tristanI made a misguided comment about it a week or two ago, because I had confused it with buildstream-tests10:55
jennisSo yes, the plan is to have our own examples integrated into the getting started section10:56
jennisRather than use, say, a gnome-build-meta element as an example10:56
* tlater will let tristan handle the discussion, but well, the problem is keeping the repository in lock-step with buildstream core10:56
tlaterSo it's not suitable for including in docs.10:57
tristanRight, examples and getting started was different parts of the docs new world order as I recall10:57
jenniswell, finn's example is definitely at the "getting started" level10:57
tristanRight, but we're confounding words here I think10:58
jennisHowever, other examples will be differnet parts, yes10:58
jennisdifferent*10:58
tristanthe view was to have a very short tutorial which teaches a few things, after reading that the user should be proficient at using the reference manual, while examples are stand alone things which outline specific use cases10:59
tristanformer was what we called "Getting started"10:59
jennisyes this is the plan11:01
jennisWe are yet to come up with any examples for specific use cases11:01
tristanOne was raised by jjardon, which was "How do I override how an element is built in a subproject I depend on ?"11:02
tristanas a random example of an edge case11:02
jennisOk yes, this will be in the latter section11:02
finnIs there any other basic functionality of bst you'd want to showcase in a simple example?11:07
tlaterfinn: I believe the simplest of examples should only bootstrap you into writing a building project.11:10
tlaterBecause that's sort of the first step at which you can say "hm, neat, this works, let's see what else I can do"11:11
*** bethw has quit IRC11:45
gitlab-br-botbuildstream: issue #393 ("Inconsistent "no reference" state shown for workspaced elements") changed state ("opened") https://gitlab.com/BuildStream/buildstream/issues/39312:19
tristanWell, using stat.st_mtime_ns instead of checksumming file content... brings the time to resolve the cache key for an 11GB webkit checkout down from 1:06 to 5 seconds12:32
tristanI guess that could be considered an improvement12:32
tristansecond round was 0:54 seconds12:32
tristanI guess that is linux caching files in memory or smth12:33
gitlab-br-botbuildstream: merge request (tristan/optimize-workspace-keys->master: _workspaces.py: Use file mtime for workspace cache keys instead of checksumming) #455 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/45512:39
gitlab-br-botbuildstream: merge request (benchmark->master: WIP: Benchmark) #136 changed state ("closed"): https://gitlab.com/BuildStream/buildstream/merge_requests/13612:41
gitlab-br-botbuildstream: merge request (debuggable->master: WIP: Make plugins debuggable with pdb etc.) #185 changed state ("closed"): https://gitlab.com/BuildStream/buildstream/merge_requests/18512:45
tristanjuergbi, I wont push that just yet ^^^ want to marinate it and give it some thought... mcatanzaro will also give it a shot and test performance12:45
tristani.e. tristan/optimize-workspace-keys12:45
*** tristan has quit IRC12:51
*** bethw has joined #buildstream12:51
gitlab-br-botbuildstream: merge request (valentindavid/359_cross_junction_elements->master: WIP: Cross junction elements) #454 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/45412:55
*** xjuan has joined #buildstream13:14
gitlab-br-botbuildstream: merge request (jennis/nest_workspaces_commands->master: Nest workspace commands in ToC) #456 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/45613:23
gitlab-br-botbuildstream: merge request (jennis/nest_workspaces_commands->master: Nest workspace commands in ToC) #456 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/45613:31
*** xjuan has quit IRC13:45
*** sstriker has joined #buildstream13:59
*** sstriker has quit IRC14:10
*** xjuan has joined #buildstream14:40
jennistlater, upon reviewing finn's example, I've realised that we need the user to install bst-external for the docker plugin15:01
tlaterjennis: Yes, that's probably not a good thing15:01
tlaterEventually we'll want to move to the freedesktop-sdk15:01
jennisHowever, installing bst-external to support this doesn't seem to be documented anywhere, I guess I expected it in the bst-docker repo15:02
tlaterWhich will hopefully be available as an ostree repo/tarball15:02
jennisSo we are against documenting this?15:02
tlaterI believe that it's going to be a while before freedesktop sdk is released.15:03
tlaterAnd I certainly don't think we can introduce the docker plugin into buildstream core15:03
tlaterAlthough it might not be a bad thing...15:03
jennisThat sounds like we should mention this somewhere then15:03
tlaterI think for the time being we'll need to do an installation of bst-external as part of finn's example, yes15:04
tlaterHrm, I dislike this15:04
jennisme too15:04
jennisbut for the time being, it's relatively harmless, no?15:04
finnis there any other way around this?15:04
tlaterThe only alternative seems to be using the gnome sdk15:04
finnwhich is huge right?15:04
tlaterWhich we used to use, but it's huge15:04
tlaterYea15:04
finnnah15:04
jennisyeah, that defeats the point of our quick example15:05
jennis*quick-to-use15:05
finntarball method?15:05
tlaterWell, the sdk is ~2GB I believe15:05
finnthough that would mean we'd need a local variabke15:05
tlaterfinn: I'm very against that15:05
tlaterWe can try to host alpine as a tarball15:05
tlaterPerhaps they already host tarballs? Worth checking the details of their distro15:05
tlaterIf they don't, well, more thinking is required15:06
tlaterHrm, I think I actually like the idea of the docker plugin going into buildstream core15:07
finnI thought one of the problems with us hosting was license15:07
tlaterThe main problem is that I really don't know what licensing they use. I suspect it might be incompatible with buildstream because they do not use GPL code, but I can be wrong.15:08
tlaterWe could still host that externally, though15:08
tlaterCertainly not a nice solution, but perhaps a stopgap15:08
tlaterAlternatively we could try to promote the docker plugin, or accept the slightly more convoluted example for now.15:09
tlaterfinn: Check this https://alpinelinux.org/downloads/15:10
tlaterLooks like they *do* host sysroots15:10
finncurrently looking15:10
tlaterWe can simply import one of those for the time being15:10
tlaterYou'll want to grab a "mini root filesystem" :)15:11
tlaterI *think* there is no issue with including a link to that in a .bst file15:11
tlaterBut IANAL15:11
finnSo you support .isos?15:11
finnAh, mini is a tarball15:12
gitlab-br-botbuildstream: merge request (valentindavid/359_cross_junction_elements->master: WIP: Cross junction elements) #454 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/45415:12
tlaterfinn: For the record, we don't currently support isos15:13
tlaterMight be interesting to write a plugin for that, though15:13
finnI didn't think so15:13
finnI'd clicked one of the others, didn't see mini at first15:13
tlaterI suspect some distros won't release tarballs, so for those it could be handy to have an iso plugin15:14
tlaterMight be quite hard to use/implement though15:14
* tlater is thinking aloud beyond this particular example15:14
tlaterfinn: Do you have a way to deal with people not using x86?15:15
tlaterI guess for the tutorial you'll have to mention the alpine download page, telling the reader to grab the appropriate tarball.15:16
tlaterThen link to the section of the docs that explains how to supply multiple architectures.15:16
finnI'll just get the user to replace the URL in the project15:24
finnI guess there isn't some kind of switch statement I can use for different architectures15:24
tlaterfinn: Yup, but I'd leave that out for the simple example project15:26
finncan you point me to an example of this?15:29
finneven if I don't add it15:29
tlaterfinn: I can do better than that and link you to the doc: https://buildstream.gitlab.io/buildstream/projectconf.html#architecture15:30
tlater:)15:30
* tlater notes that there is a comprehensive list of built-in variables, too15:31
gitlab-br-botbuildstream: merge request (valentindavid/359_cross_junction_elements->master: WIP: Cross junction elements) #454 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/45415:35
finnAre you sure I can't use this switch than get the person to manually edit?15:49
tlaterYou could, but I think that might be confusing for a very first time user15:50
tlaterI don't have a particularly strong opinion though, if you think it's fine I don't mind.15:50
tlaterAgain though "Do I *need* to specify the arch when I used buildstream?"15:51
gitlab-br-botbuildstream: merge request (jmac/virtual_directories->master: WIP: Abstract directory class and filesystem-backed implementation) #445 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/44515:53
finnpoint taken15:54
tlaterjennis: When you document the above issue, make sure you mention that buildstream does have a way to fix this, and that you can look it up <here> in a note or something16:04
tlaterJust so that the user doesn't view it as a shortcoming :)16:05
finnWill do16:05
* tlater still isn't sure who of you two works on documenting this16:05
finnI'll update the README16:06
finnjennis will probably do the proper writeup which points to the gitlab16:06
jennisSounds good to me16:06
*** toscalix has quit IRC16:13
*** WSalmon has quit IRC16:14
gitlab-br-botbuildstream: merge request (jmac/virtual_directories->master: WIP: Abstract directory class and filesystem-backed implementation) #445 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/44516:19
*** bethw has quit IRC16:31
*** dominic has quit IRC16:49
*** jonathanmaw has quit IRC16:49
*** aday has joined #buildstream16:55
*** jennis has quit IRC16:55
gitlab-br-botbuildstream: merge request (jmac/virtual_directories->master: WIP: Abstract directory class and filesystem-backed implementation) #445 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/44516:57
*** bochecha_ has joined #buildstream17:34
*** xjuan has quit IRC18:03
*** bochecha_ has quit IRC18:26
*** xjuan has joined #buildstream18:47
gitlab-br-botbuildstream: merge request (chandan/workspace-soft-reset->master: Add soft reset functionality for workspaces) #457 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/45719:36
*** bethw has joined #buildstream19:36
*** bethw has quit IRC19:52
*** jennis has joined #buildstream20:26
*** aday has quit IRC20:36
*** bethw has joined #buildstream20:51
*** bethw has quit IRC20:56
*** xjuan has quit IRC21:08
*** slaf has quit IRC22:28
*** slaf has joined #buildstream22:30
*** slaf has joined #buildstream22:30
*** slaf has joined #buildstream22:31
*** slaf has joined #buildstream22:31
*** slaf has joined #buildstream22:31
*** slaf has joined #buildstream22:31
*** slaf has joined #buildstream22:32
*** slaf has joined #buildstream22:32
*** slaf has joined #buildstream22:32
*** slaf has joined #buildstream22:32
*** slaf has joined #buildstream22:33
*** slaf has joined #buildstream22:33
*** slaf has joined #buildstream22:33
*** slaf has joined #buildstream22:33
*** slaf has joined #buildstream22:34
*** slaf has joined #buildstream22:34
*** slaf has joined #buildstream22:34
*** slaf has joined #buildstream22:35
*** slaf has joined #buildstream22:35
*** slaf has joined #buildstream22:35
*** slaf has joined #buildstream22:36
*** slaf has joined #buildstream22:36
*** slaf has joined #buildstream22:36
*** slaf has joined #buildstream22:36
*** slaf has joined #buildstream22:37

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