IRC logs for #buildstream for Friday, 2018-08-10

*** cs_shadow has quit IRC01:04
*** tristan has joined #buildstream03:09
*** leopi has joined #buildstream04:13
*** leopi has quit IRC05:08
*** leopi has joined #buildstream05:47
*** tristan has quit IRC06:15
*** tristan has joined #buildstream06:37
*** noisecell has joined #buildstream06:49
*** tristan has quit IRC07:14
*** tristan has joined #buildstream07:45
qinustyCan someone review https://gitlab.com/BuildStream/buildstream/merge_requests/627 if you've got a few minutes to spare08:08
*** phildawson has joined #buildstream08:08
tristanqinusty, I'll take a look08:11
tristanvalentind, I'm hoping to roll out a 1.1.6 today, do you think we'll be able to include the deterministic staging fixes within the next few hours ?08:12
qinustycheers, I feel like we might want a dedicated docs page for Configurable Warnings once we start adding more core warnings. But for now they're in format_project.rst08:12
jjardonhi, anyone around to review https://gitlab.com/BuildStream/buildstream-docker-images/merge_requests/56/? all docker images will be broken until we merge that08:16
*** bochecha has joined #buildstream08:16
tristanjjardon, I asked Chandan to look at it in my email since he maintains that08:19
tristanjjardon, I think maybe a very much smaller merge request which *only* fixes the ruamel.yaml problem might have a better chance of getting fast tracked08:19
tristanqinusty, format_project.rst sounds like exactly the right place08:20
tristanqinusty, at least for documenting the functionality... indeed capturing all the individual warnings themselves is... different08:20
valentindtristan, I think I can. I fixed some stuffs. Let me check what is remaining.08:23
tristanvalentind, great :)08:32
valentindtristan, Can we merge !565 also?08:33
tristanoh nice... lets look at that !08:34
valentindI think we forgot about it.08:34
* tristan pushes it on the stack temporarily... to pop back down to fatal warnings after08:34
tristanvalentind, ensuring we dont forget about it means: Add it to 1.2 milestone, add the Urgent label... that should have been done by one of us, to issue 49808:36
tristanbut we let it slip08:36
tristanvalentind, gah, I have to nag you that you have a tendency to not restructure surrounding code when making changes08:37
tristanvalentind, why are we passing os.environ() to run_bwrap() ?08:38
tristaninstead of removing the environment arg there ?08:38
tristanvalentind, these things add up, and overtime the hedges get overgrown with dead code of all kinds08:38
valentindtristan, Oh ok.08:39
valentindOK, I can clean that up.08:39
*** noisecell has quit IRC08:39
qinustycheers tristan, when you mention keeping hold of the node with the provenance assosciated with it. Do you mean the root node, or just the `fatal-warnings` node? Since the fatal warnings node is bool or list, it can't make use of _yaml.node_get_provenance()08:43
tristanqinusty, I see the conundrum08:44
tristanqinusty, I think there are two more important conundrums to think about08:44
tristanwell, one of them is probably API08:45
tristanThe other is more serious, lets ask that question first08:45
tristanqinusty, Does `fatal-warnings` apply only to the project where it is declared ? Or, is it important to allow a depending project to dictate how to behave with warnings issued by processing related to elements in subprojects ?08:46
qinustyI'd argue that the root project decides which it wants fatal08:47
tristanThat's not how you implemented it, I think :)08:47
tristanHowever, they both have different properties, and I think I like the way it is too08:48
qinustyI agree, I hadn't thought about it until now08:48
tristanI.e... if I'm gnome-build-meta and I want to make some of my warnings fatal, do I want my build to abort when I use a new version of freedesktop-sdk ?08:49
tristanI sort of think that no, I rather want to send the freedesktop-sdk maintainers an email on their list, and ask them to consider making some specific warnings fatal08:49
qinustyThat makes sense too, I guess it comes down to how much control you want over subprojects.08:50
tristanbut the guarantees that freedesktop-sdk provides me, is their business08:50
tristanin that light, I think you did the right thing08:50
tristanThe point of subprojects is all about controlling what you want to depend on, not controlling the subprojects themselves; however, it is still an interesting question08:51
tristanjjardon, I wonder if you have 2 cents to throw at this ?08:51
tristanqinusty, aside from that, the other point I had in my mind was mostly about going to such an extreme length to validate that the project only uses valid warning tokens08:52
tristanqinusty, For instance... lets say that you use a bzr source in your project... and you declare a warning from the bzr project to be fatal08:53
tristanEventually, you migrate that to a tarball08:53
tristanAnd you get an exploding target because bzr is not loaded in your pipeline anymore08:53
qinustyThat was a decision which I am not too defensive about, we can take it or leave it *shrugs*. I'd argue that if you migrate you should clean up your project.conf08:53
qinustyLeaving fatal-warnings when you don't need them will just bite you further down the line when you add something which does throw that warning08:54
jjardontristan: agreed with what you say there; do not assume you can change anything from freedesktop-sdk if you are a gnome-build-meta dev08:54
tristanjjardon, yeah I think so too08:54
tristanqinusty, in that case, I think we can remove the whole debate about the node parsing and all that08:55
qinustyBecause you don't need provenance if you don't validate08:55
tristanqinusty, and we can remove the added API to plugin.py, etc08:56
jjardonwhen s isomeone working in a specific problem in gnome-build-meta he/she migth have no  time/do not want to fix issues with freedesktop-sdk08:56
qinustyHow so tristan?08:56
*** jonathanmaw has joined #buildstream08:56
tristanqinusty, because it's all about reporting a list of what valid tokens exist08:56
tristanso that we can... validate them08:57
tristanqinusty, and maybe... ensure they are unique ? or, is the prefixing with the plugin kind not enough for this ?08:57
qinustyI had assumed that prefixing with kind was enough,08:57
tristanqinusty, I mean we can remove the whole 'register_warnings' and 'get_warnings()' stuff08:58
qinustyYeah I get that now08:58
tristan:)08:58
qinustyUniqueness though, it is prefixed with the plugin name08:58
tristanSo, we do validate a *lot* of stuff, and that's great, but I think this is the right balance08:58
qinustys/name/kind08:58
qinustyAnd kinds can't include colons.08:59
tristanWe do not validate public data, as that's a dynamic thing, people can annotate what they want and then read that back from dependencies08:59
tristanright08:59
qinustySo I /think/ that it's fairly unique09:00
tristanqinusty, You will have to sort out the exception of the base classes09:00
qinustyelement and plugin?09:00
tristanqinusty, I think it makes sense that when self.warn() is called from core base classes, we don't use any prefix09:00
qinustys/plugin/source/09:00
tristanPlugin,Element,Source... and probably also BuildElement and ScriptElement (should they ever)09:01
tristanqinusty, one approach for that is to add a hidden, private keyword argument to Plugin.warn()09:01
qinustyso checking isinstance() for each of those?09:01
tristaninforming it that it is called from "core"09:01
qinustyUm09:01
tristanNo no... never that please :)09:01
qinustyExactly09:01
tristanSo we could call it `_core` and omit it from the docs09:02
qinustySounds good09:02
tristanif the docs render showing the private `_core` param, it means we just need to override the signature (by placing the signature as the first line in the docstring)09:02
tristanthere are some precedents for that already09:03
tristanwell, mostly on constructors though; e.g.: https://gitlab.com/BuildStream/buildstream/blob/master/buildstream/element.py#L15509:04
tristanqinusty, that line ensures we dont spam the docs with the arguments of the Element constructor09:05
tristanqinusty, here is a better example: https://gitlab.com/BuildStream/buildstream/blob/master/buildstream/element.py#L39709:05
tristanthat function technically should prefix it's private keyword arguments with an underscore, but you get the idea09:06
jjardonHi, just coming around to celebrate: https://lists.freedesktop.org/archives/flatpak/2018-August/001233.html :) Thanks buildstream team to build a tool that allow us make that project possible; keep the good work!09:06
* tristan breaks out the champaign !09:07
valentindtristan, I see that element plugins have an artifact version. But not source plugins. Where do you want me to bump the artifact version?09:08
phildawsonjjardon :D09:09
tristanvalentind, once in _versions.py09:09
valentindOK09:09
tristanvalentind, however indeed, I've been thinking about that exact limitation this week in the back of my mind09:09
tristanit deserves an issue, but not really a priority right now I think09:10
tristanimproving that is a part of hardening the plugin loading contract / API09:10
qinustyI'm going to 14 valentind ;)09:11
valentindtristan, I went through most your comments. I am running tests before pushing. But there is one comment that I did not understand. Where you asked "Did we forget directories in the zip plugin ?"09:12
tristanvalentind, directories have permission bits right ?09:12
tristanI have the worst experiences with non-executable directories09:12
valentindYou mean about the order? I should go topdown?09:13
tristanvalentind, I was under the impression the directories were captured everywhere else, but maybe I'm wrong ?09:13
tristanvalentind, no I don't really mean that; *and* I could be wrong, but I made that comment when looking at the code: It looked like you are not ensuring deterministic mode bits on the created directories09:14
valentindOh, but it was symlinks.09:15
valentindThe case for directories is after.09:16
tristanOk09:16
valentindtristan, Also it is tested.09:17
tristanvalentind, sec... looking a couple lines after that comment... it says basically "if (directory) chmod(executable) else chmod(nonexecutable)"09:17
tristanvalentind, does a zip file really not specify at least if a file is executable or not ?09:17
valentindI do not think it is possible.09:18
valentindzipfile module does not seem to have any call to os.chmod. Let me check again.09:18
tristanOk, so from some googling, Yes: You can archive and restore permissions, timestamps and such in zip files09:20
tristanBut, it's only supported on "unix"09:20
valentindOK, I was wrong. I will fix that.09:20
valentindI tried to create zip files but it did not take it.09:20
tristanvalentind, No no... I think in this case you have it better09:21
valentindAlso the tests pass. So maybe we need to make something for the zip source in the tests to preserve permissions09:21
valentindOK09:21
tristanit's an exotic feature for zip, and then having zip try to behave differently when, for example; building a linux system from a windows host or such... sounds like a nightmare09:21
tristanvalentind, if you can add a mention to the zip plugin docs near the top, probably an `.. attention::` block or such, would be good to specify that limitation09:22
*** toscalix has joined #buildstream09:22
valentindtristan, Python's zipfile does not seem to support it anyway.09:23
tristanvalentind, yeah... still we should document that only a limited set of permissions are supported by BuildStream's zip plugin, it that plugins documentation09:24
tristans/it/in09:28
qinustytristan, would you argue core warnings are raised within our buildstream plugins?09:33
qinustyre: _core param, if you consider ref-not-in-track core because it can be used by various plugins then you have to consider all CoreWarnings before prefixing, rather than where the warning came from09:34
*** toscalix has quit IRC09:41
tristanqinusty, ok so, here is the interesting part :)09:44
tristanqinusty, I think that we can avoid the _core param altogether if we have a CoreWarnings class, and indeed it seems that there are going to be cases where the core declares one (like ref-not-in-track), and an external plugin needs to raise it09:45
tristanqinusty, in that case, we can do minimal validation on the unprefixed warnings09:46
qinustySo if the warning raised exists within CoreWarnings, don't prefix it09:46
tristanqinusty, by checking the CoreWarnings09:46
tristanNot exactly, I would use identity comparison rather than equality comparison09:46
tristan(starting to catch on to python jargon)09:47
skullmanIn a turn of events that should surprise exactly nobody, the setuptools-scm python package (which checks version control for what version to call the package) requires git history to build from git.09:47
Kinnisonoops09:48
tristanqinusty, i.e. we can check, within `Plugin.warn()`... if the passed string "is" a CoreWarning.WARNING_NAME; rather than if it "==" one09:48
qinustyErrrrr09:48
qinustyBut then we're checking for each CoreWarning09:48
*** cs_shadow has joined #buildstream09:48
Kinnisonskullman: Is this a case where SourceTransform's pip plugin might be of use?09:48
tristanqinusty, well, we can do it in an any(generator expression) probably (hopefully), but lets say that we have a ridiculously large number of core warnings09:49
tristanqinusty, like, 500 of them... How often do we issue a warning ?09:49
qinustyRarely09:50
tristanqinusty, well; we could have an either/or parameter, instead of an accompanying boolean; to avoid that overhead09:50
skullmanKinnison: I don't know. I'm not up to speed on what SourceTransform is up to. I can probably just link to the pypi tarball.09:51
tristanskullman, setuptools-scm will, like most makefiles and projects (like ostree); *only* be useful for the relevant history in the tree09:52
qinustyOkay, easy way to get a list of constants within a class?09:52
*** mohan43u has quit IRC09:52
tristanskullman, i.e. I believe that it falls into the same category as other things which should be solvable with  https://gitlab.com/BuildStream/buildstream/issues/48709:52
tristanqinusty, I think I'm fine with either approach, the alternative is also nice for other reasons09:53
tristanqinusty, consider Plugin.warn(warning_text, *, core_warning_token=None, warning_token=None)09:54
qinustyI agree, but getting a list of constants is required for that. I could scrape __dict__ like I did before, but that doens't get you the identity09:54
tristanqinusty, that has the benefit of possibly eventually strongly typing the core_warning_token09:54
qinustyHaving separate params for core and plugin warnings just feels a little extreme09:54
skullmantristan: I assuming such, yeah, I just don't think I've time to take out of my current task to unblock it by implementing #487 if a tarball works.09:55
*** mohan43u has joined #buildstream09:55
tristanskullman, yup, not arguing that :)09:55
tristanqinusty, I leave it in your hands then, I think both approaches have their merit :)09:56
tristanqinusty, I'm sure that an identity check is possible with an Object that we control, hopefully without touching exactly __dict__, also python's Enum data type might be helpful in this regard09:57
qinustyI'm trying to avoid enum because then I need to use .value in some places and not others :P09:59
*** finn_ has joined #buildstream09:59
*** finn has quit IRC10:01
tristanvalentind, did you rebase this very recently: https://gitlab.com/BuildStream/buildstream/merge_requests/565 ?10:02
tristanIt hit the race condition which was fixed yesterday: https://gitlab.com/BuildStream/buildstream/-/jobs/8834885510:02
valentindProbably not.10:02
tristanoh10:03
valentindI will rebase.10:03
tristanvalentind, I was alarmed for a moment10:03
tristanvalentind, I did rebase10:03
tristanI kind of assumed, if you changed the env thing; you *must* have rebased before pushing, since merging was the objective10:03
tristanOk, I am not going to make the 1.1.6 now10:04
tristanvalentind, please try to resolve and merge these things, I will make the 1.1.6 either late tonight or tomorrow morning10:04
tiagogomestristan if you had used a version where the fix landed, artifacts/cas/tmp/ wouldn't even exist10:10
*** tristan has quit IRC10:10
valentindtristan, I am done with !616 before doing rebase to both master and 1.2 (one commit does not go to master). Should I go forward? Do you want to have a quick look?10:11
valentindDuring that time I will take care of setenv branch.10:11
*** noisecell has joined #buildstream10:46
*** toscalix has joined #buildstream10:50
*** finn_ has quit IRC11:20
valentindIt seems that when I do Ctrl-C, then type "quit", it just continues building new tasks.11:54
valentindThis seems to have been broken recently.11:54
valentindI think maybe 1.1.5.11:54
qinustyI also observed and documented https://gitlab.com/BuildStream/buildstream/issues/53112:01
jjardonvalentind: same here when we move to 1.1.5 from 1.1.312:02
valentindqinusty, thanks. I think the issue I get is more #52512:03
*** aiden has quit IRC12:10
*** bethw has quit IRC12:10
*** laurence has quit IRC12:10
*** tlater has quit IRC12:10
*** mablanch has quit IRC12:10
*** valentind has quit IRC12:10
*** milloni has quit IRC12:10
*** johnward has quit IRC12:10
*** aiden has joined #buildstream12:10
*** tpollard has quit IRC12:10
*** tpollard has joined #buildstream12:10
*** noisecell has quit IRC12:11
*** noisecell has joined #buildstream12:11
*** mablanch has joined #buildstream12:12
*** tpollard has quit IRC12:12
*** tpollard has joined #buildstream12:12
*** tlater has joined #buildstream12:12
*** laurence has joined #buildstream12:13
*** johnward has joined #buildstream12:14
*** valentind has joined #buildstream12:15
*** bethw has joined #buildstream12:15
*** leopi has quit IRC12:15
*** tpollard has quit IRC12:16
qinustyvalentind, Did we have a fix for the linting errors?12:16
*** tpollard has joined #buildstream12:16
*** milloni has joined #buildstream12:16
*** tiagogomes has quit IRC12:17
*** tiagogomes has joined #buildstream12:17
*** leopi has joined #buildstream12:25
tlaterqinusty: linting errors?12:27
tlaterLinter is never wrong!12:28
tlater;p12:28
*** toscalix has quit IRC12:28
qinustyhttps://gitlab.com/BuildStream/buildstream/issues/57012:30
qinustyThe configuration is wrong? Maybe we just need to fix stuff12:30
qinustybut it's happening to me locally12:30
qinustyusing our .pylintrc12:30
juergbiqinusty: do you see the issues also when invoked via ./setup.py test?12:32
laurenceNexus, I think that supporting relative workspace paths is a good one to use the 'verify' column for - https://gitlab.com/BuildStream/buildstream/issues/19112:32
laurencewhat do you think?12:32
qinustyjuergbi, I didn't used to. Until yesterdya12:33
qinustyyesterday* But tbh, `pylint --rcfile .pylintrc buildstream/` is much faster and I'd like them both to work the same :P12:33
Nexuslaurence: tagged :)12:33
*** finn_ has joined #buildstream12:46
tiagogomesjuergbi, are symbolic links deliberately left out when pushing to the cas?12:53
laurenceNexus, the issue should go into verify column before being closed :)12:53
juergbitiagogomes: no, symlinks should work fine12:53
tiagogomesPardon. I actually meant pulling :)12:53
juergbitiagogomes: in CAS symlinks are stored embedded in the directories. what issue are you seeing?12:54
juergbii.e., it's impossible to pull directories without pulling the embedded symlinks12:54
tiagogomesjuergbi ah I understand now how it works. Sorry for the ping :)12:55
juergbinw12:56
qinustyIs the gitlab bot still dead?13:13
tlaterqinusty: I suspect that there is some configuration specific to how we invoke pylint in setup.cfg13:13
tlaterA little annoying, but iirc there was no way to merge the two13:14
tlaterUnless you want to manually type out the full command setup.py runs, of course.13:14
qinustytlater note: These errors show on both ./setup.py test ... and pylint --rcfile .pylintrc buildstream/13:14
tlaterAre you *sure*? If so, why does CI pass for anyone?13:15
tlaterA few things could have happened; pylint could have updated and added a new warning, which our CI runner images don't have yet, or your command invokes checks on files that are not usually checked.13:16
tlaterI'm not sure that optionbool was checked, perhaps jennis knows more.13:17
qinustyhttps://asciinema.org/a/BfHy4QYsrzDVTluIAvfZyX1LP13:19
tlaterCool. In that case we should really figure out what changed between your machine and our CI13:20
qinustyIndeed13:20
qinustyDo we know CI versions?13:20
tlatersetup.py is set to install 3.1.013:23
tlaterAh, >=13:23
qinustypylint 3.1?13:23
tlaterSo presumably it installs newer versions13:24
qinustypython*13:24
tlaterpylint13:24
qinustypylint is 2.1.1 from pip13:24
tlaterOh, nevermind, I was looking at pytest...13:24
qinusty:D13:24
tlaterWhy do these all have to start with the same prefix? ;P13:25
qinustypyTHON13:25
qinustywhy can't it just be thon?13:25
qinustython, test, lint13:25
persiaAt least two of those are actual programs, not typically implemented in python.13:25
tlaterReally, I just think adding py to every python application is a bit redundant ;)13:25
tlaterAnyway...13:25
persiaThis is why there aren't ctest, clint, etc.13:25
qinustyIt's that they do when they're not creative enough13:25
qinustyclint who?13:26
tlaterYou can check what the CI is running manually, qinusty13:26
persiaqinusty: lint(1) for C.13:26
* tlater is not at a PC right now13:26
qinustypylint 0.1113:26
juergbiI removed the pylint version restriction in setup.py a few days ago because it was too old for Python 3.713:27
qinustyum13:27
qinustyregression?13:27
tlaterAh, that would make sense13:27
juergbihowever, CI images are already on pylint 2, afaict (i.e., beyond the previous <2 restriction)13:27
juergbiand it works fine in CI and here locally with 2.1.1 with setup.py test13:27
juergbiI tested locally with both Python 3.6 and 3.713:28
qinustyI guess I'm 3.513:28
qinustyso13:28
tlaterCould you double check what pylint version actually runs? Last passing CI was using buildstream/testsuite-fedora:27-master-102-9067e26913:28
tlaterdocker run-ing and checking pylint --version should clear this up.13:28
qinustytest session is using plugin pylint 0.1113:30
tlater(thanks Tristan for convincing us of a sensible docker image versioning scheme :D)13:30
juergbioh, it's still 1.9.213:30
juergbiqinusty: that's pytest_pylint, not pylint itself13:30
qinustyThat is what I thought13:30
qinustyWhere are you seeing the 1.9.2?13:30
juergbihttps://gitlab.com/BuildStream/buildstream-docker-images/-/jobs/7914796313:30
juergbiI just noticed that there were multiple pipelines for that docker-image commit13:31
tlaterjuergbi: That CI ran a month ago13:31
juergbithe one I was looking at earlier installs pylint 2.0.0, but the one that was actually pushed uses 1.9.213:31
tlaterAh13:31
juergbitlater: yes, but check: Successfully tagged buildstream/testsuite-fedora:27-master-102-9067e26913:31
qinustyeither way, you say you're not seeing the issue on 3.6/3.7 with pylint 2.1.1 juergbi?13:32
juergbiI hate this random pip versioning thingy13:32
tlaterSo, someone has to update the .gitlab-ci.yaml to use a newer image :)13:32
persiapip.lock exists as a thing.13:33
tlaterqinusty: The right way to check that is to update the docker images our CI runs. Debian 9 should still run 3.5, so then we'll know.13:33
juergbiqinusty: yes. master completely fails here now, but it was working a couple days agao13:34
tlaterWant me to walk you through that? Probably handy to spread that knowledge...13:34
qinustySure?13:34
*** sweetbae has joined #buildstream13:35
juergbioh, the ruamel version restriction completely breaks things here :/13:36
tlaterqinusty: You'll want to update the tags our .gitlab-ci.yaml picks here: https://gitlab.com/BuildStream/buildstream/blob/master/.gitlab-ci.yml#L8113:36
noisecelljuergbi, https://gitlab.com/BuildStream/buildstream/issues/53513:36
tlaterAnd here: https://gitlab.com/BuildStream/buildstream/blob/master/.gitlab-ci.yml#L113:36
*** sweetbae has quit IRC13:37
qinustyWhere am I getting the image from to use? tlater13:37
noisecellsame issue we were seeing in definitions https://gitlab.com/baserock/definitions/-/jobs/8587546413:37
tlaterqinusty: Second13:37
tlaterqinusty: You then check the CI runs of the buildstream-docker-images repo: https://gitlab.com/BuildStream/buildstream-docker-images/pipelines?scope=all&page=113:38
tlaterPick the latest build of master13:38
tlaterCheck its log (the one that's not aarch64)13:39
tlaterErgh, someone removed the handy little print command13:40
tlaterIn that case you'll have to go to the buildstream-docker-images docker hub13:40
tlaterI.e.: https://hub.docker.com/u/buildstream/13:41
tlaterAnd just grab the latest tags for the relevant images13:41
tlaterApply those, commit, push. The CI should then run with the new images :)13:42
tlaterWe build new images nightly, so if something upstream changes and you want those changes in CI you'll have to go through that.13:43
*** xjuan has joined #buildstream13:44
qinustyjuergbi did you get to the bottom of the ruamel restriction?13:49
juergbiqinusty: changing it to < 0.15.52 works here13:49
juergbii.e., 0.15.51 doesn't break the test suite and also works with Python 3.713:49
juergbisee #57113:49
*** noisecell has quit IRC13:55
qinustystill fails linting on python 3.5 though it seems14:10
bochechahi, is there a way to tell buildstream that I really, really want it to rebuild an element, without getting from the cache?14:46
bochechaI thought that was what --all was for, but it seems not14:47
persiabochecha: From curiosity, why would you want to rebuild something that hadn't changed?14:49
bochechabecause I want to look at the build logs14:49
valentindpersia, when fixing a plugin for example.14:49
persiavalentind: Aha.  That makes sense.14:50
bochechathere's something wrong in the element, it prints an error in the logs apparently, but I don't have those logs on my machine to grep for the error message14:50
bochechaI'd have to hunt the logs for each element from the CI, finding the job in which each was rebuilt14:50
valentindbochecha, you can fin the logs in .cache/buildstream/logs.14:50
bochechavalentind: no14:50
bochechaI never built those elements on my machine before14:50
persiaFor logs, I thought there was `bst log`, but apparently I'm mistaken.14:50
valentindAh right.14:50
bochechathey were downloaded from the shared cache14:50
bochechaso I want to build it fully once on my machine14:50
persiaThe logs should also be recoverable from the shared cache.14:51
qinustyCan confirm juergbi, Changing from 3.5.3 to 3.7 made the issues disappear14:51
bochechapersia: and how do I find the right log for the right build of each element?14:51
persiaThat7s why I thought there was `bst log`, so one didn't need to manually look up cache keys.14:52
persiaBut, as stated before, I'm mistaken.14:52
persiaWhile I'm now convinced that there are reasons to be able to tell BuildStream to rebuild this thing now even when there is apparently no need (thanks valentind), I also believe there needs to be an easier way to get logs than to perform a build.14:53
persiaThis is even more important in cases where the build might take a while.14:53
valentindbochecha, I would just comment the artifact server from project.conf. Go manually to nuke the ref file in the cache. And then rebuild.14:53
persiaThat process should work, but it ought be easier.14:54
bochechavalentind: that's what I did, yes14:54
valentindpersia, I think there must be a plan for it with build artifacts.14:54
bochechabutusually, build tools have something like a --no-cache option14:54
persiavalentind: Do you know if there is an issue number for it?14:54
valentindI do not know.14:55
persiabochecha: Yes: that's clearly a problem.  It makes sense to report it.14:55
bochechaalso, if that's not what --all is for, then what does --all actually do?14:55
persiabochecha: --all builds everything.14:55
bochechawell, no, it doesn't :)14:55
persiaLet's say you have a project with elements A through G alphabetically.14:56
bochechait took everything from cache, here14:56
valentindbochecha, it makes sure you have all the artifacts in the cache.14:56
persiaAnd you have two dependency chains, being A->B->C->D and E->F->G14:56
persiaNormally, if you build A, you'd end up building ABCD, but not EFG.14:56
persiaIf you use --all, BuildStream should also build EFG, even though they aren't in the dependency chain for A.14:56
persiaFor a meaning of "build" that includes "download from cache"14:57
bochechathat's… not at all how I would have defined "build" :-/14:57
persiaFair enough :)  Nonetheless, that's the semantic assigned, as far as I can tell from the docs.14:57
bochechaok…14:58
persiaTo my mind, that you can tell the difference between a local build and a remote build is a bug.14:58
qinustyCan someone look over https://gitlab.com/BuildStream/buildstream/merge_requests/627? It has been through one review already.14:59
bochechapersia: well, when I have to build ARM through qemu/binfmt on my x86_64 laptop, I assure you that I can definitely tell the difference between a local build and a remote one :P15:01
persiabochecha: After the build is completed?15:01
bochechait never completed >_<15:01
bochechalaptop got insanely hot (so did the whole room in fact), it was taking ~4 hours for the typical configure script to run15:01
bochechaI gave up15:02
bochechait takes 3 hours total for the whole freedesktop-sdk to build on the native ARM machine on the CI :)15:02
persiaOh my.  That is slow.15:02
bochechaworst is when a configure script took 5 hours, and the subsequent "make" took 25 minutes15:02
persiaMy point is that if we assert that bst caching everything is good, and assert that having public caches of common elements from CI is good, then we need to remove any difference in experience between consuming a local build and consuming a remote build.15:03
persiaI don't think we can feasibly change the experience of local builds in terms of performance, but if one can use a remote CI and still have full local access to logs, output results, and similar, one can effectively debug.15:03
bochechayes, I understood that, my example about ARM/qemu was a tongue-in-cheek one :)15:03
persiaOtherwise, the cache just gets in the way of development.15:03
bochechaI do agree that removing the differences between local and remote is a worth goal15:04
persiaI think it's an excellent example.  It demonstrates the importance of being able to operate effectively on remote builds for a very real use case.15:04
persiaAnd a key part of that is access to logs.15:04
bochechaespecially, I'd like to be able to do things like « give me the logs for the build of foo.bst »15:05
persiaYou might need to use your qemu-static chroot to operate on some of the results (e.g. execute arm64 ELF on x86-64), but that's less painful than not being able to do the thing.15:05
bochechaand it would give me the ones it finds in my local cache, corresponding to the current version of the element15:05
persiaYes.  That avoids all the local builds you're planning.15:05
bochechaotherwise, grepping through old logs is not fun15:06
persiaI've been told those are pushed to the shared cache.  I don't know how to recover them.  I suspect one has to look up the cache key for the current element, etc.15:06
bochechamaybe "bst build" could retrive the logs at the same time it retrives the artifacts?15:07
persiaThe argument aganist that is that it consumes more bandwidth than is necessary for builds.15:09
persiaIf there isn't an issue, you don't care if you don't have the logs, and you do care about the time it takes to get the logs.15:09
persiaIf there is an issue, you need the logs: I think BuildStream should fetch missing logs when they are requested, rather than speculatively.15:09
persiaThis makes it a bit slower when requesting logs, but much faster for other cache requests, and fetching the logs is still usually faster than performing a local build to get logs.15:10
*** leopi has quit IRC15:12
*** leopi has joined #buildstream15:37
laurencenow that it's been merged, could someone verify relative workspace paths? https://gitlab.com/BuildStream/buildstream/issues/19115:55
laurenceReads like tristan captured the request on the ticket but it didn't originate from him15:55
laurenceSo I wonder who that originator was...and maybe we can get them to verify15:55
*** tpollard has quit IRC16:00
*** leopi has quit IRC16:01
tiagogomeshow do I tame the test suite such that the the coverage stats are not shown at the end?16:01
*** jonathanmaw has quit IRC16:46
*** finn_ has quit IRC17:08
cs_shadow--addopts `--no-cov` ?17:53
cs_shadowtiagogomes: sorry, should have been `--addopts '--no-cov'`17:53
*** finn has joined #buildstream18:00
*** finn has joined #buildstream18:37
*** xjuan has quit IRC19:56
*** xjuan has joined #buildstream20:01
*** xjuan has quit IRC20:22
*** leopi has joined #buildstream20:36
*** tristan has joined #buildstream21:10
*** cs_shadow has quit IRC21:14
*** tristan has quit IRC22:15
*** leopi has quit IRC22:55

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