IRC logs for #buildstream for Thursday, 2020-05-28

*** reuben640[m] has quit IRC00:27
*** narispo has quit IRC00:29
*** pro[m] has quit IRC00:29
*** krichter[m] has quit IRC00:29
*** DineshBhattarai[m] has quit IRC00:29
*** Demos[m] has quit IRC00:29
*** segfault1[m] has quit IRC00:29
*** walterve[m][m] has quit IRC00:29
*** tchaik[m] has quit IRC00:29
*** dylan-m has quit IRC00:29
*** m_22[m] has quit IRC00:29
*** albfan[m] has quit IRC00:29
*** jswagner has quit IRC00:29
*** jward has quit IRC00:29
*** milloni has quit IRC00:29
*** ironfoot has quit IRC00:29
*** jjardon has quit IRC00:29
*** chipb has quit IRC00:29
*** douglaswinship has quit IRC00:29
*** slaf has quit IRC00:29
*** finnb has quit IRC00:29
*** radiofree has quit IRC00:29
*** persia has quit IRC00:29
*** benbrown has quit IRC00:29
*** cgm[m] has quit IRC00:29
*** skullone[m] has quit IRC00:29
*** awacheux[m] has quit IRC00:29
*** asingh_[m] has quit IRC00:29
*** dbuch[m] has quit IRC00:29
*** mattiasb has quit IRC00:29
*** SamThursfield[m] has quit IRC00:29
*** kailueke[m] has quit IRC00:29
*** doras has quit IRC00:29
*** theawless[m] has quit IRC00:29
*** Trevio[m] has quit IRC00:29
*** connorshea[m] has quit IRC00:29
*** abderrahim[m] has quit IRC00:29
*** jjardon[m] has quit IRC00:29
*** tlater[m] has quit IRC00:29
*** milloni has joined #buildstream00:29
*** persia has joined #buildstream00:29
*** radiofree has joined #buildstream00:29
*** jjardon has joined #buildstream00:29
*** benbrown has joined #buildstream00:29
*** cgm[m] has joined #buildstream00:29
*** skullone[m] has joined #buildstream00:29
*** awacheux[m] has joined #buildstream00:29
*** doras has joined #buildstream00:29
*** theawless[m] has joined #buildstream00:29
*** asingh_[m] has joined #buildstream00:29
*** connorshea[m] has joined #buildstream00:29
*** SamThursfield[m] has joined #buildstream00:29
*** tlater[m] has joined #buildstream00:29
*** jjardon[m] has joined #buildstream00:29
*** dbuch[m] has joined #buildstream00:29
*** Trevio[m] has joined #buildstream00:29
*** mattiasb has joined #buildstream00:29
*** kailueke[m] has joined #buildstream00:29
*** abderrahim[m] has joined #buildstream00:29
*** irc.acc.umu.se sets mode: +o jjardon00:29
*** douglaswinship has joined #buildstream00:29
*** ironfoot has joined #buildstream00:29
*** ChanServ sets mode: +o ironfoot00:29
*** chipb has joined #buildstream00:29
*** jward has joined #buildstream00:29
*** finnb has joined #buildstream00:29
*** narispo has joined #buildstream00:29
*** slaf has joined #buildstream00:30
*** jswagner has joined #buildstream00:31
*** reuben640[m] has joined #buildstream00:54
*** albfan[m] has joined #buildstream01:23
*** DineshBhattarai[m] has joined #buildstream01:34
*** pro[m] has joined #buildstream01:43
*** Demos[m] has joined #buildstream01:44
*** walterve[m][m] has joined #buildstream01:53
*** tchaik[m] has joined #buildstream01:56
*** krichter[m] has joined #buildstream02:26
*** segfault1[m] has joined #buildstream02:56
*** dylan-m has joined #buildstream03:08
*** m_22[m] has joined #buildstream03:13
*** tristan has quit IRC05:17
*** tristan has joined #buildstream05:35
*** traveltissues has quit IRC05:40
*** traveltissues has joined #buildstream05:40
*** ChanServ sets mode: +o tristan06:44
tristanInteresting that the code quality scores "degrade" when FIXME comments are added; often times a FIXME comment is added after a refactor leading us to better understand the code and better document what needs fixing06:44
tristanhmmm, "tests-no-usedevelop" is heavy duty, almost an hour now: https://gitlab.com/BuildStream/buildstream/-/jobs/57068762806:56
tristanAh ! I just remembered, we didn't yet do the prioritization of buildstream.conf as discussed (try buildstream1.conf or buildstream2.conf respectively, falling back on buildstream.conf), was that agreed ?06:59
* tristan should make sure that gets into 1.606:59
*** hasebastian has joined #buildstream07:06
*** jude has joined #buildstream07:27
tristanversion specific configuration files for master: https://gitlab.com/BuildStream/buildstream/-/merge_requests/194107:53
*** tristan has quit IRC07:57
*** tpollard has joined #buildstream08:06
juergbitiny CI config change to get pipelines green again: https://gitlab.com/BuildStream/buildstream/-/merge_requests/193908:28
*** phildawson has joined #buildstream08:29
WSalmondid we make some progress on https://gitlab.com/BuildStream/buildstream/-/issues/1310 recently? i remember chatter, is there a MR that i can test?08:40
*** benschubert has joined #buildstream08:41
benschubertWhat would be the easiest way to test integration commands? I need a fully fledged sandbox right? Would a `bst show --format %{public}' be enough?08:42
juergbibenschubert: I'm surprised we don't test integration commands yet08:43
juergbior we simply don't use variables in the existing tests?08:44
benschubertwe might, but maybe without variables?08:44
benschubertI'll check08:44
benschubertif we do without variables, would adding a variable be enough or would we rather have a fully fledged test?08:44
benschubertwe definitely have integration commands in some tests with variables08:45
juergbiimo, adding a variable would be enough, however, we should clearly note in the test that it's intentional/important to avoid it accidentally getting removed08:45
juergbihm, so why aren't they failing?08:45
juergbiWSalmon: benschubert is working on it ^^08:45
benschubertI am not sure08:46
*** narispo has quit IRC08:46
benschubertwe have in all our alpine base images `ldconfig %{libdir}`08:46
benschubertso I would have expected failures?08:46
*** narispo has joined #buildstream08:46
juergbimaybe ldconfig doesn't fail with that argument?08:47
juergbiunexpanded08:47
*** tristan has joined #buildstream08:47
juergbiconsidering that, maybe bst show style test actually makes more sense08:47
benschubertI just tried running a `ldconfig blah`, that fails08:47
juergbihm08:48
WSalmonthanks guys i apprecate the effort. :D08:48
*** cphang has joined #buildstream08:49
*** santi has joined #buildstream08:49
*** ChanServ sets mode: +o tristan08:50
tristanbenschubert, juergbi, any thoughts on !1941 ?08:50
tristanit's a pretty simple thing about config file loading, as I recall it was pretty unanimously agreed on in IRC, abderrahim[m] was also around08:51
tristanthink we need to take this detail to the list, I'd like to just push it through08:51
tristan?08:51
juergbilgtm08:52
benschuberttristan: seems good to me, maybe ping cs-shadow too? I think recalling he was there in the discussion too08:52
tristansure, I don't wanna rush things but also want to get some more momentum hehe08:53
benschubertyep definitely :)08:54
benschuberttristan: also, if you have a few brain cycles, about the testing of plugins in buildstream master, I'm wondering if we should just, instead, run tests for the "stable" "buildstream maintained" plugin repositories on each pipeline before merge? (maybe not on all platforms), this would ensure we test everything we care about, and once bst-plugins-experimental is split, we will have more stable, single focused repositories08:56
benschubertOn the other hand, it might also be suboptimal, like, if git_tag and git end up in the same repo, we might want only `git` to be tested08:57
benschubertWe could otherwise add a marker for specific tests we want to rnu and run only the ones with these markers08:57
tristanbenschubert, So under that design basically; we would (A) Make this "source tests" things more of an explicit thing for third part repos to implement in their tests (if it isnt already)... (B) Have the ability to override the BuildStream installation in third party test suites (make sure their tox.ini files allow us to override BuildStream with our local checkout)... (C) Run tox on the well known third party plugin modules maintained under the09:00
tristanBuildStream umbrella as a part of our CI... ?09:00
benschubertyep09:01
tristanbenschubert, At a glance, this *sounds* interesting, I think it also involves reviving a discussion about testing docker images which cs-shadow probably doesnt agree with09:01
benschubertand we could have a few repositories that we use that would give us good coverage09:01
benschuberttesting docker images?09:01
benschubertah about adding the external dependencies?09:01
tristanbut that's a bit of a detail, I think if we can say "BuildStream supports these blessed plugins", then buildstream-docker-images can create a single test image for each platform which supports all plugins09:01
benschubertyep09:02
benschubertas we would be needing them09:02
tristanI think he preferred more granular images09:02
benschubertI think what he doesn't want (and I agree with him) is a single image to test _all and every possible_ plugin09:02
tristanyeah there I certainly agree09:02
benschubertwe should keep the image for testing core with only what core needs for test :)09:02
benschubertgood09:02
benschubertso yeah I wonder if that would not be easier09:02
benschubertwe could also remove some of those 'sourcetests' hacks and have them explicitely run09:03
tristanI think if we do this, we should certainly untangle the mess which is running BuildStream's tox with --plugins09:03
benschubertyeah, we oculd basically remove it entirely09:03
benschubertah maybe not09:03
tristanCurrently it's so broken, you can't even select specific test on the commandline (not to mention the double run while skipping everything looks like a hack)09:03
benschubertbecause it's still good to have all the standard source tests09:04
benschuberttristan: you can, but you need to use '-k test_name' instead of giving the file nam09:04
tristanA09:04
tristanAh09:04
benschubert(probably deserves documentation if people trip on it)09:04
tristanHmmm, I think I don't agree we want to keep the source tests and treat them specially at all09:04
benschubertSo push to plugin implementers the responsibility of adding _all_ the tests?09:05
benschubertActually...09:05
tristanI mean, what are the requirements ? ... I think we want to ensure we gate all commits on all tests passing09:05
tristanBut that doesnt need to be all covered by BuildStream's tox.ini09:05
tristanbenschubert, Yes: Give the plugin implementor a reasonable fixture which allows them to declare the standard source tests09:06
tristanBut have them at least do that part09:06
tristanIf you implement a source, you can implement a Repo() and use this fixture to pass standard tests, with an explicit test in your pytest suite09:06
benschubertgood point09:06
benschubertit might make many things simpler09:07
tristanIts kind of how I intuitively expect it to work09:07
benschubertI'd though be wary of doing this before we have split bst-plugins-experimental, I for sure don't want to have all of them testing in core09:07
tristanThen, we lose one thing which is core developers dont get all the tests which run in CI just by running tox locally09:07
tristanHowever *even that* could be changed09:07
tristanWe could have tox.ini do the calling into third party plugin test suites... calling pytest on them directly right ?09:08
tristanWell I say "third party" but I mean "blessed / external"09:08
benschubertyeah, we could download the git repo if it doesn't exist and run tests there09:09
benschubertor ship a 'meta' project (a git project with submodules to everything with a helper to integrate running all tests)09:09
tristanWe would still keep a git sha or tag in BuildStream tox.ini which we'd have to update at healthy intervals09:09
tristanWe don't want uncertainty of what changed in a CI run, ever09:09
benschubertyep09:10
benschubertand we would not update it locally if the thing is already checked out09:10
benschubertso people could do sweeping changes09:10
tristanThat sounds fun, not sure how you do that09:10
tristanI think when you run tox, it will install all the specifics, including the external plugins09:11
tristanBut I probably don't know all the features :)09:11
benschubertwell, we'd need the source repos, in order ot have the tests, not the pip package (unless we ship the tests in the source tarball)09:11
tristanOk... just a reminder... it's been some weeks and I really need us to get to the bottom of the question of "How to allow multiple junctions to the same project to exist"...09:12
benschubertand in tox you'd do `if [ ! -d bst-plugins-scm ]; then git clone ....; fi; cd bst-plugins-scm && tox -e pyXX`09:12
benschubert(example, no contractual obligations :D)09:13
tristanAnd with that, I think I'll finally do the management/secretary work which I think people expected of me: Translating the 2.0 workgroup minutes into the milestone in gitlab09:13
tristanbenschubert, sounds interesting... yes I see; they would not *install* their tests even if we pip installed them via git09:14
tristanmakes sense09:14
benschubertOk, I'll sleep on it a bit and make a POC, then I'll push that to the list09:15
benschubertthanks !09:15
tristanAnd if there are any specific implications about this, we don't need to document this for plugin writing (i.e. our plugins follow our rules)09:15
tristanimplications such as "where do you store your pytest suite" or what test targets or whatever09:16
benschubertyep09:16
benschubertwhich simplifies many things09:16
tristanbenschubert, while I agree that this is a simple/good approach; the only real question is; whether this is irrationally expensive in CI09:17
tristanbenschubert, I think it would be good to go ahead with a plan and implement it, and as you suggest, only use decorators to mark tests we want to run in BuildStream in the case that we decide it's too heavy09:18
benschubertif it is, we can put another twist: tests we want to run in buildstream core as part of CI get a `buildstream_core` marker, and we skip all the others09:18
tristanwe can make that decision another day09:18
tristanright09:18
benschubertexactly :D09:18
tristanthinking in symphony :)09:18
benschubertsince we have control over the plugins it's way easier09:18
benschubertGah, seems there is finally a satisfactory way of testing plugins with core x)09:19
*** phildawson_ has joined #buildstream09:21
*** phildawson has quit IRC09:23
coldtomshould https://gitlab.com/BuildStream/buildstream/-/blob/master/src/buildstream/_cas/cascache.py#L177 not be using localcas FetchMissingBlobs, or am i misunderstanding something about the architecture?09:27
benschubertjuergbi: so doing a `bst show --format %{public}` on `base/alpine.bst` in `doc/examples/composition` before my change, shows that the expansion is made at the time of running the command as I see `%{libdir}` in the output. Thus if I were to expand them _before_ it is a breaking chang09:28
benschuberttristan: ^ too09:28
juergbibenschubert: yes, that's what I expected: https://irclogs.baserock.org/buildstream/%23buildstream.2020-05-27.log.html#t2020-05-27T14:20:0009:31
benschubertright09:31
juergbiI'm not sure which is better09:32
juergbiI do like not having to special case splits, though09:32
benschubertso yeah, seems weird ot me that splits would be expanded but not the rest09:32
benschubertI'm just curious whether it would break something that is needed by someone09:32
benschubertour whole test suite passes with the change though09:34
juergbithe only downside I can think of is unnecessary rebuilds09:34
juergbibut it may well be insignificant09:35
benschubertyeah09:35
benschubertand it oculd not break something right? the variables would always be resolved to the same thing and are part of the artifact anyways or?09:37
tristanyeah this is what I understood from yesterday's chat as well09:37
benschubertOk, I'll apply the fix and add a test then :)09:38
juergbibenschubert: that makes me wonder, what variable context was used when variables were expanded as part of running the integration command?09:38
juergbiwas it the element where the integration commands were defined in or the element that was being assembled?09:39
benschuberthttps://gitlab.com/BuildStream/buildstream/-/blob/master/src/buildstream/buildelement.py#L231 it's the element where it is defined AFAIK?09:39
tristanThe element where the integration commands were defined I believe09:39
tristanthe element itself is asked to integrate09:40
benschubertyeah, so that's resolved in the element09:40
tristanthe reverse dependency asks it's dependencies to integrate09:40
juergbiright, good, so no change there09:40
benschubertare the variables stored in the cache key actually?09:40
juergbino09:40
benschubertSo we're actually fixing a bug x)09:41
juergbiyes, I think so09:41
tristanIn a sense, at least that's what my gut is telling me :)09:41
benschubertPreviously:09:41
benschubert- Assuming an element has an integration command with a variable not use anywhere else09:41
benschubert- Assuming another element is depending on it and gets build09:41
benschubert- Change the variable09:41
benschubert- No rebuild necessary. $ FAIL09:41
tristanbenschubert, I don't think so at that level no09:42
tristanbenschubert, because changing the variable will make the integration commands for that element expand differently, and the resolved integration commands should be part of the key right ?09:42
tristanHmmm09:43
benschuberttristan: previously the non-expanded version was stored (I just checked)09:43
benschubertso nothing was keeping track of this change :)09:43
tristanOk, sad09:43
tristanHeh09:43
tristanGood thing to fix09:43
benschubertWell, it will be fixed soon :D09:43
benschubertyeah I would not have wanted to have to debug that otherwise09:44
tristanbenschubert, the unfortunate part is that the element declaring the integration command will be rebuilt itself, just because reverse deps will need to be rebuilt due to a changed integration command09:44
tristanTo be honest, that was accounted for a long time ago09:44
juergbiyes, that's the downside. otherwise we'd have to make the integration commands part of the unique key of reverse dependencies09:45
tristanBut when we made public data mutable by elements, we recognized a need to change that09:45
benschubertyeah, I'd rather keep the integration command in the element itself, not the rdeps09:45
tristanRight, but that would be too presumptuous09:45
tristanThis is safer all around for "whatever element implementations decide to do with public data"09:45
juergbiactually, for things like `bst artifact checkout --integrate` it wouldn't even be enough09:45
benschubertand if you have a huge element, you could always have a compose/import element on top with the integration commands, and thus rebuild would be 'free'09:45
juergbibenschubert: this only really works if that element is used standalone09:46
juergbias the integration commands generally need to run after everything has been staged09:46
juergbi(otherwise we'd do it as part of assemble)09:46
benschubertjuergbi: what I meant is that if you want to avoid the new rebuild of the elemtn which integration command will change with my fix, having a separate element with the integration command will allow you not to have the rebuild09:47
juergbino, that doesn't really work, afaict09:48
benschubertI am not sure why?09:48
juergbiyou need to run the integration command across the whole dependency set09:48
benschubertbut that's if one of your dependency had a change of integration command09:48
juergbiso you'd need a helper element for each combination of dependencies09:48
benschubertI don't think we are talking about the same thing here?09:49
juergbiah, yes, I think you're right09:49
juergbiI thought you wanted to avoid running integration commands over and over09:50
benschubertah no, not what I meant :)09:50
tristanWhat we need to do to optimize that is the whole ineptly named "artifact aliasing" thing09:50
juergbiI got it now09:50
benschubertJust avoiding the unnecessary rebuild :)09:50
benschubertawesome09:50
tristanImplement cut-offs of reverse dependency builds based on matching content hashes09:51
juergbithat can definitely help09:51
benschubertI'd love seeing cut-offs09:51
juergbiwith remote execution you already get that more or less for free with the action cache09:51
*** hasebastian has quit IRC09:51
juergbiit still has to (virtually) stage everything, though09:51
tristanThe aliasing thing is totally doable I'm convinced, just... have many fish in the pan now...09:53
tristanlets do 2.0 first ;-P09:53
tristanDamn I really don't get it, why is it that when I resolve https://gitlab.com/BuildStream/buildstream/, the badge *still* doesn't reflect 1.4.3 ??10:09
tristanThis used to work seamlessly10:09
juergbitristan: it says 1.4.3 here10:14
tristanreally ?10:17
tristanAaaaaah10:17
tristanjuergbi, my browser caching at work10:17
tristanIf I close the page and open it again, it remains 1.4.2... if I hit refresh, I get the new one10:18
benschubertWSalmon, juergbi: https://gitlab.com/BuildStream/buildstream/-/merge_requests/1943 here it is!10:24
juergbita10:25
WSalmonooooo10:25
*** slaf_ has joined #buildstream10:30
*** slaf has quit IRC10:32
tristantpreston, WSalmon opened this now fwiw: https://gitlab.com/BuildStream/buildstream/-/issues/132710:41
tristanA side effect of trying to get the ML 2.0 blocker items into the milestone list10:41
tprestonthanks tristan10:42
tristanWhile in bureaucratic mode, I wonder if https://gitlab.com/BuildStream/buildstream/-/issues/1127 should have been reopened to reflect it's unfinished-ness until !1943 lands...10:43
tristanbut my better self says that really, that would just be overkill micromanagement not worth anyone's while10:43
benschuberttristan: and this part actually does work :)10:44
benschubertthe problem is only with public data10:44
tristanYeah :)10:44
benschubertand we already have an issue for this bug10:44
tristanTrue, anyway I think we will revisit the milestone with more concrete blocker lists once we nail all the big ticket items10:44
benschubertseems good10:46
*** phildawson-ct has joined #buildstream10:52
*** phildawson_ has quit IRC10:53
tprestonSo I'm trying to convert my generic linux.bst to a plugin. I've started with a naive implementation but it errors on the (?) logic https://gitlab.com/celduin/bsps/bst-boardsupport/-/blob/9eb652c78be77d224dd147e0cb778ec842995c07/plugins/elements/linux.yaml#L810:55
*** hasebastian has joined #buildstream10:55
tprestonWhat's the right way to do logic in a plugin?10:55
tprestonI want to conditionally set kernel_arch, based on target_arch10:56
WSalmonI think you *might* be able to do this with https://gitlab.com/BuildStream/buildstream/-/blob/bst-1.4/buildstream/plugin.py#L244 configure, but it would be better to do this within the yaml section if posible i would have thought11:04
tprestonSo I would implement a configure() and `if kernel_arch == "": kernel_arch = something based on target_arch` ?11:08
tprestonAhh, target_arch is a project-level configuration. So a general plugin shouldn't be aware of this.11:10
juergbithat brings up an interesting point. some plugins definitely assume some variables to exist. e.g. prefix11:13
juergbiright now that's a variable in the default project.conf but we might actually remove that from the default11:13
juergbi(and leave it up to projects/includes)11:14
juergbihowever, it still makes sense for plugins to use those11:14
juergbiwhich means that plugins would have to declare which variables they rely on11:14
tprestonjuergbi: for now, is it ok to just expect certain variables to exist?11:18
tpollardtarget_arch is not default?11:18
tpollardit's freedesktop api11:18
tpollardpiggybacking the builtin arch type11:19
tprestonThat's right, so the linux plugin shouldn't be aware of it11:21
tristanjuergbi, I think that the main error reporting will report the provenance of where a referenced and undeclared variable came from11:24
tristanjuergbi, so long as we improve provenance information (i.e. make sure it prints well for subprojects and for plugins), I think the error reporting is intuitive enough that plugins need not additionally "declare" which variables they depend on11:25
tristan(the use of a variable is already a declaration of that dependency)11:25
juergbitristan: I meant in the plugin documentation11:26
*** narispo has quit IRC11:27
juergbito declare what it expects from a project11:27
*** santix has joined #buildstream11:35
tristanjuergbi, Except that plugin documentation always includes a verbatim copy of the plugin defaults11:36
tristanBut sure, it could11:36
tristanIt would be good to automate though11:36
*** santi has quit IRC11:36
tristanI think we should refactor https://gitlab.com/BuildStream/buildstream/-/blob/master/doc/Makefile#L40 into a sphinx plugin that is similar to the sphinx-api-doc thing but does it specially for plugins11:37
tristanThat'll be better for third party plugins to make consistent documentation, and could take care of automatically scanning default .yaml files for %{variables} and summarizing those requirements11:38
tristanbenschubert, more plugin integration stuff, but not related to tests11:38
tristan^^11:38
* tristan could probably allocate a day for that, help get this plugins show on the road11:39
* tristan hopes he doesn't get the usual headache from looking at sphinx code11:39
tristanOk FWIW, the main big ticket items which made Blocker status, or "Block on a proposal" status, are all on https://gitlab.com/BuildStream/buildstream/-/milestones/3 now11:40
tristanFew duplicates resolved in the process11:40
tristanmaybe I should remove some irrelevant things which are too fine grained to consider at this point ?11:42
tristanhttps://gitlab.com/BuildStream/buildstream/-/issues/318 for example, incomplete cache key tests, seems premature on that list11:42
tristanWe can't even say for sure *how* that will be tackled11:42
tristanThis shouldnt be on the milestone as I understand it: https://gitlab.com/BuildStream/buildstream/-/issues/3811:43
tristanI'll fix that11:43
tristanjuergbi, Is it safe to say that the assumptions around "Sandboxing" from the planning sessions: https://mail.gnome.org/archives/buildstream-list/2020-April/msg00013.html also apply to storage ?11:46
juergbitristan: as in "buildbox[-casd] only"?11:47
tristanjuergbi, i.e. for BuildStream 2.0, a project can "require the saving of extended file attributes and ability to set them in the sandbox", and if it can be supported in the current environment, it will be11:47
tristanOtherwise the requirement fails and BuildStream aborts11:47
tristanRight, we only discussed this in terms of sandboxing11:48
tristanHowever it needs to be guaranteed across the board11:48
tristanAt least when it comes to file attributes and such11:48
tristanWe need to be able to know for sure that the artifact will be stored with the information we required to be stored in it11:48
juergbiright, we currently don't have a way to query buildbox-casd what attributes it supports11:49
tristanI feel these sandboxing and storage are more and more hand in hand11:49
juergbihowever, it should be similar to the sandboxing attributes in the end11:50
juergbior rather, I expect those to also be configured in the `sandbox` dict11:50
tristanHmmm, does this mean we have showstoppers with the v2 REAPI ?11:50
juergbithere are no uid/gid fields yet in the upstream REAPI11:50
tristanWe can't very well say that this is guaranteed if it's not standardized, especially since we're saying we're not going to provide an artifact cache server11:50
juergbihowever, it should be easy to get those upstream when we actually need them11:51
juergbimode/permission bits are already supported upstream11:51
tristanextended attributes and file capabilities...11:51
juergbixattr could already be supported with the string-based node properties11:51
juergbiI don't think we need special fields for those11:51
juergbifor file capabilities I'm not sure. string-based might make sense for that as well11:52
tristanIf there are "string-based node properties", why would we need anything else ?11:52
tristanJust as a means of reducing the size of a CAS storage ?11:52
juergbithey are not as efficient11:52
juergbiyes11:52
tristanRight ok I get it11:52
juergbialso, buildbox needs to add support for each attribute, support in the protocol alone is not sufficient11:55
juergbihowever, I don't think that would be really difficult for any of these attributes11:55
juergbithe main difficulty is still the sandboxing side11:56
juergbibut subuids should be the way to go on linux11:56
juergbinot sure whether file capabilities are possible right now11:56
juergbimaybe possible with buildbox-fuse, have to check11:57
cphangthanks tristan  would it be possible to add https://gitlab.com/BuildStream/buildstream/-/issues/1318 to https://gitlab.com/BuildStream/buildstream/-/milestones/3 as well? This stops use of bst using a remote CAS from 1.93.2 onwards11:57
cphangsorry I mean 1.93.311:58
tristancommented here: https://gitlab.com/BuildStream/buildstream/-/issues/38#note_35103557611:58
juergbicphang: we still don't have an easy way to reproduce it locally, right?11:59
tristancphang, my hope is to keep as much details/bug *out* of the milestone such that we can focus on the big ticket items as the milestone11:59
tristanit's not meant to be a micro-managing fine grained thing at this point11:59
cphangtristan,  fair enough. makes sense thanks11:59
cphangjuergbi, no we can only reproduce at load right now, it's hard to pin down otherwise.11:59
tristancphang, once all the main "features" land, we will probably have monthly meetings to recap and repopulate with blockers12:00
tristanI think that's the approach we're hoping for... drill down into details deeper and deeper as we approach 2.012:00
cphangtristan,  sounds good to me :)12:00
tristan:)12:00
cphangcoldtom, WSalmon do you have any other details for juergbi  to help reproduce #1318 ?12:00
coldtomi've never managed to repro locally, but i lack the bandwidth to push anything beefy over the network12:01
tristanRegarding #1318 at a glance... I think the fact that we only get "Unexpected error in RPC handling" could be considered a bug in itself12:02
juergbicoldtom: have you tried with a local buildbarn server?12:02
tristanThat error message is so precisely detailed, telling me exactly what went wrong and being so (sarcastically) helpful in helping me fix the error12:02
cphangI think you've accurately captured my feelings on that issue tristan xD12:03
juergbiyes, most likely the issue is bad error handling12:03
tristanIn the past, we've had obscure errors which don't often happen, and improved error reporting several rounds before actually finding out the root cause12:04
coldtomjuergbi, not with more than a toy project i'm afraid, i can give that a shot after lunch12:04
tristanI would suggest a similar approach here :)12:04
juergbicoldtom: ok, great. clear steps how to reproduce this locally would definitely make this much easier to dig into12:04
cphangso I know traveltissues has put several MRs in buildbox along this direction12:04
juergbiyes, they are all merged, afaik12:05
cphanghttps://gitlab.com/BuildGrid/buildbox/buildbox-common/-/merge_requests/267 and https://gitlab.com/BuildGrid/buildbox/buildbox-common/-/merge_requests/268 iirc12:05
WSalmoni ran in to the memory issue with casd while trying to reproduce locally12:08
juergbilooking into this now12:09
WSalmon[00:00:03] FAILURE bootstrap/gcc-build-deps.bst: Failed to push artifact blobs with status UNKNOWN: Unexpected error in RPC handling12:09
WSalmonooooo12:09
WSalmoni got it locally12:09
WSalmoni think12:09
WSalmonand casd is still alive but using 9.4Gb of ram12:10
WSalmonso dosent look like its OOM error12:10
*** tristan has quit IRC12:13
juergbiWSalmon: nice, that's with buildbarn also running locally?12:25
WSalmonyep12:26
WSalmonoh12:26
WSalmonno12:26
WSalmoni can give you a key so you can try it out12:26
WSalmonwillsalmon/reproduce_grpc12:28
WSalmonthat branch gets grpc errors quickly for me12:29
WSalmonthey usually go bang by II < 150 which is quite fast, let me know if you can reproduce?12:43
valentindbenschubert, I am looking at _variables.pyx in master. It seems we cache regex parsing of strings. But we do not cache the result of evaluation of variables. So that for example if it tries to resolve foo: 1%{bar}, bar: 2%{baz}, baz: 3, then It when evaluating "foo", it will find the value of bar. But it will not cache it, and when evaluating the value of bar, it will just recompute it. Am I correctly understanding the code?12:47
valentindI am thinking there was maybe a reason for that. But I do get why we cache the parsing phase then.12:47
benschubertvalentind: which line exactly?12:48
valentindin _flatten12:48
valentindIt goes through all definitions12:48
valentindAnd calls _expand_expstr12:49
valentindBut _expand_expstr is given self._expstr_map, which only contains definitions.12:49
*** hasebastian has quit IRC12:50
valentindAnd I am thinking if it was given also flat, then it could just take the computed values from there directly instead of recomputing variables that were already evaluated.12:50
benschubertIt's been a long time, but if I remember correctly, it's because the same expstr might be reuse in multiple context and have the variable resolved differently? I'm not quite sure anymore12:50
valentindbenschubert, But it is one Variables instance per element.12:51
valentindIt should always be the same value.12:51
valentindThere is no way to change variables later than __init__.12:51
*** hasebastian has joined #buildstream12:52
benschubertvalentind: the 'PARSE_CACHE' is global and shared12:53
valentindI am not suggesting to modify PARSE_CACHE.12:53
valentindI am saying while computing the flatten map, we can just reuse already computed values. Specially because have it in memory already.12:54
valentindIn _flatten, the local variable "flat" will contain all those values.12:55
benschubertyou mean in https://gitlab.com/BuildStream/buildstream/-/blob/master/src/buildstream/_variables.pyx#L116 using the flatten_map?12:55
valentindAs well yes.12:56
benschubertmmh it might be possible12:56
valentindBut also during flatten, every call to _expand_expstr should look into "self.flat"12:56
benschubertI'd definitely accept a PR if you manage to optimize it, it would be great :)12:56
valentindbenschubert, What I wanted to know if there was a good reason not to do it.12:57
valentindBut if there is no, then it gives me more freedom.12:57
benschubertI haven't written that part of the code originally12:57
benschubertbut we have quite a few tests around variables now, and probably a 'show' on fsdk would give a good indication of whether something is breaking12:57
benschubertso yeah, if you manage to optimize that, it woul dbe a great win12:58
valentindbenschubert, The point is not necessarily to optimize. I would like to change a bit the code to allow undefined variables if they are unused in some contexts (junction).12:58
benschubertwhat?12:58
benschubertwhy ?12:58
valentindBecause some include files included from junctions define things that cannot be used in junctions.12:58
valentindAnd if in project.conf there is a variable defined depending on such a variable, then it will fail to flatten.12:59
valentindSo in junction, we should not look at variables we do not use.12:59
benschubertcan't you set a default variable in project.conf?12:59
benschubertThat seems pretty error prone to me12:59
valentindThat would create more errors.13:00
valentindBecause they might be used.13:00
valentindI want it to fail if it is used in incomplete context.13:00
valentindAlso priorities and includes are not always that obvious. If project.conf includes a.yml and junction.bst:b.yml. And then a.yml depends on a variable from junction.bst:b.bst.13:01
benschubertBRB, sorry13:02
valentindIf you define a default value in a.yaml, when you actually merge with the junction, it might just keep that value instead of b.yml.13:02
valentindSo in practice bad default values are not something we want.13:02
valentindbenschubert, Actually there is caching. But that was not obvious to find.13:19
valentindIn flatten: self._expstr_map[key] = expstr13:19
valentindBut it does not cache variables it resolves in the wrong order.13:26
benschubert> f you define a default value in a.yaml, when you actually merge with the junction, it might just keep that value instead of b.yml.13:28
benschubertNo, it won't there is a clear hierarchy of what takes precedent and element takes over project.conf :)13:28
benschubert> But it does not cache variables it resolves in the wrong order.13:28
benschubertNot sure I understand that part?13:28
benschubertvalentind: so if I reword: you'd like variable resolution to be lazy and fail with unresolved dependency _only_ when the variable is used and not before, am I correct?13:29
valentindIf foo depends on bar, and foo is flatten before bar, then it will computer bar twice. Where was if it was evaluated the other way, it would use cache value.13:29
valentindbenschubert, Yes, but I also want to check for all definitions in other cases than junctions.13:30
benschubertvalentind: so, inside an element, if the kind is 'junction', don't bail out on undefined variables, but still keep the current behavior in other cases?13:31
benschubertok I got you now, sorry, it's been a mind twisting day :D13:32
valentindYes,13:32
benschubertvalentind: if I read everything correctly, what we could do is, remove the access to `flat`, provide a `__getitem__` interface on variables, and handle keyerrors there instead of during the `flatten`? And possible make this new behavior optional for only junctions13:39
benschubertsince `subst` is already handling that case, the only other case is in `get_variable()` for the `Element` class13:40
benschubertwould that make sense?13:40
valentindYes, for 1.5, I had to add a method for get_variable. But for the rest it was using subst. Though 1.5 needed a full rewrite.13:41
valentindI think it will be less complex in master.13:41
valentindI just want to make sure cache works, even if we do not call flatten.13:42
benschubertvalentind: please do benchmarks if you stop calling flatten :)13:45
*** tristan has joined #buildstream13:48
traveltissuescan someone please have a look at https://gitlab.com/BuildStream/bst-plugins-experimental/-/merge_requests/11414:31
juergbiWSalmon: fyi: https://gitlab.com/BuildStream/buildstream/-/merge_requests/194414:36
juergbithis isn't a fix for the issue you're seeing but it halves the FindMissingBlobs load for push14:37
WSalmonnice :D14:39
WSalmonthanks juergbi14:40
cphangnice thanks juergbi14:40
juergbithere is still a similar issue in sandboxremote, though, the remote execution client14:40
juergbiit's a bit more complicated there as it has to cater for multiple remotes (pull blobs from artifact cache and push them to RE CAS)14:41
juergbihowever, in the typical case of a unified CAS (or if all needed blobs are in the local cache) we should definitely also be able to optimize away the extra FindMissingBlbos14:41
*** tpollard has quit IRC14:56
*** tpollard has joined #buildstream14:56
valentindbenschubert, Did some benchmarking. The best is actually to not flatten or cache anything. Instead to evaluate on demand. However we can check for missing variables and cycles. But generating the data structures for the variables is overkill.15:50
valentindThere is only for "bst show -f '%{vars}'" where need to calculate all of them.15:51
valentindWith 60 randomly generated variables, I go from ~ 40 seconds to ~ 1 second15:51
valentindWith more my computer cannot cope. 100 variables and I get OOM.15:52
benschubertvalentind: wut? I'm greatly surprised but that looks great, ping me on the MR please15:57
*** jude has quit IRC16:06
*** tlater[m] has quit IRC16:07
*** jjardon[m] has quit IRC16:07
*** abderrahim[m] has quit IRC16:07
*** connorshea[m] has quit IRC16:07
*** Trevio[m] has quit IRC16:07
*** DineshBhattarai[m] has quit IRC16:07
*** pro[m] has quit IRC16:07
*** Demos[m] has quit IRC16:07
*** walterve[m][m] has quit IRC16:07
*** krichter[m] has quit IRC16:07
*** m_22[m] has quit IRC16:07
*** theawless[m] has quit IRC16:07
*** doras has quit IRC16:07
*** kailueke[m] has quit IRC16:07
*** SamThursfield[m] has quit IRC16:07
*** mattiasb has quit IRC16:07
*** dbuch[m] has quit IRC16:07
*** asingh_[m] has quit IRC16:07
*** awacheux[m] has quit IRC16:07
*** skullone[m] has quit IRC16:07
*** cgm[m] has quit IRC16:07
*** reuben640[m] has quit IRC16:07
*** albfan[m] has quit IRC16:07
*** tchaik[m] has quit IRC16:07
*** segfault1[m] has quit IRC16:07
*** dylan-m has quit IRC16:07
*** kailueke[m] has joined #buildstream16:08
*** phildawson_ has joined #buildstream16:15
*** phildawson-ct has quit IRC16:16
*** phildawson_ has quit IRC16:25
*** phildawson has joined #buildstream16:25
*** albfan[m] has joined #buildstream16:33
*** SamThursfield[m] has joined #buildstream16:33
*** theawless[m] has joined #buildstream16:33
*** abderrahim[m] has joined #buildstream16:33
*** tchaik[m] has joined #buildstream16:33
*** segfault1[m] has joined #buildstream16:33
*** tlater[m] has joined #buildstream16:33
*** dbuch[m] has joined #buildstream16:33
*** jjardon[m] has joined #buildstream16:33
*** doras has joined #buildstream16:33
*** mattiasb has joined #buildstream16:33
*** connorshea[m] has joined #buildstream16:33
*** reuben640[m] has joined #buildstream16:33
*** Demos[m] has joined #buildstream16:33
*** asingh_[m] has joined #buildstream16:33
*** Trevio[m] has joined #buildstream16:33
*** dylan-m has joined #buildstream16:33
*** walterve[m][m] has joined #buildstream16:33
*** m_22[m] has joined #buildstream16:33
*** pro[m] has joined #buildstream16:33
*** DineshBhattarai[m] has joined #buildstream16:33
*** skullone[m] has joined #buildstream16:33
*** awacheux[m] has joined #buildstream16:33
*** cgm[m] has joined #buildstream16:33
*** krichter[m] has joined #buildstream16:33
juergbiWSalmon, cphang: I can no longer reproduce the issue with this buildbox-common branch: https://gitlab.com/BuildGrid/buildbox/buildbox-common/-/commits/juerg/grpc-retry16:36
juergbihave to look into a few details before opening a MR for this, but you could already try that if the issue is currently a blocker16:38
juergbiI'd recommend also using buildbox-casd from this branch https://gitlab.com/BuildGrid/buildbox/buildbox-casd/-/merge_requests/188 to avoid unhelpful error messages in case there are still issues16:38
WSalmonif i use the FD images what versions of the rest of buildbox do i want? 0.0.8?16:40
WSalmonmaster16:40
juergbifor the other two buildbox modules (fuse and run-bubblewrap) master is currently identical to 0.0.816:41
juergbii.e., there are currently no compatibility issues between buildstream master and buildbox-* master16:41
*** santix has quit IRC16:50
*** tpollard has quit IRC17:07
*** hasebastian has quit IRC17:48
*** Genesis8267 has joined #buildstream17:53
*** Genesis8267 has quit IRC17:53
*** santi has joined #buildstream18:56
*** santi has quit IRC19:07
*** Caroline2266 has joined #buildstream19:09
*** Caroline2266 has quit IRC19:10
*** Violet8291 has joined #buildstream20:13
*** Violet8291 has quit IRC20:15
*** Julia6672 has joined #buildstream21:02
*** radiofree has quit IRC21:04
*** Julia6672 has quit IRC21:04
*** benschubert has quit IRC21:31
*** Gabriella3593 has joined #buildstream22:02
*** Gabriella3593 has quit IRC22:04
*** cphang has quit IRC22:35
*** phoenix has joined #buildstream22:47
*** phoenix has quit IRC22:56
*** phoenix has joined #buildstream23:13
*** phoenix has quit IRC23:37

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