IRC logs for #buildstream for Sunday, 2017-05-07

*** tristan has joined #buildstream05:24
*** tristan has quit IRC06:44
*** tristan has joined #buildstream10:29
paulsherwoodtristan: can we have proper logging of what's going on at the start, please?11:42
paulsherwoodLoading:   51611:42
paulsherwoodResolving: 516/51611:42
paulsherwoodChecking:  516/51611:42
paulsherwoodtakes quite a long time (10 seconds or more) no timestamping of that step11:43
paulsherwoodand i'm assuming it's equivalent to ybd cache-key resolution. that being the case, there are reasons to want to log all of the component cache-keys at this point11:44
paulsherwoodalso, your overall time clock seems to be excluding this setup step12:09
tristanpaulsherwood, Sure we could, I think on my machine for building the baserock full gnome build I'm at about 6 seconds13:33
tristanfor what it's worth, cache key calculation is done by the second step, the third step takes longest because it's interrogating the filesystem13:33
tristanasking source plugins if they have a local cache (if a fetch is needed) and asking the artifact cache if the key is locally available13:34
tristanpaulsherwood, outputting all the cache keys I'm kind of unsure I like the idea of dumping all of that by default to the console to be honest, I know ybd likes to do that13:36
tristanpaulsherwood, on the other hand there is no reason why a CI build script could not do `bst show` in advance to get whatever information it wants into a log file13:36
tristanwhich is why I'm a bit hesitant to do that huge dump by default13:36
paulsherwoodtristan: the cache-keys are part of the audit log for a given build, imo13:41
paulsherwood(and i've seen plenty of use-cases where it's needed to trace back to precisely what artifacts where built, and why)13:41
paulsherwoodthe common one is 'why did this change rebuild everything?'13:42
paulsherwoodanother is wanting to look back from an artifact and find what led to it being built13:43
paulsherwoodwhile we're here, any chance you can make buildstream.gitlab.io point to buildstream.gitlab.io/buildstream, rather than 404?13:44
tristanpaulsherwood, for the case of printing cache keys, I dont see why say, a build server (or user) cannot just type `bst show --deps all <target>` before running `bst build` so that you _do_ have that information you want stored somewhere13:50
tristanthe benefit of separating this is that bst show can be scriptable (I'd like to improve on that actually), and allow for showing more things than just cache key13:50
tristanhard coding that into every launch of bst build is rigid13:50
tristanso say, maybe one day you might want to have a very verbose log, and show the resolved element configurations and all the build environment variables for each element, in advance of launching the build13:51
tristanwhile a normal user (developer) probably just wants to build13:51
tristanin any case, a normal user can always type `bst show` in a separate terminal on the same project to get that information, even when a long standing build is ongoing13:52
tristanI also know we would like to have a website at buildstream.gitlab.io, I'm just one person, though, I have to prioritize right now on getting builds of the GNOME modulesets working13:53
tristanpaulsherwood, a temporary redirect with a static website at buildstream.gitlab.io until we do have a main website could be a good thing, I could make sure that you are in the group and have the necessary permissions if you want to do that13:54
paulsherwoodi'll do it if i get time13:55
* tristan just added foobarzzz to the group13:56
tristanfwiw I did report https://github.com/pallets/click/issues/780 and submitted https://github.com/pallets/click/pull/781, which I'm hoping will land in click soon, and will give us a good tab completion UX13:58
paulsherwoodtristan: i think you're missing the point a bit on this cache-key stuff. any given log should have cache-keys in it, so we don't accidentally end up reading the wrong log, or wondering which log was for which artifact(s)13:58
paulsherwood'  Target:               gnome/gnome-system-image.bst13:59
paulsherwoodis useless information, once i have more than a handful of logs13:59
tristanpaulsherwood, in that case, every log, at least for anything that was actually built (or attempted to build), already does; but we use a configurable abbrebiated cache key length for this13:59
tristanevery log line has the cache key of the related artifact in it14:00
tristan(first 8 chars at least)14:00
paulsherwoodnot every log line, clearly :)14:00
tristanSome log lines are not related to artifacts, like fetching sources14:00
tristanAnd when an element has no ref (but only a track attribute), no cache key is available yet14:01
paulsherwoodlooking at that target line i've just quoted... i a ssume bst knows the key at that point?14:01
tristanThat is part of a summary yes, at that point it's there, unless we are running `bst track`14:02
paulsherwoodso please state the key in full there?14:02
tristanbut then, the cache key should be in the first line of the regular logging mechanism14:02
tristanSure, can do; I just would _like_ to keep the summary nice and brief14:03
paulsherwoodyou mean '[--:--:--][0e3e392d][gnome/gnome-system-image.bst       ] START   Starting build' ?14:03
tristanRight14:03
paulsherwoodwe had a situation this week where stuff changed *during* a ci pipeline (ybd built one thing, then immediate deploy discovered the change, rebuilt everything)14:05
tristanthat sounds like a bug14:06
tristanIn any case, a deploy should normally be a build of one pipeline, but you should _never_ end up discovering anything new unless you explicitly run `bst track`14:07
paulsherwooddepends on your pov. at the time the build ran, it generated the correct thing. at the time  the deploy ran, the input had already changed14:07
tristanin the case of buildstream, that must be an explicit action14:07
paulsherwoodmaybe. i expect people will manage to misconfigure. having full keys at least made it easy (for me) to track down what had changed14:08
paulsherwoodtristan: it's an easy enough flag for config? show-keys: t/f ?14:09
tristanthere is going to certainly be some discovery, and it's going to be difficult or impossible to output logs which are exactly what everyone wants; on the other hand it's desirable to not have more than one frontend/logging style14:09
tristanthat sounds like a reasonable option, but perhaps instead; a configuration matching the input of `bst show` would be more appropriate/dynamic14:10
* paulsherwood notes that the keys would be a few hundred lines, in a log of tens/hundreds of thousands of lines14:11
tristanso internally, `bst build`, if configured to `show --foo --bar` at build time, would do that action in advance of every build14:11
tristanwhether it be only cache keys, or other information about the pipeline, that users might want to see / store at the beginning of a build14:12
paulsherwoodyup. i want to see precisely what version of bst ran, for example... not your 0.1 approximation :)14:12
paulsherwoodand all of the config14:13
tristanThere I think we are getting into the realm of wrapper scripts14:13
paulsherwoodreally? 0.1 is useless14:13
tristanBecause just because buildstream happens to be revisioned by us in a git repo, does not mean that users obtained it by cloning the git repo14:13
tristanat least it will not mean that if it is installed by a package manager14:14
tristanor any other means14:14
paulsherwoodwhen you (or anyone) creates the package, that script can trap the sha, surely14:14
tristanindeed, that could happen14:14
tristanas a part of a `make dist` of sorts14:14
paulsherwoodthis is a subtle point that i've been arguing about for decades... even expert people such as you keep on getting it wrong :)14:15
tristanI still tend to disagree14:15
tristanI mean, you might want the commit sha encoded into your release data, sure14:16
paulsherwoodi know you do, and i'm sorry that you fail to understand it :)14:16
tristanBut, if you had made a release, you should have bumped the minor point release, and that is what should be used14:16
paulsherwoodevery time someone (including you) manually puts some kind of 'version' into something, it's a bug waiting to happen14:16
tristanIf you did not make a release, then people are using an unstable/unvetted copy14:16
tristanI see the relevance of encoding it, but I think we should do better by providing properly revisioned release "tarballs" or such14:17
paulsherwoodbst --version gives me the wrong thing, is my proof14:18
tristanthat is one of the things about tarballs that I have to stand behind, there needs to be a point where what we released is stable and official, and what is git is just development branches, not for production14:18
tristanbst --version reports 0.1 for me, and we're not ready to be stable and making releases14:19
paulsherwoodthat's fine, as far as it goes. but if your only 'version' in a tarball is something you 'should have bumped', you're broken by design :)14:19
tristanonce we hit 1.0 (which may not have any versions in between), then we should be doing that14:19
paulsherwood'bst --version reports 0.1' for various versions of bst14:19
paulsherwoodincluding latest master, which is not when you set it to 0.114:20
tristanthey are all 0.1 as far as I can see, so far14:20
paulsherwoodwhich is exactly my point14:20
tristani.e. they are all pre-release alpha software14:20
paulsherwoodit's useless information, tristan14:20
paulsherwoodanyway i raised an issue. i'm only going on about it here because i fear you still don't understand my point14:21
paulsherwood(and i've had this argument for decades, as i've said)14:21
tristanpaulsherwood, no I do see your point, we can encode the git sha into release metadata for it to end up additionally in the versioning information; I do disagree that major.minor.micro point release versioning is useless, though14:29
paulsherwoodi'm not saying point release versioning is useless. but if any versioning can get out of step, or miss a bump accidentall i can't rely on it, can i?14:31
tristanit should be going through a well defined release pipeline, which is something we're not doing yet, either14:32
tristanfor instance if you release on ftp.gnome.org, you will not be able to release an already released version, that just wont work14:32
tristanthe same will apply if you do the weird pypi wheels thing, too14:32
tristanonce upstream releases a version publicly, it becomes available for distro packagers to do their work, etc14:33
tristanthere should be checks and balances, just that they are not always git14:33
tristanthat said, even in the case that you did all of that and are running a properly released software, does not mean it is not interesting to have the upstream git commit sha (or whatever VCS versioning data in use) encoded into the final versioning information14:35
tristanand, that versioning information becomes especially interesting for those who consume unreleased software14:35
paulsherwood+1 :)14:45
paulsherwoodso my build completed in real150m49.805s15:59
paulsherwood(no fetching)15:59
paulsherwoodwhich is sigificantly faster than ybd for the same usecase16:00
paulsherwooddoes it build all of the same things (for gnome system)?16:01
tristanpaulsherwood, yes it does, and it creates a bootable image (so I guess you could compare it to the gnome "cluster")16:31
tristanmaybe that part could be optimized, or, is possibly slower than with ybd and root super powers16:32
tristansince the image splicing is intense and not needed when you can mount stuff16:32
tristanactually splitting integration commands into two categories (commands needed for using runtimes vs commands needed for booting systems) will also significantly optimize that build16:34
tristanbecause it turns out especially the cracklib integration command is time consuming16:35
tristan(and doesnt need to run for the ... probably around 20 or 50 elements it runs for)16:35
tristanthen, other things in the build metadata itself could be optimized, for instance the conversion keeps around some hacks that are no longer needed16:37
tristanlike generating the pixbuf loader caches for various builds16:37
*** tristan has quit IRC19:51

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