IRC logs for #buildstream for Friday, 2020-06-12

*** mohan43u has joined #buildstream02:50
*** tristan has quit IRC05:08
*** hasebastian has joined #buildstream05:22
*** tristan has joined #buildstream05:53
*** ChanServ sets mode: +o tristan05:53
tristanWSalmon, There are no API guarantees on 1.9x whatsoever - I don't know why we ever jumped from 1.91 to 1.93, but I suppose it may have represented a milestone of sorts and people wanted to bump the minor number for some reason05:55
tristanjuergbi, do we have a tag yet, and if you want me to bump it, what should I do ? do we need a NEWS update with that ? anything else ?05:56
tristans/bump it/tag it/05:56
juergbitristan: we don't have a tag yet. should just need a NEWS update and tag05:58
juergbiwe haven't formally announced 1.9x releases05:58
juergbis/releases/snapshots/05:59
tristanjuergbi, So just put the next number instead of "(unreleased)" in the NEWS, and let the next (post-tagging) NEWS update to add a new "(unreleased)" section ?06:08
tristan1.93.4 I think06:09
juergbitristan: yes, and maybe a quick check if we've missed an important change06:09
tristanIs there any reason why we ever did 1.93 ?06:09
tristanOr just marketing nonsense06:09
juergbisomeone wanted this, let me check06:09
tristanyeah, that's my guess, someone wanted to say "Yay we now have 1.93 ! and that is > 1.91 !"06:10
tristanwell, not sure but it often is the case ;-)06:10
juergbi!1804 is the MR but there was no discussion about it06:11
juergbialso don't see anything in the IRC logs06:11
juergbiwould have to ask cs-shadow06:11
tristanjuergbi, I think we will want to tag next week again after landing the juncle anyway, not sure if we need to wait on any "important things to land" before the tag06:12
tristanrather, it's less sweat off our back if we consider these tags as cheap06:12
juergbiwith "check if we've missed an important change" I meant the NEWS file06:12
tristanDo we incur externalized work ?06:12
tristanAh I understand what you mean now06:12
* tristan hopes that people dont feel obligated to do a pip dev release for every single tag we roll06:13
juergbibut I think we have the main ones06:13
juergbiwell, there probably should be one but ideally, it would be automated06:13
juergbiit doesn't make sense to have pip dev releases but leave them outdated06:14
tristanI didnt put any entry for full paths06:14
juergbialthough I suppose if we indeed tag another snapshot next week, we can defer the pip dev release06:14
tristanMy thoughts on release dances are that for dev releases, let people do their dances if they want06:14
tristanIf people start wanting a fresh pip release they can roll one06:15
tristanWhen it comes to stable we'll be much more conservative about rolling releases and the ripple effects that incurs06:15
juergbisure, it's definitely more important for stable releases06:15
juergbimy point was simply that it would be good to be consistent06:15
juergbiif we don't need pip dev releases, we shouldn't have any06:16
tristanyeah if it could be automated that would be nice06:16
juergbiI think cs-shadow has been keeping those up-to-date so far06:16
juergbidon't we already have it automated for bst-plugins-experimental?06:16
tristanBut I think it's more important that dev tags be *cheap*06:16
juergbiso should really do it for core as well06:16
juergbisure, we shouldn't block the tag on anything extra06:17
tristanWe should be able to push one in 5 minutes time, everyone be happy, and get on with our lives without incurring any work06:17
juergbiyes06:17
tristanI believe the automation is blocked on how our gitlab is setup, there is a possibility of leaking credentials06:18
tristanbecause of our "anyone can request dev status" policy06:18
tristanand all that06:18
juergbitristan: aren't variables hidden from regular devs?06:23
juergbiI wouldn't expect anyone except maintainer/owner to have access06:23
juergbiand variables can be limited to protected branches06:24
juergbiyes, only maintainers and owners, afaict: https://docs.gitlab.com/ee/user/permissions.html06:25
tristanjuergbi, I think that I'm able to create a merge request which runs CI on my branch, echoing protected variables into files and such, allowing me to observe these through the artifacts this pipeline creates06:38
juergbitristan: there is a 'protect variable' flag: "Export variable to pipelines running on protected branches and tags only."06:39
juergbiso they would have to merge it06:39
tristanHmm06:40
tristanOk, I think this was the concern before06:40
tristanas I recall, it's possible gitlab changed since then, or that we didn't fully investigate the options06:40
tristanI'm adding some highlights to the NEWS06:41
tristancross junction plugin origin is a big one06:41
tristanI don't think we've missed any breaking changes06:42
tristanAnd now DownloadableFileSource is public06:47
tristanjuergbi, WSalmon ... NEWS updated, 1.93.4 is now tagged06:51
juergbita06:52
tristanjuergbi, On the juncle... what do you think about duplicate validation ?06:52
tristanI think we should arguably not have it, as it would induce unnecessary subproject fetches06:53
tristanHowever there is another tangentially related issue, which is links06:53
juergbiyes, I don't think we want to do anything with listed junctions that are not in the current pipeline06:53
tristanjuergbi, I feel that one should be able to have a link to a subproject junction, as this empowers the link element06:54
juergbiduplicates should only be specified for the actual junctions, not links, right?06:54
juergbidon't we already have that?06:54
*** hasebastian has quit IRC06:54
tristani.e. I may want to refer to a link, in my local project or in a subproject, as a duplicate06:54
tristanThe link itself is not the real full subproject path06:54
tristanAnd resolving the link requires loading it06:54
tristanI.e. the strength of a link is that I can use it as an alias, and possibly have conditional statements in the link resolving what it points to06:55
tristanI should not have to duplicate those conditional statements in project.conf06:56
juergbiwhat if the link points to different projects of different names depending on a conditional?06:56
tristanexactly06:56
juergbiyou wouldn't have to duplicate the conditional statements, though. you could unconditionally list all potential targets06:57
juergbimay still not be ideal but it might not be that bad06:57
tristanjuergbi, What I'm saying is that we have these two opposing forces... (A) We don't want to load projects we don't need to,  (B) We should be able to use links in the duplicate lists06:57
juergbiI think I would defer link support in duplicate config until we see a use case where it's really useful06:58
juergbii.e., worth the trouble, not just saving a line or so06:58
tristanSo at first, document that only a true full path to a subproject can be used06:58
juergbiyes, unless you already see this blocking real use cases06:59
tristanI see the API in general as flawed without this06:59
tristanA link purports to be usable as an alias, but cannot be used in this case, it's weird06:59
tristanjuergbi, whether or not there is a conditional statement, I can see it being practical from a project's API evolutionary standpoint07:00
juergbiit's not ideal, however, the whole duplicate configuration is mainly about special cases07:00
tristanI.e. if I have a public API for downstream projects, and I have a public subproject07:00
juergbiideally, projects don't even need duplicate config07:00
tristanI may one day want to replace that subproject with something else which provides essentially the same thing07:01
tristanSo I would want to have the ability to replace my public subproject junction with a link07:01
tristanIf a reverse dependency project is broken by this, then a link cannot really be used here07:01
juergbido we already have a use case where this can't be solved with internal junction?07:01
tristanI have listed at least one in my mail which discussed use cases07:02
tristanFor instance, what if I'm regularly doing CI of images of fdsdk, this is an interesting use case to me07:02
tristanI build the entire fdsdk, and then I stage that on an fdsdk + additional tooling used to create a bootable image07:03
tristanI don't really want to rebuild that tooling just because I want to test my "latest", my deployment tooling doesnt need to be rebuilt at all, I can use last year's fdsdk until such a time my deployment tooling needs to change07:04
tristanThis might be possible (with "internal") in the case of fdsdk doing CI on itself, indeed07:05
tristanI'm not sure that it will always be the case with duplicates07:05
tristanI mean with projects07:05
tristanIf I'm doing this with GNOME, I could have an internal fdsdk for the deployment tooling and a primary dependency on fdsdk for my payload07:06
tristanthat is true07:06
juergbinot sure how to handle this best07:06
tristanTo be honest I think that duplicates covers all the grounds; and as such I'm writing it up first; while "internal" is a nice to have feature on top of that, which doesn't necessarily cover all grounds07:07
tristanAlso, the 'link' problem is not necessarily unique to 'duplicates'07:08
tristanI.e. if I have a chain of projects which depend on eachother in a stack, and each project depends on an internal project for a compiler, it can make good sense to want to derive this internal junction from the subproject07:09
tristanin which case it makes good sense to provide a link07:09
juergbitristan: true, I agree that it would make sense to resolve links for internal07:22
juergbican't we do this lazily, though? i.e., only if that link is actually used07:22
tristanjuergbi, that's the problem :-S07:24
tristanYou cant know what it is until you resolve it07:24
juergbiso the issue you see is if the target is accessed without the link?07:25
tristanThe core runs like this: When a loader is loaded, it checks a global context of loaded loaders07:25
tristanoriginally just a table of project names, now with some extra stuff marking junction names as internal etc07:25
tristanFrom that loading perspective, we can know what the full path of the junction being used is, and we can know what the project relative path is for each project up the hierarchy07:26
tristanThen we need to ask those projects if there are any whitelisting (duplicates or internal)07:26
tristanWe ask them with knowledge of what the project relative junction paths are07:26
tristanBut if they provide any links, those need to be pre-resolved to know if they point to this project relative path07:27
tristanWell wait a sec07:28
tristan"Can we do it lazily", this is a good question07:28
tristanI think the answer is "probably", which is not good enough07:29
tristanI.e. to do so, would be to assume that just because a link exists, it will be used to access a subproject07:29
*** santi has joined #buildstream08:46
*** chipb_ has joined #buildstream09:00
*** chipb has quit IRC09:00
tristanDoes python code in cython files behave subtly differently ?10:24
tristanFor instance, with regards to instance variables initialized in __init__ to mutable defaults10:25
tristan(like empty lists)10:25
WSalmontristan, the thing i always get wrong is that i havent recompiled it, but benschubert is our expert10:26
WSalmonIIRC there are a lot of doc's on the subject10:26
WSalmonbut I havent looked at them in a while10:27
tristanNah, it seems that I've got a logic error10:29
tristanSwimming in junction duplicates, not very easy10:29
tristanOk I see what I'm getting wrong10:31
tristanSo now my error message says "Bla bla bla conflicting junctions bla..." and the detail has a line for line with each place a project was referenced, including the full path of it's junction and the provenance responsible for initially referring to that junction10:32
tristanBut when a project is not completely duplicated, I suppose it would be helpful to, instead of just mentioning that it was "(duplicated)", also mention the provenance from the project.conf and project-name/junction full path of the project which marked it as a duplicate10:33
*** hasebastian has joined #buildstream10:46
tristanjuergbi, thinking back, I'm not sure, maybe lazy link resolution in duplicate whitelisting can make sense10:57
tristanjuergbi, We'd have to say that links can be specified in the duplicate whitelist, but they must be the means which is used by said project to lookup the junction/subproject10:58
tristanhttps://bpa.st/4EZQ <-- how's this error message, when the toplevel duplicates a subproject only once, but junctions it twice ?11:02
tristanjuergbi, fwiw I have an initial implementation of "duplicates" on !1901, it doesnt support links and still needs documentation, but testing is fairly thorough11:22
* tristan should be able to finish up this weekend11:22
tristanI'm ordering the branch such that "duplicates" comes after replacing coalescing with "overrides" and adding initial conflict tests11:23
tristanSo there is a gap where the conflict detection is done with a simple table and there is no tolerance for duplicate projects11:24
tristansince the changes are rather significant, I think it's worthwhile to keep these separate in the history11:24
* tristan now has to solve this insane error from picking of jobs https://gitlab.com/BuildStream/buildstream/-/jobs/58996843211:25
traveltissuescan someone please take a look https://gitlab.com/BuildStream/bst-plugins-experimental/-/merge_requests/12011:33
coldtomLGTM traveltissues11:35
traveltissuesthanks11:36
tristanlooks to me that jobpickler.py should not really be in _scheduler/jobs, this is not a Job implementation at all11:52
valentindtristan, Do you know if bst 2 allows cycle in runtime dependencies? If so, will that be fixed in bst 1.6?12:09
tristanvalentind, what does that mean ?12:10
tristancircular dependencies cannot be allowed, I don't see how it could be possible12:10
tristanbut something else ?12:10
valentindSometimes the build dependencies are inverted from the runtime dependencies.12:10
tristanInverted12:11
* tristan not following12:11
tristanDo we have a test case ?12:11
valentindOK, I will open an issue when I have a nice case.12:13
tristanThanks, I'm sure you must be talking about a deep subtle bug, I'm just having a hard time understanding what it is :)12:13
*** tristan has quit IRC12:18
*** hasebastian has quit IRC12:26
*** phildawson_ has joined #buildstream14:56
*** phildawson_ has quit IRC16:57
*** tristan has joined #buildstream16:59
*** ChanServ sets mode: +o tristan16:59
*** santi has quit IRC17:28
*** xjuan has joined #buildstream20:27
*** chipb_ is now known as chipb22:50
*** chipb has joined #buildstream22:51

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