IRC logs for #buildstream for Thursday, 2017-03-02

*** tristan has joined #buildstream04:04
*** ChanServ sets mode: +o tristan04:13
*** tristan has quit IRC05:34
*** tristan has joined #buildstream05:39
*** ChanServ sets mode: +o tristan05:39
tristanjuergbi, just thought this up btw: https://gitlab.com/tristanvb/buildstream/issues/605:49
tristanhergertme, welcome to the party :)05:51
tristanhergertme, our timezones are probably not matching up very well...05:51
tristanbut I'm sorry if I was in any way less than forthcoming to the community, I am racing against time to deliver something to propose more formally, as I'm sure you understand what that's like :)05:52
hergertmetristan: no worries06:23
hergertmetristan: i only have a partial view of what's going on, but what i see is that it will make a lot of sense for us to spin up images for things like mutter, shell, gtk, etc etc (which are certainly needed, but not our primary users we cater to in Builder)06:24
hergertmebut it would be cool if we can have a simulator or equivalent for that type of thing06:25
hergertmebut builder already has about as much code for flatpak-builder as flatpak-builder itself, so its a non-trivial amount of work for us to go change that plumbing. anything that would replace it (for applications at least), needs to allow us to keep the workflow we just finally got to of: clone/build/run. getting to 1 step to testing software has been a ton of work over the last year and a half, and i'd hate for it to be for not.06:26
tristanhergertme, understood yes06:31
tristanI suppose the bulk of the work is generating json and running flatpak-builder ?06:31
hergertmethose are both relatively easy give the stuff we pushed up into flatpak-builder06:32
tristanI see, what kind of features are we talking about ? I was quite fluent with the flatpak (and builder) code base many months ago but not up to speed on the more recent things06:33
tristanA large part of what the builder does is encode metadata that flatpak itself will use (asides from building)06:34
tristanthose things should be very trivial06:34
hergertmeincremental builds for the top-most project, running/testing inside of runtimes before having to go through ostree commit stages, non-destructive editing of json files, integration with ptrace/perf, cloning from flatpak manifests (so you can edit a running program), runtime management, ...06:34
hergertmesome amount will be re-usable of course06:34
hergertmebeing able to work with the partial built pipelines is pretty important for us, ostree commit stages are too slow for us to use "flatpak run foo" every time06:35
tristanfor incremental builds for the topmost project (or any of them actually), that will be a hard requirement for BuildStream06:35
tristanand of course shelling in and testing/debugging etc06:36
hergertmeits absolutely critical for us06:36
hergertmebecause otherwise every time you click build you'd have to rebuild your whole project06:36
hergertmeso we use flatpak-builder for 0..N-106:36
hergertmeand then we manage the build of your project using the internal build operations in builder06:36
tristanwe dont use the same serial build model, so we should be able to have say, the whole stack which composes a desktop and a checkout of GTK+, and "just build GTK+ and launch the VM" kind of thing06:37
hergertmethat will be cool for platform libraries and such06:37
hergertmei still very much want to, someday, have a simulator/emulator for Builder with "GNOME OS" (for whatever that means)06:37
tristanwith flatpaks, it will be helpful if you want to say, include something that your embedded webkit depends on, and only rebuild that and test in a tight developer loop06:38
tristanSo regarding the GNOME OS simulator big picture, we want to have continuous contributing to that06:38
tristanCurrently the base runtime of both flatpak and continuous is a fork from the same original yocto compile06:38
hergertmeat some point, we need to get to where we can allow you to work on multiple projects in the same build pipeline for Builder (you can open multiple projects, but not in the same workbench). that way people can hack on GStreamer and their app at the same time06:39
tristanWhat we want to do for that is just pull in the necessary things continuous does, to the same yocto build which flatpak uses (so you can build the "only runtime" or the "runtime + some services and kernel")06:39
hergertmeexcellent. if we had access to the continuous OSTree, we can actually have updated git-master to people in a matter of hours06:39
tristanso that will be unified, and GNOME Continuous builds should be contributing to a shared artifact cache06:39
tristanSo developers dont have to build everything (if they wire to the continuous artifact cache, they download prebuilds of anything available)06:40
tristanSo migrating continuous is on the todo list, as we will want it to also use the same build metadata as developers, and flatpak sdk/runtime builds etc06:41
hergertmewell, the serial nature of flatpak-builder had a very specific purpose, to get things closer towards reproducible i thought?06:41
tristanWe are actually all about reproducible hehe06:41
tristanExcept !06:41
tristanFor GNOME developer purposes we need an exception to that06:41
tristanbecause reprodicible builds are not convenient for developers06:42
tristanFor that we need a dual cache key calculation mode06:42
tristanhergertme, so basically dependencies are built and staged in the same deterministic order, but many things can be built in parallel when their dependencies are orthogonal06:42
hergertmewell i do definitely want to see the runtimes being reproducible, even if testing systems aren't for speed issues06:43
hergertmethat seems reasonable06:43
tristanA cache key for a given element is A.) It's sources (commit sha usually) B.) it's build instructions and C.) The sum of it's direct dependency cache keys06:43
tristanSo yeah, we need to think about the solid release case where everything is deterministic (thats the mentality we started out with)06:44
tristanBut we also have to consider that a developer doesnt want to rebuild webkit on their machine to test a code change in glib06:44
hergertmei also really really really want tinderbox for gnome06:46
tristanOne thing which was inspired by the serial nature of flatpak-builder, one of the advantages there; is that you get to run cache updates (like fc-cache, ldconfig, gsettings schema compiles etc) directly on something you commit06:46
hergertmeso i can just take my working tree + changes, and submit a build06:46
tristanAh, ok like mozilla (took me a moment sorry  :))06:49
tristanhergertme, Interestingly... that is something we have previously experimented with using gitlab06:49
tristanexcept you need to submit a branch to trigger a build06:50
tristanwhich is a bit different06:50
hergertmeat least that i can automate in Builder06:50
tristannod06:50
tristanI dont want to step on colin's toes too much but when looking into the continuous things, it's possible that "run a gitlab instance" might turn out to be an awesome alternative06:52
tristanbut that needs more investigation anyway06:52
hergertmeagreed06:53
*** tristan has quit IRC08:15
*** tristan has joined #buildstream09:05
*** ChanServ sets mode: +o tristan09:07
*** csoriano has joined #buildstream10:10
*** ssam2 has joined #buildstream10:18
tristanssam2, checkout my latest crazy idea: https://gitlab.com/tristanvb/buildstream/issues/6 :)10:25
ssam2yeah that would be nice10:26
tristanironfoot, if you have some time to think about conversions... I have a small challenge for you :)11:10
ironfootdefs2bst?11:10
tristannot exactly, I'm going to pick that up again very soon... but related yes11:10
ironfootyeah, I have some time to think, maybe not to implement things11:11
tristanironfoot, its an implement thing, but I think it's not very involving and will be attractive to baserock11:11
tristanso basically11:11
tristanRight now we run the conversion on top of the manually converted base https://gitlab.com/tristanvb/buildstream-tests/tree/build-essential11:12
tristanironfoot, What I would like to do, is A.) run that build... B.) Stage the stack (could be using bst shell) ... C.) Commit that sysroot to a git repository... D.) Replace the gnome platform/sdk in build-essential with *that git*11:13
tristanironfoot, in this way baserock continues to be circular and self reliant11:14
ironfootSo we would be producing the "host tools" needed11:15
tristanexact11:15
tristanironfoot, it may be tricky for other arches than x86_32 and x86_64, but that could be postponed I guess11:15
ironfoothm.. it will be a bit big (hundreds of MB)11:16
tristanthere are various ways to get a runtime for other arches, for armv7a and aarch64 there are freedesktop runtimes11:16
tristanyeah it *should* be ostree really11:16
tristanbut if baserock wants to continue with the "everything repeatable in only-git trove"...11:16
ssam2I don't know that it does11:16
ssam2there was originally a "you need to download a Baserock image from download.baserock.org" step to using it11:17
ssam2this is basically going back to those days, but automating the initial setup instead of requiring the user to faff around setting up a VM for 3 hours11:17
tristanIndeed, but I think the trove idea is to "have always everything you need in one place, so you can reproduce exactly this 10 years later"11:17
ssam2sure, but Trove already has a HTTP server, so could easily host OStree repos11:17
tristansure, that would also be fine11:18
tristanI'm just thinking people will like it more if it's circular11:18
tristanand not rooted in something else11:18
ssam2I think I care more about the base being small11:19
ssam2and easy to maintain11:19
ssam2which doesn't exclude Baserock, but doesn't require it either11:19
tristanI personally dont really care heh11:19
ironfootat the moment is not small with that sdk ostree repo11:20
tristanyes that ostree can probably be replaced with the base runtime directly11:20
tristanorg.freedesktop.BaseSdk and org.freedesktop.BaseRuntime11:20
ssam2the Baserock definitions *were* organised in such a way that you could bootstrap with nothing but a GCC toolchain, Busybox and M411:20
tristan(from the same ostree host)11:20
tristanssam2, and that's what the BaseSdk will basically give you11:21
ssam2of course, that made it hard to integrate things like Rust which bootstrap themselves from their older binary images11:21
ssam2ah, cool11:21
ssam2ah, so you're basically talking about committing the stage2 binaries to this repo? in that case, I like it :-)11:21
tristanit sits below org.freedesktop.Sdk and org.freedesktop.Runtime11:21
ssam2and you could then inject extra stuff (e.g. rust bootstrap binaries) if you wanted Rust11:21
tristanssam2, basically yeah, well I would have went with a full build-essential commit11:21
ssam2of course you lose portability if you're depending on Rust, but it's optional11:22
ssam2yeah I guess build-essential stage 3 makes more sense11:22
ssam2well, there's a tradeoff11:22
ssam2if you commit stage 2, the user then gets to build their own GCC, which means stage2 can be a much older GCC11:22
ssam2and we only have to update the ref for stage3 gcc, not the bootstrap binaries11:22
tristanssam2, the thing about stage2, isnt it still this weird /tools directory thing ?11:23
ssam2ah, true11:23
tristanssam2, I think that's a bad base if so11:23
tristanright11:23
tristanbetter have build instructions from scratch11:23
ssam2yeah I guess we can just leave the stage3 GCC at some stable release, and say "build your own GCC from Git and install it over the top of ours if you want"11:24
ironfootyep, and baserock could continue building the 3 stages on top of that11:25
tristanssam2, not sure its clear but I want to keep build instructions for the whole bootstrap in baserock bst project11:25
tristanI think it's clear11:25
ssam2there's not much point though, the idea of the 3 stage bootstrap is (a) so you can cross-bootstrap and (b) so your compiler is isolated from the host OS11:25
tristanssam2, when moving the OS forward, you'll sometimes need to recommit build-essential into your base11:26
tristanwhen you may reach a point where your toolchain is too old11:26
tristanto build something very new11:26
ssam2yeah11:26
tristanI dont want to lose bootstrapping really, sure it's complicated but we should have a way to go from nothing to everything and back around again11:27
ssam2no, it's one of the really interesting things about Baserock11:27
* paulsher1ood *really* doesn't want to lose bootstrapping11:28
ironfootright, so are we calling this bs-sdk?11:28
tristanyes, no loss of bootstrapping please11:28
paulsher1oodor multip-arch11:28
tristanironfoot, I want to call it something else11:28
paulsher1oodbulls***-sdk? :-)11:28
ssam2Aboriginal 2 :-)11:28
tristanironfoot, I want to call it gnu, or gnu-runtime11:28
tristanor gnu-sdk11:28
ssam2gnu-toolchain ?11:29
tristanAnd then when we do a toybox / musl version, it will be a different base11:29
tristangnu-toolchain sounds good11:29
paulsher1oodwhere does this sit relative to rob landley's new thing? mkroot, irrc11:29
ironfootit will live in an ostree repo?11:29
ssam2I guess it's kinda the same, but presumably Rob still wants to write everything in Bash11:29
tristanlandleys thing, well, is mostly about cross bootstrapping11:29
tristanand his dropping of the aboriginal way (which was a bit more convenient, less moving parts) was mostly his holy war11:30
paulsher1oodhttps://github.com/landley/mkroot11:30
paulsher1oodgot to give him credit... he has it down to <500 lines of shell11:31
ssam2true11:31
tristanpaulsher1ood, So, what I want, is to first reach our targets; and then after that we turn the world upside down by A.) Introducing a base which we build in an aboriginal like way, and then B.) Make a sandbox implementation which depends on a cross built root11:31
paulsher1oodack11:31
tristanAnd that sandbox implementation cross compiles11:31
paulsher1oodmay the force be with you, young jedi11:32
tristan:)11:32
tristaneverything along the way is already proven, but needs dusting up11:32
ironfootso, ostree repo, with different branches for different versions/arches?11:36
tristanironfoot, for different arches at least yeah11:37
tristanas you can see there is already an arch conditional in gnome-platform.bst and gnome-sdk.bst to checkout the right base for building on11:38
tristanit's missing the arm and aarch64 variants, but those are available also at sdk.gnome.org11:38
tristanactually if we want to go with baserock terminology, we should use x86_32 instead of i386 in that conditional11:39
tristanchanges of the day include shorter log lines, abbreviated cache keys, rework of how logging works so I can improve it more, but not quite what I want it to be yet14:56
tristancloser14:56
* tristan signing out...14:56
ironfooto/14:57
*** tristan has quit IRC14:59
*** tristan has joined #buildstream15:25
*** ChanServ sets mode: +o tristan15:25
*** csoriano has quit IRC15:41
*** csoriano has joined #buildstream15:59
*** ghishadow_ has joined #buildstream16:36
*** csoriano has quit IRC16:43
*** csoriano has joined #buildstream16:57
*** csoriano has quit IRC17:59
*** csoriano has joined #buildstream18:04
*** ssam2 has quit IRC18:09
*** csoriano has quit IRC19:14
*** tristan has quit IRC21:20
*** jjardon[m] has joined #buildstream22:57
*** jjardon has left #buildstream22:58

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