IRC logs for #buildstream for Friday, 2017-07-07

*** jude has joined #buildstream07:34
*** jude has quit IRC07:37
*** tristan has joined #buildstream07:51
*** jude has joined #buildstream08:03
*** tlater has joined #buildstream08:14
*** jonathanmaw has joined #buildstream08:47
*** ssam2 has joined #buildstream09:02
tlaterShould I modify the element API to add workspace support?09:09
tlaterI can either modify the sources after they've loaded, keeping everything the same, or add another property.09:09
jonathanmawwat? I replied to the mailing list and it now thinks it was sent from jonathan.maw@codethink.co.uk again09:27
jonathanmawah, I was replying to an E-mail adressed to jonathan.maw@codethink.co.uk, so it sent it from the .co.uk address. And since I unsubscribed my .co.uk address, it's having a strop at me.09:28
*** tlater has quit IRC09:31
*** tlater has joined #buildstream09:32
tlatertristan: Should I avoid making workspaces part of the element API? I feel like it would be most clear if it was another property.09:39
tristantlater, it should certainly not be public API, but the code will probably read better if you delegate through the data model09:52
tristanwell, not sure how much of that is actually needed09:52
tristantlater, at least we decided we are not going to add the functionality of checking out "from the proper upstream" and add a new Source API that everything would have to implement09:53
tristanso I guess for now there is no need ?09:53
tristantlater, the Element will probably need some changes anyway, though09:53
tlaterIt would be really convenient not to have to write a separate parser for a few functions though.09:54
tristanseparate parser, not sure what you mean09:54
tristanyou mean for project state in <project directory>/.bst/ ?09:54
tlaterWell, the workspaces have to be loaded somehow09:54
tlaterYeah09:54
tristanI think that needs to be a new file09:55
tristantlater, That or... it can be handled also by _project.py09:55
tristanbut it is clearly separate09:55
tristantlater, the workspaces is not project data and should not be written into element.bst files at all09:55
tristanit is buildstream state around project data09:56
tlaterok, that makes sense. I suppose functions that need data from there will just have to call a separate load function?09:56
tristantlater, I think Project.load() should take care of that09:57
tristanin addition to loading project.conf09:57
tristanOr somewhere in Project.__init__() anyway09:58
tlaterIf this is going to be a loader for all project state, should it create a dict with a "workspaces" key for now?09:58
tristanit's given the project directory09:58
tristantlater, that sounds sensible, it can have a private project._workspaces dictionary09:59
tristanor whatever data type describes it best09:59
tristanmaybe it's a dictionary where the values are sparse arrays of directories ?09:59
tlaterYou also need the original element to map the directories10:00
tlaterSo something like10:00
tristantlater, if it ends up looking too messy (with other things looking into the dict), than having a sensible accessor function is desirable10:00
tristanI am saying sparse arrays because elements can have more than one source10:00
tristanbut it could equally be a dict of dicts, where the nested dict is an index -> directory table10:01
tlaterYou also need the source index10:01
tristanso you could have Project._get_workspace(element, index) which returns an absolute path10:02
tlaterAh, wait, no I understand, yeah, a sparse array is probably best10:02
tristaneither works fine yeah10:02
tlaterWill we never store any other data?10:02
tristantlater, we might, but I think it's okay to just use <project directory>/.bst/ as an area for storing state10:02
tristanand then workspaces is in the .bst/workspaces.yaml file10:03
tristanand we can store other stuff in other files in there10:03
tristannote, one brutal way for clearing all workspaces, is to just rm -rf .bst/10:03
tristanthat should always be okay to do10:03
tlaterYeah, I've been debugging like that for lack of a close command ;)10:04
tristanjonathanmaw, ummm, so I now have you subscribed twice10:05
tristanjonathanmaw, and I have two bounces in my inbox10:06
tristanjonathanmaw, and only one in the moderator queue, for .com10:06
tristandont really understand what's going on :-/10:07
jonathanmawI don't understand how that last one is pending review, either :/10:07
tristanUmmm, I think I know10:08
tristanSo I did some emailing with curl a couple years back and learned about email a bit10:08
tristanWhen I send a message with curl, I need to tell it where it's from10:08
tristanAnd I need to set the From: message header separately10:09
tristanIt can be that these are two separate data, and you are in fact sending from .com, but disguising the message header From: with .co.uk10:09
tristanand that mailman doesnt like it10:09
tristanI will just accept your messages and set a filter and hope for the best10:10
tristanjonathanmaw, I guess there should be some kind of protection like that, it makes sense10:12
tristanjonathanmaw, otherwise I could just send email to any mailing list and munge my From: header with a member's email address10:12
* juergbi sees weak cache keys appearing in the artifact cache :)11:27
tristannice :)11:31
tristanI think it's going to be a nice feature in combination with `bst track` and flexibly choosing what you update... if there are people who regularly build everything master, with weak build planning mode they can get something much quicker when glib changes11:32
tristanI'm a bit torn on whether or not to share artifacts in weak planning mode, I feel like maybe allow downloading them, but not uploading them ?11:33
ssam2how enabled-by-default is sharing artifacts going to be in general?11:34
tristanAlso there is a distinction that we could easily make, i.e. "Is the strong key of an artifact what it would have been in strong build planning mode anyway ?"11:34
ssam2if it's limited to people with the right SSH access, it's a fairly unusual thing to be doing in any case11:34
tristanssam2, you will need to specify a url in order to be able to pull them11:34
tristanssam2, indeed, and pushing them needs another url11:34
ssam2so maybe don't *prevent* sharing weak artifacts, but perhaps have it off by default ?11:35
tristanssam2, I think though it's probably not the right setup for GNOME, or in many cases, to have many peers sharing artifacts, seems more sensible to me to have that done by auto builders11:35
juergbitristan: i thought the idea was to share artifacts also in weak planning mode11:36
ssam2yes indeed.. there's nothing to actually enforce that cache keys are what we think they are11:36
juergbibut yes, i expect that to be done by auto builders, not by regular devs11:36
ssam2jrandom user can push an artifact named 0x12356843 that actually contains some horrible trojan11:36
tristanjuergbi, yeah I think so... the thing is when you want to download a weak artifact and a build server is constantly publishing artifacts in fully deterministic build mode, the cache will have your weak artifacts anyway11:37
ssam2i guess it's possible to mitigate that server-side, but until that code is there, we should just have artifacts pushed by autobuilders that we control11:37
tristanhowever, it might just take a bit longer to get into the cache11:37
juergbitristan: not sure what you mean11:37
tristanjuergbi, every artifact has both a weak and a strong key11:38
juergbibuildstream will switch to strong artifacts when they are available11:38
tristanjuergbi, so if my project and the build server's project is at the same revision... then even if locally I have some workspaces and dont require a strong build mode, the artifact cache still has weak key artifacts which correspond to my sources11:38
tristanso lets say I bst track --deps all... <gnome.bst>... everything... and the build server constantly builds the whole thing11:39
tristanI might have overridden some things with workspaces, but can download the rest via it's weak key11:39
tristanbecause I'm building in weak planning mode11:40
tristanjuergbi, do we understand how it works ? So... if I am building in strong mode... *and* uploading artifacts, whenever I upload an artifact, anyway I'm pushing 2 refs11:41
tristana strong and a weak one11:41
juergbiyes, actually already implemented (pending testing)11:41
tristanalthough technically on the server, the data is not duplicated, it's two refs of the same objects11:41
juergbiyes11:42
tristanRight, so when artifacts have been published, via a totally deterministic planning mode (need better vocabulary for build modes)... then the weak key is available for each individual modules exact set of sources, which went into that build11:42
tristan(as well as the strong key)11:42
juergbiyes11:43
tristanSo what I meant was that... if we constantly publish only via the deterministic build mode, but we download with weak keys as needed... it's probably around the same as if we allowed uploading the artifacts to a share, which were themselves built in a weak planning mode11:43
tristannot much more benefit, except that *perhaps* artifacts are available a bit sooner11:44
tristan(a bit faster if say, we have a continuous like CI also contributing to the cache, with weakly planned builds)11:44
juergbiit would make a difference for people downloading for deterministic builds11:44
tristanif you are downloading for deterministic builds, then you only care about downloading via the strong key anyway11:45
tristanright ?11:45
juergbiyes but if there was no autobuilder running in deterministic mode, you might not have much luck finding artifacts with the strong key on the remote repo11:46
juergbidepending on frequency of changes of the different components11:46
tristanjuergbi, good point that11:46
tristanindeed11:46
juergbi(assuming CI only builds component if component itself has been changed)11:46
tristanhowever I think that anyway an autobuilder needs to sometimes rebuild in strong mode (perhaps just less frequently)11:47
tristanotherwise it doesnt have a great chance of correcting itself in the case of false positive failure reports11:47
juergbiyes, probably makes sense11:48
tristanjonathanmaw, I just replied your email... for the sake of being thorough; I made some comments which are probably unrealistic to implement in the first iteration, but we should be taking into consideration12:23
tristanjonathanmaw, dont worry too much though, I think it's important to consider the idealistic case, the realistic case, and the plausible migration path from short term realistic to eventual idealistic case12:24
tristanSo anyway, just to say, I'm not demanding that it be perfect from day one :)12:25
tristanjust trying to consider all the angles12:25
jonathanmawtristan: not now we have some idea of API versioning :)12:25
tristanyeah, in my RFC today I kind of switched around... there are two approaches12:26
tristanOne is, there is an API version for things, and depending on the API version: things are interpreted differently12:26
tristanThe other is minimal bound dependencies, which is a bit harder but in some ways more sensible for the user12:26
tristanWhich is basically: Every future version needs to understand everything in the previous format... so "foo" cannot one day be interpreted as anything other than the original definition of "foo"12:27
tristanHowever future versions can add features12:27
tristanAnd projects can require a minimum format version for an element12:27
tristanI feel like minimal bound dependency is more sensible to be honest12:28
tristan(which is what I'm proposing in the RFC)12:28
tristanalright, I should have finished this ostree-push work by tomorrow14:20
tristanbut it's late, I'm going :)14:20
tristano/14:20
*** tristan has quit IRC14:23
tlatero/14:23
jonathanmawtristan: hrm, _yaml.node_copy seems to be misbehaving. the problem seems to be that it forgot to copy the value into the new dict if it's not either a dict, a list or provenance14:28
jjardon[m]jonathanmaw:  I keep getting notifications about messages sent to you to the list; are you not a member?14:38
jjardon[m]jonathanmaw: nm, seems you are now14:39
jonathanmawjjardon[m]: yep, my webmail client likes to send E-mails as jonathan.maw@codethink.co.uk or jonathan.maw@codethink.com seemingly at random14:40
jonathanmawI need to re-learn how to use mutt14:40
jjardon[m]:)14:40
*** tristan has joined #buildstream14:50
jonathanmawtristan: following E-mail conversations, I've taken my dpkg-build branch and am pre-emptively auto-mangling package name and adding a "name" field to dpkg-data which overrides it.14:57
*** waltervargas[m] has quit IRC15:35
*** mattiasb has quit IRC15:35
*** tristan has quit IRC15:35
*** juergbi has quit IRC15:35
*** persia has quit IRC15:35
*** jjardon[m] has quit IRC15:35
*** dabukalam has quit IRC15:35
*** tristan has joined #buildstream15:36
*** dabukalam has joined #buildstream15:36
*** jjardon[m] has joined #buildstream15:36
*** persia has joined #buildstream15:36
*** juergbi has joined #buildstream15:36
*** waltervargas[m] has joined #buildstream15:36
*** mattiasb has joined #buildstream15:36
gitlab-br-botpush on buildstream@workspaces (by Tristan Maat): 3 commits (last: _pipeline.py: Implement workspace yaml logic) https://gitlab.com/BuildStream/buildstream/commit/e3afda36470545644e49216bf85efde61fb3765216:32
*** xjuan has joined #buildstream16:44
*** tiagogomes has quit IRC16:50
*** jonathanmaw has quit IRC16:59
gitlab-br-botpush on buildstream@workspaces (by Tristan Maat): 1 commit (last: Improve documentation) https://gitlab.com/BuildStream/buildstream/commit/e4c3a4d83a46e5bfeb700a5ae428a4d928a58cbe17:02
*** tlater has quit IRC17:05
*** ssam2 has quit IRC19:15
*** xjuan has quit IRC22:34

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