IRC logs for #buildstream for Thursday, 2020-04-23

*** phoenix has quit IRC01:00
*** rdale has quit IRC01:01
*** krichter[m] has quit IRC02:40
*** tchaik[m] has quit IRC02:42
*** krichter[m] has joined #buildstream02:55
*** tchaik[m] has joined #buildstream03:10
*** tristan has quit IRC05:01
gitlab-br-botjuergbi opened (was WIP) MR !1878 (juerg/vdirectory->master: storage: Improve Directory API) on buildstream https://gitlab.com/BuildStream/buildstream/-/merge_requests/187805:20
*** tristan has joined #buildstream05:30
*** ChanServ sets mode: +o tristan05:30
*** traveltissues has quit IRC05:36
*** traveltissues has joined #buildstream05:36
juergbitristan: after merge of !1878 I'm planning to tag a 1.93.2 snapshot, so we can depend on it in bst-plugins-experimental and complete the conversion to the virtual directory API05:40
tristanMakes sense06:48
tristanjuergbi, I'm not sure there are API breaks in this, but it looks like your plan is to do some API improvements first, then depend on that version and upgrade any plugins to make best use of API, and then later we make virtual directory API mandatory ?06:50
juergbiyep, no API breaks in this one, just extensions06:51
juergbiin future API review/cleanup there might be breaks, though. to be discussed06:51
juergbifirst want to get the overdue virtual directory migration done06:52
tristanyup06:52
juergbiwith this I can build the main parts of freedesktop-sdk with buildbox-run-bubblewrap and buildbox-fuse, so we should also be close to that migration06:52
tristanjuergbi, after our immediate goings on, we might want to touch base and prioritize on any blocking core work which finalizes and improves the plugin stories06:53
tristanDoing that would help unblock/clarify any easier work surrounding plugin migrations and such06:54
juergbitristan: yes. have we already checked that we have gitlab issues for the points from the bst 2.0 planning mail, and assigned them to the 2.0 milestone?06:55
juergbiif so, we can probably also make use of a gitlab board06:55
tristanJust a thought, I have a sneaking suspicion there are some people looking at plugins which are planned to be moved, and are just itching to do the busy work in moving them around and setting up repos and such and such06:55
tristanNot yet no, that's probably a good thing to do06:56
tristanwait, the milestone or the "board" ?06:56
tristanOh both, well - no objections maybe a board would be helpful in this instance to prioritize things in orders which unblock more parallelizable work06:56
juergbiwe can create a board for the 2.0 milestone, might be useful to coordinate06:58
tristanthen we'd use those fancy features like "assignee" and using tags like "Todo, Doing, Done" so we could visualize it in this super modern fancy way07:00
tristanin general I feel that it's all way overkill in normal times, but no objections :)07:01
juergbiyep but maybe for 2.0 blockers it would be useful to keep track07:01
tristanLets anyway start with milestoning the issues07:02
tristanI think that we will have a good 3 rounds of blockers before the release, where we start scavenging into the tedium near the end07:03
*** rdale has joined #buildstream07:11
*** benschubert has joined #buildstream07:27
WSalmonSo i think this branch may need spliting in to other tests and git_lfs stuff for the MR but for now its easist just to do all the hard work in one go. after some quick greping it looks like core bst tests can create git repos `tests/frontend/track.py:    repo = create_repo("git", str(tmpdir))` but when i try to do it from bst-plugins-experimental then git is not a valid option https://gitlab.com/BuildStream/bst-plugins-experimental/-/jobs/52326431907:37
WSalmon any one got any hints?07:37
benschubertWSalmon: you don't register a `kind` for `git` in your tests07:39
benschubertfor getting access to `create_repo`, you should `register_repo_kind` in your conftest as done by buildstream: https://gitlab.com/BuildStream/buildstream/-/blob/master/tests/conftest.py#11307:41
benschubertso you'd need to create a `git_lfs` repo and register it07:41
WSalmonthat test has nothing to do with git-lfs thats one of the submodule tests that never got moved from bst-external to bst-plugins-experimental07:43
WSalmoni will make a seperat MR for the git-lfs stuff and the `other tests`07:43
WSalmonbut just getting everything to work is a faff for two branches07:44
WSalmonall the git-lfs stuff seems to work now07:44
WSalmoni just want to use create_repo as its done in places like `tests/frontend/track.py` i cant see how that one registers the `git` repo07:45
benschubertSee the link above to how the buildstream test register it07:46
benschubertbut the git repo is afaik private to buildstream, so we should probably make that public/move it first07:46
WSalmonyep07:52
*** phildawson-ct has joined #buildstream07:58
gitlab-br-botBenjaminSchubert opened MR !1879 (bschubert/fix-mktemp-usage->master: tests: Stop using tmpdir_factory.mkdtemp("")) on buildstream https://gitlab.com/BuildStream/buildstream/-/merge_requests/187908:05
gitlab-br-botBenjaminSchubert opened MR !1880 (bschubert/no-warnings->master: Fix some warnings happening during the tests) on buildstream https://gitlab.com/BuildStream/buildstream/-/merge_requests/188008:06
*** santi has joined #buildstream08:07
benschubertabderrahim[m]: would you have time to reply to my question in !1840 please? :) If you think the MR is actually not useful, I'll just close it08:08
gitlab-br-botMR !1840: _stream.py: Make `_enqueue_plan` a timed activity https://gitlab.com/BuildStream/buildstream/-/merge_requests/184008:08
traveltissuesthanks for having a look at !1810 benschubert what was the specific issue with the cachekey tests?08:24
gitlab-br-botMR !1810: WIP: Remove the pip build element & source plugins https://gitlab.com/BuildStream/buildstream/-/merge_requests/181008:24
*** tpollard has joined #buildstream08:43
benschuberttraveltissues: ah sorry about the confusion, I was working on a way of having tests marking that they require external plugins so we don't loose such tests :)08:49
traveltissuesi understand, how far did you get with that?08:50
benschubertI am almost there, so could probably have it for review by tomorrow evening08:51
traveltissuesnice, i wasn't sure how difficult that would be with the current test env08:51
benschubertnot that much actually, but I needed a goot test case and you just provided it to me :D08:53
traveltissuesthe commit i posted should become obsolete then and replaced with your work08:54
benschubertyeah I could revert the commit and add the tag and that should work08:56
traveltissuesthat commit was just on a separate testing branch so there's no impact08:57
benschubertah ! awesome I misunderstood everything then x')08:58
traveltissuesi suspect there'll be a similar issue regarding removing tar source from bst-plugins-experimental08:58
traveltissuesnp benschubert, no i just cherry-picked tom's commits on top of master08:58
benschubertI actually am writing an ML thread which proposes to move tar back to core (among other things :/)08:59
traveltissuesthere seems to be some long-running uncertainty about this issue, since some of these seem to have been moved out of core in the past08:59
benschubertah I just mean bringing back tar09:00
traveltissuesi'm guessing it was never firmly decided what the criteria was for which plugins had first-class support09:00
traveltissuestar element as well?09:00
benschubertno09:00
benschubertjust tar source09:00
benschubertas we hugely rely it on for tests and it would allow a bootstrap of plugins iff we have plugins that can be elements :)09:01
benschubertwhich is the core of my proposal09:01
benschubertbut I still need to finish writing it09:01
traveltissuesi started fiddling with this https://gitlab.com/BuildStream/bst-plugins-experimental/-/tree/traveltissues/remove-tar09:02
traveltissuesbtw is there some reason why tox hangs locally? sometimes it gets stuck at sdist-make step until i remove the cache09:05
benschubertno idea09:05
traveltissuesit's my main complaint with tox09:06
benschubertrunning on windows?09:07
traveltissuesdebian 1009:07
benschubertok no idea then09:08
*** lachlan has joined #buildstream09:11
WSalmonany one know why we cant run the plugin tests in parallel? there are peobally going to be a load more of these soon so i imaging sorting this might be we worth it. https://gitlab.com/BuildStream/bst-plugins-experimental/-/commit/cd71f966f280d40b4a27370048675f95ce6a6f2c https://gitlab.com/BuildStream/bst-plugins-experimental/pipelines/13903801409:17
WSalmonI am happy to look in to this but wanted to check some one didnt already know the issue09:18
benschubertWSalmon: you might need something like https://gitlab.com/BuildStream/buildstream/-/blob/master/src/buildstream/testing/_fixtures.py#L2509:21
benschubertif it works, we could probably make it public09:21
juergbiWSalmon: it seems like the buildstream fixtures are not used src/buildstream/testing/_fixtures.py09:21
juergbiah :)09:21
WSalmonit looks like quite a bit more of  src/buildstream/testing/ needs to public is there a good reason to keep some of it private?09:22
benschubertbecause nobody needed anything from it09:23
benschubertand it's simpler to make things public than to make things private09:23
benschubertso opening as needed :)09:23
juergbitristan: I think we should review the default project config for 2.0, do you agree? I'd like to strip it down to a minimum. I prefer sane linux defaults to be provided by projects that also provide a good starting point for bootstrap/toolchain etc. (e.g., fd-sdk)09:24
tristanjuergbi, I agree - but at the same time I'm quite convinced that we need a strategy for changing defaults in the future (both for project.conf defaults and for plugins), which changing defaults needs to be opt-in such as to retain cache key stability09:26
tristanMaking it more bare bones is good but doesnt solve the cache key/changing defaults problem09:26
*** santix has joined #buildstream09:27
* tristan finally passed his tests for the "min-version" branch, will have to check with integration tests and all tests enabled09:27
*** santi has quit IRC09:27
*** lachlan has quit IRC09:27
tristanI'll probably submit an MR today...09:27
juergbitristan: remaining issue after making it mininmal: are you referring to possible changes in the minimal default config or changes in the 'defaults' provided by an include in fd-sdk or similar?09:27
juergbigreat09:27
tristanjuergbi, I'm referring to things like... people recently "fixed" the defaults of the cmake plugin in order to use typed configurations ( -DFOO:PATH=/bar/baz or whatever it is )09:28
tristanThose changes will just keep coming over time, wherever they are09:28
* tristan heads out for some food and will be back soon...09:29
juergbithat's plugin-specific, but I guess we could come up with a solution that covers project and plugin config09:30
*** tristan has quit IRC09:32
*** phildawson-ct has quit IRC09:39
*** lachlan has joined #buildstream09:41
benschuberthas anyone seen errors like https://gitlab.com/BuildStream/buildstream/-/jobs/523326120#L2512 ?09:43
traveltissuesyes, i've been seeing them on those hosts, they sometimes fail09:44
benschubertjuergbi: is it the new runner which is slower?09:45
juergbibenschubert: yes, well, the 'permanent-runners' are two larger machines that run multiple jobs in parallel, so there is more variance09:46
*** cs-shadow has joined #buildstream09:46
benschubertI see, so we should make those timeouts longer ?09:46
juergbithe plan is to switch to kubernetes but I don't know how soon we can do that and how the variance will be with kubernetes09:46
benschubertI see09:47
juergbiwe probably should, yes09:48
juergbifor one such failure, the timeout is already about 10x what the test takes on my local machine, though09:48
juergbiI suspect maybe some I/O bottleneck or so09:48
benschubert:/09:49
juergbithere might also be some tuning possibilities for fairer scheduling within the VM but it probably doesn't make too much sense to do this now before moving to kubernetes09:50
juergbie.g., not sure whether cgroups are used for the different jobs09:50
benschubertyeah, bumping the timeout instead os not too bad09:50
juergbino, shouldn't really hurt09:51
benschubertand overall tests are running much more consistently :)09:51
juergbimaybe 5 minutes instead of the 60 second timeout for long pexpect09:51
*** phildawson-ct has joined #buildstream09:56
*** phoenix has joined #buildstream10:03
*** narispo has joined #buildstream10:09
jjardonjuergbi: not sure that is the plan, only sometime I setup on a Sunday morning :)10:22
jjardonwe can decrease the concurrency of the permanent runners if you think that can help10:23
*** lachlan has quit IRC10:25
juergbijjardon: maybe, or at least running the jobs in separate systemd slices/scopes (and thus, cgroups), if that's not already the case10:26
juergbidon't know whether that's easy to configure10:26
juergbibtw, if autoscale is not crucial: hetzner now offers dedicated 32-core servers with 128 GB RAM and 1 TB NVMe for USD 140 a month10:31
jjardonjuergbi: jobs run in separate docker containers, so I think they run in different slices10:35
jjardonnot sure if some further tweak is possible10:35
juergbiright, should be the case, assuming docker properly integrates with systemd10:36
juergbiit might indeed be an I/O issue and I/O might not be limited in the cgroups10:36
jjardonjuergbi: nice, if time I can setup those over the weekend; let me decrease the concurrency in the meantime10:37
*** lachlan has joined #buildstream10:39
*** lachlan has quit IRC10:42
*** phoenix has quit IRC10:44
*** tristan has joined #buildstream10:46
*** ChanServ sets mode: +o tristan10:48
tristanjuergbi, yes that specific patch was plugin specific, I just suspect we'll have similar issues with project.conf10:48
tristananyway, would be quite restrictive if we had to say "Ok, now the default project.conf configuration will never change !"10:49
juergbitristan: if it's really minimal, it might not be completely unrealistic. but yes, I agree, we should have a mechanism in case we do need to change something10:51
juergbibut the only thing I can think of in this regard is feature flag, or different defaults for different format/min-version10:52
*** lachlan has joined #buildstream10:56
gitlab-br-botBenjaminSchubert opened (was WIP) MR !1879 (bschubert/fix-mktemp-usage->master: tests: Stop using tmpdir_factory.mkdtemp("")) on buildstream https://gitlab.com/BuildStream/buildstream/-/merge_requests/187911:14
robjhdid you remove the --max-jobs option?11:14
traveltissues not afaik, i used this recently11:14
robjhi had things in the wrong order11:15
traveltissueson 1.93.1+209.g505f77f511:15
traveltissuesah11:15
tristanjuergbi, min-version doesnt live in the defaults (format-version did, because it was not a required field)11:16
tristananyway11:16
juergbitristan: what I meant was that theoretically min-version (or a similar field) could influence which set of defaults to use, but I don't think you want this either11:17
tristanjuergbi, do we want to keep the default pathing in place ? I think it's convenient to be offered there11:17
tristanNo I don't think it's appropriate, however if there is a versioning of defaults, that could be exposed separately11:18
tristan(and more clearly that it is a version of project.conf defaults)11:18
tristanOr alternatively, one could allow the user to override the whole file somehow ?11:18
*** lachlan has quit IRC11:19
tristanThat could get sticky though with junction relationships11:19
* tristan hasn't given enough thought into what the best solution would be, just there should be some solution11:19
juergbitristan: I would drop the default path variables. my reasoning is that if you want a convenient starting point instead of defining everything yourself, you want to use something like fd-sdk as a base anyway. and if you want to define everything yourself, you really want to be in control of the complete filesystem hierarchy11:20
juergbii.e., for these two scenarios I don't see much of a practical difference11:21
juergbibut I might be missing something11:21
juergbiit might not be ideal for the 'hello world'-like examples where the example simply points to a bootstrap tarball and the rest is all in the example project11:23
juergbialthough, 'hello world' would need very few variables, so maybe it would actually be good to define them in the hello world project itself11:24
tristanok well, if we're going to do that, I think we need to prepare ground work11:30
tristanfor instance (sec...)11:30
juergbitristan: if we go for project-configurable cache key versions (to account for bug fixes in cache key algorithm etc.), maybe we could generalize that to also cover other core changes, and then support version conditionals in our default configs11:30
juergbi(should be kept to a minimum, ideally never used)11:31
gitlab-br-botcs-shadow approved MR !1879 (bschubert/fix-mktemp-usage->master: tests: Stop using tmpdir_factory.mkdtemp("")) on buildstream https://gitlab.com/BuildStream/buildstream/-/merge_requests/187911:31
tristanjuergbi, I think we need to backport !1851 to bst-1, which is a technically breaking change (but shouldn't have bad side effects considering what it fixes), and roll out a bst 1.6.x series11:31
gitlab-br-botMR !1851: Process options in includes files with the options of their junction https://gitlab.com/BuildStream/buildstream/-/merge_requests/185111:31
paulsherwoodjuergbi: i feel like i've waited for this conversation for 2 years11:32
*** lachlan has joined #buildstream11:32
tristanjuergbi, in other words, I'd like to have fdsdk/g-b-m actually implement something sensible at the time of a 2.0 release11:32
gitlab-br-botBenjaminSchubert opened (was WIP) MR !1880 (bschubert/no-warnings->master: Fix some warnings happening during the tests) on buildstream https://gitlab.com/BuildStream/buildstream/-/merge_requests/188011:32
tristanthat it a lot of churn for some projects to figure out a nice layout of public includes for their downstream/junctioning projects11:33
gitlab-br-botmarge-bot123 closed issue #1290 (Some tests break with pytest 5.4.1) on buildstream https://gitlab.com/BuildStream/buildstream/-/issues/129011:33
gitlab-br-botmarge-bot123 merged MR !1879 (bschubert/fix-mktemp-usage->master: tests: Stop using tmpdir_factory.mkdtemp("")) on buildstream https://gitlab.com/BuildStream/buildstream/-/merge_requests/187911:33
tristans/that it/that is/11:34
*** lachlan has quit IRC11:35
juergbitristan: that could make sense11:38
juergbishould check with the fd-sdk maintainers but my guess is they would be happy about it11:39
abderrahim[m]tristan: I'd very much like it, and I have another couple changes I'd like to have a 1.6 release for11:40
* abderrahim[m] is currently working on using fd-sdk includes in g-b-m11:40
abderrahim[m]regarding includes, I have one more concern11:42
juergbi1.6 would also get the min-version detection from the start, of course11:42
tristanyup11:42
abderrahim[m]for me 1.6 would be the occasion to add some warnings too11:43
tristanI'm thinking 1.6 is the segway into 2.x land, we should add things which make it easier to lay out ground work to ease later transition11:43
abderrahim[m]for things that would break in 2.x11:43
tristangood point11:43
abderrahim[m]so shall we branch for 1.4 now?11:44
tristanI think it makes sense to11:48
tristanjuergbi, ^^ ?11:49
juergbino objections11:49
tristanthat frees up bst-1 branch for landing things like this towards 1.611:49
juergbiwe could also wait until the first MR towards 1.6 is ready11:49
tristanand bst-1.4 "just incase" we need hotfixes11:49
tristanRight11:50
juergbibut I don't expect lots of bst-1 MRs between now and when that's the case, so it might not matter11:50
tristanyeah, I think branching it is a better signal for some contributors who might want to work on transitional support in 1.611:51
gitlab-br-botcs-shadow approved MR !1880 (bschubert/no-warnings->master: Fix some warnings happening during the tests) on buildstream https://gitlab.com/BuildStream/buildstream/-/merge_requests/188011:53
cs-shadowhi, I have a couple of patches for the website repo in case someone has spare cycles to review (and potentially merge, I don't have privs for that):11:56
cs-shadow- https://gitlab.com/BuildStream/website/-/merge_requests/13311:56
cs-shadow- https://gitlab.com/BuildStream/website/-/merge_requests/13411:56
tristannice11:57
* tristan merges the logo move since that seems a no brainer...11:58
tristans/logo/mascot11:59
tristancs-shadow, I've been giving some background cycles to thoughts about this venv approach btw12:00
cs-shadowtristan: I just created this as a very basic guide for how to use venvs. Is there anything in particular you'd like to see?12:01
tristancs-shadow, one thing I was thinking is... do we want to (A) Rename default buildstream.conf file path location to buildstream2.conf ? ... or (B) Do we want to support an environment variable (our first user/distro facing one ?) to set a default location for the buildstream.conf file ?12:01
tristanI was thinking, if (B)... then I was hoping that entering a venv could automagically setup your conf file to somewhere specific to your venv or such12:02
juergbihm, I'd like to keep user configuration out of the venv by default12:03
juergbiI want to be able to delete it and start over without losing my config12:03
tristanOr, maybe in the venv we can just override the correct XDG path for configuration ?12:03
juergbibut it's a good point12:04
tristanThere will be a period where people will work on the same project with both bst-1 and bst-2, I think that's inevitable12:04
tristansame directory, checkout old stable branch and work with bst-1... now checkout master of fdsdk and work with bst-2, for example12:05
juergbibuildstream2.conf wouldn't be the worst idea12:05
juergbiI think right now my config works with both branches. but that's definitely not guaranteed12:05
tristanyeah and even then, I suspect it depends what you have in your config12:06
cs-shadowi'm leaning towards recommending people to set `XDG_CACHE_something` during the transition period to point to their respective config files12:06
juergbiwhat about first looking for buildstream2.conf and if that doesn't exist, go for buildstream.conf12:07
juergbisame for buildstream1.conf on bst 1.612:07
tristanright, I would like it though, that we don't just tell people "set XDG_FOO_BAR when entering your bst-2 venv so that you have the right config"12:07
tristanI'd rather say "start the venv with this command, and it will now relocate everything to this place"12:07
tristanjuergbi, I like that12:08
tristanthat lets you nuke your venvs as you like without losing anything precious12:08
tristanfor that matter, what about source cache directories and local CAS ?12:09
juergbiwe also need to keep cache in mind, though. our cache directory structure is not 100% the same. on the other hand, some parts are actually sharable12:09
juergbi:)12:09
cs-shadowjust to note about venv features - by default there's no mechanism to inject our own environment variables or code, so we'll have to have this logic in BuildStream itself. So, I'm not hugely in favor of this approach.12:09
cs-shadowI agree that it's good to keep venvs disposable12:09
tristancs-shadow, that makes me sad :'(12:10
tristanheh12:10
tristancs-shadow, you'd think you might be able to say "venv --setup=buildstream.setup"12:10
tristanand then we'd just create a nice setup file for people to use :)12:11
tristanOk well, I think that none of this discussion is really blocking https://gitlab.com/BuildStream/website/-/merge_requests/13312:11
tristanthoughts ? shall we just merge that docs thing right now and keep improving things separately ?12:11
* tristan thinks so...12:12
cs-shadowI'd agree. I do think we can sort out the namespacing of config files and caches before 2.0 though12:12
cs-shadows/can/should/12:12
tristanyeah, config file thing we can do very quickly... simple patch with docs included can be easily backported for bst 1.612:14
tristanI think juergbi's idea of buildstream2.conf in priority and then look for buildstream.conf is a good one12:14
abderrahim[m]I also like the idea of buildstream1.conf and buildstream2.conf with a fallback to buildstream.conf12:14
juergbitristan: I forgot about bst shell --sysroot. it is the last feature (afaik) that doesn't work yet with buildbox-run. it's not quite straight forward to implement as buildbox-run is CAS-oriented. so I'm wondering whether we even still have a use case for it now that we store (failed) buildtrees in CAS12:19
tristanAhhh that12:24
tristanInteresting12:24
tristanjuergbi, So from a user perspective working on a project, when they encounter a build error they are given an option to drop into a functional shell of that build right ?12:25
tristanAnd it is also equally easy to exit the session and debug a failed build afterwards ?12:25
juergbiyes, exactly, that continue to works with buildtrees12:26
tristanjuergbi, the only other use case I could imagine is wanting to do a `bst shell --sysroot <the directory I just checked it out to>`12:26
juergbi*continues to work *sigh*12:26
juergbii.e., a glorified user chroot12:26
tristanwhich I think didnt really work before either12:26
tristanyes12:26
tristanjuergbi, I think we don't need --sysroot, and it's nice that we don't expose raw paths to host directories to the user anymore anyway12:27
tristan"Here's your failed build directory, go clean it up yourself later"12:27
juergbiyep12:28
juergbiimmediately after checkout bst shell --sysroot would be identical to just running bst shell. so I don't see a reason for it12:28
tristanjuergbi, on a similar note about removing useless cruft which has only been a thorn in our side... what about source-bundle ?12:28
juergbithe only advantage of bst shell --sysroot would be that you could manipulate it (persistently)12:28
juergbitristan: source-bundle has already been removed12:29
tristannice12:29
juergbiwe still have support for '--include-build-scripts', though12:29
juergbiwhich is the replacement12:29
tristanI'm pretty sure I ... oooohhhhh12:29
tristanThat's what I noticed in the code thinking "oh damn, this annoying stuff still exists ?"12:29
tristanoh well12:30
juergbiwe could recheck with users whether it's still needed. I don't know12:30
tristanthere must have been some reason for keeping that, someone must have cared a great deal12:30
tristanif that's the case we can leave it alone12:30
juergbiwould be nice to get rid of generate_script() methods12:30
tristanexactly12:30
tristanweird dual standard anyway12:30
juergbiit might actually still be possible when we review the API with regards to batching12:31
juergbithe generated script for batching is somewhat similar12:31
juergbimaybe we can unify it12:31
tristanThat would be very nice12:31
juergbiyes, so let's revisit this as part of that review12:32
tristannow would be a great time to already have an issue to note this down on ;-)12:34
cs-shadow> there must have been some reason for keeping that, someone must have cared a great deal12:42
cs-shadowtristan: I remember you being this certain someone when I proposed to remove it initially :D12:42
cs-shadowI think the rationale was that it allowed bootstrapping for a new architecture or something like that12:43
tristancs-shadow, yes I was that guy for a while12:43
tristanI think later it got out of control and became something about "being able to run BuildStream with no sandbox"12:44
tristanThe bootstrapping case is a good one to keep in sight though now that you raise it12:45
juergbiwell, with remote execution / buildbox-run there are now alternatives12:45
juergbia single bst instance can orchestrate builds across architectures12:46
* cs-shadow wonders how many people are using it for real12:46
tristanjuergbi, I think the idea was for the cases you really didnt have anything on that arch yet12:46
juergbior alternatively, build e.g. x86-64 part on one system, push it to artifact server. then build the ARM part on another system, pulling the x86-64 artifacts from the server12:47
tristanbut I think nowadays that starts with qemu12:47
juergbiah, ok12:47
tristanlike if you can get as much as a busybox shell and a kernel running on a new arch, you can run the build scripts to build a bigger runtime from there and debug things as they arise12:48
tristanrather than lots of trial and error12:48
* tristan is not sure that it's justified to keep such a big wart in the codebase to cover that feature though12:49
tristanthere must be better ways12:49
juergbiI concur12:49
juergbitraditional cross compilation covers this in principle12:49
juergbias do qemu-user-based solutions12:50
juergbiif that's the only use case, I wouldn't keep it12:50
juergbi(unless we can get it practically free with batch-related API changes)12:51
tristannod12:51
tristanif we can get it very literally the same with batch related API, there can be other values, for instance just providing concise reports of how a thing was built12:52
tristanautomatically generating a website like lfs from your buildstream project...12:52
juergbihehe12:53
WSalmonubuntu installs git-lfs diffrently to the other os's so i could do with adding a tiny bit of ubuntu spesific config to the testing docker image, how do i do this without upseting the templating stuff? cs-shadow benschubert ?13:02
gitlab-br-bottristanvb opened (was WIP) MR !1881 (tristan/min-version->master: Replace format-version with min-version) on buildstream https://gitlab.com/BuildStream/buildstream/-/merge_requests/188113:04
tristanjuergbi, wanna take a look at that one ? there may be some questionable aspects in there13:09
tristanThe bulk of it is: _project.py now understands min-version... and cli.py/app.py is changed for `bst init`13:11
tristanI might want to remove the check for "format-version" in _project.py, seems sufficient to only check for absence of "min-version"13:12
tristanAlso, I have some scattered statements like this one: https://gitlab.com/BuildStream/buildstream/-/merge_requests/1881/diffs#5de28618ea7bb36c58e2b7dda21be3f35ffc64bd_582_60013:14
tristanFor version checks and creating projects, we want to pretend that we are 2.0 until we really are, and then remove those code blocks after releasing 2.013:14
* tristan considered doing this directly in utils.get_bst_version() but thought that might have unintended consequences13:15
cs-shadowWSalmon: where's this needed? (none of the docker images currently have lfs anyway)13:15
*** phoenix has joined #buildstream13:17
tristanthe rest of the patch is of course lots of tedious updating of project.conf files and ensuring tests pass13:17
WSalmoni have a branch that adds gitlfs to them all and the packages create a /etc/gitconfig or equivilant but not ubuntu if i add a /etc/gitconfig with the magic lines then it passes in ubuntu13:17
WSalmoni think ubuntu is trying to do something cleaver by having the gitlfs config in the users ~/.gitconfig13:18
WSalmonbut it dosent quite work in docker13:18
cs-shadowWSalmon: I think it might be best to defer the setup of git lfs to the projects that need it, like plugins-experimental13:19
cs-shadowadding requirements for _all_ plugins to buildstream-docker-images will result in bloated images IMO13:19
WSalmonwe install a load of plugin spesific things atm, ostree for instance.. we have a hole `# plugins dependencies` section13:22
*** lachlan has joined #buildstream13:23
WSalmoni gues we could just seperat docker images create for bst-plugins-13:23
cs-shadowall those dependencies were dependencies of core plugins at the time they were added, it was never the intention to support requirements for external plugins in the same images13:24
cs-shadowyeah, either a separate image or if it's lightwerght, might as well do it on the fly13:25
tristancs-shadow, how do we intend to continue testing these plugins outside of core ?13:25
tristanI'm unsure what the use cases are of lightweight images too, as I recall we have images meant for "bst-here", and images meant for testing13:26
tristanconsumers of bst-here will undoubtedly have different expectations and needs, which doesnt seem to fit very well with a desire to keep them lightweight13:27
*** lachlan has quit IRC13:27
*** phoenix has quit IRC13:29
cs-shadowbst-here and teststuite images are completely separate, that's not an issue. the way I see it the testsuite images should come with all system requirements to build and run BuildStream. Nothing prevents plugin repositories to install more stuff on top as needed.13:29
*** phoenix has joined #buildstream13:30
cs-shadowfor example, when I'm testing container plugins, I don't need to install ostree etc and when I'm testing ostree, i don't need to install docker13:30
tristanErrrm... except that distros don't usually allow reproducible installations of exactly a specific version of a package13:31
WSalmonyep but as they all share the same runners then having the same image is going to be a advantage13:31
tristanSo when you run a testsuite, you don't have absolute certainty that it broke because of your code, and might wonder if a system dependency minor change introduced breakage instead13:31
juergbitristan: will take a look at min-version13:32
cs-shadowtristan: hows' that going to change if they are pre-installed in the image? they are built nightly anyway13:32
tristan(which was kind of the point of having preinstalled stuff in dockers instead of ever running `apt-get install` in gitlab-ci.yml`)13:32
tristancs-shadow, Ok so you mean, external plugins can install more stuff on top as needed: In their own separate docker containers ?13:33
tristancs-shadow, I didn't realize we were doing that :)13:33
tristanjuergbi, I'm done for the day... so I'll check comments in the morning :)13:33
juergbibtw: freedesktop-sdk build time is almost identical with the classic bwrap backend and buildbox-run+fuse right now (144min vs. 142min). I expect that to improve with further buildbox optimizations, though13:34
WSalmontristan, we dont, i was asking if we are going to need to do that13:34
cs-shadowto me, this seems like the whole blessed plugins conversation again. Like which plugins13:35
cs-shadow*Like which plugins' dependencies we install and which we don't13:35
cs-shadow"all of them" isn't an answer because then we'll end of enormously sized images that'll take ages to pull13:35
tristanall of them isn't an answer because of incompatibilities across systems as I understand it (e.g.: cant test win32 plugins on linux images)13:36
*** phildawson-ct has quit IRC13:36
tristanI'm not sure how enormous these images are, but if they are like 500MB today, and all of them = 700MB, sounds like a useful thing to have13:37
tristancs-shadow, I think what I'm considering most here is: Where does one want to draw the line in terms of maintenance burden ?13:37
cs-shadowalso, incompatible dependencies (two plugins can depend on conflicting packages for instance)13:38
tristanif separating all the things neatly into separate images for all of the plugin repos we maintain is not a huge overhead and does not cause friction in testing, then surely we can keep everything neatly separated13:38
cs-shadowtristan: yes, previously we used to blindly publish docker images without any testing that they would actually pass BuildStream tests.13:39
cs-shadowNow every buildstream-docker-images runs BuildStream tests to ensure that when we push, we are sure that the tests won't fail due to issues in the image13:39
tristanat least, this aspect concerns me more than the size of the images :-S13:39
cs-shadowso, if we add any more dependencies, we must test them as well13:39
cs-shadowand the pipelines on docker-images already take hours so I'm wary of adding more stuff13:40
tristanWhile that testing is interesting, in any case we'll need to have an explicit commit to .gitlab-ci.yml on the BuildStream side (or plugin repo side) to consume the precise new image sha25613:40
cs-shadowthat's already the case in all repos we maintain. This is to guard against breakages while upgrading13:41
tristanright, otherwise you discover the breakage a bit later and have to go fix again13:41
cs-shadowexactly and you realize that universe has moved on since then so it can be come harder :)13:42
tristanAbout conflicting dependencies, I think that is a very pythonic thing, and I wonder if it's realistic that that would ever happen with the plugins we maintain (separate or not)13:43
tristanWe probably dont want stories where our blessed plugin repos have conflicting dependencies, as we'd expect users to be able to safely combine them13:44
cs-shadowI've definitely come across conflicting dependencies in some cases, when there's a "tool" and a "tool-next-generation" and you can only have one of them at a time13:47
cs-shadowbut I'd agree that we should avoid it in our blessed plugin repositories13:47
juergbibenschubert, tlater[m]: I just noticed that !1787 broke the generated man pages, as in: The dependencies to checkout  [default: _PipelineSelection.RUN]13:48
gitlab-br-botMR !1787: Make PipelineSelection a proper enum type https://gitlab.com/BuildStream/buildstream/-/merge_requests/178713:48
tristancs-shadow, I'm just trying to reason about what's the most practical thing for *us* to maintain with least effort13:48
*** lachlan has joined #buildstream13:48
tristancs-shadow, I suppose we'd want stories for third party plugin authors to maintain their own docker images, but for ours; there may even be value in sharing an image (i.e. ensuring that there are no such collisions)13:49
benschubertjuergbi: ouch, any way I can reproduce locally?13:49
juergbitox -e man13:49
juergbiat least I assume it was that MR, haven't verified yet13:51
benschubertok, are you having a look or do you want me to have a go at it?13:51
cs-shadowtristan: for user-facing image, https://hub.docker.com/r/buildstream/buildstream comes in various variants. So, we can add our plugins to the "extra" variants and external plugins can derive from the one the find most sensible.13:52
cs-shadowfor testsuite images, I'm thinking installing dependencies on the fly may be the simplest, given that they will usually be small and domain-oriented13:52
tristancs-shadow, anyway I doubt we're getting to the bottom of it now, but as I discussed with juergbi earlier on in the day, we probably want to prioritize smoothing out the plugin story in order to optimize parallelism of work towards 2.013:52
juergbibenschubert: I'm not looking into it right now and you probably know more about these enums13:52
benschubertok I'll take a look13:53
cs-shadowtristan: agreed, I can try starting a conversation about the actual breakdown of plugins13:53
juergbita13:53
gitlab-br-botmarge-bot123 merged MR !1880 (bschubert/no-warnings->master: Fix some warnings happening during the tests) on buildstream https://gitlab.com/BuildStream/buildstream/-/merge_requests/188013:54
tristancs-shadow, right, maybe I'm too perfectionist but I really don't like having anything modify the docker environment in a .gitlab-ci.yml on the fly, as I cannot trust it to be deterministic13:54
tristanas I recall, we trust it for python dependencies only, because we install specific versions13:54
tristancs-shadow, regarding conversations... that one probably has to happen (actual breakdown), but I was more thinking of all of the pending work that touches plugins... changes to plugin API, and maybe a review of buildstream.testing and how consumable/practical that whole story is13:58
tristanthe more we can get done before plugins actually migrate on that front, the less hassle we have updating stuff in various repos13:59
*** lachlan has quit IRC13:59
cs-shadowI was actually thinking that we might discover real issues when we do start that process13:59
cs-shadow(and fix them as we go along)14:00
benschubertcs-shadow: we already have some issues that we can fix before starting more14:00
benschubertwhat I think we are lacking there is a more coordinated effort, instead of working each on a bit without looking at the bigger move :) and doing it slowly but surely might be the easiest road path. As the swiss president said last week about the lockdown: "As fast as possible, as slow as necessary"14:01
gitlab-br-botjuergbi opened MR !1882 (juerg/shell-sysroot->master: Remove bst shell --sysroot) on buildstream https://gitlab.com/BuildStream/buildstream/-/merge_requests/188214:02
* tristan likes napoleon's "don't hurry, we have no time to lose !"14:03
benschubertjuergbi: on latest master, runnign `tox -e man` works ?14:04
* cs-shadow will roll his own "as fast as possible, but not any faster"14:04
juergbibenschubert: and the diff looks fine? no _PipelineSelection in there?14:04
benschubertoh I se14:05
juergbias I've mentioned to tristan earlier today, a gitlab board might be useful for 2.014:05
juergbior at least I would give it a try14:06
benschubertthat seems good, we should also cleanup the milestone :)14:06
juergbiand make sure everything from the mail is in there14:06
robjhi have a build that fails on make, but it doesnt look like its actually trying to do anything. whats more odd, is on a run where it did look like it was doing something, it got killed with no other errors, traveltissues, you were seeing this before, right?14:16
juergbican you put the exact console messages on a pastebin?14:18
traveltissuesrobjh: i needed to install libgirepository1.0-dev14:20
benschubertjuergbi: do we commit the updated manpages afterwards?14:21
robjhtraveltissues, i'll try that in a moment14:21
robjhjuergbi, https://mcr.robjh.com/tmp/bst.log14:21
juergbibenschubert: yes, I don't remember the reason why don't just do this in CI but we periodically update the man pages14:21
juergbirobjh: hm, no other output, that's indeed odd14:22
juergbiI'd expect an error output from make14:22
robjhi know! right14:22
WSalmonjuergbi, https://gitlab.com/BuildStream/buildstream/-/boards/169346614:23
WSalmonlike that?14:23
gitlab-br-botBenjaminSchubert opened MR !1883 (bschubert/fix-manpages->master: types.py: Add a __str__ to PipelineSelection to fix man pages) on buildstream https://gitlab.com/BuildStream/buildstream/-/merge_requests/188314:23
benschubertjuergbi: ^ here you go14:23
juergbirobjh: do you see anything else with this command? bst artifact log freedesktop-sdk.bst:bootstrap/build/gcc-stage1.bst14:24
juergbior alternatively, by manually checking ~/.cache/buildstream/logs14:24
juergbiWSalmon: yep14:24
juergbibenschubert: ta14:24
benschubertand it was indeed this mr that broke it14:25
gitlab-br-botjuergbi approved MR !1883 (bschubert/fix-manpages->master: types.py: Add a __str__ to PipelineSelection to fix man pages) on buildstream https://gitlab.com/BuildStream/buildstream/-/merge_requests/188314:25
robjhjuergbi, yes, that gives output similar to the first time it failed to build (before it started failing with no output)14:25
juergbirobjh: ah, that wasn't the first time. right, was already marked as 'failed' in the first pipeline. bst caches failures. it should output the same error log as the first time but that sounds like a bug14:26
juergbirobjh: to retry, explicitly delete the cached result with: bst artifact delete freedesktop-sdk.bst:bootstrap/build/gcc-stage1.bst14:27
robjhokay, thanks.14:27
juergbiwe should probably be more explicit about this14:27
juergbiand provide a hint how to retry14:27
robjhthe first thing i tried was passing --retry or --force14:27
cs-shadowjuergbi: maybe we should print the same user prompt as well as we do when build fails the first time around14:28
juergbiin interactive mode, we actually should provide interactive (r)etry option14:28
*** qd39bf has joined #buildstream14:28
*** qd39bf has left #buildstream14:28
juergbiexactly, do we intentionally not do this right now?14:28
cs-shadowi don't think it's intentional; it's probably that we are utilizing the same codepaths for successfull cached builds14:29
robjhi suspect it failed because it ran out of ram or something14:30
traveltissuespossible, i needed to bump my vm up to finish the build14:30
robjhie, something that can be fixed without changing any of bst's inputs14:31
juergbiright, unfortunately, we can't always detect this. so we should make it clear to the user what they can do14:31
robjhbst 1.4.1 didnt cache failures, right? why the change?14:32
juergbicaching failures can be very useful because we also cache the failed buildtree by default. this allows entering a shell with the failed buildtree to debug14:33
juergbihelpful if you want to debug webkit build failure after 1h or so14:34
robjhi seee14:36
robjhthanks for letting me know14:36
valentindjuergbi, Looking at your patch. It would maybe make sense to have a temporary file thing in the sandbox.14:38
juergbivalentind: I was considering this but wasn't sure what the best API would be14:40
juergbithe oci case is also relatively special as you don't know the filename before writing the file14:40
juergbimost can simply do dir.open_file("final-filename", mode="w")14:40
juergbiand internally this will already use a temporary file14:40
juergbi(for atomic replace, even though that's not too relevant in this context)14:41
juergbiwe're planning to do a review of the plugin API incl. the Directory API before 2.0, maybe streamline a few things14:42
juergbido you think it's important to add a tempfile API before that?14:42
*** phoenix has quit IRC14:44
juergbivalentind: have you already had a chance to build it and try it out?14:46
valentindI am building it now.14:46
valentindBut I am looking at the patch while it is building.14:47
valentindI do not find the definition of Directory.remove()14:48
valentindjuergbi, Does that need a branch of buildstream?14:48
juergbiyes, also juerg/vdirectory14:48
juergbi!187814:48
gitlab-br-botMR !1878: storage: Improve Directory API https://gitlab.com/BuildStream/buildstream/-/merge_requests/187814:49
valentindWanted to make sure that recursive deletion of a symlink to a directory did not remove the directory recursively.14:51
valentindjuergbi, Maybe that should be documented.14:51
valentind(and tested).14:52
juergbiyes, will expand that. the default behavior of the Directory API is to never follow symlinks14:52
valentindI think the only change of behavior is for ".wh..wh..opq". But I am actually not sure what the correct behavior is.14:53
juergbiwhat difference did you spot?14:53
juergbiI tried to replicate the logic14:53
valentindI think of the case were a layer has "foo/bar" and "baz -> foo". And then second layer "baz/.wh..wh..opq".14:53
valentindBut I think your code makes more sense anyway.14:54
valentindIt will remove the symlink and create a new directory not touching the previous directory.14:54
valentindBut I think it is probably invalid layers.14:54
valentindSo probably not important.14:54
juergbiah ok14:56
valentindLine 76614:57
valentindif not layerdir.exists(f):14:57
valentindI think it was parentdir14:57
valentindMaybe it was wrong already...14:57
juergbithat's in a loop iterating within the parent dir14:57
juergbiso parentdir.exists(f) should always be True14:58
valentindah no it is correct14:58
valentindSorry.14:58
valentindYes, if it does not exist in the layer dir, then we have to white it out.14:58
juergbiyep14:58
juergbido you know how much of that code is exercised by the fd-sdk oci images?14:58
juergbii.e., I hope we have at least basic coverage14:59
valentindjuergbi, I hope export_to_tar does not prepend all paths with ./15:01
valentindBecause that does not work well with podman.15:01
juergbino, I think it doesn't15:01
juergbithe string argument is the prefix15:01
valentindBy the way, it would be nice to make "checkout --tar" not do that.15:01
juergbiah, right, there we pass "."15:02
juergbiI wonder why15:02
valentindMaybe to be "compatible" with bst1.4.15:02
valentindI do not know.15:02
valentindOK, I think I did not see any mistake.15:03
valentindI still have to test it.15:03
juergbithanks for the review15:03
valentindThank you for importing the virtual directories.15:03
juergbiyw15:04
juergbifd-sdk repo also has a few plugins, which I didn't port15:04
valentindSo now it will be actually usable for simple plugins that do not really need to execute things remotely.15:04
juergbihowever, I think they are pretty easy15:04
juergbiyes, and in some cases it might be a lot faster with the switch to buildbox-run as there all the directory operations are done in memory15:05
juergbino actual staging15:05
valentindI think they are not very big. If you can handle oci, then the rest should be do-able.15:05
valentindgit lfs does not work.15:06
juergbithat's not related to the virtual directory API, is it?15:06
valentindI cannot use "use-lfs: false" on components/icu.bst.15:06
valentindBut then it fails.15:06
valentindIt is not related.15:07
juergbiok, I think WSalmon is looking into git lfs on bst215:07
*** devcurmudgeon has joined #buildstream15:07
valentindI will just try to build the docker/oci images without icu.15:08
juergbiin your bst2 branch you commented it out15:09
juergbiand I didn't notice any build issue with `make build` and the oci images15:09
valentindYes, because that does not work. But then it still fails.15:10
valentindEither way it fails.15:10
valentindMight be my local installation then.15:10
juergbithe build didn't fail, though15:10
juergbibut I haven't actually tested the result15:10
WSalmonvalentind,  this needs a little bit of tidying up and working out how to do the dependancys for testing but seems to work just fine https://gitlab.com/BuildStream/bst-plugins-experimental/-/tree/willsalmon/git_tag_gitlfs15:11
valentindWow, fetch is so slow.15:14
valentindIt takes several minutes to apply a patch. And it freezes my computers because of all the IO.15:14
*** lachlan has joined #buildstream15:14
juergbiyes, we definitely need to optimize fetch15:15
valentindI do not think applying a patch on a nvme disk should do that.15:15
juergbipatch might be the worst case right now15:15
juergbiwell, not sure, have to recheck15:15
juergbiit's obviously not about applying the patch itself. it's about getting the sources into CAS15:16
valentindI wonder if "systemd-run --user --slice=buildstream.slice --shell" will help not taking up all the IO.15:16
juergbiit would be nice if reflink was pervasively available15:21
juergbithat allows some safe optimizations when importing into CAS15:22
*** ca46 has joined #buildstream15:28
*** ca46 has left #buildstream15:28
*** lachlan has quit IRC15:32
*** lachlan has joined #buildstream15:55
jjardonhi, I have a bst project with a lot of elements. I want to run a static code analyzer on all of them with a command line option; is there any way to do that?16:17
jjardonor what would be the cleanest?16:17
tristanI could imagine an element which has a runtime + static analyzer as dependencies to stage, and other dependencies on the elements you want to analyze... without ever staging those artifacts, you could iterate over all the elements  you want to analyze and only stage the sources and run the analyzer ?16:21
tristanof course a caveat is that you can only analyze things which have already built in that approach16:22
juergbiyes, that's probably the only option as a bst element right now16:23
juergbian alternative would be to use `bst source checkout --deps all stack.bst`16:23
juergbibut that would be with tooling outside bst16:23
juergbitristan: besides the caveat that you mentioned, the element approach might actually fail because buildstream doesn't check whether sources are available if the artifact is already cached16:25
juergbiso we'd need some kind of special source dependency flag for this to work properly16:25
*** lachlan has quit IRC16:26
*** lachlan has joined #buildstream16:42
*** lachlan has quit IRC16:48
*** hasebastian has joined #buildstream17:01
*** tpollard has quit IRC17:07
*** lachlan has joined #buildstream17:20
*** lachlan has quit IRC17:24
*** rdale has quit IRC17:25
*** lachlan has joined #buildstream17:49
*** santix has quit IRC17:55
*** cs-shadow has quit IRC17:59
*** lachlan has quit IRC18:01
gitlab-br-botmarge-bot123 merged MR !1883 (bschubert/fix-manpages->master: types.py: Add a __str__ to PipelineSelection to fix man pages) on buildstream https://gitlab.com/BuildStream/buildstream/-/merge_requests/188318:23
*** hasebastian has quit IRC18:43
valentindjuergbi, librsvg did not build. There is a missing fix in bst-plugins-experimental for the crate plugin.19:32
juergbivalentind: it built fine here but I didn't delete the sources directory19:35
valentindIt should have failed at build I think.19:36
valentindThe url set in the generate configuration file is wrong.19:37
valentindI am disabling librsvg. And I continue to build.19:37
valentindI should soon have a docker and oci images.19:37
valentindI will test it tommorrow morning.19:37
juergbihm, odd. I can send you the build log if that helps with anything19:39
juergbifiles in ~/.cache/buildstream/sources/cargo/crates_crates all seem to be from a couple of days ago, the time of my first test build with bst219:40
*** narispo has quit IRC19:40
juergbiso it shouldn't have been in the cache from bst119:40
valentindjuergbi, It should be something that has never worked on bst2.19:40
*** narispo has joined #buildstream19:41
valentindah...19:41
valentindjuergbi, maybe I did not get the latest version of your branch.19:41
valentindMaybe you rebased.19:41
valentindRight...19:42
juergbiwhich commit did you use?19:42
valentindI did not do git fetch.19:42
valentind1803c07446a64734bc1645ddbf7b0cb7c16c3fba19:43
valentindHow do we force rebuild of an element?19:44
valentindartifact delete.19:44
*** narispo has quit IRC19:44
juergbiyep19:44
juergbiah, that's really an old version19:45
*** narispo has joined #buildstream19:45
juergbiif it cached the wrong source, you may also have to delete ~/.cache/buildstream/sources/cargo/19:46
valentindStill same error19:49
valentindThe problem is the .cargo/config file is wrongly generated.19:49
valentindIt should have been fixed by a705890e27ed223e05fe7f20a25277f6821baccf19:55
valentindIs there some source artifact cache?19:55
valentindI removed .cache/buildstream/source_protos/cargo19:59
*** benschubert has quit IRC20:05
*** toscalix has joined #buildstream20:07
*** foobaz has joined #buildstream20:08
*** foobaz has left #buildstream20:08
*** rdale has joined #buildstream21:13
*** toscalix has quit IRC21:30
*** narispo has quit IRC22:20
*** narispo has joined #buildstream22:20

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