IRC logs for #buildstream for Thursday, 2018-01-11

*** mcatanzaro has joined #buildstream00:18
gitlab-br-botbuildstream: issue #186 ("Improve timestamps logging") changed state ("opened") https://gitlab.com/BuildStream/buildstream/issues/18600:45
jjardon[m]Hi, does the bst cache server have any automatic cleanup?00:53
jjardon[m]if yes, is it configurable?00:53
jjardon[m]I can not find any mention about that at https://buildstream.gitlab.io/buildstream/artifacts.html00:56
*** mcatanzaro has quit IRC01:10
persiajjardon[m]: I think the answer to both is "Not yet".05:43
*** tristan has joined #buildstream08:10
jjardon[m]Persia OK, thanks. tristan mind if I fill an issue?08:45
tlaterjjardon[m]: There already is one for this08:47
tlaterLemme dig it up08:47
tristanjjardon[m], there is one08:48
tlaterjjardon[m]: https://gitlab.com/BuildStream/buildstream/issues/135 and https://gitlab.com/BuildStream/buildstream/issues/136, in case you want to follow08:48
tristanhttps://gitlab.com/BuildStream/buildstream/issues/135 and https://gitlab.com/BuildStream/buildstream/issues/13608:48
tristan:)08:48
jjardon[m]Ah! You already have think on everything :)08:48
* jjardon[m] subscribes08:49
tristanWell, knowing is only half the battle :)08:49
tristanbut... half a bottle is better than an empty one ?08:49
tlaterDepends on what the other half of the bottle contains08:50
jjardon[m]Also, I noticed the cache server is quite CPU intensive (at least in our use case) ; maybe it would be good to document that somewhere?08:50
tristanIs it ?08:50
tristanwell08:50
tristanjjardon[m], you could... I'm not sure what would cause that to be honest, it's mostly I/O intensive08:51
tristanjjardon[m], we stream ostree "objects" to the server and it dumps it on disk, and after that renames them into place, the objects are pre-compressed08:51
tristanSo, a bit weird that it would be cpu intensive indeed08:51
tristanOh, perhaps updating the summary08:52
tristanthat needs to be done at the end of every transaction08:53
tristanand is probably costly08:53
jjardon[m]Tristan I will open an issue explaining the use case and the current hardware config08:53
tristanSure, if it's causing you trouble; I dont know that it's fixable08:53
tristanthe resolution of that may be to enhance the artifact server setup docs08:54
jjardon[m]Sam and me it would be more memory bounded and we choose a server with a single CPU and 8gb ram; the CPU is almost all the time at 100%08:54
tristanyou do a lot of pushes ?08:55
jjardon[m]So a note saying; hey! You need CPU for this would be handy08:55
tristanI guess, from your CI08:55
jjardon[m]Well, we can have several runners at the same time, yes08:55
tristanindeed, I mean; if you have it idling and taking 100% cpu that would indicate a bug in bst-artifact-receive08:56
jjardon[m]But start to be in trouble with only 3-4  running already08:56
tristanbut it does to an ostree summary update on every push, that's needed08:56
tristans/to/do08:56
jjardon[m]No no, its working like crazy; I will put details later08:57
tristanok :)08:57
tlatertristan: Did we ever have a ./setup.py integration-tests or something of the sort?08:59
jjardon[m]We only open this for now in our side: : https://gitlab.com/freedesktop-sdk/freedesktop-sdk/issues/3509:00
jjardon[m]To give you an idea, we fillup almost 200GB of the cache server in around a week. That's why I asked for the autocleanup mechanism as well )09:01
tristantlater, nope09:09
tristanjjardon[m], oh jaysus :)09:09
tristanjjardon[m], Have you noticed any curve on that ?09:10
tristanjjardon[m], i.e. what I would hope for (with a number like 200GB in a week), is that you've reached 190GB on day 609:11
jjardon[m]curve?09:11
tristanlike, grow fast at first and then grow more slowly09:11
jjardon[m]mmm09:11
tristanThe efficiency of that curve would be improved, the more reproducible the builds are09:12
tristanjjardon[m], i.e. that's kind of what ostree buys us09:12
tristanas an artifact server09:12
jjardon[m]I only noticed yesterday, I will try to monitor closely from now on09:12
tristanwell, it's just a thing of curiousity really :)09:12
tristanwe know it should do that; just curious if it was noticeable09:13
jjardon[m]We suffer this issue you fixed yesterday so probably some of the artifacts were incorrectly duplicated09:13
tristanjjardon[m], ah the local source plugin issue ?09:13
jjardon[m]Yeah09:13
tristanhmmm, interestingly; that should not greatly effect the cache size09:14
tristaneven though it triggers rebuilds; (but assumption really relies on high percentage of reproducibility of builds)09:15
jjardon[m]Also, would it be possible to put a big fat warning when you have configured a cache server and bst fail to get the artifact? I mean every time that happen09:15
tristanI believe we do09:15
tristanWe first do it once at startup (check the initial connectivity), and if we have it, we should be retrying 3 times for each pull iirc09:16
tristanOne thing I'm certainly not open to, is adding exclamation points and competing warning message fatness haha09:17
jjardon[m]Is there a warning then if that fails?09:17
jjardon[m]Hahaha09:17
jjardon[m]OK, I will take a closer look next time09:17
tristanyeah, if there is no warning at startup let us know... I'm not 100% sure right now...09:18
tristanI'm sure that if we started up with connectivity and it subsequently fails, it will generate warnings and noise in the logs whenever it fails09:18
tristanif you have `pull` tasks at all, it means it detected connectivity09:19
tristanotherwise we never try them09:19
*** valentind has joined #buildstream09:22
jjardon[m]Right, I will let you know, cheers09:22
*** jude has joined #buildstream09:31
gitlab-br-botbuildstream: merge request (juerg/element-state->master: WIP: element state updates) #215 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/21509:40
gitlab-br-botbuildstream: merge request (juerg/element-state->master: WIP: element state updates) #215 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/21509:41
tristanjuergbi, So I wanted to pick your brain about this: https://gitlab.com/BuildStream/buildstream/merge_requests/181/diffs#note_5364117609:41
tristanjuergbi, it looks like missed opportunity for API cleanup :-S09:42
tristanbut maybe we can sneak something in at this stage, as it's very early09:42
gitlab-br-botbuildstream: merge request (juerg/element-state->master: element state updates) #215 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/21509:42
juergbilet me take a look09:43
tristanjuergbi, few options I can think of... one is; we could add an optional 'detail' keyword param to ElementError and SourceError, allowing us to construct a full error message from that in the log09:44
tristanand just nuke Plugin.error() from existence, that is I suppose the best for the code, but most aggressive break09:44
juergbiself.error was added only because ElementError doesn't support detail?09:44
juergbior is the ElementError somehow not visible in the log?09:45
tristanIt was added a looooooooong time ago09:45
juergbii mean in this diff09:45
tristanWell, in that diff, jonathan adds self.error() + raise ElementError()09:45
tristanwhich is... ugh09:45
tristanself.error() does not cause the error, just sends a visible error message09:45
juergbiright, if we say errors are anyway fatal, there isn't really a point in also having .error()09:46
tristanAnother less aggressive approach is to still add detail to the ElementError(), and cause .error() to raise it instead09:46
tristanCurrently, there is nothing using Plugin.error() prior to this patch09:46
juergbii don't think i like raising an error from a library method09:47
tristanit's there since we originally carved out the messaging API09:47
juergbiless clear code path09:47
juergbi(in this particular case)09:47
juergbi(it's obviously ok if a library method itself failed)09:48
tristanMkay, so; i feel like this should also preemptively go into bst 1.0.109:48
tristanto reduce the chance that code breaks in 1.0 -> 1.2 transition09:48
juergbiwe can still sneak it in, i suppose09:49
tristanit's approximately the same, Plugin.error() would not be returning in 1.209:50
juergbibut then you'd get a python error, not a proper buildstream error09:50
tristanNot sure what you mean09:51
juergbiwhat i don't like is having Plugin.error() as official/recommended way to _raise_ an error from a plugin09:51
tristanWe should really have better developer docs, plugin and buildstream hacker facing hehe09:51
juergbias i like clear code paths09:51
tristanYes09:51
juergbiso the question would simply be how to best handle this given that 1.0 is already out09:52
tristanexactly09:52
tristanthat's mostly the thing yeah09:52
juergbiit's up to you whether we should follow the approach 'not used yet in the wild, so nobody will care if we remove it in 1.0.1'09:53
tristanhehe09:53
juergbi1.0.1 release should follow soon in that case, though09:53
tristanI know, I dont want it to be a precedent09:53
tristanIndeed09:54
juergbidoes python has a way to declare deprecated API in such a way that the caller actually notices?09:54
tristanOnly via documentation, and I'm not sure that there is anything builtin to sphinx for this09:55
tristanwe would use `.. warning::\n\n   Deprecated: ${version}` I guess09:55
juergbitheoretically we could also print a warning to the buildstream log09:56
juergbiand maybe even remove it from the documentation, so nobody gets confused09:56
juergbia bit odd but would not break anything09:56
*** jonathanmaw has joined #buildstream09:57
tristanActually, I'm still hunting for a method to remove specific symbols from the docs :-S09:57
* tlater figures a custom decorator would work really well for this09:57
tristanjonathanmaw, fwiw we're now discussing an alternative to having to both `self.error()` + `raise ElementError()` for the sake of being able to abort with a detailed message10:00
jonathanmawtristan: cool, I was wrestling with that problem at the end of yesterday10:01
tristanyeah I got your added comments10:01
tristanjonathanmaw, I think the answer is going to be an added `detail` keyword argument to SourceError() and ElementError()10:01
*** ssam2 has joined #buildstream10:03
tristanjuergbi, I think for this instance I'm going to break it and release early, to be frank, it's not the only breakage; I suppose it can be forgiven for an initial release10:05
*** noisecell has joined #buildstream10:05
tristanjuergbi, the other break is the fix from yesterday for local source plugin, this was really actually broken so I can't leave it out, but the change does constitute a cache key change for local sources10:06
juergbithe main point to keep in mind is impact to other users/developers. if that's low enough, it's ok to occasionally break such rules10:06
tristanYeah, in this case it's insanely low10:07
juergbi(even Linus accepts a rare userspace ABI breakage if it's known not to affect anything)10:07
tristannow that we're in 1.1 territory, we're going to need some since/deprecated annotations for the docs, maybe tlater's decorator suggestion is a great one for ensuring that shows up consistently10:08
juergbiyes, would be good. don't know about best practice in Python for this10:10
juergbibtw: comments/review on element state branch appreciated. i'm not aware of any remaining issues10:10
* tristan is asking in #python and #sphinx-doc, but it's not a popular question in that crowd10:11
tristanjuergbi, yeah saw it roll through, will take a look today :D10:11
juergbita10:11
tristanhopefully we land ssam2's branch today and you can rebase junctions on that too10:11
juergbiyes, sounds good10:14
jjardon[m]Curious question; will 1.1 be the next version or the next stable will be 1.2 ?10:16
*** jude has quit IRC10:26
*** jude has joined #buildstream10:26
tristanjjardon[m], 1.210:27
tristanjjardon[m], master is technically 1.1.x10:27
jjardon[m]Nice, thanks10:39
tristanI dont have any strategy for post-release version bump though, unfortunately10:46
tristanIt needs a tag10:46
tristanSo, *perhaps* I should tag master at the branchpoint 1.1.0 without a release, and just state that the unstable releases always start with a .1 release10:47
tristanthat would make `bst --version` report something 1.1-ish right away10:47
*** valentind has quit IRC10:58
*** valentind has joined #buildstream10:58
*** valentind has quit IRC10:59
gitlab-br-botbuildstream: issue #187 ("Incorrect overall status when failing to save a tracked reference") changed state ("opened") https://gitlab.com/BuildStream/buildstream/issues/18711:03
tristanjjardon[m], I can confirm that with master there is such a warning, I am seeing:11:09
tristan[--:--:--] WARNING Failed to fetch remote refs11:10
tristanHowever, since you raise it...11:10
jjardon[m]yeah11:10
jjardon[m]I meant a warning every time it tries but it didnt manage11:10
tristanssam2, It would be nice if you could add the artifact URI to the above warning11:10
jjardon[m]I _think_ there is not a warning, I can be wrong11:10
tristanjjardon[m], there will not be11:10
jjardon[m]ok, thats why I didnt see it :)11:11
tristanjjardon[m], As I mentioned above, we dont waste time poking an artifact cache we already know we cannot reach, we establish that once at startup11:11
tristanif it *becomes* unreachable in mid build, then there will be noise11:11
jjardon[m]yeah, but It can happen that you reach it in the beginning but not later11:12
jjardon[m]ah, ok; my use case is cover then11:12
tristanjjardon[m], and in *that* case there should be noise11:12
tristanright11:12
*** tiago has quit IRC11:24
*** tiago has joined #buildstream11:27
ssam2tristan, yeah, in my branch you get more detailed errors11:46
jonathanmawtristan: Is there a task related to adding a "detail" field to ElementErrors and SourceErrors, or shall I do that?11:50
tristanjonathanmaw, I'm on it as we speak11:51
tristanjonathanmaw, for your branch, dont care about that detail for now...11:51
tristanjonathanmaw, how are the other changes coming along ? close ?11:52
jonathanmawtristan: okay, I'll stick to the generic overlap reporting, and raise an error as normal11:52
jonathanmawtristan: most of them are underway, assuming my approach of adding extra checking in various places to handle ElementErrors coming through seems appropriate to you11:53
jonathanmawwhich turned out to just be a matter of checking in Main's handle_failure for the exception (where it seemed to make sense to report it with an error message, and leave it to prompt you again with what to do)11:55
tristanjonathanmaw, for that line, dont worry about it, I'm fixing up ElementError (and SourceError) to include a detail string basically, and flat out removing Plugin.error(), which makes no sense11:55
tristanjonathanmaw, the most important is to reverse the nature of the error of course, i.e. the error is "Ooops I stepped on something that exists"11:55
tristanNot "Oh damn some random thing overwrote me"11:55
jonathanmawtristan: yep, that's in hand11:55
jonathanmawI just need to make sure that the tests make sense now11:56
tristanAnd the other is to filter out the whitelist from warnings and errors equally11:56
jonathanmawI'm not quite sure what was meant by filtering, but that's probably because I've slept since looking at the code11:58
tristanjonathanmaw, one new config you add turns the warnings into an error, the other new thing you add allows whitelisting the overlaps that are allowed on a per-element basis11:59
tristanjonathanmaw, your previous patch show the entire list of overlaps even if they are whitelisted; unless its treated as an error11:59
tristanjonathanmaw, the whitelist should effect the warning-or-error equally12:00
tristanAs least, I think it's much more useful if it does12:00
jonathanmawah, okay. I hadn't noticed that. Good catch!12:00
tristangrrrr more bugs12:25
tristanbst --error-lines 50 ... now doesnt print any of the last lines of the log file when the log file contains < 50 lines12:26
tristanProbably ever since changing that to use this mmap thing instead of tail12:26
tlaterEep12:34
* tlater was pretty sure he checked that case12:34
tlaterAnd had a test for it12:34
tlaterBut can be wrong12:35
tristangrrr12:38
tristantlater, be20f41112:38
tristantlater, funny how the comments are all speaking of this mythical `end+1` that never occurs in the code12:38
tristanand then adding the +1, we actually see the log when we want to print more lines than those which exist12:39
tristans/then/when12:39
tlaterHm, I think there was a reason why I didn't have that +112:40
tristantlater, window is closing on remembering what it was...12:44
tlaterYeah, nevermind, it's possible it just got lost12:44
tlaterI wonder where that unit test went12:44
tristanok the +1 was needed, amended comments to make it more clear12:50
tristanIf we search before the beginning of the file, it will be -1; making 0 the correct choice12:50
tristanIf we find a newline, we want to discard it, hence +1 again is correct.12:50
tlaterYes, I do think the +1 is needed12:51
* tlater is struggling to get pytest to run two independent test suites13:00
tristantlater, it need not be integrated into setup.py really13:04
tristanbut, there may be a nice trick to do here... lemme see...13:04
tlaterI think there's a plugin that can do it13:05
tristanhttp://blog.devork.be/2009/12/skipping-slow-test-by-default-in-pytest.html13:06
tristantlater, something like the above can work13:06
tristantlater, with that approach, we can make `integration` become a subdir of `tests`, and "mark" them13:06
tlaterRight, we would have to mark each integration test though13:07
tristantlater, then we could simplify our gitlab CI thing to just "run them all" (or a user could pass ./setup.py test --addopts '--slow' for example to run the whole thing)13:07
tlaterOr can we do that per-module?13:07
tristanI dont know13:07
* tlater has a look at that13:08
tristanbut, marking them wouldnt be horrible13:08
tlaterI guess trying to keep the directories apart isn't necessary anymore anyway13:08
tristantlater, that's just a suggestion; it seems like an elegant enough approach and maybe has the benefit of more people running the tests on their own laptop more often13:08
tlaterIt's much more elegant than what I was trying13:09
tlaterI was attempting to extend pytest=runner13:09
tristanensuring that we catch these problems that kept popping up, like contamination of the user's caches and such13:09
*** xjuan has joined #buildstream13:09
tristanand dirtying the tree, if a user/developer runs in to that; they should complain immediately haha13:10
tlaterYeah, this should make everything a lot nicer :)13:10
tlaterAs an aside, do you think we should still attempt any caching at all?13:10
tlaterI still dislike how long it takes to fetch the sdk13:11
tlaterSo for now I keep a not-so-temporary cache dir13:11
tlaterBut it does mean that tests technically aren't always exactly equal13:11
tristanIs there a reason `bst push` and `bst pull` was added and does not print the summary at the end of the run, like all the other commands ?13:27
tristanssam2, Also for your branch, note that I currently get "Not configured for pulling artifacts" message, when in fact I am, but connectivity is just not established13:31
tristanssam2, It would be fine to just append " or unable to reach server" or such to the same message13:32
*** adds68 has joined #buildstream13:42
gitlab-br-botbuildstream: merge request (refactor-error-details->master: Refactor error details) #221 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/22113:44
*** tristan has quit IRC13:48
*** tristan has joined #buildstream14:14
tristanjonathanmaw, https://gitlab.com/BuildStream/buildstream/merge_requests/221 is close to being merged, that will give you a new `detail` kwarg on ElementError()14:29
tristanjonathanmaw, also, Plugin.error() goes away, so for your branch, just rebase after that lands; and use only the ElementError() in the case that the overlaps should be errors14:30
jonathanmawtristan: \o/14:30
tristaneh... the unix integration test takes so much more time14:31
adds68Sorry this may sound like a dumb question, but if i've built something with buildstream, how do i then push the thing i have built into a local ostree repo?15:01
tristanadds68, bst checkout15:02
tristanand do what you want with it15:02
tristanadds68, --hardlinks will make it fast, just dont open the files checked out for writing15:02
adds68Then simply move it into the ostree repo?15:02
tristanif thats what you wanna do with the output15:03
adds68tristan, what does --hardlinks do?15:03
tristanuses hardlinks15:04
tristanfor now that's what we have, but has limitations in terms of what you can checkout, i.e. the files checked out will be owned by you15:04
* persia is confused by the above, and suspects adds68 may be looking for `bst push`15:12
*** mcatanzaro has joined #buildstream15:13
adds68persia, that was where my confusion came from, but as i've heard, ostree isn't usually configured for pushing?15:13
*** mcatanzaro has quit IRC15:15
*** mcatanzaro has joined #buildstream15:16
persiaIs a cache server not just an ostre server?15:17
persiaI mean ostree + extra bits to deal with things like generating manifests15:17
*** xjuan has quit IRC15:18
gitlab-br-botbuildstream: merge request (refactor-error-details->master: Refactor error details) #221 changed state ("merged"): https://gitlab.com/BuildStream/buildstream/merge_requests/22115:24
ssam2persia, `bst push` is for pushing buildstream artifacts to a buildstream artifact cache15:26
ssam2those can be used by other instances of buildstream15:26
ssam2nothing more15:26
ssam2i believe adam is trying to solve a different problem than 'how to get my buildstream artifacts into a buildstream artifact cache'15:27
persiaAh.  Interesting distinction.15:27
ssam2flatpak happens to use ostree, in a way that is totally independent from buildstream15:27
persiaYes, I think adds68 is trying to solve "how to get buildstream artifacts into an ostree repo".15:27
adds68ssam2, ah yes that makes it a lot clearer now, you're correct in your thinking15:28
ssam2persia, "ostree repo" is not specific enough to be useful here; as there are multiple incompatible ways you can use an ostree repo15:29
persiaadds68: What higher-level problem are you trying to solve?15:30
persiassam2: Thanks for the clarification: I now understand miuch better why most of what I wrote above was unhelpful.15:30
adds68persia, i have a local build of the freedesktop-sdk built, which i need to put into a local ostree repo, so i can point a local Flatpak app to the local build for testing15:31
ssam2i would use `ostree commit` to do that15:31
ssam2pointing at the files you checked out with `bst checkout`15:31
persiaIn which case, `bst checkout; ostree commit` is probably the right sequence.15:31
adds68ssam2, oh! I didn't think of doing it that way around15:33
adds68I shall give that a go, thanks persia ssam215:33
tristanadds68, you might look at the github for flatpak's freedesktop-sdk-base built from yocto for a decent CLI invocation of `ostree commit`15:37
tristanadds68, i.e. directly in the Makefile at the toplevel15:38
lantw44I am trying to get BuildStream work on FreeBSD. I have created a element 'freebsd-base-system.bst' to import the base system with binary release tarballs download from https://download.freebsd.org, and I can run 'bst shell base/freebsd-base-system.bst' with some local patches to BuildStream now. What is the proper way to add packages to this system?15:43
persialantw44: How do you mean "packages"?  Additional elements?  What result are you building?15:45
lantw44persia: I want to install packages with the package manager provided by the system, but this will require network access.15:46
lantw44The result is a FreeBSD image without any package.15:47
* persia will have to defer to someone else: I would expect either a) the base system has enough that one can build things, and one builds the other things one wants using BuildStream or b) the base system doesn't have enough to build with buildstream, and should be extended before importing.15:48
ssam2there's no way to run a package manager inside a buildstream sandbox, deliberately15:48
persiaI realise these are not necessarily realistic expectations.15:48
ssam2we only want to wrap deterministic processes like compilations15:49
ssam2package managers doing network access don't guarantee repeatable results15:49
ssam2i'd suggest running the package manager in a chroot or something, then tarring up the result15:49
lantw44so the only way to do it is to make a prebuilt system image and upload it to some places for other to download?15:49
ssam2yeah15:49
persiaOne might be able to force it by creating elements where the "source" is the binary package and the "build" process runs the package manager in non-network mode to install it, but that sort of defeats the point.15:50
ssam2we are interested in making that not a painful experience, though15:50
ssam2as an example, https://gitlab.com/BuildStream/debootstrap-ostree/  is being used to generate the base that the gnome-modulesets repo uses15:50
ssam2i've also proposed a way to import from the docker hub, mainly as that's a nice way around having to set up your own server15:51
ssam2(https://gitlab.com/BuildStream/bst-external/merge_requests/9)15:51
ssam2but it's not a goal of buildstream to wrap package managers, because it wouldn't gain anything over what the package manager already provides15:51
lantw44Yes, so I think I have to make a similar script to make a base system image with more packages15:52
lantw44Is it possible to have project options set based on the OS ?15:54
lantw44I hope there is a way to write '- os == "linux"' or '- os == "freebsd"' in modulesets without manually setting this option15:55
ssam2right now, there isn't15:55
ssam2the only 'automatic' option is the `arch` type15:55
ssam2i can see it would be useful in some cases15:56
lantw44Yes, the jhbuild modulesets have many preset conditions which is useful in <if> tags15:57
lantw44but it seems that currently the automatically converted BuildStream modulesets don't include these conditions15:59
ssam2yeah16:00
* tlater is running the new integration tests on CI for the first time \o/16:00
ssam2certainly, adding the conditions into the gnome-modulesets project.conf is welcome16:00
ssam2we can add code to buildstream to automatically fill some of those options later if needed16:00
ssam2in the meantime you could do something like 'alias bstf="bst -o os freebsd" or something as a workaround16:01
lantw44currently I have alias bst="sudo env HOME=$HOME BST_FORCE_BACKEND=unix ~/.local/bin/bst"16:02
lantw44and I will try whether it is possible to have the default values of other options to depend on this 'os' option16:03
ssam2i don't think it is16:03
ssam2however, you can set variables in the project.conf based on the 'os' option16:03
ssam2you just can't then allow overriding those variables on the commandline16:04
lantw44jhbuild has a '--conditions' option that can be used to override default conditions on the command line16:05
persiaFrom curiosity, what assumptions come with choice of "OS"?  Does it need a more complex model?  Is it kernel?  C library?  Compiler suite?16:05
lantw44Can I use (?) to check variables?16:06
lantw44persia: jhbuild uses kernel16:07
lantw44It sets different default conditions for linux, freebsd, macos16:08
* persia vaguely wonders if GNOME can be built with bionic16:08
ssam2lantw44, (?) only works for options16:09
persiaI don't know about the conditionals used in jhbuild, but in another build system, I remember lots of changes being required to deal with differences between glibc and musl.16:09
lantw44ssam2: so if I use variables instead of options, how can I add dependencies conditionally?16:10
ssam2good point, not sure you can16:12
ssam2but the option parsing system doesn't dependencies, at least not yet16:12
lantw44ssam2: I saw a webkit bug report which said I broke the build on Debian GNU/kFreeBSD because I added some code using FreeBSD libc specific features in a #if OS(FREEBSD) block ...16:13
ssam2i'm not sure how much complexity it would add if we did support that16:13
persialantw44: That class of error is precisely why the idea of an "OS" switch worries me.  Lots of environments end up mixing kernels, C libraries, and compilers (which triplet is often considered "OS").16:14
lantw44and even 'arch' can have different results on different OS16:15
tristanssam2, "but the option parsing system doesn't dependencies, at least not yet" what does this mean ?16:15
lantw44FreeBSD uses 'amd64' and Linux uses 'x86_64'16:15
* tristan getting confused here, looks like everyone is talking about different things16:15
juergbispeculative discussion ;)16:16
ssam2tristan, i mean, you can't say "the default value of option C depends on the value of option A"16:16
ssam2tristan, or is that in fact possible ?16:17
tristanlantw44, the name of the "machine arch" is what you choose it to be, everyone uses different names, this is known; buildstream's convenience is to automatically set the result from `uname`, but it's only convenience for not specifying one at invocation time.16:17
tristanThere is the answer for one specific question16:17
tristanssam2, no that is not possible, so A.) Yes an element can have conditional dependencies, set by the options... and B.) One option can not be automatically set by the value of another16:18
tristanThe question I believe was "so if I use variables instead of options, how can I add dependencies conditionally?"16:19
lantw44tristan, ok, so I should check for different name in different OS conditions16:19
juergbi(with recursive pipelines you can set subproject options based on main project options, though)16:19
tristanYou cannot have conditional fragments via variables, options are for that16:19
tristanlantw44, with the project, you first decide your nomanclature16:20
tristanlantw44, if some host OS's report unames differently, oh well too bad, less convenient; people who have a uname that doesnt match the arch, must just specify `bst --option arch <the arch name desired> ... build`16:21
lantw44tristan, I am trying to modify gnome-modulesets to support both Linux and FreeBSD, like what we did in jhbuild16:21
tristanThat would be *awesome*, I'm not sure what the state of buildstream is in regarding that, it should be possible building as root with unix backend as you seem to be trying16:22
tristanit's not thoroughly tested on BSD but it should be16:22
lantw44in jhbuild we have many preset 'conditions' (like BuildStream 'options') which can be used to conditionally include a block16:22
tristanYes I'm aware16:23
lantw44tristan, yes, I have get it work with some patches to the sandbox part16:23
tristanNice :)16:23
tristanjjardon[m], do you know about the secret sauce to enable BSD runners on gitlab ?16:24
tristanhehehe16:24
lantw44FreeBSD doesn't support rbind16:24
jjardon[m]tristan: let me check16:24
tristanjuergbi, I just got it16:24
tristanjuergbi, good joke :D16:24
lantw44and I replace it with 'bind' (which is 'mount -t nullfs' on FreeBSD)16:25
tlaterUgh, that was a pain for Solaris/AIX as well16:25
* tlater wonders if there's a way to do that in general that isn't messy16:26
tristanlantw44, seeing as it's about 1:30am here... I think it would be really awesome if you could file a report with your patch; I.e. not necessarily a proper patch but just to let us know what it was you had to hack to get it to work16:26
lantw44tristan, do you mean a merge request that cannot be merged? :)16:27
tristanlantw44, eh, could be that; could just be inline; I dont mind :)16:27
tristanI think you can inline it in comments with ```16:27
tristanmaybe even ```diff or ```patch will highlight things nicely16:28
lantw44currently the only thing I tested on FreeBSD is base system importing16:28
lantw44'bst build' and 'bst shell'16:28
tristanthat covers a lot16:28
tristanbst shell at least covers the parts you're not yet using from bst build (the sandbox)16:29
tristanI suppose we're not really sure about fuse yet16:29
lantw44There is also some patches to gnome-modulesets to make ostree optional16:29
tristanbut I suspect it would work, I think ssam2 fixed something in our local copy of fuse specifically for bsd ? (I dont know, I'm pretty foggy on that detail)16:30
lantw44FreeBSD has fuse. It is a kernel module that have to be loaded by the user.16:30
ssam2tristan, i fixed something for PPC64, nothing for BSD16:30
tristanah16:30
lantw44'kldload fuse' and /dev/fuse appears16:30
*** tristan has quit IRC16:33
*** tristan has joined #buildstream16:35
tristaninterestingly speculative discussion, also leaves you open to disclosing details unintentionally via side channels; the usual result is an amplification of confusion in the discussion, though16:39
tristanbut, it could be interesting to use it as an attack vector, perhaps in debate class16:40
persiaYes.  Contrapositives are part of the foundation of stout rhetoric.16:44
persia("Were I to say $foo, how might I expect you to react?" type questions, allowing easy refutation of the claim that one might have said $foo)16:44
tristanpersia, speculative discussion is rather when one person is mid-phrase, but the responder starts answering 3 or more answers at once16:46
tristanonly one of them is intended to be committed to the discussion16:46
tristanBut if observed through side channels, causes mass confusion16:46
persiaDefinitely orange, although I'd accept hot pink if forced.16:47
tristanHowever, could also be turned against the one optimizing their responses by inadvertently disclosing answers one might not have permission to give16:47
tristanFor instance, "had the sentence granted me permission to answer with my password, I would have answered ******"16:47
*** noisecell has quit IRC16:48
*** noisecell has joined #buildstream16:49
*** noisecell has quit IRC16:51
gitlab-br-botbuildstream: merge request (sam/multiple-caches->master: Multiple remote cache support) #166 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/16617:35
*** jonathanmaw has quit IRC17:36
*** ssam2 has quit IRC18:11
gitlab-br-botbuildstream: merge request (sam/multiple-caches->master: Multiple remote cache support) #166 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/16618:18
gitlab-br-botbuildstream: merge request (modAndTest->master: Making changes to various documents:) #206 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/20618:19
gitlab-br-botbuildstream: merge request (modAndTest->master: Making changes to various documents:) #206 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/20618:20
*** jude has quit IRC18:20
gitlab-br-botbuildstream: merge request (modAndTest->master: Making changes to various documents:) #206 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/20618:23
gitlab-br-botbuildstream: merge request (master->master: WIP: Documentation improvements) #183 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/18319:28
gitlab-br-botbuildstream: merge request (show_sources->master: Added a flag to bst show) #222 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/22219:31
*** noisecell has joined #buildstream19:37
*** valentind has joined #buildstream19:44
gitlab-br-botbuildstream: issue #141 ("Stack trace when aborting fetching of artifact list") changed state ("closed") https://gitlab.com/BuildStream/buildstream/issues/14119:55
gitlab-br-botbuildstream: issue #141 ("Stack trace when aborting fetching of artifact list") changed state ("closed") https://gitlab.com/BuildStream/buildstream/issues/14119:55
gitlab-br-botbuildstream: merge request (sam/multiple-caches->master: Multiple remote cache support) #166 changed state ("merged"): https://gitlab.com/BuildStream/buildstream/merge_requests/16619:55
juergbi\o/19:58
tristan:)20:14
gitlab-br-botbuildstream: issue #85 ("Support for pulling from multiple artifact caches") changed state ("closed") https://gitlab.com/BuildStream/buildstream/issues/8520:27
*** luc14n0 has quit IRC21:41
*** luc14n0 has joined #buildstream21:41
*** tristan has quit IRC22:10
*** valentind has quit IRC22:30
*** jennis has quit IRC23:12

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