IRC logs for #buildstream for Sunday, 2020-04-05

*** SweetSense has joined #buildstream01:34
*** SweetSense has quit IRC01:37
*** CandyWendy has joined #buildstream06:46
*** CandyWendy has quit IRC06:49
*** mohan43u has quit IRC08:13
*** mohan43u has joined #buildstream08:14
*** tristan has quit IRC09:16
jjardonmmm, strange buildstream tests seems to run extremely slow with any new Linux distro ^09:31
jjardon(others fail)09:32
*** tristan has joined #buildstream09:40
*** ChanServ sets mode: +o tristan09:48
tristanjuergbi, actually yes, efe5547f1fecc8076d3d769ae5468a1935dac10b adds functionality to refer to a subproject's subproject09:48
* tristan was thinking he might try to add better error reporting around the regular usage09:48
abderrahim[m]jjardon: someone mentioned coverage being broken with python 3.809:56
* tristan recalls this comes back down to the ability to *compare* junction configurations, which cannot be done practically speaking, without a method of comparing *sources* for equality09:56
abderrahim[m]I think that's what's happening here09:57
* tristan re-reads the thread, I seem to recall we had a few theories around this09:57
jjardonabderrahim[m]: mmm, how come the python3 job is ok with current master then?09:59
tristanjjardon, coverage is ignored for 3.809:59
jjardonalso seems is not only slow, several test seems to be failing as well10:00
tristansee tests-python-3.8-buster in .gitlab-ci.yml10:00
jjardonah, that maybe explain things10:00
tristancoverage is however collected for all other python versions, so I'd think it should still report something accurate enough10:00
tristanassuming we dont have python 3.8 specific codepaths10:01
jjardonproblem is that we can not test any modern linux distro atm: https://gitlab.com/BuildStream/buildstream/-/issues/128310:01
abderrahim[m]yup, I'm using `tox -e py38-nocover`10:02
jjardonabderrahim[m]: do you know if it's a problem with python 3.8 itself or how we do the coverage?10:02
abderrahim[m]I think it's the package we use for coverage that's not compatible with 3.810:02
jjardonabderrahim[m]: what package that would be? tox?10:03
* jjardon wants to search for an issue upstream10:03
abderrahim[m]that'd be either coverage or pytest-cov10:03
jjardoncheers10:04
tristanit's hard to tell whether those jobs are hanging or slow... all three get stuck at around the same 3 tests10:04
tristanbut I think there is parallel test processing10:04
tristanSo could it be that one of them hangs around there ? (I do recall a long time ago hanging in test_push_pull(), could that have come back ?)10:05
* jjardon wonders why covergae is pined to 4.4 version10:10
gitlab-br-botjjardon opened MR !1856 (jjardon/update_python_deps->master: Update python dependencies) on buildstream https://gitlab.com/BuildStream/buildstream/-/merge_requests/185610:14
tristanjjardon, as I recall we had trouble with coverage in conjunction with multiprocessing10:20
jjardontristan: yeah, that seems to be fixed with the new 5.0 version of coverage10:20
jjardonhttps://coverage.readthedocs.io/en/coverage-5.0.4/changes.html#changes10:21
tristanThat's worth revisiting then :)10:21
jjardonFixed in version Version 5.0a610:21
jjardontristan: now that you are here, can you take a look to https://gitlab.com/BuildStream/buildstream/-/merge_requests/1853 ? Im a bit worried I had to change a API call to ostree to make the MR not to fail10:26
* tristan takes a look10:31
tristanjjardon, you want to *replace* all previous fedora images with the new fedora 31 ?10:32
jjardonyes10:32
tristanjjardon, would it not make sense to remove only the one which is really end of life ?10:32
tristanare fedora 29 _and_ 30 both end of life ?10:32
jjardonF30 will be very soon10:32
jjardonproblem is: when changing the api call; everything works, even the old debian-9 jobs10:33
tristanyeah10:33
jjardonso I'm a bit confused about that10:33
* tristan recalls looking at this before10:33
* tristan is also confused about this10:33
tristanI recall looking at changes in ostree's gtk-doc statements which generate the introspection bindings10:34
tristanI think something around that changed at some point but not very significantly10:34
tristanMaybe the arguments became more strict10:35
abderrahim[m]the new one should be correct10:35
tristanbut the underlying C API did not break10:35
abderrahim[m]the missing argument is an out parameter10:35
jjardonyeah, the removed argument is a return parameter10:35
tristanFrom memory, I concur with abderrahim[m] that the C API did not change and the GIR only became stricter10:35
abderrahim[m]but we should probably bump the dependency10:35
abderrahim[m]does something check the ostree version?10:36
tristanYes, but only at install time10:36
tristanAnd it appears to be missing :-S10:36
jjardonhttps://lazka.github.io/pgi-docs/#OSTree-1.0/classes/Repo.html#OSTree.Repo.remote_gpg_import10:36
abderrahim[m]ostree is now in plugins-experimental IIRC10:37
tristanOK so...10:37
jjardonthis is for bst-110:37
tristanAhhhh10:37
tristanYes I finally clicked on that point, I'm looking at master10:37
jjardonostree C code didnt changed since 2005 I think, you are rigth10:38
jjardonI've checked that as well10:38
tristanAt least for that function yeah it didn't10:38
abderrahim[m]yeah, it's either the annotation or the version of pygobject10:39
tristanostree has been stable afaict10:39
jjardonok, so It should be safe to merge https://gitlab.com/BuildStream/buildstream/-/merge_requests/1853 then?10:39
jjardonI can keep F31 if we really want to keep it for another month10:40
tristanyou mean F3010:40
jjardonyeah, sorry10:41
abderrahim[m]jjardon: tristan it was fixed in ostree v2019.2-10-gaa5df89910:41
tristanAha !10:41
tristanI was just going to point out that I wish we had that information10:41
tristanjjardon, I think we should explain this in the commit message10:42
tristanHaving "v2019.2-10-gaa5df899" in the commit message might come in handy in the future10:42
abderrahim[m]tristan: btw, once you're done with this I'd like you to take a look at !183510:42
gitlab-br-botMR !1835: WIP: _project.py: resolve options before running the final assertions https://gitlab.com/BuildStream/buildstream/-/merge_requests/183510:42
jjardonok10:42
jjardonabderrahim[m]: was it a fix in the annotation code?10:43
abderrahim[m]yup10:43
tristanabderrahim[m], this allows one to use append/prepend directives and such in the option definitions themselves ?10:44
jjardonok, thanks10:44
* jjardon updates MR10:44
*** phoenix has joined #buildstream10:44
abderrahim[m]tristan: no, in the project.conf10:44
abderrahim[m]for example in `shell:`10:45
abderrahim[m]`host-files`10:45
jjardonok to merge https://gitlab.com/BuildStream/buildstream/-/merge_requests/1853 then?10:45
abderrahim[m]jjardon: I guess the question is does this break with fedora 3010:47
gitlab-br-bottristanvb approved MR !1853 (jjardon/bst-1-fedora-31->bst-1: bst-1: Use current stable fedora 31 for tests) on buildstream https://gitlab.com/BuildStream/buildstream/-/merge_requests/185310:47
abderrahim[m]and how badly10:47
* jjardon will leave f30 there to check10:47
tristanjjardon, but please10:47
tristanjjardon, did you update the commit message itself ?10:47
jjardonyup10:47
tristanOK :)10:48
jjardonnow I wonder; how come has this been working all this time for F31? XD10:48
*** phoenix has quit IRC10:48
abderrahim[m]jjardon: this only happens when using gpg, so it doesn't happen for freedesktop-sdk10:49
tristanabderrahim[m], I see - so conditional statements within project.conf were not working for 'shell' ?10:49
abderrahim[m]yeah, and instead of adding yet another special-case, I thought this is a better general fix10:50
abderrahim[m](for both element/source overrides and shell)10:50
tristanUmmm10:52
tristanabderrahim[m], so basically we now resolve directives on the element/source overrides dictionaries while they are still on the main config dictionary, before separating them10:53
abderrahim[m]yup10:53
tristanYeah that looks right to me :)10:54
*** phoenix has joined #buildstream10:54
* tristan comments on the issue10:54
tristanor MR10:54
abderrahim[m]tristan: feel free to suggest a better commit message10:55
tristanabderrahim[m], and basically this fixes the 'shell' portion of the config because of the timing of _assert_fully_composited() ?10:55
abderrahim[m]exactly10:56
tristanNo need, commit message looks fine11:00
tristanJust made a comment as a matter of my own brain exercise ;-)11:00
tristanIn any case, our tests are very strong in this area11:01
* tristan struggles to figure out what to do with https://mail.gnome.org/archives/buildstream-list/2019-April/msg00021.html11:02
tristanThe code cs-shadow added is great because it allows one to inherit junction configurations from subprojects11:02
tristanBut the problem remains that projects in a dependency graph can disagree on the ref of a common junction, and no warning or error is reported11:03
tristanSo, the declaration of a junction is an explicit statement that it overrides any subproject's declaration of the same junction, however it is unclear that the toplevel project even knows that a subproject also declares this junction11:04
* tristan just talks outloud to see if he's (re)understood the problem correctly, I think I have11:05
cphangtristan mmm I think there should be at least a warning11:06
tristancphang, that's what I'm arguing in the referred thread yes11:06
tristanNobody disagrees, but the work has not been done yet to make that happen11:06
cphanggotcha, thanks :)11:08
tristanjuergbi, points to the possibility of making these fatal errors, but allowing the toplevel (or higher level) junction declaration itself whitelist the override11:08
cphangDo you know what the new url for https://docs.buildstream.build/elements/junction.html#nested-junctions is? That currently gives a 40411:10
tristancphang, it should be reachable from a few places actually... but it's a part of the documentation of the junction element itself11:11
tristancphang, add 'master/' between '...buildstream.build/' and 'elements/...'11:12
tristannow our docs are nicely version specific :)11:12
cphangthanks11:13
juergbitristan: I'm not sure I'm understanding you correctly. BuildStream does not currently allow such disagreements11:13
tristanjuergbi, I'm saying that... if the subproject I have depended on for a while... starts to depend on another subproject I also depend on, I will *inadvertently* override the original project's reference to the newly common junction11:14
juergbior do you mean declaration in top/higher level is not sufficiently explicit?11:14
tristanit's explicit, but it does not necessarily mean that you know what's going on11:14
juergbiah, right11:14
juergbithe override part is implicit in a way11:14
tristanyeah11:14
juergbiI wanted more control in that area almost since we've added junctions11:15
tristanlets do it :)11:15
juergbiI'm not sure what exactly the best way would be11:16
juergbiI've had some thoughts about it but have to try to remember the details11:16
tristanSo maybe the junction declaration itself should list the subproject junctions it overrides explicitly ?11:16
tristanjuergbi, this email you wrote might refresh your memory https://mail.gnome.org/archives/buildstream-list/2019-April/msg00020.html :)11:17
tristanor this one https://mail.gnome.org/archives/buildstream-list/2019-April/msg00016.html11:17
tristananyway that thread entirely was a 20 or 30min read11:17
tristanActually11:18
tristanjuergbi, So now we have a way to make a junction derive from another https://docs.buildstream.build/master/elements/junction.html#targeting-other-junctions11:18
tristanwith 'target'11:18
cphangtristan I think that would be ideal. I'd maybe go further and say that users using junctions must specify it in the top-level project, regardless of whether they are overriding or not.11:18
tristanjuergbi, And if we had such a list that says "This junction overrides the configuration of the following junctions: [...]" ... then the *same* semantic could be used to (A) Inherit a configuration ... and (B) Explicitly use an inherited configuration to override another junction11:19
tristancphang, I'd rather not force the toplevel project to have knowledge of how their sub-project artifacts are composed until we have to11:20
tristanIdeally you depend on a project and it gives you something stable, and how that is implemented is none of your business11:21
tristanBut when it does become your business, I want a big red flashing light telling you :D11:21
juergbiyes, for all other things building elements via a junction is identical to building them directly in that subproject11:22
juergbiso I would like a way to not do this implicit name-based coalescing of junctions11:22
tristancphang, I think a key part of the equation here is to remember that "Users using junctions" do not control the projects they depend on (I.e. not all projects are maintained by the same organization)11:22
juergbihowever, I'm not sure how to balance the flexibility that provides with trying to catch users that accidentally use different versions of a subproject11:26
cphangthat's true, but if I as a maintainer of a top-level project don't know about the implicit dependencies of the subprojects that I'm bringing in, then I consider that to be a bug, rather than a feature. If there is a feature that allows me to override a downstream junction, then that implies that there should be a single source of truth for all the11:26
cphangbuildstream projects that top-level project is consuming.11:26
cphangI should say that implicit dependencies in this context is the buildstream project, rather than any elements contained within that project11:26
gitlab-br-botmarge-bot123 merged MR !1853 (jjardon/bst-1-fedora-31->bst-1: bst-1: Add current stable fedora 31 for tests) on buildstream https://gitlab.com/BuildStream/buildstream/-/merge_requests/185311:26
cphangSo I care about the junctions, and only the junctions11:27
juergbimaybe we could handle it similar to git submodules11:27
cphangI was thinking that it was potentially analogous to that juergbi11:27
juergbirequire the top-level project to explicitly list 'subjunctions' in a junction file11:27
juergbiand if an unlisted subjunction is detected, error out11:27
juergbibut also allow simply listing it without ref to get the ref from the subproject11:28
juergbialternatively you can specify a top-level junction name to override it11:28
cphangI think that sounds sensible juergbi11:29
* tristan stepped out to buy a sandwich but it was closed... reads backlog...11:34
* tristan is on the fence on this one... I *do* consider it a feature11:36
tristanI.e., I consider it a feature that (A) I depend on this runtime for a long time... (B) I can update that junction to that runtime without friction... (C) I really don't want to know the implementation details of that runtime/junction that I use11:37
tristan*unless* there is a potential conflict, I really don't want to have to know, I want upgrades to be frictionless11:37
* tristan has not had experience with git submodules where a sub-submodule is also an adjacent submodule11:38
tristanI think that the subjunctions file would be another interesting approach, I might have that as a configurable warning though11:47
tristanif you set it as fatal, then you are required to at least set the junction11:48
tristanBut then, what configurations would it have ?11:48
tristanjuergbi, cphang... lets say you had a subjunctions file, so for each subjunction you would want to be able to say either (A) Inherit... (B) Redefine the junction here... (C) Override with this other junction... correct ?11:49
tristanAnd another question is; Does this allow us to drop the coalescing of junctions by junction name, even ?11:51
tristanWithout the ability to compare Sources for equality, it seems there can not be any single source of truth for identifying a junction other than it's name11:52
cphangMy question is, how does git handle this?12:10
cphangBecause submodules could come up with this problem as well?12:11
tristanI'm quite sure that with git, you are not forced to have knowledge of sub-submodules12:15
tristanI could be wrong but I doubt it, perhaps you do have the opportunity to override them, and if so; you would be accessing them by project relative subdirectory (to where they are staged)12:15
cphangIndeed, but if there is a conflict in .gitmodules definitions when you allow recursing of submodules, how does git handle it?12:15
tristanI suppose in our case, the name of the junction would be analogous to the subdirectory of a git project12:16
tristanSo with git, you could probably override a sub-submodule to stage an entirely different repository (rather than just a different version), but I'm speculating...12:17
tristanhttps://git-scm.com/docs/gitmodules12:17
* cphang reads12:18
* tristan gives the above a reading12:18
tristanalso :)12:18
tristanInterestingly the .gitmodules file allows specifying the default cloning behavior, while in practice I've never seen that used12:20
tristanmostly people use `git clone --recursive`, or do `git submodules fetch`12:21
cphangGoing to get some lunch, but it's the kind of thing it might be quicker just to run a quick experiment on :)12:25
jjardonah, seems coverage 5.x is not directly compatible for python 3.6 and python 3.7: https://gitlab.com/BuildStream/buildstream/-/jobs/499144958 and https://gitlab.com/BuildStream/buildstream/-/jobs/49914495712:26
* jjardon tries to enable python3.8 and see what happens12:26
tristancphang, looking at https://stackoverflow.com/questions/46352657/modify-url-of-a-nested-submodule-in-git and https://stackoverflow.com/questions/39894103/can-i-override-the-url-of-a-nested-git-submodule-without-forking/48268906 ...12:27
tristanI'm not even sure there is a way for a git project to override the URL (or sha1) of a sub-submodule, without forking the direct submodule first12:28
*** slaf has quit IRC12:45
gitlab-br-botabderrahimk opened (was WIP) MR !1835 (abderrahim/options->master: _project.py: resolve options before running the final assertions) on buildstream https://gitlab.com/BuildStream/buildstream/-/merge_requests/183512:58
gitlab-br-botmarge-bot123 merged MR !1835 (abderrahim/options->master: _project.py: resolve options before running the final assertions) on buildstream https://gitlab.com/BuildStream/buildstream/-/merge_requests/183512:59
*** slaf has joined #buildstream13:01
*** tristan has quit IRC13:27
jjardonmmm, updating to coverage 5.0 makes test fail with python3.8 as well (although only 5 instead 11): https://gitlab.com/BuildStream/buildstream/-/jobs/49917653913:28
*** phoenix has quit IRC13:51
*** tristan has joined #buildstream15:13
*** toscalix has joined #buildstream15:37
*** toscalix has quit IRC16:01
*** toscalix has joined #buildstream16:03
*** LittleTina has joined #buildstream18:17
*** LittleTina has quit IRC18:21
*** phoenix has joined #buildstream19:35
gitlab-br-botabderrahimk opened MR !1857 (abderrahim/options-1->bst-1: [bst-1] _project.py: resolve options before running the final assertions) on buildstream https://gitlab.com/BuildStream/buildstream/-/merge_requests/185719:38
*** phoenix has quit IRC19:39
*** toscalix has quit IRC19:57
*** phoenix has joined #buildstream20:55
*** phoenix has quit IRC23:49
*** narispo has quit IRC23:54
*** narispo has joined #buildstream23:55

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