IRC logs for #buildstream for Thursday, 2017-10-19

*** semanticdesign has quit IRC01:07
*** semanticdesign_ has quit IRC01:07
*** tristan has joined #buildstream06:06
*** jude has joined #buildstream07:45
*** jonathanmaw has joined #buildstream08:34
*** anahuelamo has quit IRC08:44
*** anahuelamo has joined #buildstream08:44
*** anahuelamo has quit IRC08:46
*** anahuelamo has joined #buildstream08:46
*** bochecha has joined #buildstream08:47
*** jude has quit IRC08:58
*** jude has joined #buildstream09:14
gitlab-br-botbuildstream: issue #119 ("Cryptic error when using .bsts with arches") changed state ("opened") https://gitlab.com/BuildStream/buildstream/issues/11909:15
*** ssam2 has joined #buildstream09:16
*** jude has quit IRC09:21
*** jude has joined #buildstream09:21
*** tlater has joined #buildstream09:24
gitlab-br-botpush on buildstream@master (by Tristan Van Berkom): 1 commit (last: _yaml.py: Fixes #119 - Custom implementation of ChainMap) https://gitlab.com/BuildStream/buildstream/commit/6f820111052a85b1051bb7bf3aed5475a0470e2109:25
gitlab-br-botbuildstream: issue #119 ("Cryptic error when using .bsts with arches") changed state ("closed") https://gitlab.com/BuildStream/buildstream/issues/11909:25
tristanjonathanmaw, you might be interested to know what that error was; it ended up being much more complicated than I thought :)09:25
jonathanmawtristan: oh, what was it?09:26
tristanthe link above tells: https://gitlab.com/BuildStream/buildstream/commit/6f820111052a85b1051bb7bf3aed5475a0470e2109:26
tristanThat patch could be a bit neater and cleaner; and should probably derive from MutableMapping, and do the recursive copying bits below on it's own09:28
tristanBut meh, it does the trick for now, and needed a quick fix09:28
tristanfeel free to improve on it if anyone likes :D09:28
tristanmutable copy-on-write dictionaries are pretty neat :)09:28
*** tiagogomes has quit IRC09:34
*** tiagogomes has joined #buildstream09:34
gitlab-br-botpush on buildstream@74-prevent-artifacts-from-containing-files-in-buildstream-build (by Tristan Maat): 1 commit (last: Add warnings when staging to /buildstream/build) https://gitlab.com/BuildStream/buildstream/commit/266aa6032d507bc97c1bf1da5fc3148f0c69198e09:36
gitlab-br-botbuildstream: merge request (74-prevent-artifacts-from-containing-files-in-buildstream-build->master: Add warnings when staging to /buildstream/build) #93 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/9309:36
*** tiagogomes has quit IRC09:38
*** tiagogomes has joined #buildstream09:39
*** tiagogomes has quit IRC09:42
*** tiagogomes has joined #buildstream09:42
*** tiagogomes has quit IRC09:44
*** tiagogomes has joined #buildstream09:45
*** tiagogomes has quit IRC09:46
*** tiagogomes has joined #buildstream09:46
*** tiagogomes has quit IRC09:49
*** tiagogomes has joined #buildstream09:49
tlatertristan: Would you mind having a look at !106 (the ctrl-c one) again? I'd really like to get that one out of the way.09:49
*** anahuelamo has quit IRC09:55
*** anahuelamo has joined #buildstream09:55
*** givascu has joined #buildstream10:04
*** tiagogomes has quit IRC10:07
*** tiagogomes has joined #buildstream10:07
*** jude has quit IRC10:07
*** jude has joined #buildstream10:07
*** tiagogomes_ has joined #buildstream10:11
*** tiagogomes has left #buildstream10:11
*** jonathanmaw has quit IRC10:11
*** jonathanmaw has joined #buildstream10:11
*** laurenceurhegyi has joined #buildstream10:13
tristantlater, yeah...10:24
tristantlater, me too, but... huge loop ?10:24
tristanugh...10:24
tlatertristan: I really have no idea how to work around that otherwise, since sometimes C-c shouldn't make us stop waiting10:25
tlaterI can factor it out into another function10:25
tlaterBut it will still be a huge loop :/10:25
tristanalso, what's with the addition of artifactcache.py:fetch_remote_refs() ?10:26
tlaterAh, that seems to be a regression of some sort; when artifact caches are configured the linux platform can't run because buildstream looks for that function10:27
tlaterIt's in a separate commit, though I can set up an independent issue for that.10:27
tristanI see, I always look at the "changes" and missed that10:27
tristanif it's needed and in a separate commit, no need to split it out10:27
tristantlater, why is process.communicate() removed ?10:28
tlatertristan: I thought the idea was to use os.waitpid for that now instead?10:28
tristantlater, I thought we wanted to cause least disruption to the subprocess module as possible, and only afterwards step in and check the exit status with waitpid() ?10:29
tristanAnd wondered if it's indeed plausible, i.e. in that context do we still have the exit status around ?10:30
tlaterYeah, I assumed we wouldn't, but I never actually tried10:30
* tlater will do that10:30
tristancurrently subprocess I believe makes a reasonable assumption, but at the same time, I dont normally see C code making that assumption10:31
tristanI.e. that a posix compliant system will report a wrapped negative return code (turning -1 into 127)10:32
tristanand reserving < 0 returns for crashes10:32
tristantlater, that would explain why < 0 was perhaps reasonable10:32
tristanand if it's that much less code, maybe we should run with that and a detailed comment10:32
*** bochecha_ has joined #buildstream10:33
tlatertristan: Unfortunately I think the loop is actually required for either approach10:33
*** adds68 has quit IRC10:33
*** adds68 has joined #buildstream10:33
tristanAhhh I see10:33
tlaterThere would be one less 'try' for the bwrap process, perhaps10:33
tristantlater, so basically, the loop handles the case that if there is a keyboard interrupt, it might not mean the end of the process ?10:34
tlaterYep10:34
tristanI.e. bash handling it10:34
tristanOk10:34
tristanThat makes sense to me now10:34
tristanhowever, I suppose in that case, communicate has to go ?10:34
*** bochecha has quit IRC10:35
*** bochecha_ is now known as bochecha10:35
tlatertristan: It could be either, the loop could be around communicate instead.10:35
tlaterIf os.waitpid still gets the status *after* the process ends, that is10:35
tristantlater, because communicate will block; are we allowed to re-enter communicate ?10:35
tlatertristan: communicate is also interrupted by a KeyboardInterrupt, so I assume yes10:36
tristanso confusing10:36
tristanOK - so os.waitpid() blocks indefinitely; and this does not interfere with stdin/stdout10:37
tristani.e. not using communicate()10:37
tristantlater, lets close the book on this with the patch as is, seeing I now understand why the loop is needed10:37
tristanIf10:38
tristantlater, if only we are sure about safeness of omitting communicate10:38
tlatertristan: I believe it is - although I haven't tried it in non-interactive mode10:39
tristantlater, you might test this with say... echo "foo" | bst shell element.bst -- cat10:39
tristanor such10:39
tlatertristan: There were some comments about signal handling on stackoverflow about using os.waitpid10:40
tristanAny links ?10:40
tristanOr just a random vague thing I dont really want to go searching for ?10:41
tlaterProbably not worth searching for, I don't have a link anymore :/10:41
ssam2seems i have broken the docs build10:41
ssam2https://gitlab.com/BuildStream/buildstream/-/jobs/3675217910:41
tlatertristan: Cat receives 'foo', is that the expected behaviour?10:44
tristantlater, in interactive shells yeah we want stdio/stdout connected to invoking terminal10:46
* tlater wonders *why* it is connected, but hey10:46
tristantlater, I was wondering if communicate() was needed, seeing as it is documented to interfere with stdio in some way10:46
*** tiagogomes has joined #buildstream10:47
tristanin previous s/stdio/stdin10:47
tristantlater, naturally it is inherited, we pass it explicitly sys.stdin/sys.stdout etc10:47
*** tiagogomes_ has quit IRC10:47
tristantlater, and we share the session - in a scheduled task context, stdin is devnull I think, and stdout/stderr is the log file10:47
tlatertristan: Is it ever a pipe?10:48
tristantlater, yes, when subprocess special macros are used10:48
tlaterIt's possible that communicate() needs to interfere in that case.10:48
tristanbut afaics, not with the sandbox10:49
tristanMaybe communicate is *only* for that purpose10:49
tristantlater, ok so... can you just; build something and ensure that it's log file has something in it ?10:49
tristansomething that comes from the sandbox that is, not our custom things we add to that10:50
tlatertristan: Sure. I'd also like to try pausing a build just to make sure signal handling still works10:50
tristanshould be fine, but yes please go ahead :)10:50
tristanssam2, I dont know, that looks fraking weird :-/10:53
ssam2yeah, good old pip10:53
ssam2I guess it's the `-e` flag10:53
ssam2which we don't need right? that's only useful when hacking locally10:53
ssam2yeah, it's "editable" mode10:54
tristanssam2, anyway we're not ensuring that for docs anyway, so we dont need the --no-index ?10:54
tristanwe're already downloading stuff10:54
ssam2sure10:54
ssam2i'll remove both10:54
tristanAnd it's already been ensured to be provided by previous tests (i.e. it wont trigger downloads without --no-index anyway)10:54
tristanthe sphinx stuff will of course download10:55
tristanbut not pip install .10:55
tlatertristan: Heh, looking at the logs, it seems that the exit code isn't preserved this way...10:58
gitlab-br-botpush on buildstream@sam/fix-docs (by Sam Thursfield): 1 commit (last: .gitlab-ci.yml: Fix documentation build) https://gitlab.com/BuildStream/buildstream/commit/2d5b24d8fc3c2aab5520f48100221b5a45c6e7a911:09
gitlab-br-botbuildstream: merge request (sam/fix-docs->master: .gitlab-ci.yml: Fix documentation build) #116 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/11611:09
gitlab-br-botpush on buildstream@sam/fix-docs (by Sam Thursfield): 1 commit (last: .gitlab-ci.yml: Fix documentation build) https://gitlab.com/BuildStream/buildstream/commit/66458761fbd3791065dd37305bd385f3eeee5c1e11:11
gitlab-br-botbuildstream: merge request (sam/fix-docs->master: .gitlab-ci.yml: Fix documentation build) #116 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/11611:11
*** adds68 has quit IRC11:16
*** adds68 has joined #buildstream11:16
*** laurenceurhegyi is now known as ltu11:21
jonathanmawO frabjous day, calloh callay! I've figured out what was going wrong with trying to generate sphinx documentation - I wasn't seeing my changes get through to the documentation because my PYTHONPATH was wrong, so it fell back on the old, installed version12:01
*** xjuan has joined #buildstream12:48
gitlab-br-botpush on buildstream@98-ctrl-c-doesn-t-properly-kill-a-non-interactive-shell (by Tristan Maat): 4 commits (last: .gitlab-ci.yml: Issue #100 - Avoid installing setup.py test_requires) https://gitlab.com/BuildStream/buildstream/commit/a243a3335b7c113a49b1d5f0daa2c11efe2299bd13:04
gitlab-br-botbuildstream: merge request (98-ctrl-c-doesn-t-properly-kill-a-non-interactive-shell->master: Fix keyboardinterrupts caused by subprocesses) #106 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/10613:04
tristantlater, gah, sorry I totally dropped off there and missed this13:26
tlatertristan: nw, I've already found a fix for it13:26
tlaterWriting to log files also seems to work fine13:26
tristantlater, ok lets run with this13:27
tristanIt's damn hard problem space, and it's possible that observing subprocess communicate 'returncode' for -1 is "correct" for posix compliant platforms13:28
tristanbut eh; WIFEXITED and WEXITSTATUS seems to me a bit safer13:29
* tlater disliked the python documentation calling the WIFEXITSTATUS 'meaningless'13:30
tlaterAssuming it could just end up as 0, and then cause issues, I figured it would be safer to return a known falsey value13:30
gitlab-br-botpush on buildstream@remove-arches (by Tristan Van Berkom): 13 commits (last: .gitlab-ci.yml: Use `pip3 install --no-index` when installing BuildStream) https://gitlab.com/BuildStream/buildstream/commit/fd91491a7619964e01d1fc8dede1c07cb68a433f13:31
gitlab-br-botbuildstream: issue #120 ("Remove 'arches' conditionals") changed state ("opened") https://gitlab.com/BuildStream/buildstream/issues/12013:43
gitlab-br-botbuildstream: issue #121 ("Remove pre-/post- command prefix support") changed state ("opened") https://gitlab.com/BuildStream/buildstream/issues/12113:45
gitlab-br-botbuildstream: merge request (remove-arches->master: WIP: Remove arches) #117 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/11713:46
gitlab-br-botbuildstream: merge request (98-ctrl-c-doesn-t-properly-kill-a-non-interactive-shell->master: Fix keyboardinterrupts caused by subprocesses) #106 changed state ("merged"): https://gitlab.com/BuildStream/buildstream/merge_requests/10613:52
gitlab-br-botbuildstream: Tristan Van Berkom deleted branch 98-ctrl-c-doesn-t-properly-kill-a-non-interactive-shell13:52
gitlab-br-botpush on buildstream@master (by Tristan Van Berkom): 2 commits (last: Fix keyboardinterrupts caused by subprocesses) https://gitlab.com/BuildStream/buildstream/commit/23c1e284ea748942e7067454aae2b279a1ab0e6813:52
tlater\o/13:54
gitlab-br-botpush on buildstream@74-prevent-artifacts-from-containing-files-in-buildstream-build (by Tristan Van Berkom): 5 commits (last: .gitlab-ci.yml: Issue #100 - Avoid installing setup.py test_requires) https://gitlab.com/BuildStream/buildstream/commit/a243a3335b7c113a49b1d5f0daa2c11efe2299bd13:55
gitlab-br-botbuildstream: merge request (74-prevent-artifacts-from-containing-files-in-buildstream-build->master: Add warnings when staging to /buildstream/build) #93 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/9313:55
tristantlater, ok so I was just about to merge the other... but you should look13:55
tristantlater, not sure how to link to it, but regarding MR 93... element.py has a completely useless diff13:56
tristanremoves an empty line, imports pathlib (wat?!) and imports SourceError... and that's it13:57
tlaterAh, yeah, presumably that's leftover from removing the SourceError dance13:57
tristansource.py... changes the line where tempfile is imported ?13:57
tristanweird13:57
* tlater missed these changes13:58
tristantlater, in case you were not aware... introducing _only_ diffs that are strictly related to what is being done, is very much a goal13:58
tristanI mean really, you might easily not be aware :)13:58
tristanThe reason for this, is to increase the value of `git annotate`13:58
tristanand `git blame`13:59
tristanover time13:59
tlaterI'll keep better track of that, I tend to do so but didn't prioritize it - wasn't aware there was an actual reason13:59
tristantlater, good, then I'm telling you something useful :)14:00
tlater:)14:00
tristantlater, for instance; look at a line of code you're not sure what the hell it's doing there - and look at the file with `git annotate`14:00
tristanthen, you should be always able to trace back line-of-code -> commit-which-introduces -> Ideally linked bug report from commit message14:01
tristanAnd get the whole story behind any line of code14:01
tristanWhich reminds me, we're going to have to start linking issue numbers from commit messages14:02
tristanIdeally subject line runs as: Topic: Issue #number - Short Description14:03
tristanWe've been working around that and tiptoeing because of that gitlab issue that annoyingly goes and closes stuff14:03
tristanBut lets change that, it's not doing us good, lets try to refer to issues as "Issue #number"14:04
tristanand only "Fixes #number" or "Closes #number", if it's like a really damn obvious thing14:04
tristanbut anyway, point is to not be *too* strict, but keep our provenance in tact14:05
* tristan doesnt care *that* much about subject line format14:05
tristanBut, I should start rejecting patches based on failing to link issue number from commit (and also making sure I practice that as well)14:06
gitlab-br-botpush on buildstream@74-prevent-artifacts-from-containing-files-in-buildstream-build (by Tristan Maat): 1 commit (last: Add warnings when staging to /buildstream/build) https://gitlab.com/BuildStream/buildstream/commit/10847a66dc0748696829d5fd18ad17043c2c687814:07
gitlab-br-botbuildstream: merge request (74-prevent-artifacts-from-containing-files-in-buildstream-build->master: Add warnings when staging to /buildstream/build) #93 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/9314:07
ssam2something going quite wrong with the integration_unix test in gitlab CI ...14:07
ssam2e.g. https://gitlab.com/BuildStream/buildstream/-/jobs/3684316714:07
ssam2it just times out after an hour14:07
ssam2but it looked like it had finished so... weird14:08
tlaterHumm... I think it just happened to time out while pushing the cache14:08
* tlater has had that issue occasionally14:08
tristanyeah that sounds likely14:08
ssam2seems the timeout can be increased14:08
tristanThat stuff needs optimization14:08
ssam2i'll try doubling it for now14:08
tlatertristan: We could start using "Does unspeakable things to #number" in protest14:08
tristanssam2, can it, with gitlab.com runners ?14:08
ssam2yeah14:09
ssam2https://gitlab.com/BuildStream/buildstream/settings/ci_cd14:09
tristancool14:09
tristanlets increase that number14:09
ssam2i've set it to 120 (was 60)14:09
tristangood14:09
tristanstill we need to optimized that... some of it is still using that old crack I cooked up14:09
tlater\o/ No more unnecessary timeouts :)14:09
tristanbefore I understood how the layout of a runtime worked14:10
tristanthat and, we'll be able to leverage the tiny runtimes too14:10
ssam2yeah... although still a few blockers to Baserock producing those14:12
ssam2mainly the Baserock CI is still broken due to cache getting full14:12
tristanSo - I didnt get around to converting baserock from 'arches'14:13
tristanI did it for GNOME conversions14:13
tristanAnd, I really need to focus right now on GNOME, time is tight14:14
tristanCan someone else take care of baserock ? the conversion related bits should be ridiculously easy to change, at least for arches14:14
tristanFor the pre-/post- stuff, might need a bit of work in the script itself14:14
tristanjust CI for baserock being broken is annoying, but we should not be blocking on this I think, it's good time for brute force14:15
ssam2i can put it on my list; it will be low priority though14:15
tristansigh14:15
ssam2do you need it urgently for something ?14:16
tristanOk - I dont know but... those baserockers are not fixing their CI - and it feels a bit wrong to block our progress... people who dont care ?14:16
tristanssam2, It's a blocker for us to remove arches support, currently14:16
tristanwhich is a blocker for 1.014:16
gitlab-br-botpush on buildstream@102-run-ci-as-non-root-user (by Tristan Maat): 3 commits (last: .gitlab-ci.yml: Issue #100 - Avoid installing setup.py test_requires) https://gitlab.com/BuildStream/buildstream/commit/a243a3335b7c113a49b1d5f0daa2c11efe2299bd14:16
tristanSo, maybe we should just not block ?14:16
gitlab-br-botbuildstream: merge request (102-run-ci-as-non-root-user->master: Resolve "Run CI as non-root user") #104 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/10414:16
ssam2feel free to break the BuildStream conversions of Baserock definitions14:17
ssam2I never declared them to be anything more than a proof of concept14:17
ssam2the minimal runtime part is the only interesting thing that might come out of it... but that could equally be done as part of adds68's project14:17
tristanssam2, myeah... *you* did not... I made them work a long time ago, and ensuring that worked is kind of very important to our project14:17
ssam2i think more people cared about baserock back then14:18
tristanssam2, there are projects who couldnt care less about baserock, but need the YBD conversions to work14:19
tristanand baserock is the only place to ensure that works14:19
ssam2hmm, true14:19
tristanafaik14:19
ssam2ok, well i imagine ltu can find someone to hand that task off to14:20
* tristan hopes :)14:20
ssam2i mean, i'm happy to do it, just still wrestling feature proposals which i imagine to be more important14:21
tristanto be honest; *I'm* not personally in a hurry to roll out "1.0"14:21
gitlab-br-botpush on buildstream@102-run-ci-as-non-root-user (by Tristan Maat): 1 commit (last: .gitlab-ci.yml: Drop root privileges for some tests) https://gitlab.com/BuildStream/buildstream/commit/aab260eec99d7467266e0288aaba995bdb58e27414:21
tristanbut it would be nice to have it out soon, and also to drop the deprecated stuff soon14:21
gitlab-br-botbuildstream: merge request (102-run-ci-as-non-root-user->master: Resolve "Run CI as non-root user") #104 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/10414:21
gitlab-br-botpush on buildstream@102-run-ci-as-non-root-user (by Tristan Maat): 1 commit (last: .gitlab-ci.yml: Drop root privileges for some tests) https://gitlab.com/BuildStream/buildstream/commit/bdd507f231e4f4b584d16e9275ff2c5bace443b914:26
gitlab-br-botbuildstream: merge request (102-run-ci-as-non-root-user->master: Resolve "Run CI as non-root user") #104 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/10414:26
gitlab-br-botpush on buildstream@remove-pre-post-commands (by Tristan Van Berkom): 3 commits (last: buildelement.py: Issue #121 - Remove traces of pre-/post- commands) https://gitlab.com/BuildStream/buildstream/commit/604c1f76a22da9e9b144eba412028fdfae1c9e8514:26
gitlab-br-botpush on buildstream@remove-pre-post-commands (by Tristan Van Berkom): 5 commits (last: Fix keyboardinterrupts caused by subprocesses) https://gitlab.com/BuildStream/buildstream/commit/23c1e284ea748942e7067454aae2b279a1ab0e6814:27
gitlab-br-botbuildstream: merge request (remove-pre-post-commands->master: WIP: Remove pre post commands) #118 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/11814:28
gitlab-br-botpush on buildstream@remove-arches (by Tristan Van Berkom): 9 commits (last: Fix keyboardinterrupts caused by subprocesses) https://gitlab.com/BuildStream/buildstream/commit/23c1e284ea748942e7067454aae2b279a1ab0e6814:28
gitlab-br-botbuildstream: merge request (remove-arches->master: WIP: Remove arches) #117 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/11714:29
tristanOk, ducks all in a row14:29
tristanperfectly aligned for this golf club :D14:29
* tlater apologizes, I'm quite literally testing the CI and doesn't want to install a local copy of gitlab.14:30
tristanOh ?14:30
tristanI dont get it...14:30
tristanbut, leaving closing coffee shop right now14:30
tristantlater, I marked the latest MR from you to merge after CI14:31
tlater\o/14:31
tristanAh I guess you are talking about running in docker as regular user14:31
tlaterYup14:31
tristanmhm, I think some people around you might know about installing gitlab14:31
tristanmight help14:31
ssam2you don't need to install gitlab, just docker14:31
tristannot sure, also might be a lot of stuff14:31
tlaterssam2: I think this is gitlab-runner specific14:32
tristanI'll try to see if I cant find more important stuff for you too14:32
* tristan is sure there is a ton of stuff to do14:32
tlater\o/14:32
ssam2tlater, ah ok14:32
tlaterEither way, o/ tristan14:32
ssam2or perhaps, specific to the gitlab CI shared runners?14:33
tlaterssam2: Unlikely, but there's a chance I suppose.14:33
ssam2note that you can attach custom runners to gitlab.com, so at worst you'd have to set up your own runner14:33
ssam2which is not so hard: https://docs.gitlab.com/runner/14:34
tlaterI've done it before, I'm just not sure it's worth it14:34
ssam2you might be right :-)14:34
tlaterDoesn't bring me much closer to solving the issue, and takes an hour or two14:34
tlaterAlthough spamming #buildstream with commits isn't neat :/14:34
ssam2you could fork a personal buildstream repo and push them there ?14:35
tlaterAh, see, that's a solution :)14:35
tlaterta ssam214:35
*** tristan has quit IRC14:35
*** tristan has joined #buildstream14:37
ssam2tristan, any thoughts on allowing checkout of artifacts by cache key ?14:40
ssam2its a feature request i have on my list, seems fairly unobtrusive and easy to implement14:40
tristanssam2, So we have to spec that out and make an issue I think14:40
tristanssam2, but I feel like it's related to something else, which is a bit deeper14:41
ssam2right. i'm not entire sure what the use case is for it14:41
tristanthats also a point14:41
tristanBut14:41
tristanssam2, maybe we need overall more thought on this14:42
ssam2that's what i'm doing, FWIW14:42
tristanssam2, one of the things, which people have recently disagreed with me about; and I should lend credibility to...14:42
ssam2trying to think provenance from the ground up and get some actual use cases together14:42
tristanis that I have never considered cache key stability to be a goal14:42
ssam2right14:43
tristanHowever, it's clear that in *any* case, cache keys remain stable for a given stable release14:43
tristanbecause they can only break with features14:43
ssam2i feel they should be an implementation detail. i also feel they should remain stable whenever possible though just to avoid rebuilds14:43
tristanThe main use case I can see of checkout by cache key, is to allow buildstream to still work for checkout out artifacts which it no longer understands the cache key of14:44
gitlab-br-botpush on buildstream@master (by Tristan Van Berkom): 1 commit (last: Add warnings when staging to /buildstream/build) https://gitlab.com/BuildStream/buildstream/commit/10847a66dc0748696829d5fd18ad17043c2c687814:44
ssam2i hadn't considered that case14:44
gitlab-br-botbuildstream: issue #74 ("Prevent artifacts from containing files in `/buildstream/build`") changed state ("closed") https://gitlab.com/BuildStream/buildstream/issues/7414:44
gitlab-br-botbuildstream: merge request (74-prevent-artifacts-from-containing-files-in-buildstream-build->master: Add warnings when staging to /buildstream/build) #93 changed state ("merged"): https://gitlab.com/BuildStream/buildstream/merge_requests/9314:44
ssam2buildstream should be able to rebuild the artifact with the new cache key, though14:45
tristanssam2, it also implies, that artifacts should encode the cache keys of their dependencies; and we should be internally changing some logic - so that we can walk the cache keys to stage and check something out14:45
ssam2so at best its an optimization14:45
tristanWell, it depends on what cache keys and artifacts eventually become really14:45
tristanIf it ends up being a store of sorts, which seems desirable by some, then it's surely important14:46
tristanWhether "same cache key can be reproduced in 10 years with bleeding edge buildstream" is in any way important, I'm really unsure of14:46
tristanThere should be other ways to assert reproducibility of builds from the exact same buildstream project14:47
tristanthan looking at keys and thinking they are important14:47
tristanSo, this probably needs some additional real thought before going anywhere, I guess14:47
tristanssam2, along the same lines, if we want cache keys to become *even more stable*, then we might consider splitting them - so that there is a portion that the user sees that is more stable than the full key14:52
tristani.e. parts of the cache key which relate to extensions of the artifact format (like relying on a manifest being encoded as metadata), effects real cache key - meh I dont know if I like this line of thinking anyway14:52
ssam2seems a bit awkward14:53
tristanyeah, thats in response to a user oriented argument that "users want to see the same cache key and think that that means reproducible"14:53
tristanSo, I dont really like that idea either14:53
persiaI don't think "reproducible" needs to mean "sees the same cache key", but it would be nice if an update that happened several years later could reuse previously built artifacts, to reduce integration testing time.14:54
persiaThat said, how it can know these artifacts are safe to use becomes an interesting question.14:54
gitlab-br-botpush on buildstream@102-run-ci-as-non-root-user (by Tristan Maat): 3 commits (last: Fix keyboardinterrupts caused by subprocesses) https://gitlab.com/BuildStream/buildstream/commit/23c1e284ea748942e7067454aae2b279a1ab0e6814:55
gitlab-br-botbuildstream: merge request (102-run-ci-as-non-root-user->master: Resolve "Run CI as non-root user") #104 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/10414:55
tlaterGah, wrong remote14:55
tristanpersia, we can never know, but built in crypto as a first class citizen might just do it14:55
tristanpersia, I mean; without that; we just have to assume that what was cached under that key, was actually created with buildstream and arrives safely at the destination, and no mitm occured14:56
persiatristan: I'm willing to presume trusted curation of the server and uploads that are key authenticated, encrypted (with checksum), and logged is sufficient.  ssh transport gives most of that.  I'd be happier with more explicit certification, but that doesn't solve the "find an artifact that was produced by this element in this context" issue.14:59
persias/presume trusted/presume that trusted/14:59
tristanno it doesnt15:00
tristanpersia, the question rather will be: "Is that really an issue"15:01
persiaHrm?  If it is interesting to reuse artifacts previoulsy generated, where the span between generation and update is long, then it is important to be able to determine whether the server has any such artifacts.15:05
persiaI think it would be nice if an update that happened several years later could reuse previously built artifacts.  If this is to be supported, it becomes necessary to be able to determine if those artifacts are on the server.15:05
tristanIt is interesting to reuse artifacts as much as possible15:06
persiaWhether anyone certified the artifacts or not is entirely orthogonal to the issue I am raising.15:06
tristanHowever it is uninteresting to bind the codebase to forever use the same keys15:06
persiaYes.15:06
tristanAlso, it will be impossible later, when buildstream evolves with new requirements on artifact data, to use old artifacts15:06
tristanSo, it is simply a matter of expiration, and desiring to keep that low15:07
persiaOne potential way to address it is to have key generation be versioned, such that the codebase can have several key generation algorithms, always posting with the current version, but when reviewing old artifacts, comprehending other algorithms may have been in use.15:07
tristanYes, it's desirable to keep that expiration *low*15:07
tristanBut that is a huge difference from "stable"15:07
tristanpersia, Yes, I hate that idea with a passion15:07
tristanpersia, please never say it again :D15:07
persiaHow else would it be possible to determine if a server has a decade old artifact?15:08
*** jude has quit IRC15:08
tristanAh I read half way and stopped sorry, you are just saying to raise some assertion ?15:08
tristanOh no15:08
tristanYou are adding the evil "comprehending other algorithms may have been in use" bit to it to15:08
tristan*too15:08
tristanpersia, I really think that is entirely irrational15:09
persiaSo, I don't believe it possible to make a forward-looking statement that the algorithm won't change.15:09
tristanpossible, and irrational15:09
persiaAs a result, if there is any interest in supporting ancient artifacts, there needs to be some way to determine whether a given artifact was produced by a given project state.15:09
persiaHeh, yes, I don't believe it sane to make such a forward-looking statement :)15:10
tristanpersia, supporting ancient artifacts for us can mean "Ability to check one out, recursively, from the artifact cache"15:10
tristanAnd it can stop right there.15:10
persiaExpand on that?15:10
tristanI mean, we can easily run `bst pull element:cache-key`15:11
tristanand `bst checkout element:cache-key`15:11
tristanfor an artifact built 10 years ago15:11
tristanThat only requires we can lookup artifacts and dependencies recursively, by their key15:11
persiaWhere "cache-key" in those examples is the actual key?15:11
persiaHow do I determine that key?15:12
persia(using BuildStream 17.38)15:12
tristanWhere cache-key in those is the actual key that it was built with15:12
tristanThere is absolutely no reason you have to determine what that key is15:12
tristanYou have save it from a build you deployed 10 years ago15:12
tristan*saved15:12
tristanAnd now you want to check it out again and look at it, no worry15:12
persiaOK.  Once I check those out, will buildstream use them when generating a new image?15:13
tristanNo way :)15:13
tristanYou can still reuse the image deployment artifact you used 10 years ago, though15:14
ltuok, reading scroll-back, so let me check i understand the task correctly here: update the BaseRock defs to bst conversion, so that it converts from arches, and then we can remove arches support from BuildStream.15:14
tristanIf you want to keep it in the store for later retrieval15:14
tristanltu, that and pre-/post- commands15:14
persiaAnd BuildStream 17.38 will consume them when they were built with 1.2?15:14
tristanltu, issue #120 and #12115:15
tristanpersia, it can be able to pull them and check them out15:15
tristanin that sense of "consuming"15:15
tristanIt can help you get the data you want from the distant artifact store, onto your harddisk15:16
ltutristan, ok15:16
persiatristan: That doesn't help my use case.15:17
tristanpersia, I posit that it's not really a use case15:17
tristanand that is really worth some thought15:18
persiaI have a system that takes 3 days to build (don't ask, annoying).  I want to update it to use the newly released utility library because of a zero-day exploit.  I don't have time to rebuild everything.15:18
persiaHow isn't it a use case?15:18
persiaI'm willing to narrow it, so that I only care about being able to upgrade BuildStream without having to rebuild my entire system.15:18
tristanOk, you have the build log of what you built it with last15:18
tristanSo use the buildstream version you used then15:18
persiaExcept that is ancient, and doesn't run on my current system, because the OS it was built against stopped existing.15:19
persiaEssentially, if I have to use old BuildStream to do it, I will never upgrade.15:19
persiaAnd if I never upgrade, then I'm behind, and my managers will tell me to switch to a differnt build system.15:20
tristanOk, then whenever you upgrade buildstream to a new stable release line (minor point changed), make sure you have a recent build right away15:20
tristanif you want to use recent buildstream and have cached artifacts15:20
persiaIn some fields, that requires months of validation for regulatory reasons, and costs insane amounts of money.  Can I do it a different way?15:20
persiaOr, is there a way to prove the results are identical computationally, so I don't have to go through revalidation?15:21
*** semanticdesign_ has joined #buildstream15:22
*** semanticdesign has joined #buildstream15:22
tristanpersia, I am quite certain that any attempt to continue supporting "old cache key algorithms" (which, btw, are declared on a *per element* basis, there is no ONE artifact version) - is ludicris15:22
tristanProbably even, with the correct spelling of ludicris15:22
*** jude has joined #buildstream15:22
persiaYou keep saying that, but I'd prefer you helped me solve my problem.15:22
persiaI don't know if the solution requires features you hate, but if it doesn't, I'd like to find that method, or I'll keep wanting the feature you hate.15:23
tristanpersia, ok - achieve bit-for-bit reproducibility on the files portion of your artifacts, then.15:23
tristanAvoid regulatory validation of what you can assert is exactly the same15:23
persiaI'm willing to assume that either I can generate reproducible builds or this is impossible.15:23
tristanThe world is pretty close to reproducible builds as it stands I think15:24
tristanSo it shouldnt be that far out15:24
tristanto achieve15:24
persiaSo, given different cache keys (where I know both from logs), I would be able to extract some form of the artifact that was identical for the comparison?15:24
tristanThe files15:24
ssam2another possibility for this is to have a tool outside buildstream that 'migrates' your existing artifacts to use the new cache keys15:24
tristanI.e. the actual content is what you care about, not the build logs, or the metadata that buildstream wants to programatically read15:25
persiaThat doesn't work, because different filesystems can cause a set of files to differ even if the file content remains identical.15:25
ssam2basically knows both cache key algorithms, looks for artifacts under algorithm 1, and commits them into the cache under algorithm 215:25
persiassam2: That would solve my use case, yes.  When I upgrade, I would run the tool against the server.15:25
tristanpersia, nah, that can certainly be worked around15:25
persiatristan: How?15:25
tristanpersia, export to tarball and compare that, for instance15:25
tristanexport to tarball is not heavy duty really, and we probably need that functionality at least internally to communicate with fallback platform clients15:26
tristanpersia, that is basically by the same logic that you can safely GPG sign the content, given that buildstream at least knows what it is *supposed* to be15:27
tristaneven if your FS doesnt support it, it can be verified in some way15:27
tristan(i.e. we're talking permissions and extended attribute support, etc)15:27
* persia knows of 4 different tar algorithms, so hopes we can be more specific15:28
persiatristan: Would ssam2's solution work for you?  One-time migration tools for each algorithm change?15:29
gitlab-br-botpush on buildstream@102-run-ci-as-non-root-user (by Tristan Maat): 1 commit (last: .gitlab-ci.yml: Drop root privileges for some tests) https://gitlab.com/BuildStream/buildstream/commit/8901330663390c5295e95b1a162bfbb7220bf6df15:29
gitlab-br-botbuildstream: merge request (102-run-ci-as-non-root-user->master: Resolve "Run CI as non-root user") #104 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/10415:29
tristanpersia, if we generate the tar using buildstream / python, different algos shouldnt come into question15:31
tristanpersia, also `bst diff` is an option, although I'm expecting that your regulatory people wont want to trust it15:31
persiaExcept python has a) switched default tar algorithms in the past and b) still uses host algorithms for some operating systems15:32
tristanstill `bst diff` can be very nice to have to check reproducibility15:32
persia`bst diff` solves my problem, if the code can be audited to be shown to be correct, and it actually checks the content carefully.15:32
tristanpersia, checking if something is bit-for-bit reproduced should *really* not be a problem15:32
tristanI mean, we're splitting hairs on the how to export and yada yada15:33
tristanthe data is there and must be recorded anyway15:33
persiaImportantly, I need to be able to check when *changing cache-key algorithm*15:33
tristanso when changing to a new stable line of buildstream, you can take the list of artifacts / cache keys that you care about, create a new build and diff the artifacts with the old ones15:35
tristanthat shouldnt be a problem15:35
tristanmigration scripts, also plausible, less delicious but plausible15:35
tristanstill a bit weird considering we can't truly control or know what that migration script is going to be at all if the project uses any elements we dont control15:36
tristanand we dont want to control all elements in use15:36
persiaThe combination of the two would be a perfect match to my use case, and nicely avoids the BuildStream codebase needing to have all the historical algorithms.15:36
persiaWhat do you mean "control"?15:36
tristanI mean; elements are written by project authors15:36
tristanIf those bump their artifact revisions for any reason15:37
persiaI presume the migration script would only work if the admin had (read) access to all the projects stored on the cache.15:37
tristanWe dont know how15:37
tristanremember, there is no ONE artifact version, there is one for the core, and one for each element15:37
persiaOh, right.  For that sort of thing, I'm happy with implementors being on their own.  Nice to have docs, or some plugin mechanism where the migration script can consume old and new versions of such elements.15:37
gitlab-br-botpush on buildstream@102-run-ci-as-non-root-user (by Tristan Maat): 1 commit (last: .gitlab-ci.yml: Drop root privileges for some tests) https://gitlab.com/BuildStream/buildstream/commit/5c5cd5e845ba8cb00d0099e8b9c3c3d465c9151316:25
gitlab-br-botbuildstream: merge request (102-run-ci-as-non-root-user->master: Resolve "Run CI as non-root user") #104 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/10416:25
gitlab-br-botpush on buildstream@102-run-ci-as-non-root-user (by Tristan Maat): 1 commit (last: .gitlab-ci.yml: Drop root privileges for some tests) https://gitlab.com/BuildStream/buildstream/commit/28830191ccaf910d5743a0826d31adb8157e00ba16:27
gitlab-br-botbuildstream: merge request (102-run-ci-as-non-root-user->master: Resolve "Run CI as non-root user") #104 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/10416:27
gitlab-br-botpush on buildstream@102-run-ci-as-non-root-user (by Tristan Maat): 1 commit (last: .gitlab-ci.yml: Drop root privileges for some tests) https://gitlab.com/BuildStream/buildstream/commit/2d89293351ab5e58a9741991adb9b470928a856a16:42
gitlab-br-botbuildstream: merge request (102-run-ci-as-non-root-user->master: Resolve "Run CI as non-root user") #104 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/10416:42
*** tlater has quit IRC17:00
*** jonathanmaw has quit IRC17:02
*** anahuelamo has quit IRC17:15
*** anahuelamo has joined #buildstream17:17
*** bochecha has quit IRC17:24
*** jjardon[m] has quit IRC17:42
*** ptomato[m] has quit IRC17:42
*** mrmcq2u[m] has quit IRC17:42
*** mattiasb has quit IRC17:42
*** waltervargas[m] has quit IRC17:42
*** cgmcintyre[m] has quit IRC17:42
*** ptomato[m] has joined #buildstream18:16
*** jjardon[m] has joined #buildstream18:16
*** mattiasb has joined #buildstream18:17
*** waltervargas[m] has joined #buildstream19:03
*** bochecha has joined #buildstream19:06
*** bochecha has quit IRC19:11
*** bochecha has joined #buildstream19:11
*** xjuan has quit IRC19:19
*** ssam2 has quit IRC19:31
*** cgmcintyre[m] has joined #buildstream21:02
*** givascu has quit IRC21:04
*** mrmcq2u[m] has joined #buildstream21:09
*** semanticdesign has quit IRC22:40
*** semanticdesign_ has quit IRC22:40

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