IRC logs for #buildstream for Wednesday, 2018-08-08

*** leopi has joined #buildstream04:25
*** tristan has joined #buildstream04:54
*** leopi has quit IRC05:31
*** leopi has joined #buildstream06:05
*** tristan has quit IRC06:54
* laurence wonders if anyone is interested in responding to the mail on Artifact cache authentication/metrics - https://mail.gnome.org/archives/buildstream-list/2018-August/msg00016.html07:21
* laurence also wonders why Edmund didn't post to the list himself, but that's a separate point 07:21
paulsherwoodlaurence: i think in previous attempts to mail the list, edmund didn't get the outcomes he hoped for07:25
paulsherwoodnot just this list :)07:25
*** paulsherwood has quit IRC07:34
*** paulsherwood has joined #buildstream07:34
*** paulsherwood has quit IRC07:35
*** paulsherwood has joined #buildstream07:36
*** bochecha has joined #buildstream07:42
*** toscalix has joined #buildstream07:57
NexusIs it possible to run buildstream without fuse?08:29
* Kinnison would have expected the fallback chroot sandbox to work without fuse (albeit with no hermetic seal guarantees)08:33
* Kinnison is new here though08:33
Kinnisonso could be wrong08:33
* phildawson is curious why Nexus wants to08:34
*** jonathanmaw has joined #buildstream08:39
*** tristan has joined #buildstream08:39
juergbiNexus: the chroot backend still depends on SafeHardlinks FUSE, if I'm not mistaken08:41
juergbiso the answer is no for unmodified BuildStream08:41
juergbiSafeHardlinks could easily be disabled but it would risk corrupting the artifact cache08:42
juergbi(which could be avoided by replacing hardlinks with full copies but that would be slow)08:43
KinnisonInteresting08:43
KinnisonCouldn't just bind-mount read-only ?08:43
KinnisonThen again, that won't work on all platforms08:44
KinnisonHrm08:44
tristanKinnison, FUSE provides the safe hardlinks experience, ensuring that when we run integration commands, we do not corrupt the artifact cache08:44
Kinnisontristan: Aah, yeah, that'd be a problem otherwise, I see08:45
KinnisonOtherwise a full copy would be needed, and then presumably a full compare08:46
juergbiwith modern filesystems there may be other options (e.g., reflinks) but there isn't a fast non-FUSE cross-platform option, afaik08:48
* Kinnison nods08:48
* juergbi would really like a permanent immutable file flag in Linux (not like the already existing impractical immutable flag), but that wouldn't solve the cross-platform issue either08:51
Kinnisonheh08:52
*** bochecha has quit IRC09:01
WSalmontiagogomes, are you happy with my implementation of your feed back to https://gitlab.com/BuildStream/buildstream/merge_requests/595 ?09:03
*** flatmush has quit IRC09:04
*** flatmush has joined #buildstream09:05
*** tiagogomes_ has joined #buildstream09:10
*** bochecha has joined #buildstream09:15
CTtpollardhi, I have a small project that I've been using for testing last week. I've updated my local buildstream since then now I get this error when trying to junction 'alpine-junction.bst [line 8 column 8]: Specified path '../autotools' first component must not be '..''09:25
CTtpollardis that expected?09:25
jmacYes, it's intentional - tiagogomes_ might be able to explain more09:29
juergbiCTtpollard: see https://gitlab.com/BuildStream/buildstream/issues/19509:29
CTtpollardcheers09:32
*** CTtpollard is now known as tpollard09:32
valentindtristan, I have found a bug in the include feature and fixed it. https://gitlab.com/BuildStream/buildstream/issues/56509:48
*** jonathanmaw_ has joined #buildstream09:49
*** jonathanmaw has quit IRC09:50
tpollardso if I'm reading the comments correctly it's now not possible to junction to other projects?10:36
tpollard(outside of the current projects directory)10:36
juergbitpollard: not via local junction, but you can use e.g. a git junction10:43
phildawsonIf that's now the case, I think the junctions tutorial I wrote will be broken :/10:52
phildawsonthough  the test suite should have flagged that10:52
* phildawson goes to check10:52
jennisjuergbi, jonathanmaw_, on a related note to changing the default to dependency type to build, is it intentional behaviour that if none of an element's runtime dependencies contain sh we can't shell into the element?10:53
NexusDoes anyone recognise this error? http://hastebin.com/ojewowubad.sql10:53
Nexusalso, best url ever10:53
NexusOh Gee, wow you bad10:53
juergbijennis: including extra elements for bst shell has come up in the path, but yes, this would be expected behavior10:54
jennise.g. I built vim with dpkg a few days ago, and was unable to shell into the element, as the platform element (which contained sh) is a build dep, the only way I could 'use vim in the shell' was by creating a stack element of the platform and vim elements10:54
juergbiNexus: no, seems that macOS reports a higher hard limit than can actually be set, odd. for iniital testing you can simply disable the setrlimit() line10:55
jennisjuergbi do you know what the conclusion was of that discussion?10:56
Nexus juergbi: kk ty10:56
jennisIt is wrong to assume that: "once i've built something I should be able to test it with bst shell", because that was my assumption10:56
jennis?10:56
juergbijennis: I don't think we ever discussed this to conclusion. was on the side with tlater, maybe others10:56
jennisBecause obviously my vim element should NOT include the platform as a runtime10:57
jennisok I guess this is something I could write to the ML about10:57
juergbijennis: you can directly execute vim, though, sh is just the default command10:58
juergbivim might run-depend on sh, though10:58
juergbieven if it doesn't depend on the whole platform10:58
jennisjuergbi, is this `bst shell -- vim`?10:58
jennis*`bst shell vim.bst -- vim`?10:59
juergbiyes, I think so10:59
juergbimaybe you need to specify the whole path10:59
juergbiI hope it doesn't internally call sh anyway10:59
jennisI will get back to you :)10:59
jennisneed to rebuild it11:00
qinustyCan we build docs from ./setup.py?11:01
* qinusty reads HACKING.rst11:02
jennisqinusty, I don't think so, `make -C doc`11:02
jennisfrom the top level of the buildstream repo11:02
*** cs_shadow has joined #buildstream11:04
tiagogomes_Can a maintainer increase the CI timeout to say 10h11:26
juergbitiagogomes_: that's for the nightlies?11:33
juergbiit's currently 7h, that's not enough? can increase it to 10h11:34
tiagogomes_yup, 7h turns out to not be enough: https://gitlab.com/BuildStream/buildstream/-/jobs/8745193811:34
juergbiok11:34
juergbidone11:34
tiagogomes_thanks :)11:34
*** jonathanmaw_ is now known as jonathanmaw12:26
jonathanmawtristan: I have an implementation for fixing the git source when upstream is absent. Do you agree with the following technical decisions? a) If the source's URL doesn't contain an alias, (i.e. translate_url's output is the same as its input) it should use the old behaviour of reading the list of submodules from the repo. b) When it does use an alias, the list of source fetchers is the list of submodules defined in the source config, with the12:34
jonathanmawSourceFetcher's path and ref being read from .gitmodules when they're needed.12:34
Nexusfor instances where i won't have bubblewrap available (macOSX) can i simple run as root or is that not acceptable?12:49
jmacBuildstream won't magically work if you just run as root, no12:53
jmacI suppose you could make another Sandbox-type class that just runs the commands and requires root but it sounds dangerous12:54
*** johnward has joined #buildstream12:58
* Kinnison imagines that using the chroot sandbox, as root, may get you there, but as evidenced earlier, I'm low on domain knowledge in this area12:59
*** johnward has quit IRC13:00
Nexusif i do run as root, i stop getting bubblewrap errors (those tests start passing) and i startgetting hardlink errors13:00
jmacHmm, interesting13:01
*** johnward has joined #buildstream13:01
jmacI wonder if hard links work the same way on HFS+/APFS as they do on ext413:02
tpollardshould it be possible to override elements 'depends' from project.conf? I have an .bst with not explicit dependencies listed, but I'd like it to have a dependency provided via project.conf13:04
tpollardvia 'elements: depends: - ncurses.bst', however it doesn't seem to work13:05
noisecellwhy would you like to do that?13:07
tpollardnoisecell: I'm working on this https://gitlab.com/BuildStream/buildstream/issues/46713:08
* noisecell would prefer to have the dependencies written down in elements, and you can make these elements as big as you want and then depends on it (buildtime or runtime)13:09
tpollardbut as it stands I can't seem to populate depends from project.conf either directly or via an include13:09
noisecellI can not see the point to have that in project.conf, tbh, but this is my opinion.13:09
Nexusso this is meant to be a way of avoiding putting the dep in every element?13:10
tpollardNexus: yes, appending or overriding in elements where appropriate13:10
noisecellwhich is useless when you are trying to have a implicit descriptive system, though13:10
noisecells/implicit/explicit/13:11
noisecellNexus, tpollard ^^13:11
Nexuswho's our current test guru?13:15
tpollardnoisecell: thanks for the input13:16
tristanjonathanmaw, iiuc, I don't really agree - rather I think flow should be pretty much the following: (A) Instantiate the GitMirror() objects at startup based on what was in the configuration... (B) Return only SourceFetchers for the modules which have explicit configuration... (C) Fill in the gaps with the .gitmodules parsing; while accepting that that list might have changed due to `bst track` causing the new ref to bring in new submodules; which13:25
tristanthe project author has not yet bothered to configure13:25
tristanjonathanmaw, essentially; it should still work when (i) The main repo did not specify an alias, but did specify an alias for one or more submodules... (ii) The main repo did specify an alias, but either none, or some of the relevant submodules are not explicitly aliased13:27
tristanjonathanmaw, When I say "still work", I mean to say that source mirroring need not be tried for repos/submodules which did not specify an alias; but those should still be fetched13:28
tristanjonathanmaw, implementation wise, it might make sense to just tie in the fetching of unaliased repos with the main Source fetch() routine, or with the first SourceFetcher()13:28
tristanjmac, as I understand, the unix backend is only intended to be supported as root; it is possible that on systems configured to not allow regular users to create namespaces, and no setuid bit on bwrap, that root will allow it to work properly where BuildStream would otherwise use a fallback13:33
tristanjmac, not sure of all the corner cases, but we do test the unix backend as root in CI13:33
* jmac nods13:34
jmacI couldn't remember the rules for selecting the chroot sandbox; if it's just "not linux" then it should work13:35
jmacAssuming chroot works on OSX, which I've no idea about13:35
KinnisonOSX pretends to be mostly POSIXy13:36
tristanThe issues to support OSX I believe are closer to the issues to support BSD13:36
tristanI think there is an issue open somewhere about that, too. While probably not too difficult to support, the binary format's which can be run on either BSD/OSX will differ from linux13:38
tristan*formats13:38
qinustyDo sources have any way of checking their assosciated project?13:38
tristanself.get_project() should get that13:38
tristanon a Source13:38
qinustypart of plugin.py I assume?13:39
tristanohh, that is not exposed ?13:39
tristanmaybe it's not13:39
qinustyit's _13:39
tristanah right, it's the same13:39
tristanqinusty, the project is private, itself; that's why13:39
qinustyah.13:39
qinustyre https://gitlab.com/BuildStream/buildstream/issues/48313:40
tristanSo yes, the core can always consult the project of any source/element, but if a plugin needs something specific; it needs specific API13:40
qinustyThe git source would need access to project to see whether that warning was considered fatal?13:40
qinustyOkay13:40
tristanWithout looking at that; I think the git source would need to be provided with a Source or Plugin level API, which might involve consulting the project internally13:40
qinustyThought so13:41
* tristan gets confused about Project sometimes, we made Project & Context private in the last minute before 1.0, as there was alot of stuff plugins didn't need, and the few things they do need, we gave them Plugin API for13:42
qinustytpollard: What is the current state of !564?13:45
tpollardqinusty: issue 564?13:48
qinustyMR 564, sorry should've linked13:48
qinustyhttps://gitlab.com/BuildStream/buildstream/merge_requests/56413:48
tpollardnp13:48
qinustyI've implemented the fatal warnings suggested in https://gitlab.com/BuildStream/buildstream/issues/526, which may be of assistance to your MR. I'll try and tidy up an MR for my work this afternoon13:49
*** noisecell has quit IRC13:49
tpollardqinusty: as it stands my opinion is that it's not to be merged until 'fail on warnings' can be set in project.conf13:49
tpollardat which point I was planning to switch the errors to warnings13:50
qinustyFair enough, I'll ping you when it's in master then13:50
tpollard:) ta13:50
qinustyThere will also need to be some work into an API for accessing these fatal warnings within plugins. Should I throw a commit into my MR to make that possible tristan?13:51
tristanqinusty, sounds like it all belongs together as part of the same MR no ?13:53
tristanqinusty, I think that we probably want somewhere where the list of public facing strings are declared, at least for docs purposes too13:54
tristanqinusty, i.e. these are not just strings, these are defined by the core and constants should be used to address them... like Warning.WARNING_NAME13:55
qinustyOkay, currently I have _project.py with _ALL_WARNINGS. But I assume we'll want it all publicly facing13:55
qinustyPerhaps a warning.py?13:55
tristanqinusty, it would be nice to have the warning constants declared in plugin.py; if only as a matter of making plugin author facing documentation nicer14:04
tristanqinusty, otherwise we need to add a whole new page to the reference for it (add it to a ToC), and things seem disconnected from the authoring perspective14:04
qinustyMakes sense14:05
valentindqinusty, I have found a fix for the track bug. We need to pass "copy_tree=True" to _yaml.load in _includes.py.14:07
qinustynice!14:07
tristantpollard, I sort of expected we'd start with a warning, and make it optionally fatal with that feature; however I have no objection to your approach of blocking it until then either :)14:07
valentindqinusty, will run tests and push.14:08
qinustynice, ping me after it's pushed, happy to review14:08
tristanvalentind, I had been suspecting that in the back of my mind, but didn't believe that could have regressed14:08
valentindtristan, Is there a use for copy_tree being false?14:08
tristanvalentind, qinusty indeed; the loading of the YAML is faster without enabling proper round trip support14:08
qinustyBut tristan, when did includes get merged?14:08
qinustyI do believe this is a bigger issue, but I think we were still seeing indentation issues with ruamel prior to the merge14:09
tristanSo we only ever set it true, when we're going to rewrite yaml files14:09
valentindtristan, Is it an optimization thing?14:09
tristanqinusty, I don't believe the indentation issues can be fixed on our side; I have a feeling that you are just seeing the limitations of ruamel.yaml14:09
tristanvalentind, yes; it is quite significantly slower to load14:10
valentindtristan, So I suppose I should do copy_tree=True only when including in elements, not in project.conf.14:10
qinustyprobably, as I mentioned ruamel struggles with round tripping multiline `|` when I tried it14:10
tristanvalentind, indeed, and project.refs; however I think before, we've been doing it as an all-or-nothing thing14:11
valentindtristan, I do not remember. Did we have include in project.refs?14:12
tristanvalentind, it *might* be dangerous to not do all-or-nothing, but not doing it for project.conf indeed sounds like it should be sensible14:12
tristanvalentind, I think that was explicitly unsupported by design, but I don't recall if you explicitly unsupported it in implementation14:13
tristanI seem to recall mentioning why includes should not be supported in project.refs in the email thread14:14
valentindIt is not. So it is fine.14:15
tristanIn any case, people are free to add comments and explicitly order their project.refs14:15
tristanwhich means round-tripping should be supported there (orthogonal to includes, of course)14:15
rdaledoes the 1.1.5 release of buildstream have the cache purging feature?14:20
tristanrdale, it does14:23
tristanrdale, apparently, tiagogomes_ found a hot issue with it, though :-S14:23
tristanIt may not be purging the extract directories while purging the artifacts themselves, rendering it rather futile14:24
rdaleah ok - how do you invoke it - i have a full disk and it would be nice to clear out some space?14:24
tristan(should be easy enough to fix, though)14:24
tristanrdale, http://buildstream.gitlab.io/buildstream/using_config.html#default-configuration ... see the 'cache:' settings14:25
tiagogomes_I'd provide a MR to cleanup extract at startup, but I don't think you would approved if made running multiple instances of bst simultaneously more racy14:25
tristanrdale, I've set my 'quota' to 20GB14:25
rdaletristan: thanks i'll have a look14:26
tristantiagogomes_, extract anyway should never be purged, either the ArtifactCache.remove() codepath should take care of it, or the code which calls that should14:26
tristantiagogomes_, either case is racy wrt parallel instances, but lets treat that separately14:28
tiagogomes_In abnormal conditions there might be some debris left14:28
tristantiagogomes_, the cleanup has to happen as the build progresses; if debris is left for some abnormal reason, that sounds like a class of isolated bugs to fix14:28
tristanin any case, deleting an artifact within a single instance is supposed to be guaranteed to be isolated from any other cache accesses (multi instance being a separate thing to think about, which is regressed by cleanup but not a huge priority right now)14:30
tristantiagogomes_, seeing as the ArtifactCache offers the extract() method and basically dictates/owns the specific artifact extract path, it makes sense that ArtifactCache.remove() also remove any extract14:32
* tiagogomes_ nods14:32
tristanlooking at that code, it seems it must have been tested under conditions where the artifacts were created but never extracted14:33
* tristan throws a toaster at tlater ;-)14:33
skullmanGreetings comrades. I'm looking to create a new GitLab project, so it's bike-shedding time!14:33
skullmanThe purpose is to have a project with .bst files so we can use BuildStream to develop BuildStream.14:33
skullmanI'm thinking buildstream-integration since I'd rather have a boring name, the convention is to name boring projects by the purpose of their contents, buildstream-dogfood is an unpleasant name and the project is needed to facilitate dogfooding rather than being the direct purpose of the project, and buildstream-app while it describes the contents is too close to the purpose of buildstream.git14:33
*** noisecell has joined #buildstream14:35
* phildawson votes for buildstreamception :P14:36
* Kinnison thinks 'buildstream-integration' is a pretty good name14:36
KinnisonRepositories can be renamed if need-be14:37
phildawsonmore seriously, buildstream-integration sounds sensible14:37
toscalixskullman: please do not start the name with buildstream14:38
toscalixtabbing would be more expensive14:38
phildawsontoscalix, why not?14:38
toscalixI would also avoid dash14:38
toscalixwe have a buildstream repo already14:38
toscalixintegration-buildstream if you want to go that route, would be my suggestion14:39
phildawsontoscalix, no more expensive than it already is. we already have buildstream-docker-images for example14:39
toscalixphildawson: which is why I say it. You can insist on it.... or not14:40
skullmantoscalix: we have multiple projects in the BuildStream/ project namespace that are not directly related to the BuildStream tool, and there is plenty of precedent i.e. buildstream-{sysroots,docker-images,examples}14:41
toscalixthink about the urls also....14:41
toscalixskullman: bad precedents, we have plenty of bad precedents.... you can insist on them or try to make things... better14:41
toscalixthe names of the repos is something that we can improve. I am not propossing changing them... yet. But if we can have unique simple names for them.... better14:42
tristanI certainly prefer buildstream-integration over integration-buildstream14:43
toscalixI have two: alignment and communication14:43
phildawsonpersonally I like the buildstream-* naming scheme. I find it very intuative to interpret.14:43
toscalixBuildstream/buildstream-integration14:43
tristanI think everything so far is nicely consistent and named this way, where related things start with "buildstream-" (and we have been preferring dashes over underscores, no need to change that)14:44
toscalixand when we have more and we start creating subgroups you will have..... Buildstream/buildstre-xx/buildstream-yy14:44
valentindWhat about dropping the "buildstream-" prefix for the repository name, but call it with the prefix in other contexts?14:44
toscalixif you of that as a good naming squeme... I will not be able to convince you, obviously14:44
tristanthat is possible also, but this will dictate what is the default directory name from `git clone`, so it's very nice that it starts with "buildstream-"14:45
phildawsontoscalix, that's a good point. But it does make the default git clone directory names nice this way.14:45
tristani.e. regarding valentind's comment; I also thought, we could have gitlab.com/BuildStream/docker-images, gitlab.com/BuildStream/integration, etc14:45
phildawsonoops14:46
phildawsonsnap14:46
tristanbut then it would not be named "buildstream-foo" when you clone it by default14:46
toscalixwe have the same name for the project, the tool, the group, the repo.... with different capitalization.... I think this is all a big mess that we will pay as we scale up14:47
tristanI have a feeling that what is incubated in this repository may eventually get upstreamed, too; e.g. if we build official flatpaks of BuildStream (somehow), we'd want the BuildStream project that creates it, in the same repo14:47
tristantoscalix, if anything is named "Buildstream", that needs fixing14:47
tristanif it's not capitalized at all, that seems alright, a repo name, a checkout14:47
tristanif there is capitalization, it looks like a brand, it should be "BuildStream"14:48
tristanI recently corrected the mailing list to not have this problem14:48
toscalixgroups is BuildStream...my bad....anyway, the point remains14:48
toscalixstands14:48
skullmanare we suggesting the new repo should be BuildStream/BuildStream.git?14:49
tristanskullman, I don't think so no14:49
toscalixBuildStream will be a different thing for different target audience because we are using it as brand, but also in other places for other things. We are shooting ourself in our own feet14:49
* Nexus votes for buildfooding14:50
toscalixIs top here. Sorry, I think the whole branding thing has not been thought through and it will have consequences14:50
toscalixthe project, the tool, the group, the repo... should have different names14:50
tristanskullman, I'm talking about when we write things, branding etc, emails, public communications, we should say "BuildStream", or not capitalize at all, which looks casual, I'm only opposed to "Buildstream", or "buildstreaM", or other arbitrary capitalizations14:50
NexusBuIlDsTrEaM14:51
toscalixin any case... I think everybody will be using bst in as we get popular14:51
tristanNexus, exactly, that reads to me, the same way as "Buildstream"14:51
skullmanfair, I thought we were suggesting that the flatpak would be branded as BuildStream so the project that may end up building it should be14:52
Nexuswho worked on artifact cache expiry?14:52
skullmanNexus: I think it was tlater14:52
Nexusdamn14:53
tristanAlso, as in many cases; consistency is often more important than the arbitrary choice; if we were to create "integration" in the BuildStream group... we should change all the related "buildstream-" repos to match14:53
tristanbut still, these are git repository names, it's arbitrary that gitlab.com puts them into a "Group" of the same name14:53
tristanwhen we check them out, clone them, use them, it's nice that they have "buildstream-" in the name14:53
valentindqinusty, I have pushed the fix: https://gitlab.com/BuildStream/buildstream/merge_requests/62214:58
tristancs_shadow, I'm sorry I haven't had time to really give pip a full proper review; haven't looked at test cases at all either; but I went through a straightforward reading of the plugin itself and it certainly looks promising and straight forward15:00
tristancs_shadow, there are some limitations and XXX comments indicating those, but I doubt there is much sensible we can do about it; most importantly the ref produced by `pip freeze` needs to be something we can trust15:00
tristancs_shadow, I will give a more thorough look through tomorrow but I think it's looking good... and thanks for following up with the plugin !!15:01
qinustytristan, do we want fatal-warnings to be extendable by plugins? E.g. we are currently looking to add `ref-not-in-track`, but third party plugins won't have that ability.15:02
tristancs_shadow, one thing comes to mind... I will write a comment for it...15:02
tristanqinusty, that is a very good question; I have a background process running that says we might leverage the BstError machine readable "reason" strings15:03
tristanqinusty, feel free to draw up (reasonably detailed) counter proposal to consider :)15:03
qinustyI have a basic implementation, but possible warnings are restricted to those defined within plugin.py as constants15:04
qinustyWhich isn't ideal15:04
tristanqinusty, I'm concerned with being able to document the API clearly, and if extensibility is allowed; a way to ensure namespacing15:08
qinustyLooks good valentind, definitely fixes the issues I was seeing15:08
tristanqinusty, I can see how extensibility is desirable, so is informing the project author of all the possible warnings which can be turned into errors (or at least informing the project author how to find out)15:09
qinustyI see, Perhaps each plugin can document any fatal-warnings it provides. Adding them to some form of configuration when the plugin is set up15:10
tristanqinusty, I guess that BstError doesnt help with warnings either, which means a new parameter to Plugin.warn()15:10
qinustyWhat parameter will it need?15:10
tristanqinusty, dont think of them as fatal warnings, they are just warnings; it's up to the author to decide if they are fatal :)15:10
qinustyAH, I see where you're going15:11
cs_shadowtristan: thanks for taking a look! `pip freeze` guarantees to produce the package list in a case-sensitive sorted order, which I think can be trusted. We can split the output and parse the output ourselves but I'm not sure if we'd do anything different than what it does by default15:11
qinustyYou're suggesting that plugin.warn handles the checks against the fatal-warnings configuration and throws an error if the warning is configured as fatal15:11
cs_shadowI'll follow up with your other comment on GitLab itself15:11
tristanqinusty, so essentially yeah, it's better if the core just decides to make a warning fatal, and a plugin only raises a warning15:11
qinustymeaning that the plugin itself, just calls plugin.warn("text goes here, info and such", warning_tag="overlaps"15:12
qinustyetc15:12
tristanqinusty, plugins deciding themselves whether to raise an error, and adding branch statements to individual plugins, would probably be bad15:12
tristanqinusty, right, we're on the same page :)15:12
qinustyYes15:12
tristanqinusty, in all cases, we want to control as much as we can from the core, and leave the plugin with least responsibility as possible15:12
qinustyNow the main issue is coming up with a way for a plugin to extend the fatal-warning options and provide documentation for such additions15:13
tristanqinusty, I think that can solve extensibility, and back compat is addressed with a statement that "Any plugin which does not provide the context of a warning, or any warning issued without that added context, cannot be marked fatal"15:13
qinustyindeed15:14
tristanqinusty, the last issue is about ensuring project authors can have a sensible way of knowing what those warnings contexts can be15:14
qinustyE.g. read the documentation for their plugins ;)15:14
tristanWell, yes indeed15:14
jjardonheads up: cache artifact server deployed for GNOME builds15:14
tristanqinusty, It would be good though at least for core plugins, that we have some index where those warnings are aggregated in one place15:15
tristanjjardon, yyyyeaaaaaahhhhhhhhhhh \o/15:15
* tristan jumps up and down15:15
tristanparty time !15:15
skullmanseems like the majority like buildstream-integration, and while there's extra friction on tab-completion and redundancy in the url, consistency, distinguishing it from projects in BuildStream/ which aren't related to the buildstream tool and the nice default clone name have swung it for me.15:15
skullmanjjardon: ooh15:16
tristanjjardon, now all that's left is to ensure downloading an llvm artifact doesnt take 3 hours !15:16
tristanhehehe15:16
jjardonIf someone ask, It's a 3 cores machine, with 1GB of RAM15:16
qinustyI was thinking https://buildstream.gitlab.io/buildstream/format_project.html#fail-on-overlaps tristan15:16
qinustyBut it did just take me 2-3 minutes to find that branch of the docs15:17
jjardontristan: I have created a new label for cache server related stuff, hoe you dont mind: https://gitlab.com/BuildStream/buildstream/issues?label_name[]=cache_server15:17
tristanqinusty, maybe we also want an Object() class with constants, for the errors which are core15:18
qinustyYeah for namespacing purposes15:18
tristanqinusty, for instance the ref-not-in-track can be raised by multiple plugins, they also need to know which core warnings should be used15:18
tristanerr, s/errors/warnings15:18
qinustyIndeed15:18
laurencejjardon, pls propose a new label on the list15:19
tristanqinusty, good point ! we might solve namespacing issues by saying... if it's not a core warning, it will be automatically prefixed with Plugin.get_kind()15:19
laurencewe should do it before we make them15:19
jjardonlaurence: it was discussed on Monday meeting15:19
laurenceI would also like a new label at the moment, so thanks for reminding me of that :)15:20
* laurence posts to list15:20
tristanqinusty, so plugin specific warnings automatically become something like... "local:some-warning", when they call self.warn("Some warning is being issued", context="some-warning")15:20
tristanqinusty, if for instance, it was issued by the local source plugin15:20
qinustyMeaning that your project.conf has to have local:some-warning etc15:20
qinustyas a fatal-warning15:21
tristanexactly, ensuring separate namespace for any warning that is plugin specific15:21
qinustyAlright, sounds good. When are plugins loaded in and setup() called?15:21
WSalmonjjardon, you asked about having the git track back ported, i have set up the MR https://gitlab.com/BuildStream/buildstream/merge_requests/621 are we just merging them if they work and are excepted to 1.2 or are we waiting for tristan to ok them or are we doing a fresh review cycle?15:22
laurencejjardon, well, ok, but that is not giving everyone a chance to respond. you are leaving out many users of the tool15:22
tristanqinusty, later than project.conf, by the end of Stream._load()15:22
qinusty:/ Meaning we can't limit fatal-warnings to those provided by loaded plugins15:22
tristanqinusty, probably asserting plausible correct values for warning names has to be done late15:22
qinustyyes15:22
tristanwell, we need to do it after loading the project15:22
tristanbefore running a scheduler or anything15:22
jjardonWSalmon: I'd wait for tristan to ack it15:23
qinustySounds good, I'll get started with some of that and see how it feels on the plugin end15:23
*** leopi has quit IRC15:23
tristanWSalmon, jjardon, technically, we can backport the warning, but we can't technically add the feature to mark those as fatal in 1.2.x15:23
skullmantristan: looks like I'll need an admin to create BuildStream/buildstream-integration project.15:24
skullmanI'll get on with a local repository for now.15:24
skullmanso no rush15:25
WSalmonin that case it might be worth making it a (more) protected repo in gitlab?15:28
WSalmonso are you happy with the _pipeline bit but the git.py bit wants to be a warning?15:28
tristanuhhh, me ? ... link again ?15:29
WSalmonhttps://gitlab.com/BuildStream/buildstream/merge_requests/621/diffs15:29
tristanWSalmon, it must be a warning and not an error, and I seem to recall having commented before on this... lemme look15:29
tristanwaaait a sec, this is different15:29
tristanthis is not warning if ref is not in the specified track15:30
WSalmonnope this is if you dont give a ref or a track then you get a never ending loop of track then build then error saying go do track15:30
tristanWSalmon, no sorry; that is not right, the core is not allowed to know anything about plugin specific configuration, or attributes a plugin might have used15:31
tristanWSalmon, this looks like it has some overlap with other things, e.g. the proposal which came up about manifests15:31
tristanWSalmon, so for instance, we might need to come up with some real API for plugins to report additional things, like the 0-N URLs which might be associated, etc15:32
tristanWSalmon, a core-level warning would have to depend on that having been implemented by the plugins (and the API having been defined for it)15:32
*** xjuan has joined #buildstream15:32
tristanWSalmon, jjardon, I think that the quick fix is to improve the "Try running bst track" error message, to also inform the user that they must ensure that they have provided tracking information for the mentioned ref-less elements15:33
tristanI.e. the current error message just says "try running bst track" on the elements which didnt have a ref, failing to tell the user/project author, that it is also their responsibility to provide tracking information15:34
tristanAlternatively, one could reword it to say "If you have provided tracking information in these elements, then you can try running bst track, otherwise please specify the specific refs yourself"15:35
tristantracking is after all, just a productivity feature, not a requirement15:35
* tristan pasted the relevant irc log in the merge request... and heads out...15:38
WSalmonsorry i think i may have over paraphrased my summary, dose the commit not do that?15:42
*** noisecell has quit IRC15:47
skullmanhmm, seeing build failure from caching build trees, since some projects may leave sockets in their build tree16:00
jennisjonathanmaw if you get a chance, do you mind taking a look at: https://gitlab.com/BuildStream/bst-external/merge_requests/4116:04
Nexusskullman: what do you mean?16:04
skullmanNexus: freedesktop-sdk's gpgme.bst fails when it tries to cache the build tree, since as part of its test suite it creates unix sockets and leaves them around in the build tree. This causes problems because the code to copy the build tree into the artifact can't handle unix sockets16:06
jonathanmawjennis: I'll add it to my list. I'll probably have time tomorrow.16:07
skullmanI've added the following to get on with things:16:08
skullmanconfig:16:08
skullman  install-commands:16:08
skullman    (>):16:08
skullman      - |16:08
skullman        find . '(' -type s -o -type p ')' -delete16:08
KinnisonI'd be tempted to say that it should ignore sockets entirely since they're 100% unuseful once the processes behind them have gone away16:11
jmaclaurence: I don't understand the 'paper-cuts' reference... am I missing something?16:11
jennisty jonathanmaw :)16:12
Kinnisonjmac: in reference to issues, papercuts are small issues which, on their own, don't necessarily prevent anything, but when you have hundreds of them, you die.16:12
jmacOK16:12
jmacNever heard the term before but it makes sense16:12
laurencehhhm i should have explained better16:12
laurences/better/more/16:13
laurence:)16:13
*** tlaxkit has joined #buildstream16:13
*** leopi has joined #buildstream16:22
tiagogomes_skullman https://gitlab.com/BuildStream/buildstream/issues/50016:31
skullmantiagogomes_: cheers16:42
*** jonathanmaw has quit IRC17:30
*** toscalix has quit IRC17:39
*** tlaxkit has quit IRC17:44
*** milloni has quit IRC17:46
*** milloni has joined #buildstream17:52
*** xjuan has quit IRC20:20
*** leopi has quit IRC20:38
*** tristan has quit IRC21:31
*** bochecha has quit IRC22:45

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