IRC logs for #buildstream for Monday, 2018-04-23

*** Prince781 has quit IRC00:15
*** Prince781 has joined #buildstream03:10
*** Prince781 has quit IRC03:51
*** noisecell has joined #buildstream05:24
*** noisecell has quit IRC05:53
*** tristan has joined #buildstream06:19
*** noisecell has joined #buildstream07:11
*** noisecell has quit IRC07:18
*** toscalix has joined #buildstream07:44
*** jonathanmaw has joined #buildstream07:58
gitlab-br-botbuildstream: merge request (tristan/except-hook->master: Handle exceptions in the main process) #427 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/42708:02
*** jennis has joined #buildstream08:06
*** bethw has joined #buildstream08:11
laurencetristan, toscalix, have just seen email re GUADEC CfP and noticed we have one week to submit.08:26
laurenceDeadline is Sunday 29 April.08:26
tristanYes08:28
laurenceLet's get that ball rolling :)08:29
*** mohan43u has joined #buildstream08:46
*** aday has joined #buildstream08:53
gitlab-br-botbuildstream: merge request (tristan/except-hook-no-test->master: Overwrite sys.excepthook to handle exceptions in the main application.) #429 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/42908:56
gitlab-br-botbuildstream: merge request (tristan/except-hook->master: Handle exceptions in the main process) #427 changed state ("closed"): https://gitlab.com/BuildStream/buildstream/merge_requests/42708:58
gitlab-br-botbuildstream: merge request (tristan/except-hook->master: Handle exceptions in the main process) #427 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/42708:58
gitlab-br-botbuildstream: merge request (tristan/except-hook->master: Handle exceptions in the main process) #427 changed state ("closed"): https://gitlab.com/BuildStream/buildstream/merge_requests/42708:58
tristanGah, annoying08:59
tristan"Comment & close merge request" *really* doesnt work08:59
gitlab-br-botbuildstream: merge request (tristan/except-hook-no-test->master: Overwrite sys.excepthook to handle exceptions in the main application.) #429 changed state ("merged"): https://gitlab.com/BuildStream/buildstream/merge_requests/42909:00
*** tiago has joined #buildstream09:02
*** dominic has joined #buildstream09:20
tristanjmac, So I've merged the original meat of it in !429 above, without the test; I tried a bit to make the test work but, it's not easily possible really09:42
tristando you have other concerns than that ?09:42
tristanI think we've handled all the exceptions; note that while the scheduler is running, they have to be handled in the asyncio mainloop callbacks09:43
tristan(they wont reach the main execution context anyway)09:43
tristanso this really only handles unhandled (non BstError) exceptions at load time pre-scheduler, or whatever happens post-scheduler; this notably can include bugs which occur with workspace operations outside of scheduler invocations09:44
jmacNo, not really - I'd like a test, but yes, it's going to be very difficult09:46
jmacIt's difficult enough getting the problem to occur manually09:46
jmacIf I get a chance I'll try and come up with a test for it, I think otherwise we leave it as is09:48
jmacThanks for doing the research/refactor and merging09:48
tristanRunning the `bst` command in that directory with the exception throwing `preflight()` implementation caused the error, but yeah it's not possible afaics without writing a custom plugin which explicitly breaks09:57
tristanThe exception could just as well also occur in `Plugin.configure()`09:57
tristan(at load time09:57
tristan)09:57
*** toscalix has quit IRC09:59
*** toscalix has joined #buildstream09:59
jmactristan: Where? Running `bst show error.bst` in tests/pipeline/preflight-error ?10:00
tristanjmac, yep10:00
tristanumm no10:00
tristanjmac, in the 'unhandled' test which I did not apply to master10:01
tristanthe preflight-error raises a valid preflight error, which is a BstError and explicitly handled10:01
tristanbut the unhandled-error test with plugin which your branch was adding, properly caused the excepthook to catch it10:02
*** cs_shadow has joined #buildstream10:02
tristanI tested it by reverting the excepthook patch and trying `bst show error.bst` in tests/pipeline/unhandled-error, and got the default, also the original code was doing "\n".join() which I fixed to be "".join() (the formatted traceback retains newlines)10:03
tristanSo, it was very clear that that fix effected how `bst show` behaves with an unhandled error :)10:03
jmactristan: So before !429 went in, unhandled_error does dump the stack trace outside the normal mechanism - but it's not a demonstration of it being overwritten by the status bar, which is what I really want10:03
tristanAh, yes10:04
tristanjmac, that is very hard to handle, and we discovered the reason for that after you had done that patch10:04
tristanjmac, and it's extremely hard to reproduce; I think you need to somehow get asyncio to have a bug for that to happen10:04
jmacYes, it will be10:04
tristanthe regular unhandled exceptions which trigger, happen in asyncio loop callbacks, and we fixed it there anyway10:05
jmacFor the moment though I'm satisfied that this will solve #197 unless we show otherwise, so we can close that if you're happy with doing so10:06
tristan(i.e. now we catch them when running any Queue() implementation post-task processing, and fire a MessageType.BUG message)10:06
tristanRight, will do :)10:06
gitlab-br-botbuildstream: issue #197 ("Status bar obscures text not printed through the logging mechanism (e.g. stack traces)") changed state ("closed") https://gitlab.com/BuildStream/buildstream/issues/19710:11
jmacCool10:12
tristantlater, I am suspecting that https://gitlab.com/BuildStream/buildstream/issues/374 may be fallout from incremental workspace builds, I am trying to reproduce it10:15
tlaterOof, that looks like a horrible one10:17
tristanit'll take a while to reproduce10:18
tristanand figure out what's up10:18
tristanIt might be a result of not re-running configure, not sure...10:19
* tristan wants to reach a stable-enough point for a 1.1.3 release10:19
tlaterI wonder what we'd have to do if it *is*, but I suppose there's no telling without debugging first10:19
tristanexactly10:20
tristanhave to figure out why10:20
tristanseems like maybe broken symlinks10:20
tristanwith ../../10:20
tristantlater, it could be that mcatanzaro ran `cmake` in such a way that places his builddir outside of the workspace dir10:21
tristantlater, and then we stopped correcting it by rerunning `cmake`10:21
tristanin which case... it would perhaps be good enough to have a good enough error message10:21
tristanand clarify that "Hey ! You only build BuildStream workspaces using BuildStream"10:22
tlaterShould we enforce that? Perhaps we could find a way to re-run configure if we detect someone mucking about with our build dir10:23
tristanThen again, it might be also worthwhile to think about possibly retrying a workspace build with a `prepare()` when it fails without `prepare()`10:23
tristanright, there is that10:24
tristanBut, that's quite not possible to know10:24
tristanone might know if say... commands were running and tried to access outside of the build directory using `../../`10:24
tristanand with a fuse layer, we might catch that nastiness10:24
tristanWe might provide a `--force-retry` or something more fantastically named to `bst build`10:28
tristanI might be called `--force-reconfigure` for the purpose of workspace incremental, but it should also apply to later incremental builds, and also the ability to force try to build a build which failed remotely (i.e. we only downloaded the failed build artifact)10:29
tristanwouldn't be nice to provide separate CLI options for all these cases10:29
gitlab-br-botbuildstream: merge request (214-filter-workspacing->master: Make workspace commands on a filter element transparently pass through to their build-dependency) #317 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/31710:29
tlaterIt would be nice if buildstream could just do the right thing10:30
tlaterBut I suppose there's really no way of telling what the right thing is...10:30
tristanWell, clearly when a failed build artifact is downloaded, you want the chance of retrying it10:30
tristana build can fail because say, you gave it too many CPUs10:31
tlaterPerhaps some sort of API for plugins to tell us when the configure commands may need to be rerun?10:31
tristanand as such, it tried to link 10 huge things at once10:31
tristanand died from OOM kill10:31
tristanWell, maybe there is a way to have plugins hint about something which may have went wrong workspace-wise10:32
tristanlike Element.tell_me_if_workspace_is_configured_to_build_outside_of_workspace_dir_please()10:32
tristanand have cmake/autotools/etc implement that separately, that is a possibility indeed10:33
tristantlater, I dont think it's clear cut that it would "solve every case"10:33
tristanbut it might be cool to have10:33
tristanrather, even if the build passes, we'd still want to know "If the workspace was reconfigured by the user"10:36
tristanBecause using the configure results which the user did outside of BuildStream, will most certainly cause a bug10:37
tristani.e. any configure option might be wrong, and the software you test against that workspace build will have an incorrect configuration10:37
tristanhmmm10:37
*** tiago has quit IRC10:39
*** tiago has joined #buildstream10:43
gitlab-br-botbuildstream: merge request (jmac/artifact-receive-profiling->master: WIP: Add artifact cache receive profiling domain and instructions.) #383 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/38310:44
Nexustristan: https://gitlab.com/BuildStream/buildstream/issues/311#note_6926779710:44
Nexushttps://gitlab.com/BuildStream/buildstream/issues/311#note_6926779710:44
gitlab-br-botbuildstream: merge request (jmac/artifact-receive-profiling->master: Add artifact cache receive profiling domain and instructions.) #383 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/38310:44
tristancs_shadow, I've commented on the incremental workspace builds again https://gitlab.com/BuildStream/buildstream/issues/209, it's currently closed; related to the above discussion, you may be interested in that...10:44
cs_shadowtristan: thanks! will have a look in a bit10:45
gitlab-br-botbuildstream: merge request (jmac/artifact-receive-profiling->master: Add artifact cache receive profiling domain and instructions.) #383 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/38310:45
Nexustristan: Please can you clarify your second bullet point in https://gitlab.com/BuildStream/buildstream/issues/311#note_69267797 as it contradicts the point of the functionality i added. Are you now saying that you do not want the ability to open a workspace using the cached contents of a build tree?10:45
Nexusignore my previous two, i was trying to get pasting to work, it was acting oddly10:46
tristanNexus, I don't think it contradicts; do you see any circumstances where A.) You are opening a new workspace... B.) The cached build tree for the element you are opening a *new* workspace on, is a result of a workspace build10:48
tristanI.e. if I understand, you are talking about this bullet: "This also means that we should probably not, under any circumstance, ever be caching a workspace build directory"10:48
Nexusthat's the one, yes10:48
tristanSo, the utility of opening a workspace using a cached build artifact... would have to revolve around the cache key of the *unworkspaced* element anyway10:49
tristanwe would use that build tree to open a new workspace, but we would not *feed* the cache with caching of build trees of already workspaced elements10:50
tristan(already as it stands, without cleaning things up, even without caching workspace builds we are talking about creating WebKit artifacts that are > 6GB, so that part also needs to be cleaned up before anything along these lines can land)10:51
Nexustristan: other than changing the directory that buildstream looks at when doing so, is there a difference in functionality between building a project, and building a workspaced project?10:51
tristanWhat is a "project" ? you mean an "element" ?10:51
Nexusyes, sorry10:51
tristanwe can have a "workspaced project" too, when we open a workspace on a junction10:51
tristanRight... so there is the changes we've been discussing above10:52
tristanI.e. we skip running configure-commands except for the first time10:52
tristanwhich leads to the issues described here: https://gitlab.com/BuildStream/buildstream/issues/209#note_6981416310:52
tristan(which I just pointed cs_shadow to ^^^^^^^^^^)10:53
tristanNexus, asides from that no there is not *currently*, except that if we're going to start omitting VCS directories from the staging area, that must not happen for workspaces)10:53
tristani.e. a workspace must have the VCS related data, while a build dir... only might or might not10:54
tristanjuergbi, or rather... we *might* reduce friction here by having the caching of build directories delegated somehow... such that a Source implementation might *Trim* the VCS data from an already staged directory10:54
tristanjuergbi, do you think that maybe Source->trim_vcs() might be a nicer approach ?10:55
tristanheh10:55
Nexustristan: to confirm a point you just made. you want to *ommit* VCS directories from the staging area (when building) but have them *included* on a workspace?10:55
tristandidnt think of that way before, that would allow the build to happen with VCS data in place (holding the hands of a few modules which love to have their .git/ directories in place)10:55
tristanNexus, the VCS directories *MUST* be omitted from the build dirs cached inside the artifacts10:56
juergbitristan: this wouldn't help remote execution, though10:56
tristanjuergbi, but if things are stage on demand... it shouldnt make things significantly slower right ?10:56
juergbiwe would have to put the whole .git directory into CAS, which we'd like to avoid10:57
juergbiremote execution itself in the worker should not be affected with on-demand staging10:57
tristanOr we'd only put it in case if the remote worker tried to access something in .git/ ?10:57
juergbibut preparation10:57
tristanhehe10:57
* tristan pushes the limits10:57
juergbithat's not really possible10:57
juergbiMerkle trees and such10:58
juergbi(without special provisions, that is)10:58
tristanyou can't have CAS ask the "Data provider" to "give me the data for this merkle branch/sha" ?10:58
tristanRight, that would fall under "special provisions", i.e.: Modifying the spec to some degree10:58
juergbiwe don't even want to calculate the SHA for the .git directory10:59
juergbiand without that SHA, the .git directory is not in the overall Merkle tree10:59
tristanAh.. right, the remote worker would have to ask the filesystem for ".git/foo", then that would have to ask CAS for ".git/foo", which would have to say "Hey do we have a sha for it ?"... etc10:59
tristanjuergbi, so in other words, you are absolutely convinced that we need to not have the VCS data at stage/build time ?11:00
tristanjuergbi, or are you tempted to rework the spec into something more ideal ? (or is it already ideal ?)11:00
tristanjuergbi, we get one shot at this, so let's be bastards and change the spec if it's worthwhile11:01
* tristan has a feeling it's sufficiently designed as is and that we rather not change it because the change would be so drastic, it would cause everyone at google to rewrite all of their build systems11:02
juergbiI don't have an idea yet how to improve the spec in a clean way to support this11:02
tristani.e. it would change completely that "You know the sha of everything you will need before building"11:03
tristanand cause everything to happen on demand11:03
juergbiI would like to look into the possibility of getting the right git describe output even without a big .git directory11:03
juergbiIf 'git describe' is the only real reason for the whole thing11:03
tristanthat's an assumption not worthwhile making I think11:04
tristani.e. either we support everything, or tell people that "You can't have .git/ in your build directory"11:04
juergbiWell, if there are other use cases, the special casing might not make sense either, so we'd need to know about them11:05
tristanit's not *that* horrible of a restriction11:05
juergbiThe issue is that there are a significant number of projects that need it. And requiring upstream projects to be patched up to work with BuildStream is really bad11:06
* tristan doesnt like making any assumption of why they would want ".git/", if they start depending on having ".git/", we should give them that11:06
gitlab-br-botbuildstream: issue #375 ("Provide a way to run configure-commands again for workspaced elements") changed state ("opened") https://gitlab.com/BuildStream/buildstream/issues/37511:07
juergbiIf they depend on the whole history, the whole history would have to be in the source unique key11:07
juergbiCurrently the git source unique key does not cover that11:07
juergbiAnd it would have to be in the cached build directory11:08
juergbietc.11:08
juergbiWe couldn't just fake it11:08
juergbiI don't think it's necessary, but going all the way to considering .git/ part of the sources has so many issues11:08
tristanjuergbi, do you have any ideas of how to workaround this for the `git describe` only case ?11:10
tristanI have a feeling there are a number of ways to do that, too, people may be using `git tag` with `git show --some options` and `git branch` and parsing the output11:11
tristanwe can't really give them a custom git tool, which actually works in their target runtime11:12
tristanand spoof the result11:12
juergbitristan: one option could be to retrieving the list of commits since the last tag and creating a .git directory that only contains these objects + the tag11:12
juergbinot completely trivial but would allow use of regular git tooling11:13
tristanHow many things actually want to have git describe at build time ?11:13
juergbiI don't have a number11:14
juergbiBut I've seen this in various projects11:14
tristan"there are a significant number of projects that need it"11:14
tristanyeah, used perhaps11:14
tristanbut lets assume that 90% of them have sane developers and don't *require* it11:15
tristani.e. their build scripts will conditionally do some fancy if there is a .git directory11:15
juergbiI don't remember a case where it's optional11:15
juergbiIt's not optional in BuildStream is it?11:15
tristanI am *completely* happy to admit that it is a complete trainwreck of a screwup if it is non-optional in buildstream11:16
tristanthat is not the point11:16
juergbiwell, it may be optional in that you'll get version UNKNOWN or something11:16
juergbithe project might still build11:16
juergbibut not what the user wants11:16
gitlab-br-botbuildstream: merge request (jjardon/bubblewrap->master: docs: Some small corrections about install requirements) #430 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/43011:17
tristanSo you think that `git describe` *replaces* all versioning information in the majority of user projects, instead of *augmenting* the hard coded major/minor/micro numbers ?11:18
tristanThat is unfortunately a sane guess to make11:18
juergbiYes, that's my guess11:18
juergbiAs it's especially convenient in that case. You no longer have to bump versions everywhere for a release11:18
gitlab-br-botbuildstream: merge request (jjardon/install_deps->master: WIP: Update install instructions) #406 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/40611:18
juergbiLinux kernel uses it for optional augmentation, and there are probably others where it's really optional11:19
juergbiin git itself it's also optional11:19
juergbiin spice and vala it generates version UNKNOWN if there is no .git (and no tarball)11:20
juergbialthough convenient, it might indeed be considered bad practice11:21
tristanOk ok so... maybe it is still reasonable to expect that... "If it costs me 6GB of diskspace to have webkit for build purposes, I totally expect to populate CAS with 6GB of webkit repo"11:21
tristanand to remove VCS data from the post-built built-tree for build purposes ?11:21
tristanNah11:21
juergbiespecially with git pulls later this doesn't make sense, imo11:22
tristanThere is no circumstance where it makes sense to cache any build tree that is not exactly the build tree which was staged.11:22
tristanI.e. if we need .git/ when building... we need it in the cached build tree11:22
tristanUnless we expect to reconstruct it with Sources11:23
juergbiyes, I'd like to avoid this discrepancy as well11:23
tristanjuergbi, for the case of git, would a shallow clone be enough ?11:26
tristanfor the build dir ?11:26
juergbino, git describe doesn't work properly on shallow clone, afaik, as the earlier commit objects (and possibly tags) are not included (depending on the depth setting)11:27
tristangrrrr11:27
tristanjuergbi, I'm hearing that for git describe to work, you only need A.) The latest tagged object, B.) All the commits *since* the latest tag11:35
tristanwhich seems like a very small amount of history11:35
juergbithat's how I understand it, although I haven't tried it with just that11:35
juergbihence my suggestion with creating a .git directory with just those objects11:36
tristanThe git folks however have not been able to give me a command line which does "git checkout --all-commits-since-latest-tag-including-tag"11:36
tristanI guess we could use a loop or smth, hard to tell for sure11:37
juergbicombination of git describe and git clone --depth could work11:37
juergbiwould still include way more objects than describe needs, though11:37
cs_shadowtlater: hey! Quick pm?11:38
tlaterSure11:38
gitlab-br-botbuildstream: merge request (214-filter-workspacing->master: Make workspace commands on a filter element transparently pass through to their build-dependency) #317 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/31711:42
juergbitristan: With some more code we could likely create a minimal .git directory. It shouldn't be too hard. Shall we give that a try?11:43
tristanRight was out for a sec11:45
tristanjuergbi, first... lets pause for a moment, I think it would be enough, but what would we do with it...11:46
tristanjuergbi, A.) Make all Source plugins "stage the minimum" by default I guess ?11:46
tristanB.) We'd deprecate / throw away the existing init_workspace()11:47
tristanOR, alternatively we would use that codepath for the workspace checkouts (in the absence of a build dir)11:48
gitlab-br-botbuildstream: merge request (jjardon/doc_sandbox->master: WIP: docs: Fix build with latest version of sphinx) #414 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/41411:48
tristanAnd we'd "fill in the gaps" by doing init_workspace() into a tempdir, and copy-if-not-exist from the tempdir into the workspace target11:48
tristanjuergbi, I'm *pretty* sure that would cover all the cases yes ?11:48
juergbinot the other way round? extract the cached build dir on top of the init_workspace() dir?11:49
tristanOr that, indeed11:49
juergbione remaining question would be whether/how we'd cache the build dir of workspace builds11:49
tristanjuergbi, still, you're going to have to figure out something for building workspaced elements over CAS11:49
tristanI *think* the answer to that is *never cache build trees of workspaced builds*11:50
tristanbut, I'm not entirely sure11:50
tristanWe already never share artifacts from workspaced builds11:50
juergbiI would also tend towards that11:51
tristanbut, it's nice to have the exact build tree state of a failed build11:51
tristanright now we copy it into the build tree, but those failed build trees should turn into failed build artifacts11:52
juergbiyes, we'll have to think about this some more, but with this plan we're not actually changing API, so we can implement it and figure out the rest later11:53
juergbiwithout risking forth and back on the API side11:53
tristanwe are changing API, subtly though11:54
tristani.e. we're saying that Source.stage() does something different11:54
tristanand that Source.init_workspace() doesnt do that thing11:54
tristanit's not a big change and doesnt effect any known Source implementations in the wild, though11:55
gitlab-br-botbuildstream: merge request (jjardon/doc_sandbox->master: WIP: docs: Fix build with latest version of sphinx) #414 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/41411:55
gitlab-br-botbuildstream: merge request (jjardon/doc_sandbox->master: docs: Fix build with latest version of sphinx) #414 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/41411:55
tristanjuergbi, ok well... lets try this then11:55
juergbiIn a way it's just an optimization. That's assuming there aren't any projects that rely on even more from the .git directory11:55
tristanwell, we'll have to clearly state that with the git plugin I suppose11:56
juergbiYes, should definitely document it11:56
gitlab-br-botbuildstream: merge request (jjardon/doc_sandbox->master: WIP: docs: Fix build with latest version of sphinx) #414 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/41411:56
tristanI think this might also effect .bzr though, right ?11:57
juergbiwell possible, yes11:58
juergbiI know very little about bzr, though, e.g., whether the equivalent of git describe is used at all11:58
tristanboth on the plugin author facing Source API and the user facing git/bzr plugins11:58
tristantrue11:58
gitlab-br-botbuildstream: merge request (jjardon/doc_sandbox->master: WIP: docs: Fix build with latest version of sphinx) #414 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/41412:01
gitlab-br-botbuildstream: merge request (214-filter-workspacing->master: Make workspace commands on a filter element transparently pass through to their build-dependency) #317 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/31712:06
gitlab-br-botbuildstream: issue #376 ("Sources to only stage what is required for building, omitting large parts of VCS history") changed state ("opened") https://gitlab.com/BuildStream/buildstream/issues/37612:06
tristanjuergbi, Nexus: see https://gitlab.com/BuildStream/buildstream/issues/37612:07
juergbifor bzr we might want to support a similar approach as git in the future, if necessary12:13
tristanagree12:13
juergbibut it's much easier to go from no .bzr to minimal .bzr12:13
tristanI think we can just cross our fingers12:13
*** toscalix_ has joined #buildstream12:16
gitlab-br-botbuildstream: merge request (jjardon/doc_sandbox->master: WIP: docs: Fix build with latest version of sphinx) #414 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/41412:17
gitlab-br-botbuildstream: merge request (jjardon/doc_sandbox->master: WIP: docs: Fix build with latest version of sphinx) #414 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/41412:21
gitlab-br-botbuildstream: merge request (jjardon/doc_sandbox->master: docs: Fix build with latest version of sphinx) #414 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/41412:21
jonathanmawjuergbi: can you review https://gitlab.com/BuildStream/buildstream/merge_requests/317 when you have time, please?12:22
juergbiwill do12:24
tristanjuergbi, fwiw, I'm trying to take most of the MR work off your hands for the short term (because CAS etc), but I've been leaving the involved patch jonathanmaw mentioned clearly in your court :)12:24
tristanas you have already traveled some distance on that12:25
jonathanmawtvm juergbi12:25
juergbiyes, makes sense12:26
gitlab-br-botbuildstream: merge request (jjardon/doc_sandbox->master: docs: Fix build with latest version of sphinx) #414 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/41412:36
*** noisecell has joined #buildstream12:40
tristanjjardon, ugh.... :'(12:40
tristanjjardon, I just built jjardon/doc_sandbox12:41
tristanit takes away all the nice formatting we had, and uses this hectic random toc using the module index generated by sphinx-api-doc :'(12:41
tristanand puts sandbox there redundantly, which is reachable by buildstream.sandbox subpackage12:42
jjardonyeah, I though it was not needed with deph 5, as it is actually there, but is still needed to add it explicity12:44
* tristan comments on issue instead12:44
tristanjjardon, We had a nice flat list there specifying only the interesting entry points, which is all inter-linkable; we would rather not have the "module index" thing there *at all*12:45
tristanit would be nice to use explicit ToC references instead of links, for the :mod:`Bla <link>` entries we had before, that way we cooperate with the toc12:46
tristanbut the moduleindex thing which sphinx-api-doc creates is something that we should hide completely12:46
jjardontristan: ok, but that would mean we have tomaintain the index manually, instead it being autogenerated12:47
tristanjjardon, *definitely*12:47
tristanyes, it's a very short list12:47
tristanI do the same for plugin additions12:47
tristanif we can fix the plugins list to use ToC entries too, that would be stellar12:47
*** toscalix_ has quit IRC12:53
gitlab-br-botbuildstream: merge request (jjardon/bubblewrap->master: docs: Some small corrections about install requirements) #430 changed state ("merged"): https://gitlab.com/BuildStream/buildstream/merge_requests/43013:00
gitlab-br-botbuildstream: merge request (jmac/artifact-receive-profiling->master: Add artifact cache receive profiling domain and instructions.) #383 changed state ("closed"): https://gitlab.com/BuildStream/buildstream/merge_requests/38313:06
gitlab-br-botbuildstream: merge request (bst-here-update->master: bst-here: Add '-u' flag to upgrade buildstream (Issue #291)) #311 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/31113:10
*** Prince781 has joined #buildstream13:12
gitlab-br-botbuildstream: merge request (jjardon/install_deps->master: WIP: Update install instructions) #406 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/40613:16
gitlab-br-botbuildstream: merge request (sam/compose-symlinks-issue->master: Avoid compose element dropping files that are staged inside directory symlinks) #295 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/29513:16
gitlab-br-botbuildstream: merge request (jjardon/install_deps->master: WIP: Update install instructions) #406 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/40613:18
gitlab-br-botbuildstream: merge request (jjardon/install_deps->master: Update install instructions) #406 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/40613:19
gitlab-br-botbuildstream: merge request (jjardon/install_deps->master: Update install instructions) #406 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/40613:19
tristancs_shadow, tlater; lets wait for mcatanzaro's reply but... I was also wondering maybe we should make `bst workspace open` have an `--incremental` switch13:21
tristanNot because I think optionality is important here13:21
tristanbut rather only because I can't think of a way to make the user really understand that restriction other than to make the user ask for the functionality explicitly13:22
tristanor, that it would be a good way for the user to have a sane safe default, while understanding the consequences of asking explicitly for --incremental13:22
tristan*maybe* a message after opening the workspace would be good13:23
tristanbut, the point is, we shouldnt be letting it escalate to the point where users are confused as to why things are acting strangely, and coming to ask us here or on the mailing list13:23
tlatertristan: That would work quite nicely with the build tree cache workspaces as well13:25
gitlab-br-botbuildstream: merge request (bst-here-update->master: bst-here: Add '-u' flag to upgrade buildstream (Issue #291)) #311 changed state ("merged"): https://gitlab.com/BuildStream/buildstream/merge_requests/31113:25
tlaterI did expect users to perhaps be slightly confused where these build trees in their workspaces are coming from - probably not a bad change overall13:26
cs_shadowI agree that being explicit about incremental workspace builds might provide a more intuitive UX13:26
*** tristan has quit IRC13:27
cs_shadowWe should also say something about configure-commands as skipping it on subsequent runs may not be very intuitive for the users13:27
tlaterAgreed, but it's hard to do without littering the buildstream output with warnings13:28
tlaterPerhaps just leave it in the CLI documentation for incremental workspaces?13:28
cs_shadowCLI docs should work IMHO13:29
*** Prince781 has quit IRC13:32
*** Prince781 has joined #buildstream13:33
*** tristan has joined #buildstream13:34
* tristan was swapping locations13:36
tristanbut got the backlog13:36
gitlab-br-botbuildstream: merge request (sam/compose-symlinks-issue->master: Avoid compose element dropping files that are staged inside directory symlinks) #295 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/29513:37
tristanFor now I'm leaving an extra comment on https://gitlab.com/BuildStream/buildstream/issues/374, lets see what Michael says13:42
tristanhmmm, lets take the plunge and merge https://gitlab.com/BuildStream/buildstream/merge_requests/29513:52
tristanthe code seems sound to me, and a lot of people looked at this13:52
tristanjuergbi, jmac ^^^ any worries ?13:52
* tristan has been wanting to merge that but was hoping someone might do a bit more research in the linked issue13:53
tristanbut, lets trust our regression tests, this is an improvement13:53
juergbiI don't have any concerns but I don't think I've looked into this in detail13:58
* tristan hits merge13:58
tristansymlinks need very close attention13:58
gitlab-br-botbuildstream: issue #270 ("Compose element throws away files inside directory symlinks at integration time") changed state ("closed") https://gitlab.com/BuildStream/buildstream/issues/27013:58
gitlab-br-botbuildstream: merge request (sam/compose-symlinks-issue->master: Avoid compose element dropping files that are staged inside directory symlinks) #295 changed state ("merged"): https://gitlab.com/BuildStream/buildstream/merge_requests/29513:58
tristanYay, and we've snuck ssssam[m] into the contributor list for 1.1.3 \o/13:59
tlaterssssam[m] should change a comment every buildstream release14:00
*** xjuan has joined #buildstream14:06
tristantlater, https://gitlab.com/BuildStream/buildstream/issues/291 <-- think we can close this ?14:08
tristanWe've now added the `-p` and when you run `bst-here --help` you should see an option about pulling the latest buildstream docker image14:09
tristanI think that makes it "easy to upgrade"14:09
tlatertristan: Yeah, just checked that, tyvm14:09
tlaterI think that can be closed :)14:09
gitlab-br-botbuildstream: issue #291 ("Updating buildstream is non-trivial with bst-here") changed state ("closed") https://gitlab.com/BuildStream/buildstream/issues/29114:10
tristanjuergbi, any thoughts on https://gitlab.com/BuildStream/buildstream/issues/62#note_69867332 ?14:15
tristanI am really thinking of backing out etag and doing it differently14:15
tristanwell, not "backing it out"14:15
tristanbut, its really not right that this is saved as project data14:16
tristanit should be local cache state data14:16
gitlab-br-botbuildstream: issue #377 ("Change how `etag` is stored for file download source plugins") changed state ("opened") https://gitlab.com/BuildStream/buildstream/issues/37714:22
* tristan files #377 for the etag issue14:23
juergbitristan: Good point. Yes, I think this would make more sense14:27
*** xjuan_ has joined #buildstream14:32
*** xjuan has quit IRC14:34
tlaterCould someone who knows about multiprocessing help me understand this: https://gitlab.com/BuildStream/buildstream/blob/master/buildstream/_scheduler/job.py#L287 ?14:47
tlaterI figured at first that nothing between the parent and child was shared14:47
tlaterBut it turns out that stuff like self.element just copies over14:47
tlaterI suspect that the child process inherits any existing data14:48
tlaterBut now I don't understand why we need to pass the queue14:48
tlaterThis is causing issues, python complains to me that apparently the queue is supposed to only be shared through inheritance...14:48
tlaterI.e. `RuntimeError: Queue objects should only be shared between processes through inheritance`14:48
tlaterThough that happens without a stacktrace and only after heavy modifications, so may not be related14:49
juergbitlater: it's fork-based. the child inherits everything but it's copy-on-write, i.e., the parent doesn't see any changes that the child makes. and the child doesn't see any changes in the parent after the child has been created14:54
dominictlater, this might be completely unrelated (not looked into the issue) but the man page for 2 fork was helpful for what is/isn't shared14:54
tlaterHm, ta gius14:56
tlater*guys14:56
tlaterjuergbi: Do you happen to know if multiprocessing.Queue works differently here?14:56
juergbiin case file descriptors are used internally, they are duplicated as is, there is no copy on write for that14:56
tristantlater, I believe it does (i.e. the python highlevel stuff)14:57
juergbiI don't remember the Queue details14:57
tristantlater, we have to poke into the internals of multiprocessing.Queue so we can get it's file descriptor14:57
tlaterAlright, I'll dive into the doc for that I suppose... I really wonder what's failing here, was *almost* done getting rid of `element` in Jobs.14:57
tristanhttps://gitlab.com/BuildStream/buildstream/blob/master/buildstream/_scheduler/job.py#L58014:58
tristantlater, I suspect the machinery is really working fine14:59
tristantlater, maybe sprinkle some debug statements around and discover what's going on... beware of going too far down the python implementation detail rabbit hole15:00
tlaterHm, tried quite a lot of debugging statements, it's a bit hard to pinpoint where it's breaking without stacktraces though15:01
tristanheh15:04
tristantlater, you might be getting fooled by my recent landing of the override of sys.excepthook, which should technically not be inherited by the child task, but is (it doesnt really do harm as long as job.py is still handling them properly)15:05
tristantlater, then you could try just piping through cat, disabling the queueing of error messaging for testing purposes, and seeing the messages in stderr15:06
tristan(the stack traces, if there indeed are any)15:06
tlaterAh, that's probably worth looking at, yeah ;p15:06
tristantlater, fwiw, stdout/stderr is inherited15:06
tristanwe dont do anything to prevent that, we just carefully collect stderr/stdout from child commands (like git, etc)15:07
tristanand we call anything that says `print("foo")` a bug15:07
tristanin fact, I use sys.stderr.write("...") at times directly just to debug stuff from a child task15:07
tristanand pipe bst | cat to ensure the status area doesnt stomp on anything15:08
tlaterYup, I've been making use of that trick15:08
tlaterReally annoying that we can't work around that, actually15:08
tristanwell, at other times I use the plugin.{info,warn,etc} mechanism to print stuff15:09
tristandepends, but with the code you're playing with, looks like you want something more raw15:10
tristaneventually, I'd like domain specific debug flags; so we can have something like Context.debug(domain, message)15:10
tristanand enable specific domains, but I dont think it's extremely important right now15:11
tristannice to have15:11
tristan(this is especially useful if we want more context from a user, who is able to reproduce an issue I am not able to, if we've already put a lot of debug statements which people can enable at runtime)15:11
gitlab-br-botbuildstream: issue #374 ("Bad file descriptor errors") changed state ("closed") https://gitlab.com/BuildStream/buildstream/issues/37415:36
*** Prince781 has quit IRC16:10
*** Prince781 has joined #buildstream16:35
*** Prince781 has quit IRC16:40
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:58
*** dominic has quit IRC16:59
*** toscalix has quit IRC17:16
*** noisecell has quit IRC17:18
jmacCan you tell gitlab to stop testing a given branch? I'm working on a development branch and it's going to contain all sorts of rubbish which won't pass tests17:19
tristanit's not horrible that branches with failing tests exist17:20
tristanalthough I'll point out that it's annoying that people create MRs waaay in advance of ever proposing an MR17:20
jmacIt's just using up runners pointlessly17:20
jmacThis isn't going to be an MR17:20
tristanthat is indeed problematic17:21
tristanI would like to have better control on that too17:21
* tristan doesnt know how off hand, maybe something in the gitlab settings lets us do that17:22
tristanI'd like to only run them on MR branches, or when explicitly created from the pipelines UI (in case someone wants to try CI in advance of creating an MR)17:22
*** Prince781 has joined #buildstream17:23
*** aday has quit IRC17:46
*** Prince781 has quit IRC17:47
*** aday has joined #buildstream17:47
*** zalupik has quit IRC18:59
*** zalupik has joined #buildstream18:59
jjardonjmac change the .gitlab-ci.yml so not job are being executed?19:42
jjardon(Removing the file completely will work if you don't want to remove jobs individually)19:43
*** jonathanmaw has quit IRC19:58
*** bethw has quit IRC20:49
*** Prince781 has joined #buildstream21:05
*** xjuan_ has quit IRC21:29
*** Prince781 has quit IRC21:47
connorshea[m]tristan: jmac you can maybe use only/except to run jobs only on the upstream, unfortunately there doesn't seem to be a way to only run jobs when there's an attached MR https://docs.gitlab.com/ce/ci/yaml/#only-and-except-simplified21:53
bochechaconnorshea: that's a requested feature21:54
bochechaconnorshea: https://gitlab.com/gitlab-org/gitlab-ce/issues/2390221:56
connorshea[m]oh hey I remember pushing for that internally since it was required for Danger to work, but it never really got anywhere21:56
connorshea[m]it was an architectural decision to make CI pipelines run based on commits rather than merge requests IIRC so it's not an easy change21:57
bochecha"internally"? you work at gitlab? :)21:57
connorshea[m]used to :)21:58
connorshea[m]long story :D21:59
bochechaoh well… I don't know what part you played in what Gitlab is today, but thanks anyway, it's pretty great overall :)21:59
connorshea[m]I did some frontend performance work I'm pretty proud of, and also made the current docs site (previously it was a single bash script)22:00
connorshea[m]other than that I can't be thanked for too much :P22:00
bochechathe docs are pretty good :)22:02
*** tristan has quit IRC22:16
*** aday has quit IRC22:59
*** albfan[m] has joined #buildstream23:59

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