IRC logs for #buildstream for Sunday, 2018-02-18

*** ltu has quit IRC00:17
*** nexus has quit IRC00:17
*** paulsherwood has quit IRC00:18
*** jmac has quit IRC00:18
*** jmac has joined #buildstream00:19
*** nexus has joined #buildstream00:20
*** paulsherwood has joined #buildstream00:21
gitlab-br-botbuildstream: merge request (workspace-directory-fix->master: Create workspace directory after checking for potential issues) #281 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/28100:26
*** laurenceurhegyi has joined #buildstream00:29
*** Prince781 has joined #buildstream00:45
*** Prince781 has quit IRC00:51
*** tristan has quit IRC01:22
*** Prince781 has joined #buildstream01:43
*** Prince781 has quit IRC01:47
*** Prince781 has joined #buildstream02:47
*** Prince781 has quit IRC04:13
*** Prince781 has joined #buildstream04:14
*** Prince781 has quit IRC04:42
*** Prince781 has joined #buildstream06:17
*** Prince781 has quit IRC06:22
*** Prince781 has joined #buildstream06:24
*** Prince781 has left #buildstream07:22
*** Prince781 has joined #buildstream07:25
*** Prince781 has quit IRC07:59
*** Prince781 has joined #buildstream08:00
*** slaf has quit IRC08:12
*** valentind has joined #buildstream08:20
*** slaf has joined #buildstream08:32
*** Prince781 has quit IRC08:48
valentindThe way cache keys are calculated depends on the machine architecture. But then it becomes difficult to import cross compiled artifacts from a different machine, through junctions. But I wonder why the machine architecture should be in the cache key, given that you need a runtime anyway to run and this runtime will be different depending on your architecture.10:21
*** tristan has joined #buildstream11:10
juergbivalentind: in non-strict mode, the imported artifacts don't affect the (weak) cache key of reverse dependencies, so it's crucial there12:18
juergbithe imported bootstrap could also be multi-arch (e.g., x86-64 and x86-32)12:18
juergbiin which case there may even be an issue in strict mode when build systems use `uname`12:18
persiajuergbi: Any suggestions on best practice for importing bootstrap artifacts in such a case?12:22
valentindYou still have to tell the compiler what architecture you want to use.12:22
juergbi'configure' will choose a default based on `uname`12:23
juergbiwhich means that `uname` influences the build output12:23
juergbi(or at least may)12:23
persiajuergbi: Right, but in the situation where I build a payload to put on a new machine to bootstrap, I *cannot* have run configure on the target arch yet.12:23
persiaIt used to be possible to use buildstream to bootstrap to new architectures.  It currently is not.  This seems a significant regression unless there is a sensible workaround.12:24
persia(I also cannot have run uname on the target arch yet)12:25
juergbihm, that always requires an explicit manual (or scripted) import step, right?12:25
juergbinot sure why this wouldn't work anymore12:25
valentindWell, it would be nice to be able to import/export artifacts for junctions using different build architecture.12:26
persiaDidn't used to: the old way was that buildstream would build something on arch (a), and then arch(b) could import that same thing.12:26
persiaNow, because arch(a) and arch(b) differ, arch(b) cannot consume an artifact produced by arch(a).12:26
juergbiah, right12:26
persiaThis is also an annoying waste of build time for things where architecture doesn't matter (e.g. documentation, java).12:27
persiaBut it is the bootstrap that is currently most painful, as it means that it isn't possible to use current buildstream for a downstream project.12:28
juergbifor java and co. you use a particular build tooling anyway, so i don't think this is a regression12:29
juergbicross-bootstrap is indeed an issue, though12:29
persiaFor documentation, yes I use particular tooling, but I don't expect the output to differ based on host architecture.  Are you suggesting it should be built for every architecture anyway, just to make sure it doesn't differ?12:30
persiaSame for Java.12:30
juergbiright now there is no way for buildstream to know that it will be the same12:30
juergbithat's independent of the change (at least for strict mode)12:31
persiaAha.  That makes sense.12:33
persiaSo I suppose it's just cross-bootstrap that is the problem.12:33
juergbithe plan is that you can tell buildstream what execution environment it should use per project or possibly even per element12:36
juergbithis should then also adapt uname() output accordingly using setarch12:36
juergbithe cache key will then contain that specified execution environment independent of host uname12:37
juergbiand this should work properly across junctions12:37
persiaCurrent cross-bootstrap supports changes not permitted by setarch12:37
juergbithat's not needed12:37
juergbifor the subproject (or elements) that are built on x86-64, execution environemnt will be set to x86-6412:38
juergbifor the rest, execution environment will be aarch6412:38
juergbibuildstream will use the right cache key per element12:38
juergbicache keys will still differ depending on whether e.g., you used x86-64 or power to build the cross-bootstrap12:39
juergbibut no manual import is required12:39
juergbias long as you specify in a project option (or hard-code it in .bst) what architecture you used for bootstrapping12:40
juergbiand with remote execution, a single bst session could even schedule both parts on appropriate servers (or emulators)12:41
persiaOh, that works.  Any chance that we can back out the "add architecture to cache string" change until that lands?  Otherwise we're stuck on older buildstream for CI.12:43
juergbiwould change cache key again. i'd rather avoid it. especially as it can produce conflicts for GNOME with non-strict builds12:44
persiaWell, freedesktop-sdk is currently unable to reuse cache in CI: the last change breaks things in ways that make it unclear how to continue.12:45
juergbia branch with it reverted for cross CI may be a short time workaround12:45
persiaHow long is "short term"?12:45
juergbiwe should prioritize the story for configuring it, so hopefully not very long12:45
persiawhat commit do we want to use for the reversion?12:46
juergbii can quickly prepare a branch and regularly rebase it12:47
persiajjardon[m]: valentind: Does that work for you?12:47
juergbi * [new branch]        cache-key-v0 -> cache-key-v012:52
jjardon[m]persia juergbi happy to help testing stuff in a branch but master of our ci can only depend in a specific version / SHA of bst12:55
juergbijjardon[m]: and you don't want to set CI to a bst SHA that is outside master?12:59
jjardon[m]juergbi you cannot rebase then or it will break the build12:59
juergbijjardon[m]: i don't understand. why does rebase break the build? (i could also use merge instead of rebase, if that helps)13:00
persiarebase would only break the build if the original SHA was garbage-collected.13:01
juergbiah, i understand now13:02
persiaIf each rebase is tagged (or similar) in the branch, then everything works smoothly.13:02
persiaOr if rebases are carefully coordinated.13:02
juergbii don't think i want to add tags for something non-permanent like this13:02
juergbibut i can just merge instead13:02
persiaThen can we revert master?13:02
juergbiis hopefully not for a long time13:02
persiaMerge also preserves hsitory.13:02
persiaBut I'm curious: does anyone actually use the new cache key formula in production today?13:03
persiaWell, freedesktop-sdk does, but it breaks things.  Anyone else?13:03
juergbignome instructions point to bst master right now, don't they?13:03
persiaNo idea.13:04
persiaBut if so, as buildstream is a GNOME project, that's a very strong argument for not reverting.13:04
juergbithey point to buildstream install instructions, which recommend master right now13:05
juergbi(will probably change once we release 1.2)13:05
persiahrm.13:12
jjardon[m]revert is fine from GNOME POV I'd say13:27
jjardon[m]In my opinnion, instructions should point to the 1.0 branch by default13:29
juergbirevert would be up to tristan. i tend not to revert it and fix it properly as soon as possible13:32
juergbiusing the cache-key-v0 branch for freedesktop-sdk in the short term13:33
juergbi(and i'll merge instead of rebase)13:33
jjardon[m]juergbi: ok, should we open an issue in best so I can link https://gitlab.com/freedesktop-sdk/freedesktop-sdk/issues/49 to it?13:36
jjardon[m]In bst*13:36
juergbiyes, that would be good13:37
juergbiconfigurable execution environment13:37
persiaFor clarity, for revert, I was thinking the right model would be a new commit undoing the changes in the old commit, rather than anything requiring force-push, so consumers didn't need to care (except regarding cache keys).13:45
persiaWhether to do it is separate.13:45
jjardon[m]Of course force push should never be done in master13:49
gitlab-br-botbuildstream: issue #260 ("Not possible to import/export artifacts using different build architecture.") changed state ("opened") https://gitlab.com/BuildStream/buildstream/issues/26013:56
jjardon[m]juergbi ^ feel free to reword if needed14:00
juergbipersia: yes, of course. i did revert like that in the new branch but i don't intend to merge that to master, assuming we can properly fix it soon14:04
juergbijjardon[m]: ta14:05
persiajuergbi: My main concern is jjardon[m]'s CI: if that works, then I'm calm.14:05
juergbiyes, i won't force push on that branch, so it should be fine14:05
tristanI'm not up to speed on the details of current discussion; but I dont see how it was ever possible to re-use the cross built runtime without doing any export/import ostree dance15:07
tristani.e. I would expect the output of a cross build to be exported to a real repo, and that would be used for the self-hosting build in foreign arch to continue the build15:07
tristanThis should be better thought out and integrated in the process one day, especially when we have sandboxes which execute under a specified machine arch / host OS15:08
juergbitristan: the cross-bootstrap can be in the same project as the elements that you build natively (or in a subproject via junction). you then populate the artifact cache using the x86-64 build machine up to the cross bootstrap. when you then build the rest on your target system, it will take the cross bootstrap from the artifact cache as there were no changes in the .bst files15:47
juergbiyes, we need a way to configure the execution environment. to unbreak the freedesktop-sdk cross bootstrap we need at least be able to specify the execution architecture per project15:48
persiatristan: The old way was just to depend on the cross-built artifact, so it ended up populating the sandbox without ever being unpacked/repacked.  That optimisation might have been poking more into internals than was strictly appropriate.15:53
persiaThat said, I think it would be better for buildstream to support depending on artifacts built on other architectures vs. expecting everyone to do some export/import dance (and lost guarantees about the content in doing so).15:54
tristanpersia, I'm not saying it's ideal; but I dont have the expectation of things to work without it16:23
tristannot until a solution is really designed for that16:23
tristanas far as I can see, this would completely break if the artifact cache doesnt have a cached artifact for the base system, as you would fallback to trying to cross build the target runtime from x86_64 if the target runtime didnt yet exist in the cache16:24
tristanbut a cache is only a cache by current definitions of a cache, as such the cache is allowed to be wiped16:24
tristanbut a build should still work in the absence of a cache16:24
tristanThis looks like circumventing export/import "worked" purely by coincidence, but not (yet) by well thought out design16:29
*** Prince781 has joined #buildstream19:29
*** Prince781 has quit IRC20:20
*** Prince781_ has joined #buildstream20:20
*** Prince781_ is now known as Prince78120:21
*** tristan has quit IRC20:30
persiatristan: yeah, I think you're right.  I look forward to the right model :)21:40
*** valentind has quit IRC22:12
*** Prince781 has quit IRC22:32
*** Prince781 has joined #buildstream23:49

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