IRC logs for #buildstream for Thursday, 2018-04-19

*** Prince781 has joined #buildstream00:03
*** Prince781 has quit IRC00:20
*** Prince781 has joined #buildstream02:53
*** tristan has joined #buildstream03:54
*** Prince781 has quit IRC04:50
juergbijjardon: Not sure, ssssam[m] set this up, iirc. I assume you have access to the username/password used by CI via secret variables in the CI settings, could you just use those?04:55
gitlab-br-botbuildstream: merge request (tristan/fix-track-semantics->master: Fix track semantics) #422 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/42205:50
tristanjuergbi, I dont think those are retrievable05:54
tristanwell, I recall playing with those settings once and not being able to retrieve what I had previously set05:54
tristan(which made enough sense to me at the time, albeit inconvenient)05:55
juergbiI can see them, afaict05:55
tristanAh, it may very well have changed, or I may have missed some setting05:55
juergbithere is a 'Reveal values' button05:56
tristanAha05:56
tristanI would probably have missed that :)05:56
tristanor, it could be a new feature, this was probably a year ago and gitlab is pretty fast moving05:56
juergbiindeed05:58
tristanhmmm, I mucked it up06:06
tristanaha06:10
gitlab-br-botbuildstream: merge request (tristan/fix-track-semantics->master: Fix track semantics) #422 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/42206:12
tristansigh, I'd really like to refactor Pipeline06:12
tristaninstead I'm slowly nudging it in the direction I want, but it's not enough06:13
gitlab-br-botbuildstream: issue #367 ("bst track refuses to track only one element") changed state ("closed") https://gitlab.com/BuildStream/buildstream/issues/36706:23
gitlab-br-botbuildstream: merge request (tristan/fix-track-semantics->master: Fix track semantics) #422 changed state ("merged"): https://gitlab.com/BuildStream/buildstream/merge_requests/42206:23
gitlab-br-botbuildstream: merge request (tristan/pylint-enable-unused-variable->master: Enable linting for unused variable) #423 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/42306:39
gitlab-br-botbuildstream: merge request (tristan/pylint-enable-unused-variable->master: Enable linting for unused variable) #423 changed state ("merged"): https://gitlab.com/BuildStream/buildstream/merge_requests/42306:51
*** aday has joined #buildstream08:08
*** toscalix has joined #buildstream08:08
*** jonathanmaw has joined #buildstream08:22
jjardonjuergbi: I tried but it doesnt seem to work; it only allow me to create new repos in <usernameci>/ namespace08:31
*** noisecell has joined #buildstream08:45
*** bethw has joined #buildstream08:57
*** dominic has joined #buildstream09:06
juergbitristan: I didn't realize that it's so crucial in practice to avoid planning build dependencies of pulled elements09:07
juergbithese queueing changes will be quite big, we'd have to completely reverse planning. we'd have to queue all build-only dependencies on demand instead of via plan09:09
juergbinot completely reverse as we still keep runtime dependencies in the plan09:09
juergbihowever, from the perspective of build dependencies, we'd start with the toplevel target only and then queue build dependencies as needed09:10
tristanjuergbi, My original email had a much stronger paragraph there, but then I re-read your original text and decided I had misinterpreted it.09:34
gitlab-br-botbuildstream: issue #369 ("Run tests  on aarch64") changed state ("opened") https://gitlab.com/BuildStream/buildstream/issues/36909:35
juergbithinking about this a bit more, it might indeed not be that difficult to implement. we just don't have dynamic queueing like that so far, afaik09:35
tristanjuergbi, I think though, if we A.) Plan in regular order, and chop off build-of-build... B.) If not locally cached, append these build-of-build dependencies *after* the elements which depend on them... C.) Implement Queue.status() to report "skip" correctly in the Queues, we can get it done09:35
tristanjuergbi, do we need dynamic queuing at all ? well; it depends where you put the logic I guess09:36
juergbitristan: I don't think this works, we have to stop them from being pulled, e.g.09:36
juergbiunless you say you don't care about this09:36
gitlab-br-botbuildstream: issue #370 ("Setup aarch64 runners") changed state ("opened") https://gitlab.com/BuildStream/buildstream/issues/37009:36
tristanjuergbi, if they are *after* the depending elements in the Queue, then we can skip them if we have already determined that previous depending elements are being downloaded09:37
juergbithings happen in parallel, though09:37
juergbiit's not so clear cut09:37
gitlab-br-botbuildstream: issue #371 ("Run tests in Debian stable") changed state ("opened") https://gitlab.com/BuildStream/buildstream/issues/37109:37
tristanjuergbi, Ah right, you'd need to block them until you know the child task is actually pulling something09:38
juergbiI think dynamically queueing them is cleaner and might not be that hard09:38
tristanjuergbi, this *could* technically be done with some additional IPC, i.e. tell the parent "Ok I'm downloading the element"09:38
tristanbut maybe dynamic queueing is cleaner indeed09:38
juergbiyes, but this additional interaction sounds more complex overall, harder to maintain09:39
tristanjuergbi, it's important to not download them; because I dont want to download the binary sysroot that was needed to bootstrap the stage1 and stage2 binaries of the bootstrap, plus the stage1 and stage2 binaries09:39
juergbiright, I somehow forgot about half the bootstrapping part. I thought it'd be sufficient to skip source fetching for that but it's not09:40
tristanAnd, it is *very much* a goal to have developers building on their local machines, and deploying to VMs and rigs locally, *before* pushing their own patches for review to an integration pipeline09:40
tristanjuergbi, the same thing happens with debootstrap-ostree09:40
juergbiyes, completely agree, it just slipped my mind09:40
tristan:)09:40
juergbione question is what happens if such an element is tracked09:40
juergbioptimally, we'd have to dequeue it after tracking09:41
tristancurrently, track queue is placed before pull queue, or any other queue09:41
tristanbut yeah things may need to change09:41
juergbimark these elements somehow and then drop them off the pipeline after tracking. only readd them if needed09:42
jjardoncs_shadow: do you have access to the https://hub.docker.com/u/buildstream/ account, by any chance?09:56
tlaterjjardon: Pretty sure I do09:56
tlaterIn case you need someone to push something or somesuch, if you're just checking if cs_shadow already does, nevermind :)09:57
*** noisecell has quit IRC09:58
jjardontlater: ah you are the man! can you create a "buildstream-debian" repo there please? so the new debian-9 images are pushed there09:59
tlaterSure, I'll ping you when it's up09:59
jjardontlater: tvm10:00
* tlater wonders if we have a debian image just to satisfy distro wars10:00
jjardonI though the ci user will have enough powers to create it but now that part of the CI is failing: https://gitlab.com/BuildStream/buildstream-docker-images/commit/730276be22e49359820087c930f3143d651d5e64/pipelines10:01
jjardontlater: distro reality I would say10:01
tlaterHehe, that was tongue-in-cheek, jjardon. Just curious why we need one, given this is a docker image so the actual distro matters very little10:02
* tlater still thinks it should all be alpine10:02
jjardontlater: I have seens exactly the same python code that work in stock Debian but not in Fedora, and viceversa10:03
tlaterOh, I get that, but that's what the testsuite images are for, no?10:03
*** noisecell has joined #buildstream10:03
tlaterjjardon: Repo is up as buildstream/buildstream-debian10:04
tristantlater, confounding images again I think10:04
tristantlater, jjardon is talking about the docker images we use *in gitlab* to test that BuildStream installs and works on various real distros10:05
jjardontristan: thanks!10:05
tristannot the image we use as a base runtime for the sandbox in integration tests10:05
jjardontlater: I meant10:05
tlaterAh, I see10:06
tlaterAgain, though, I believe the test suite images cover that10:06
tlaterbuildstream-fedora is exclusively used for bst-here at this point10:06
tlaterWhy do we need a buildstream-debian?10:06
tristanuhhh10:08
tristantlater, we're running CI and we want to have plenty of different environments we run the same test suite in ?10:09
tristantlater, i.e. every major point version of every relevant mainstream distro ?10:09
tristantlater, so that our tests dont only test "Ok this worked on fedora, yay"10:10
tlatertristan: Not all yet, only fedora-27 and debian-8 on Linux10:10
tlaterBut that interface exists10:10
tristantlater, right, that is a work in progress10:10
tlaterIf we want to add debian-9, I think it should be one of the testsuite images10:10
tlater*Not* a general-purpose image only used for bst-here10:10
tristanUmmm, maybe I dont understand the reason of this conversation; *I* dont really understand why we would need more than one *repo* to hold all of our images10:10
tristantlater, agree10:11
tristanI.e. the bst-here script only needs one image, and serves a different purpose10:11
* tlater is perhaps just picky about naming here10:11
tlaterjjardon: What do you intend to use that image for? I might be completely oblivious to something we use our buildstream-fedora image for.10:12
tlaterBut I suspect we should name that image testsuite/debian-910:13
cs_shadowjjardon: I personally don't but is it the same account as the one that's used in GitLab CI?10:14
tlatercs_shadow: I think you need a separate account for this, the account we use in gitlab CI uses keys created by ssssam[m] afaik10:14
tlaterDo you have a docker hub account? I can add you to the group :)10:15
cs_shadowtlater: okay. I probably don't have an account yet but I'll get back to you once i manage to create one10:16
jjardontlater: can you add me to the group as well, please?10:21
tlaterjjardon: Sure, I'll need your docker id, I think10:22
jjardontlater: jjardon10:22
tlaterAh, big surprise ;p10:22
tlaterjjardon: I think you should be an owner now10:23
jjardonthanks!10:25
jjardonBTW, in case you didnt notice, we are generating aarch64 docker images of all the docker images but image-tools, as its x86-specific10:26
tlaterAh, nice10:26
* tlater should keep better track of the docker images repo10:27
tlaterHm, I suppose we should make bst-here check what arch we're on then10:27
gitlab-br-botbuildstream: merge request (ps-add-example-formats->master: Add example formats) #424 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/42410:30
gitlab-br-botbuildstream: merge request (ps-add-example-formats->master: Add example formats) #424 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/42410:32
gitlab-br-botbuildstream: merge request (issue-21_Caching_build_trees->master: WIP: Issue 21 caching build trees) #372 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/37210:36
*** aday has quit IRC10:42
jjardontlater: seems the CI user is still not able to push: can you check if you have to activate some permission or something? https://gitlab.com/BuildStream/buildstream-docker-images/-/jobs/6384877710:43
cs_shadowtlater: checking arch in bst-here sound like a good idea.10:43
cs_shadowAs an aside, we might also need an option to specify a different base image10:44
tlatercs_shadow: I have a sort-of fork in a snippet in the repo that allows that10:44
cs_shadowtlater: oh cool! I think i might have a half-baked branch somewhere too :)10:45
tlaterI don't think it's very useful to end-users to allow using different images, so I kind of left it as something I use for testing.10:45
*** aday has joined #buildstream10:45
tlaterPerhaps we should combine efforts actually, get this stuff into the main repo :)10:45
paulsherwoodok to merge https://gitlab.com/BuildStream/buildstream/merge_requests/424/pipelines ?10:46
paulsherwood(please squash :-)10:46
cs_shadowtlater: definitely. I think that option will be useful for people like us behind corporate firewalls who don't have direct access to docker hub10:46
laurencetlater, did we say that the work on the scheduler is worthy of it's own issue on gitlab?10:47
laurenceIn fact there may be one already...lemme have a look10:47
cs_shadowtlater: I have to grab some food now but I'll catchup with you about bst-here improvements10:47
tlaterlaurence: No issue yet, might be10:47
cs_shadowsoon (TM)10:47
tlaterHeh, ciao cs_shadow :)10:47
jjardonpaulsherwood: what "chroot-able SDKs" actually means? not sure there is a specific plugin for that?10:47
tlaterlaurence: I kept track of what I'm doing in !347 for now10:48
paulsherwoodjjardon: what tristan said :)10:48
paulsherwoodthe text says e.g., which means for example. bst can be used for that, and is being iiuc?10:48
jjardonpaulsherwood: not sure if we are talking about the same, but chroots tarballs can not be created yet: https://gitlab.com/BuildStream/buildstream/issues/348 seems https://gitlab.com/BuildStream/buildstream/issues/263 still needs to be implemented10:53
laurencetlater, ah, there's some notes on it here which may also overlap too - https://gitlab.com/BuildStream/buildstream/issues/18810:53
tlaterOh, I'd forgotten about those comments10:54
tlaterYeah, perhaps I should open a new issue then10:54
tlaterMaybe do this work on a fresh branch, too10:54
laurenceok, either way, let's link them, for provenance10:54
* tlater will start after figuring out what's wrong with jjardon 's pipeline10:54
laurencecool :)10:54
tristanjjardon, well, theres no reason you cannot chroot into a `bst checkout` directory of something you've created11:00
tristanjjardon, the only advantage you really get from getting a tar stream, is file ownership = root, and more goodies only once we've sorted out the famous issue #3811:02
jjardonsure, I was only a bit confused about the "chroot-able SDKs" term; maybe "chroot-able linux system trees" is better?11:03
tristanjennis, I dont understand what you mean by "I think this patch should also go into a separate MR (e.g. Further "Commands" documentation) and we'll keep this one solely for Getting started."11:04
tlaterjjardon: Yep, was a permission thing, I restarted the CI for you: https://gitlab.com/BuildStream/buildstream-docker-images/-/jobs/6386724611:05
tristanjjardon, linux system trees is a very weird wording I've never heard of before11:05
tristansysroots ?11:05
tristanruntimes ?11:05
jjardonsysroots! yeah11:05
tristanboth are a bit more recognizable11:05
tristanall ambiguous, but recognizable11:06
tristanruntimes is a bit more specific as it probably doesnt contain a kernel or services11:06
jjardontlater: thanks!11:06
tristanalthough both are fairly possible11:06
tristan(you could chroot into a runtime with a kernel in it, the kernel would just not be useful inside your chroot)11:07
tristanjennis, I'm asking you because I'm worried about going off the rails here, and I dont want things documented redundantly (that's sort of the point of the exercise of sorting out a good layout)11:08
tristanjennis, there is one section where we can talk specifically about commands, one by one, and that can live in the same place as the generated documentation, as demonstrated in the patch I linked11:09
jennisSo, tristan, the patch which you mentioned allows us to add documentation under every single command here. The MR we've been discussing this on is for a Getting started section11:10
gitlab-br-botbuildstream: merge request (ps-add-example-formats->master: Add example formats) #424 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/42411:11
jennisAnd yes, I am totally on board with ALL command related documentation being in the one section11:12
tristanjennis, Ok I think I understand... "this patch" is totally ambiguous without that clarification11:13
jennistristan, all I was suggesting was that we do this section by section so the MRs are much more manageable11:13
tristanjennis, the general gist, is that "Getting Started" is a series of simple exercises which after completed, the user has learned the things we want to teach them11:13
tristanand the things we want to teach them, are not "sections"11:13
gitlab-br-botbuildstream: merge request (valentindavid/workspacedir_config->master: Add 'workspacedir' configuration.) #420 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/42011:14
jennisok, thanks for making that clear11:14
tristanjennis, I would be hesitant in this case about "section by section", specifically for this patch11:14
tristanRather, it would be better to make a very rough draft, and do some rounds of iteration on it a few times before merging it all at once11:15
jennisSo you would rather merge it all at once?11:15
jennisTo be clear ^11:16
tristanI would rather see a draft of a dummy section, which has consistent structure for an exercise; along with a vision of what the exercises will be, and how they will teach the user the things we want them to learn11:17
tristanbefore seeing text, actually11:17
tristanI.e. lets look at another good example and copy some things... What is the structure... starting with "In this exercise we're going to bla bla bla"11:18
tristanHow do we format notes, where do they go in relation to what they are noting ?11:18
tristanConclusions of each exercise, are they important ?11:19
tristanSummary of what we've learned ?11:19
tristanjennis, as a rough idea, I think we can all we want to teach done in 3 or 4 exercises11:19
tristanjennis, and maybe we can aim for just 2 as a barrier to landing11:20
tristanthen observe11:20
jennistristan, ok I agree, we need this to be manageable11:21
tristanThe two which I have good ideas how they can be very instructive, are starting with paulsherwood's example of A.) Creating a project, B.) Introduction of the manual element (be sure to have the user navigate over to the manual element reference docs, so that they can *see* the command lists, make sure the manual element declares empty command lists just to make sure it's clear)... C.) Perform a build... D.) Check out the result11:21
tristanThe second one would be to move on to using a runtime, explaining how variables work, etc11:22
jennisI was just about to suggest something very similar :)11:22
tristanlooking at the autotools element, and composing an autotools element by setting some variables, let the user run the build... afterwards point out what has happened11:22
tristanetc11:22
gitlab-br-botbuildstream: merge request (ps-add-example-formats->master: Add example formats) #424 changed state ("merged"): https://gitlab.com/BuildStream/buildstream/merge_requests/42411:23
tristanjennis, this has evolved a lot since I used close to 10 years ago, but may be a source of inspiration of how to structure things: https://developer.apple.com/library/content/referencelibrary/GettingStarted/DevelopiOSAppsSwift/BuildABasicUI.html#//apple_ref/doc/uid/TP40015214-CH5-SW111:24
tristanI think that's become a lot more complicated since the original cocoa11:25
gitlab-br-botbuildstream: merge request (issue-21_Caching_build_trees->master: WIP: Issue 21 caching build trees) #372 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/37211:25
jennistristan, ok, this seems like a good idea to me. Aha, that link is great, thanks11:25
Nexustristan: do you have time to look at my MR for "opening a workspace with a cached build tree"? I believe you were uncertain about what to do with it11:26
Nexushttps://gitlab.com/BuildStream/buildstream/merge_requests/37211:26
tristanjennis, one thing I'm curious about technically, is if we can A.) Run `bst something` with forced colors dumped into a file... B.) Collect that output with the ANSI color codes and use some kind of easy way to render that output in the reStructuredText11:27
jennismhmm yes, I currently have no idea, but will have a look around11:27
tristanNexus, that is titled "WIP: Issue 21 caching build trees", does it have anything to do with workspaces ?11:28
jennisbecause I guess the alternative is screenshots, but that's ugly11:28
Nexustristan: yes it's the combination of #21 and #31111:29
Nexusthe title and comment are just something i quickly typed up at one point because i needed an MR11:29
Nexusi'll reword/name it11:29
tristanjennis, that would suck whenever it comes time to update the document yeah, it would also be good to have a way that the paths printed and the username on the shell prompt is always the same11:29
tristanNexus, ok I dont really remember off hand, and I dont have hours to throw at it right now... ask me a question :)11:30
tristanAnd refresh my memory :)11:30
tristanI recall we talked about some things which we'd have to sort out after... and we talked about the minimal first implementation, and what that would have to do11:30
jennismhmm tristan, perhaps I'll just tweak docker container and create an examples user for that11:31
tristanAnd we were uncertain if we could merge that when it was complete or if we would have to wait for other stuff11:31
Nexustristan: so that implementation has been written, it now works and allows you to open a workspace from a cached build tree. However nothing specific was done regarding the "special sauce" as that was the thing you said to leave out for now11:31
Nexustristan: so basically, i just need to know if you want it merged as is, with a follow up MR for special sauce stuff later(if at all) or if you want it put on hold for now11:32
*** dominic has quit IRC11:33
tristanAh the "special sauce" has to do with how the structure of Source.init_workspace() goes ahead and replaces Source.stage(), instead of augmenting it11:34
tristanjuergbi, give me a hand here, we discussed this in detail last time, and there was also some questions of optimizations in the air11:35
tristanI think something about staging without the .git/ subdir in regular circumstances, but not for workspaces ?11:35
juergbiyes, we concluded that we should normally avoid staging the .git subdir and similar11:36
juergbihowever, it is required for some projects that need `git describe` working when not building from a dist tarball11:37
juergbiit may be possible to specifically handle the `git describe` case without having to stage the .git directory, but we haven't really looked into this yet, afaik11:38
juergbiand yes, for workspaces we want to keep .git11:39
juergbinot sure how to handle the cached build dir case for workspaces. probably a lot less important in practice11:40
juergbiI mean, caching the build dir of a workspace build11:40
juergbiwe want to create a workspace from a cached build dir (#311), which may require a combination of cloning the .git and copying the cached build dir into it11:41
juergbiI don't think we've discussed that aspect in detail either11:41
tristanjuergbi, Ok so... to the point at hand11:42
tristanWe want to have workspace open work with cached build trees by default if one exists for the current cache key11:43
tristanjuergbi, And `init_workspace()` is being a royal pain in the ass about it11:43
tristanNow, if we were to later optimize staging to omit the .git directory, such that we could avoid caching it, we still need to reproduce it for a workspace11:45
tristanWhich, also sucks11:45
tristanOne temptation is to say: Lets deprecate init_workspace() and force Sources to do the init_workspace() thing unconditionally11:45
tristanBut that ignores that we might end up caching build trees without the obnoxiously large .git/ subdir11:46
tristanSo this is a sort of hot potato11:46
tristanjuergbi, if we were to deprecate init_workspace() now, and have workspaces *expect* them to be there until we do further optimizations, do you think we could live with that ?11:47
tristanjuergbi, one idea I have is... let's say you checkout a cached build tree for a workspace... and then you stage the source into a temp directory... and then you link the files in from the temp directory, only creating files which dont yet exist in the workspace11:48
tristanHow about that ?11:48
juergbialso have to keep in mind that the plan is to store sources in CAS11:49
juergbibut we don't want to store the .git directory in CAS either11:50
gitlab-br-botbuildstream: issue #372 ("Allow queues to run auxilliary jobs after an element's job finishes") changed state ("opened") https://gitlab.com/BuildStream/buildstream/issues/37211:50
juergbiif we assume that we only ever create workspaces from cached build dirs with the exact same source version, linking in missing files should work (well, some projects will probably modify VCS-controlled files :/)11:51
juergbithat's under the assumption that the cached build dir doesn't have the .git directory. otherwise it's pretty odd11:52
juergbiI have too many other things on my mind right now, not sure I can come up with a clear plan at this point11:53
Nexustristan: is this mergeable without the "special sauce" stuff for now?11:55
tristanNexus, be patient.11:58
Nexuskk11:58
tristanjuergbi, A.) I dont think we *store* sources in CAS, we do so temporarily for the sake of staging, as an intermediate step... B.) Of course we dont make that assumption, we need to open workspaces for which there was never a build12:00
juergbiA) it's only a cache, of course, yes12:01
tristanjuergbi, ok; if we can "fill in the blanks" for a matching version of checked out sources, this is going to work regardless of where the cached build tree is coming from12:02
juergbiB) the assumption I mentioned above is that cached build dirs don't have the .git directory, not that we necessarily have a cached build dir12:02
tristanjuergbi, remember that this is a *later* step, it means that; when we get around to omitting the .git dir... we would have to do this blank filling in12:02
tristanBut... holy shit webkit12:02
tristanSigh12:02
juergbiyes, I think we need to handle it before we mandate anything going through CAS or similar12:03
tristanjuergbi, https://gitlab.com/BuildStream/buildstream/issues/294#note_6863424112:05
tristanUmmm12:05
tristanSo, now that we know that build directories are about 17GB, we want to cache them in artifacts :-S12:05
juergbiI definitely don't want to store any .git directories in artifacts12:06
tristanRight12:06
tristanOk so we can't land this under any circumstance without fixing stage12:07
jmacI'm guessing we'd need some extra flag in .bst files to say when a build requires the .git directory12:07
tristanI feel rather hostile towards the 2 or 3 modules in the whole world who have the nerve to *require* a .git/ directory12:08
juergbi*cough* buildstream itself *cough*12:08
tristanRather I suspect that should be workaroundable12:08
tristanjuergbi, we work from an install dont we ?12:08
jmacI don't think we should make any assumptions about the way projects lay out source; they may not use git and put all their source files in .git/, if they want12:08
tristanwe do generate tarballs ?12:08
juergbiwe use the git describe version number trick12:08
juergbijmac: yes but source plugins could provide extra information12:09
jmacTrue12:09
tristanjmac, I agree, but I dont think the VCS counts in how projects lay out source, they are rather just the container12:09
jmacYes, that's what I'm saying12:10
jmacYou can have a .git directory which is not part of VCS12:10
tristanOh yeah, and of course any of these techniques is specific to the Source implementation12:10
tristanso if we're staging without it, it's because GitSource.stage() decided to12:10
jmacIn which case we'll know it's git so only that plugin strips .git; quite right12:11
tristanWell, I'm not sure we can have a solution to this immediately (already 9pm ?!) :-S12:13
juergbiI agree, this needs further thoughts12:14
tristanNexus, your answer for today is "No, this is not ready.", it's not related to your patch, it's just a very hard problem12:15
jmacIt's clear workspaces affect this so I need to go and read up on what they actually do12:15
tristanI'm going to comment on the issue (not the MR)12:15
tristancaching of workspace builds can be a double whammy too12:16
tristanbut I think we need a design which prevents that12:16
tristanWebKit's git repo is relatively very small, only around 6GB, it's just that people who work on WebKit, typically have an additional 20GB of stuff in their workspace12:17
juergbiI think we really want the Source-specific optimizations for workspaces in the end12:29
tristanhttps://gitlab.com/BuildStream/buildstream/issues/311#note_6926779712:32
tristanThat's my summary of the day12:32
* Nexus looks at the 500 word "comment" with something resembling horror, then resigns himself to start reading 12:40
*** aday has quit IRC12:56
*** aday has joined #buildstream12:56
gitlab-br-botbuildstream: merge request (jennis/136-clean-remote-cache->master: WIP: jennis/136 clean remote cache) #421 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/42113:03
*** Prince781 has joined #buildstream13:10
* tlater really appreciates pylint's suggested method names13:10
tristantlater, I see you opened #372... and I wonder do you already have a picture of what local LRU expiry is going to look like at a high level ?13:12
tlaterYep, I do, I thought it wasn't relevant to #372 though13:13
tlaterI can add my notes for that there, if you like13:14
tristanIs there an issue open for LRU expiry ?13:14
tlater#135 should be that issue13:14
tlaterThere is an MR for it too in !34713:14
tristanwould be nice to see the plan in there13:15
tristanright, MRs are probably at least a bit premature13:15
tlaterWell, I'd hoped that MR wasn't premature, but then concurrency hit :)13:16
tristan(this one at least)13:16
tristanyeah, understood :)13:16
* tlater will try to adopt the plan from that MR a bit and add it to #135, pretty clear on what I want to do once I have the extra jobs working 13:16
* paulsherwood wonders how folks would feel about the https://www.coreinfrastructure.org/programs/badge-program for buildstream13:17
*** xjuan has joined #buildstream13:21
tristanpaulsherwood, a quick look at that page makes it seem github related13:42
tristanbut maybe it was a joke :)13:43
cs_shadowquick clarification - When writing a source plugin, am I allowed to make the `ref` field a dict instead of a string?13:47
tristancs_shadow, yes13:47
cs_shadowtristan: thanks :)13:47
tristancs_shadow, if you change it later, you must support earlier versions13:47
cs_shadowsure, that makes sense13:48
tristanand set BST_FORMAT_VERSION on your Source plugin class (if that is an external plugin to BuildStream)13:48
tristanif you want people to be able to assert the format from their project.conf13:48
cs_shadowgood idea, it is indeed an external plugin13:48
paulsherwoodtristan: no, it's not github related, nor was i joking13:49
tristanright, you only need to set BST_FORMAT_VERSION if the format your plugin accepts is ever enhanced13:49
cs_shadowthere's a very good chance that it might change, especially in the early phases13:50
tristanpaulsherwood, ah ok - it looks a bit like begging for praise though doesnt it ?13:50
paulsherwoodi understand your point. however when i attempted the checklist for other projects i found it mostly worthwhile to think about13:50
paulsherwoodi'm ok not to do it, of course13:51
tristanits all a matter of perception, either way13:51
tristangetting an external approval will be a positive for some and a negative for others, I suppose13:52
paulsherwoodyup13:52
tristanon a personal level, I'm not the kind of person to chase a certificate, or to award certificate distributors with the gratification of feeling like their certificates are meaningful13:53
tristanbut it's a very personal standpoint :)13:53
tristanI wouldnt be against it at a project level if people really want that, is what I'm trying to say13:54
* tristan has to skip out on closing shop again13:54
jonathanmawhrm, is it correct that element passed into Pipeline.initialized() using the except_ arg will be loaded into the pipeline?13:57
jonathanmawI was planning to use except_ for elements that don't have element files (but we still know about them because they have an open workspace)13:57
*** tristan has quit IRC13:57
jonathanmawbut that doesn't seem to work, because we explicitly load them along with the other elements https://gitlab.com/BuildStream/buildstream/blob/master/buildstream/_pipeline.py#L12313:58
tlaterjonathanmaw: They have to be, unfortunately, although I don't remember the detail of why13:58
jonathanmawthe description on https://gitlab.com/BuildStream/buildstream/blob/master/buildstream/_frontend/app.py#L236 might be explaining why, but I don't understand it13:58
jonathanmawI was expecting except_ to be treated different under different circumstances according to that text, but that doesn't seem to be the case.13:59
tlaterjonathanmaw: It's treated differently depending on the command13:59
tlaterThough they will still be loaded before we start processing the pipeline in either case14:00
tlaterIt doesn't explain why we need to load them, unfortunately :|14:00
tlaterMaybe the loader explains it?14:00
tlaterHm, no14:02
tlaterjonathanmaw: I think we need to know what the dependencies of an excepted element are, which we can only know if we've loaded it - but I don't quite recall *why*14:03
*** Prince781 has quit IRC14:50
*** tristan has joined #buildstream14:55
tristanoh jaysus, except_15:00
tristanok, that is the part which is in most need of a refactor, we need to tear apart the pipeline and make it _only_ do this targets/except/loading stuff15:00
tristanjonathanmaw, the most confusing part of except_, is that that it is treated differently for a command15:01
tristanso, the way the code is setup, you cannot say... "Lets start with a list of toplevel resolved elements, and then process them with except, and then decide what to do with them"15:01
tristanThat is the horrible15:01
tristanjonathanmaw, the second most confusing part of except, is the part you dont understand, which is most probably because it's not documented well15:02
tristanWhat does --except mean... well, it's simple enough if you get down to what `bst fetch/track/show --except` *should* do15:02
tristanjonathanmaw, what except does, is, it takes some arguments (toplevels), and subtracts it from another build graph (other toplevels)15:03
*** noisecell has quit IRC15:04
tristanjonathanmaw, now, it's possible that one or more of the except elements, are not in the build graph you want to subtract it from, but remember that excepting is a recursive activity15:04
tristanso, I can take two build graphs, with two different toplevels, and except one from the other... the other will be chopped off *where the two graphs intersect*15:05
*** bethw has quit IRC15:05
tristanjonathanmaw, that first part, is because you want to say... bst track <something-from-gnome-world> --except core-deps.bst... where core-deps.bst is an unrelated stack element (because things in world depend directly into it, instead of generalizing)15:06
tristanjonathanmaw, it gets a *bit* more complicated, because build graphs have multiple toplevels15:06
tristanso, when you subtract one element recursively from the other build graph... you stop subtracting when you hit another explicit toplevel15:07
tristanthis is mostly tlater's domain really, he should be able to explain it ;-P15:08
* tristan thinks this part actually works beautifully, albeit the surrounding usage is a complete mess, one of the last messes which desperately need a cleanup15:09
tlatertristan: I forgot that we have multiple toplevels and was scratching my head over a situation in which we wouldn't just rip out the element from the tree15:10
tristanright, in fact `bst track --except` was not going to be useful without considering the intersection15:10
tristanbecause of the way stack elements are employed there15:11
tristanand, they turn out to be really useful that way15:11
* tlater still likes how the intersection algorithm works :)15:11
tristantlater, we had a lot of interesting conversations about how that would work, yes15:11
tristanI would love for you to be the one who rips _pipeline.py apart and makes it "just be able to load pipelines, and manipulate lists of elements, such that they can be planned and intersect-subtracted and such"15:12
* tlater would like to, but is tied up in other stuff atm :|15:13
tristanand then contributors wouldnt need to run away arms flailing when trying to navigate it15:13
tristanto be honest, it's the kind of thing that makes you think "Wait... is it really right to be adding more features here without fixing this ?"15:13
*** noisecell has joined #buildstream15:14
* tristan back from the harvest at the fried chicken farm...15:44
tristantlater, one part I forgot to mention in all of this interesting intersection logic, is the diamond case; which is also beautiful15:44
tristanthis really merits a diagram somewhere in the docs15:44
tristanWhen you except an element, the excepted element is excepted unconditionally; the part of the build graph which it removes however, is not removed when orthogonal elements outside of the except intersection independently depend on dependencies which would otherwise be subtracted15:45
tristanjonathanmaw, ^^^ there is the complete story :)15:46
* tristan wish he could document this with a diagram, and fix the pipeline, I will try to find the time15:47
*** toscalix has quit IRC15:47
*** Prince781 has joined #buildstream15:48
gitlab-br-botbuildstream: merge request (jennis/136-clean-remote-cache->master: WIP: jennis/136 clean remote cache) #421 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/42116:02
*** noisecell has quit IRC16:36
jmacjuergbi: One more question about remote execution if you're still around - you said "The build of a single element may involve execution of multiple actions" - is that Actions as in the Bazel Remote execution API? and if so, couldn't we do all our builds in one action object?16:52
juergbijmac: Yes, Action as per API16:53
juergbiFor many cases we could do everything in a single Action16:53
juergbiHowever, not reasonably well with the current plugin API16:54
jmacI can't think what the exception would be16:54
juergbiAnd some plugins do additional stuff between commands16:54
juergbiAlso, integration is run before plugin action with a slightly different sandbox: read-write rootfs (and no sources)16:55
jmacOh, so the plugin needs to do some logic which is outside the Action16:55
juergbiNot BuildElements but some others, yes16:55
jmacYes, OK, that makes sense.16:55
juergbiE.g. use the (virtual) filesystem API to move stuff around etc.16:55
jmacThanks juergbi.16:56
juergbiSee also 'command batching' at the end of the proposal mail16:56
juergbiI expect us to add this but it's an optimization16:57
jmacYes, you do explain it there, apologies!16:57
*** jonathanmaw has quit IRC17:00
*** slaf has quit IRC17:10
*** slaf has joined #buildstream17:21
*** solid_black has joined #buildstream18:15
*** Prince781 has quit IRC19:09
*** xjuan has quit IRC19:13
*** tristan has quit IRC19:35
*** solid_black has quit IRC20:08
*** aday has quit IRC21:45
gitlab-br-botbuildstream: merge request (jjardon/debian-9->master: .gitlab-ci.yml: Run test in current Debian stable (stretch)) #425 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/42523:29
gitlab-br-botbuildstream: merge request (jjardon/debian-9->master: .gitlab-ci.yml: Run test in current Debian stable (stretch)) #425 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/42523:30
jjardonpaulsherwood: even if we do not get the badge; I think is worth check we meet the requisites, all the criteria points seems reasonable: https://github.com/coreinfrastructure/best-practices-badge/blob/master/doc/criteria.md23:37

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