IRC logs for #buildstream for Saturday, 2018-02-24

*** mcatanzaro has joined #buildstream00:05
*** tristan has quit IRC00:30
*** Prince781 has joined #buildstream00:35
*** Prince781 has quit IRC01:16
*** mcatanzaro has quit IRC02:11
*** tristan has joined #buildstream07:08
tristantlater, actually, I never found out that I needed the `-m integration` integration part of that invocation; looks to me that it's unneeded and `--integration` is enough by itself07:14
tristanexcept for the current hard requirement of knowing about an env var07:14
juergbihi tristan, i was recently thinking about staging order and don't remember exactly, is the only reason for sort_dependencies() to get a hopefully better planning order (elements with many reverse dependencies first for more parallel build job opportunities) or is there another reason?07:35
juergbii think i'd actually prefer full control over staging order, i.e., stage in the declaration order (depth first, of course)07:37
tristanjuergbi, first reason was because in absence of that we needed tsort at stage time07:38
tristanwhich is expensive07:38
tristanbut declaration order is wrong I think, because I think there is no declaration order07:38
juergbiwhy would we need tsort at stage time?07:39
juergbiis depth first not sufficient?07:39
juergbidepends is a list, so i'd say there is a declaration order07:39
tristani.e. in the sense of only one element; there is a declaration order of only the direct dependencies, below that all bets are off because common dependencies will disagree07:40
juergbiwe could just stage indirect dependencies first time we see them07:40
tristanAlso, I think we never wanted the order of the depends list to be meaningful07:41
tristani.e. reorder of those is not something that ever effected cache key07:41
tristanaffected (/me learns new english word last week)07:41
juergbicache key calculation follows the usual depth first order07:42
juergbiself.dependencies(Scope.BUILD) is used for both cache key and staging in build elements07:42
tristanRight, which is currently presorted and will not be affected by order of deps specified in a .bst file07:43
juergbiright but without sort_dependencies() we'd still have no cache key issue07:43
juergbiif overlaps were never allowed, it wouldn't matter, of course. but now i consider it a bit odd that you can allow overlaps (which are directional) but you can't influence staging order at all07:44
tristanwell, it's not an "issue", but it's rather inconvenient if the order of deps you specify in an element becomes meaningful07:44
tristanyes, sibling elements with overlaps is indeed weird07:44
tristanis that common ?07:45
tristan(when I say sibling in this sense, I mean not depending on eachother; sibling in dependency graph)07:45
juergbii don't know but i don't like not being able to predict the staging order07:45
tristanheh07:46
juergbiwhy i'm thinking about it right now is that an overlay could be useful in some special cases07:46
juergbii.e., where you allow overlaps and want to ensure that the overlay is on top07:46
tristanummm, what is an overlay then ?07:47
juergbie.g., overlay with cross compile environment07:47
* tristan is thinking overlay = some fuse layer or equivalent07:47
juergbino, i meant for elements07:47
tristanyeah I dont know what this means07:47
juergbii.e., just a special element staged on top of the other dependencies07:48
juergbiwith staging in declaration order, one option would be to simply put that at the end of the depends list07:48
tristanand what would it do ? it would be special in the sense that for that element overlaps are always allowed / expected ?07:48
juergbithat functionality is already there, we can configure that07:49
juergbibut we'd need to be able to ensure it's really the last element staged07:49
tristanSo an overlay is just an element that you expect to overlap other things ?07:49
tristanthat is already achievable with explicit depends07:50
tristani.e. if I depend on A, B and C, and I want to be sure C is staged over B07:50
tristanthen make C depend on B07:50
juergbibut B build depends on C (bootstrapping)07:50
juergbiso for most elements B wouldn't be staged at all, but it may get pulled in via indirect dependencies07:51
juergbiin those cases, i want to ensure that C is on top07:51
tristanUhhhh07:51
tristanummmm, errrr07:52
juergbii can also provide some concrete examples if you want07:52
juergbior is it already clear?07:53
tristanno it's not really clear, there is something I'm missing entirely07:53
juergbii have a cross compiler (+ coreutuils etc.) that i want to use to construct a target system07:53
tristanright, are we talking about things we currently support ?07:54
tristanor things we want to support in the future ?07:54
juergbimore or less currently supported. i already successfully cross built an aarch64 system...07:54
tristanI think baserock does it right, and freedesktop-sdk is cheating07:55
tristanbecause we dont understand arch in the buildstream core, yet, by design07:55
juergbii build everything in one session on x86-6407:55
juergbiin the target elements i build depend on the cross compiler07:56
tristanok sorry, I'll let you explain first07:56
juergbiin normal cases that's all fine, it builds with the cross compiler as expected07:56
juergbihowever, there is also an element for a target native compiler07:56
juergbiwhich is not used for the buildstream build but we want a compiler in the target system07:56
tristanright, the canadian cross; cross built native07:57
juergbisome target elements may runtime-depend on a compiler, so they obviously depend on the target native compiler07:57
juergbiif i now want to build an element that build depends on such an element (that runtime-depends on the target-native compiler), two compilers get pulled in07:57
juergbithe cross compiler and the target-native compiler07:58
juergbiand they conflict in my case. i want the cross compiler to 'win' because the other one would only work via qemu-user07:58
juergbii.e., the cross compiler is C in your previous example. the target native compiler is B07:58
juergbican also get more concrete with packages, might be easier07:59
juergbivalac should probably runtime-depend on (target-native) gcc07:59
tristanin practice this doesnt happen because the cross compiler will be sysrooted to something like /tools07:59
juergbinot in this case07:59
juergbii use the same prefix to avoid path issues08:00
juergbithe elements that are cross-built don't know that they are using a cross compiler08:00
tristanwhich is explicitly used, while the cross built native one goes in /usr08:00
tristanbut that doesnt invalidate what you're saying08:00
tristanSo say, cross built glibc runtime depends on cross built gcc for parts of the runtime08:02
tristanand you need to link everything against cross built glibc08:02
tristanso you always need both compilers in the runtime08:02
tristanjuergbi, correct ?08:03
juergbithe original cross compiler gcc already cross compiles libgcc and co08:03
juergbithey can directly be used08:03
tristana lot of text came at once...08:03
juergbiyes, it was just meant to be an example use case. we don't have to discuss the details of the cross environment, but we can ;)08:05
tristanSo, I in that specific case, I want both to win, and I want to probably error out if cross/native are overlapping08:05
tristanbecause I need both to be staged in different places, the cross compiler for build tooling, the cross built for linking the runtime lib bits from it08:06
juergbiyou never need two compilers staged at the same time, no08:06
juergbiroughly you first build the cross compiler with your bootstrap native compiler and after that you build everything with the cross compiler and don't need the bootstrap compiler anymore08:07
juergbi(and the target native compiler is not needed at all)08:07
tristanwell, unless you need libgcc.a08:08
tristanto link the cross built libstdc++08:08
juergbithe details with libgcc are a bit tricky but you still never need two compilers staged as dependencies08:09
juergbithe way i do it is08:09
tristanyou probably also need it to cross build glibc, cause glibc will want to have intimate knowledge of the compiler; cause it's on crack08:09
juergbibuild minimal cross-gcc with (cross-built) libgcc.a. that's with 'host' compiler as dependency08:10
juergbi(libgcc.a will be built using the cross compiler in the same tree)08:10
juergbithen build glibc using the minimal cross-gcc in /usr. no host compiler needed08:11
tristanI'll clarify that the reason why I'm talking about this case, is because afaics, the safe/clean way to do it is to sysroot the compilers in different places and never overlap08:11
juergbithen build full cross-gcc. again using the host compiler as dependency08:11
juergbiduring the two gcc builds, i use a mini-sysroot for cross-binutils08:12
juergbiand for the second gcc build also a mini target sysroot that just contains glibc (+ kernel headers)08:12
juergbihowever, outside the gcc build, no sysroot is required for completely clean build without overlaps08:12
juergbiand that's good because many packages can't properly handle cross compilation via sysroot08:13
juergbieven though autotools does support it properly08:13
tristanoutside of gcc build, you are hopefully using an explicit cross toolchain sysrooted into /tools08:13
juergbino, it's in /usr then08:13
tristanwhere you have setup your cross toolchain08:13
tristani.e. the cross toolchain that you can run08:13
tristanwhile cross building the rest of the runtime (busybox or coreutils)08:14
juergbino, i always put it in /usr08:14
tristanI argue that you should not08:14
tristanI know that you *can*08:14
juergbiwith my method i don't have to deal with cross compilation issues08:14
juergbipackages think they're being compiled natively08:14
tristanOr, at least configured with --prog-prefix="aarch64-"08:14
juergbiit's installed as /usr/bin/gcc08:15
juergbi(and aarch64-linux-gnu-gcc but that's not strictly needed)08:15
tristanNot strictly needed, but safer and cleaner is what I'm getting at08:15
juergbii disagree08:16
juergbiin contrast to baserock and co. i don't need to adjust any gcc specs, linker/include paths etc.08:16
juergbithat's a source of a lot of issues in cross compilation environment08:16
tristanI would rather mimic the process that would happen on a single system where you did steps one by one on the same filesys08:16
juergbiand i never need to stage two compilers at the same time08:16
tristanthan come up with some way to swap things along the way08:17
juergbirelocation can be painful08:17
tristanIt doesnt really need relocation, though08:17
juergbii don't see an issue with my approach. it's very clean. i don't see why i'd want to change it08:18
tristanWhere is this approach ?08:18
tristandoes it exist ?08:18
juergbijust a local test for now but it works08:18
juergbii still use a slightly modified buildstream but not heavily08:18
tristanOk well, I'm certainly not in favor of that approach08:19
tristanSo lets talk instead about what in buildstream is blocking you from doing your own thing08:19
tristanAnd if there is really a rational reason to change things for the sake of this, and what would be the more elegant thing to change to allow you to do that08:20
juergbii think it would actually build with the existing staging order in bst master. but with more complex dependency trees, it could cause issues in the future08:21
juergbi(i.e., i don't have any conflicts in my current build)08:21
tristanFirst, I think that being able to reorder staging such that what is deeper comes out on top would be bad08:21
tristani.e. you have B depends on C but want C on top when A depends on B and C; weird08:22
juergbiwell, B only build-time depends on C, not run-time08:22
tristanRather, it would be better to explicitly drop something and not stage at all ?08:22
tristanBack in YBD days, I wanted a "replace" semantic08:23
juergbiyes, something like that could be interesting08:24
tristanI.e. so that something like coreutils, or a stack with it's direct dependencies; could replace busybox08:24
tristanI think we have solved that in other ways; but maybe not ?08:24
tristanI *thought* we did with build only dependencies; but maybe it's more work to setup those dependency chains than needed ?08:25
juergbinot sure what you're referring to08:26
tristanBeing able to build busybox and use it "up to a point" and then stop staging it once we've built its replacements08:26
tristanis something I wanted to solve with build-only dependencies08:27
juergbii think i would be happy if i could explicitly specify which out of two elements would be staged if both end up in dependencies(Scope.BUILD)08:27
tristanor I wanted that to be solved by build-only dependencies08:27
tristanbut, maybe there is an argument to implement replace semantics instead ?08:27
juergbiyou mean by manually specifying busybox as build dependency for coreutils and co?08:28
tristanBasically yeah; I would have the runtime and the busybox "stacks" separate at the lowest level08:29
tristanAnd when building coreutils and fileutils and friends, I would build-only depend on the minimal tooling, which is separate from the runtime08:30
tristanIn a stack which builds those tools08:30
tristanHigher than that; I'd just depend on the "core" stack which built coreutils/fileutils/etc08:30
tristanand busybox goes away08:30
juergbiyes, this is certainly possible08:30
juergbirequires some manual effort but works08:31
juergbiit doesn't solve the cross compiler case, though08:31
juergbiwhere you actually want to keep it around for the whole build of the target system08:31
tristanRight, that was kind of the idea; I'm trying to see if there is commonality I can find08:31
tristanwoosh, the *whole build* ?08:32
juergbiyes, i want to build everything on x86-6408:32
juergbiso i want to use the cross compiler08:32
tristanOk, well we never said you werent allowed to do it08:32
tristanbut it's sort of a goal to not do that08:32
juergbithis works without having to patch packages for cross compilation08:33
juergbifor me that's a win-win08:33
tristanSo, to add to the whole thing you were talking about before... you are *also* experimenting with qemu-user ?08:33
juergbiyes, it's great :)08:34
tristanok, I really need a big, complete picture to be helpful08:34
tristanit sounds great yes08:34
tristanI dont particularly like the idea of restructuring dependencies; we should find another way08:35
tristan(or I think so for now)08:35
juergbiok, so the basic idea is to select a few tools that behave identically whether they run on x86-64 or AArch6408:35
tristanIt would be more ideal to not stage what you dont want staged at all08:36
tristanjuergbi, no no...08:36
tristanjuergbi, hahahaha08:36
juergbihm?08:36
tristanI rather think that this is the kind of thing I will open in my inbox and try to really let it soak in with my first coffee of the day08:37
juergbiah ;)08:37
tristanWell, okay shoot if you like; I'm curious08:37
tristanbut I dont expect to really "get it" in a quick irc exchange08:37
juergbibasic tools from coreutils and co. behave the same on different architectures08:38
tristanthis sounds like understanding how aboriginal works, for a completely different aboriginal :)08:38
juergbiand a cross compiler also generally works the same as a native compiler for the same target with the same configuration08:38
juergbiso what i do is to compile these tools statically08:38
juergbion x86-6408:38
juergbiand place them at the normal locations, i.e., in /usr08:38
juergbithe rest of the system is from the target08:39
juergbiand then thanks to qemu-user the whole sandbox behaves the same as if it was running natively on aarch64 with native tools08:39
juergbibut the compiler a few other tools run much faster08:40
juergbi*and08:40
tristanI have to admit I'm uncertain how qemu-user really works, is it going to know all by itself what needs to be run under which arch ?08:40
juergbithat's the linux binfmt-misc magic08:41
juergbiyou can register ELF aarch64 to be run via qemu-user08:41
juergbi(unfortunately requires root on the host)08:41
tristanAh08:41
juergbiand then aarch64 ELF will work in addition to x86-64 ELF08:41
juergbiall libraries in the sandbox will be for the target system. same for headers. no possibility for confusion08:42
tristanSo you can just put aarch64, i386 and mips binaries all over the place and things will still work08:42
juergbiyes08:42
tristansuper crazy :)08:42
tristanright, and *programs*08:42
tristanbut yeah I get it08:43
juergbiand except for the selected tools where i know that they are safe, everything is built as aarch6408:43
juergbiso i don't have a constant risk with new packages or anything like that08:43
tristanSo you will want to select replacements for things during a build08:43
tristaninstead of running the native compiler under qemu-user, you want to stage the cross one08:43
juergbiright08:44
juergbii use the cross compiler as the main devel build dependency, so normally that is all fine without extra features08:44
tristanjuergbi, note that only now, with a bit more context, can I really think that using a cross compiler in /usr is anything close to a sane idea08:44
tristanthis is all part of your bigger picture08:45
juergbiyes, sure, it definitely needed context08:45
tristanheh08:45
tristanso, this is something you will want to repeat beyond the compiler, too08:45
tristanthe more you do this, the better your build will be08:45
tristanor *faster*08:46
tristanis more accurate08:46
tristanyou will soon want to stage host perl instead of target perl08:46
juergbino, i won't do that08:46
tristanperl and the shell are the bottlenecks to configure scripts, though08:46
juergbii currently do it for gcc, binutils, make, {core,diff,find}utils, gawk, grep, m4, patch, sed, tar08:47
juergbiand bash08:47
juergbiyes, perl is indeed slow in the sandbox08:47
tristanRight08:47
juergbihowever, perl supports loadable modules, so it's not safe for this case08:47
juergbiand in the big picture, this approach is still very fast08:47
juergbiand perl is not used that much anymore, especially if you don't autoreconf everything08:48
tristanBut I mean, if you want to take your experiment and mainline a feature in BuildStream for it, even if *you* wont do this with perl, someone else will try to08:48
juergbithat's definitely possible, yes08:48
tristanAnd what I mean by this mostly is; what we do in BuildStream should probably make staging work for what people wanna do08:48
juergbii think this could be a very solid cross build story, though08:49
tristanit sounds promising :)08:49
tristansome admin config before running build sessions as a regular user I think is not horrible08:50
juergbii think on debian there is even a package for it that registers it08:51
juergbiand systemd has /etc/binfmt.d/ for this08:51
tristanI think it's needed anyway for sandboxing on some platforms (I think AIX had something like "jails" which need some admin stuff to be done first)08:51
juergbii should definitely be faster than the qemu-system and distcc approach08:52
tristanso that's not really a concern to me08:52
tristandefinitely08:52
tristanplus you get the linker, you can't reasonably do `distld`08:52
juergbiright, linker and shell probably help quite a bit08:53
juergbiand you don't have the distcc overhead. also, qemu-system is slower because the kernel is emulated as well08:53
juergbialthough you could probably use the distcc approach also with qemu-user08:54
juergbii use junctions to support bootstrap (imported binaries), stage1 (building up-to-date native host toolchain), stage2 (building cross compiler), and then the final target system08:55
juergbithe latter three are all the same repo, just different options08:56
juergbii'll try to get something semi-clean out of it soon, so i can push it08:57
*** tm has joined #buildstream09:02
tristanjuergbi, sounds exciting09:06
tristanI think we should find out what platforms we could potentially do this on09:06
tristanor if it's really only linux specific09:07
tristanand what feature we could have09:07
juergbiqemu-user has bsd support, not sure which bsd09:07
juergbii don't think it supports anything else09:07
tristansomething I've been thinking about too, is that maybe stacks can help in some way, they are currently quite feature-free09:08
tristanbut I've been thinking sometimes that it would be helpful to infer things about the direct dependencies explicitly listed in a stack09:09
tristanit may not be helpful for this; not sure09:09
juergbihm, not sure09:09
tristanwhen you depend on a stack, you actually mean to depend on all of it's dependencies09:10
juergbione aspect that seems to be an issue for many approaches is that if you compose an element that runtime-depends on a native compiler, you normally want the native compiler, and not replace it with the cross one09:10
tristanwhich is an opportunity to express something as a batch09:10
gitlab-br-botbuildstream: merge request (juerg/sandbox->master: Sandbox improvements) #288 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/28809:50
gitlab-br-botbuildstream: merge request (juerg/die-with-parent->master: sandbox/_sandboxbwrap.py: Use --die-with-parent) #278 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/27810:11
*** tm has quit IRC10:19
gitlab-br-botbuildstream: issue #271 ("Assert minimum version of bwrap on host") changed state ("opened") https://gitlab.com/BuildStream/buildstream/issues/27110:45
juergbitristan: not sure about the artifact version bump10:49
juergbimerging without bumping the version would still improve things. the question is whether we want to consider existing artifacts potentially contaminated because we didn't isolate it before10:50
gitlab-br-botbuildstream: merge request (project-shell-customize->master: Allow customization of shell environment, and set custom prompt in PS1) #287 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/28710:50
juergbipolicy decision, up to you :)10:50
tristanyeah, I'm not sure either10:50
*** tm has joined #buildstream10:51
tristanI think the question is: If something was not guaranteed constant before and now is guaranteed constant; does that constitute a version bump10:51
juergbiin general i'd say yes10:52
juergbinot sure whether we want to be strict in this case. i assume we'll have artifact version bumps in the not so far future10:52
juergbiwhile the hostname can influence bit-for-bit reproducibility, i don't expect any real issues10:52
juergbiand SysV IPC was unlikely a real issue in builds so far10:53
tristanTrue, it's a tradeoff of documenting things vs imposing rebuilds10:53
juergbiif we anyway fix this https://gitlab.com/BuildStream/buildstream/issues/266 i guess it doesn't matter10:54
juergbibut let's avoid bumping it too frequently10:54
tristanThat does not constitute a core artifact version bump, though10:55
juergbiright, that's only compose10:55
tristani.e. 266, is strictly related to the compose element and how it is buggy in generating a key10:55
tristanyeah, so that's what I've been thinking; I definitely want an artifact version bump for this change10:56
tristanBut as you say, it's relatively minor and not nice to impose rebuilds just for this10:56
tristanSo the thing is "I'm not in a hurry"10:56
tristanI'd be happy to know that one will eventually come, in advance of next stable10:57
tristanwhich is a long while10:57
juergbiyes, i expect it to be likely that we'll anyway need one before then10:57
tristanOkay, lets not do it10:57
tristanit's not a good time to require everything to rebuild; and the change mostly adds security where there was not before10:58
juergbiyes,10:58
juergbilet's merge this, then10:59
juergbitristan: apropos small bwrap sandbox patches, does https://gitlab.com/BuildStream/buildstream/merge_requests/278 look fine now as well?10:59
gitlab-br-botbuildstream: merge request (juerg/sandbox->master: Sandbox improvements) #288 changed state ("merged"): https://gitlab.com/BuildStream/buildstream/merge_requests/28810:59
tristanjuergbi, yup thats good to go, please rebase and merge :)11:02
juergbita11:02
* tristan broke his own test in a way he doesnt understand11:03
gitlab-br-botbuildstream: merge request (juerg/die-with-parent->master: sandbox/_sandboxbwrap.py: Use --die-with-parent) #278 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/27811:03
juergbibtw: i quite like the 'replaces' idea. should be pretty straight forward. the question would be whether it's sufficiently useful in general to add it upstream11:06
juergbii'll probably push a MR for this at some point11:06
tristanyeah I dont think we'll get the right solution in a hurry11:07
juergbiyes, we better think about this further11:08
juergbibut i might try it out with my test project to get some experience11:08
tristanSo I have 2 tests, one passes and the other fails11:08
tristanBut the two tests are exactly identical11:08
juergbialso have to write a .bst generator for my distro so i can try building the whole world ;)11:09
juergbiSchrödinger's test?11:09
tristanI dont really get it, am I constructing the argv array wrong ? adding two lists together ?11:09
tristanjuergbi, wanna take a quick look here: https://gitlab.com/BuildStream/buildstream/blob/project-shell-customize/tests/integration/shell.py#L58 ?11:10
tristanthere is this execute_shell() helper, which is used everywhere else; using it here makes it break11:10
tristanbut.... it looks like it's doing the same thing either way11:10
juergbihow does it break?11:10
tristanProgram output was:11:11
tristan${ANIMAL}11:11
juergbitristan: in the upper test you return before the asserts11:11
juergbiso you never check them11:11
tristanoops, looks like something got lost in translation11:11
tristanOk I'll have to work on this :-S11:12
tristanjuergbi, thanks for the fresh eyes !11:12
juergbinp11:12
tristanmine are a bit foggy from too many soju bottles last night hehe11:12
juergbitristan: btw: maybe we should go with environment-inherit instead of inherit-environment11:12
juergbifor consistency with environment-nocache11:12
juergbihaha11:12
tristanjuergbi, yeah good idea, and will be nicer if we ever added constant settings in there (if the user wants something to be a specific value, only in shells)11:13
gitlab-br-botbuildstream: merge request (juerg/die-with-parent->master: sandbox/_sandboxbwrap.py: Use --die-with-parent) #278 changed state ("merged"): https://gitlab.com/BuildStream/buildstream/merge_requests/27811:15
tristanjuergbi, I think you saw it wrong :-/11:24
tristanoohhh no11:24
juergbiwhat?11:24
tristanyou saw it right :)11:24
tristanhahahaha11:24
tristanreturn cli.blblblblb11:24
juergbiah11:24
tristanI think it's because I'm only invoking echo, not the shell11:24
juergbiah, yes, the shell takes care of variable replacement11:27
juergbino shell, no replacement11:27
juergbitristan: do we support a way to completely replace/overwrite a dict? e.g., if i want to be in charge of environment variables, how can i make sure i don't get any from the default project config?11:30
tristanWe dont11:32
juergbii don't even know whether we can unset env. variables individually. setting to empty string is not always the same11:32
juergbii think we should11:32
tristanjuergbi, current situation is that defaults are not allowed to change in stable series11:32
tristanI was considering some directive to delete keys11:33
tristanwhen implementing the list manipulation directives11:33
juergbiok, that makes sense  but is still not quite good enough, imo11:33
juergbisyntax is always tricky, of course11:33
tristanNo, as a completely separate activity; I was thinking we may want a way to export/import defaults for a given project to be able to reuse at a later date with a new version of buildstream11:34
tristannot sure I recall why that sentence started with "No"11:34
juergbithat could definitely be helpful11:34
tristanbut also; that activity was inline with an initiative for longer term stability of cache keys11:34
juergbifor myself i'd rather want the ability to start with a clean slate dict-wise11:35
tristanwhich we concluded was low priority enough to not be in immediate project scope11:35
juergbiyes, sure, it's not urgent, i just noticed it11:35
tristanyeah11:35
juergbimaybe we could also support (=): for dicts? or would this cause syntax issues?11:35
tristanMaybe we can11:35
tristansounds reasonable11:36
juergbii'll file an issue11:36
tristanThe only issue I can think of off the top of my head is, if you really want a key that is '(=)'11:36
tristanwhich seems unlikely; but is not a problem at all for lists11:36
tristanwell, actually maybe it's the same problem for lists11:37
tristanthose directives are just not allowed heh11:37
tristanas keys11:37
juergbiright, we should probably simply reserve those11:37
juergbianother thing that i'm missing is support for staging dependencies at particular paths as part of regular build elements. i can work around it with helper elements but it's a bit odd11:38
juergbinothing terribly critical11:39
*** tristan has quit IRC11:44
gitlab-br-botbuildstream: issue #272 ("Support overwriting complete dict") changed state ("opened") https://gitlab.com/BuildStream/buildstream/issues/27211:46
*** ssssam[m] has joined #buildstream13:04
*** valentind has joined #buildstream13:18
*** tristan has joined #buildstream13:53
*** tristan has left #buildstream13:53
*** tristan has joined #buildstream13:53
gitlab-br-botbuildstream: merge request (project-shell-customize->master: Allow customization of shell environment, and set custom prompt in PS1) #287 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/28714:09
gitlab-br-botbuildstream: merge request (project-shell-customize->master: Allow customization of shell environment, and set custom prompt in PS1) #287 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/28714:13
gitlab-br-botbuildstream: issue #264 ("The build environment should set C.UTF-8 by default") changed state ("closed") https://gitlab.com/BuildStream/buildstream/issues/26414:16
gitlab-br-botbuildstream: merge request (project-shell-customize->master: Allow customization of shell environment, and set custom prompt in PS1) #287 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/28714:24
gitlab-br-botbuildstream: merge request (project-shell-customize->master: Allow customization of shell environment, and set custom prompt in PS1) #287 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/28714:26
gitlab-br-botbuildstream: issue #273 ("Cache keys not printed correctly with workspaced elements") changed state ("opened") https://gitlab.com/BuildStream/buildstream/issues/27315:10
gitlab-br-botbuildstream: merge request (project-shell-customize->master: Allow customization of shell environment, and set custom prompt in PS1) #287 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/28715:16
gitlab-br-botbuildstream: issue #231 ("Bash completion broken inside bst shell") changed state ("closed") https://gitlab.com/BuildStream/buildstream/issues/23115:18
gitlab-br-botbuildstream: merge request (project-shell-customize->master: Allow customization of shell environment, and set custom prompt in PS1) #287 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/28715:20
gitlab-br-botbuildstream: merge request (project-shell-customize->master: Allow customization of shell environment, and set custom prompt in PS1) #287 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/28715:34
gitlab-br-botbuildstream: merge request (project-shell-customize->master: Allow customization of shell environment, and set custom prompt in PS1) #287 changed state ("merged"): https://gitlab.com/BuildStream/buildstream/merge_requests/28715:45
juergbihm, it's suddenly very slow to load the pipeline. don't see any changes that look relevant17:21
juergbitristan: what's your stance on per-element options? there are some sources that i want to build twice with same ref and mostly same config and depends17:31
juergbione reason is bootstrapping. for one there is gcc, but other packages exist with dependency cycles (e.g., systemd/LVM2, pkg-config/glib)17:33
juergbiand then there is a whole set of packages that can be built as python2 or python317:33
juergbimaybe i should use a subproject for python packages, have a project option for python2 vs. python3 and then two junctions into the that subproject17:34
juergbiunrelated note, name: would have been nicer than filename: for depends. but i guess we don't want to add an alias for this now...17:35
tristanI think per element options and building the same element twice is two different subjects17:37
tristanI dont see what we dont support about per-element options right now, an option can be declared for use by a specific element17:38
tristanAnd building same element twice... well that requires a lot of thought/work17:39
tristanI should also note, in the very early iterations of the parser; I had `include` semantics17:39
juergbii was thinking of the possibility of specifying options on the dependency but i'm not sure whether it's really worth it17:40
tristanwhich might suffice for the purposes you describe, i.e. composite the dict loaded from this file "right here"17:40
juergbii was thinking about include as well recently17:40
juergbiit would require creating three .bst files for a source that is built twice but would avoid duplication17:40
juergbion the other hand, tracking might be tricky17:41
tristaninclude is fairly easy to do; I think even if the include has a source; `bst track` will "just work"17:41
juergbiit might be a bit confusing if you try to track both elements at the same time17:41
tristantrack re-dumps the toplevel node to the file which it was loaded from17:41
juergbiok17:42
tristanwhich is not related to any assumption of a specific .bst file17:42
juergbifor gcc i currently have a separate gcc-source.bst and that works pretty well17:42
tristanbut yeah; track both elements with same source, is weird17:42
tristanyou might do it twice17:42
juergbibut i have the large gcc depends and config duplicated, which i don't like17:43
juergbiso include would definitely help for gcc for me17:43
juergbifor python packages it seems a bit cumbersome, though, with 3 files each17:43
tristanif you want to install a python package for both python2 and python3... then maybe enhancements to the distutils element would be more convenient17:44
juergbiwell but i might also not want to pull in python2 for no reason17:45
juergbifor reverse dependencies17:45
tristanI'm not saying make the distutils element do that by default, or force it to happen17:45
tristanjust saying it's a feature which could be offered by the element17:46
juergbii meant even for packages that i want to build for both17:46
juergbii might not want to have the reverse dependency pull in python217:46
juergbimaybe should just wait for python2 to die ;)17:47
tristanIf you want to install a python2 package, you probably want to depend on python217:47
juergbiyes, but the same python package might have reverse dependencies that support python3 but also some that need python217:47
juergbiif i don't install the reverse dependency that needs python2, i don't want to pull in python2 at all17:47
tristanIt depends what you're going to build17:48
tristanYou have options17:48
tristanI.e. `--option foo value`17:48
tristanyou have ways17:48
juergbiyes, if i don't need python2 in the whole project config17:48
juergbifor a typical full system setup this doesn't help17:49
tristanI mean, if you're writing a project; you know the outputs you want to generate17:49
juergbianyway, it's not a huge concern right now, was just wondering17:49
tristanIf you have one target that needs it, and another that doesnt, it's possible to author something which does what you want17:49
juergbiif the output is a distro with selectable packages, it's a bit trickier17:49
tristanWe did a run down the implicit element demands something of another element path before17:50
tristanand broke some teeth on the wall we smashed our face on17:50
juergbihehe17:50
juergbiyes, that's not what i'm after17:50
juergbijunctions should actually work pretty well for this17:51
juergbiput all python packages in a separate subproject and then use junction: python3.bst or python2.bst from outside that project17:51
*** Prince781 has joined #buildstream17:51
juergbiand internally you have the python version-independent dependencies17:51
juergbithe junction coalescing could get into the way as i also have the different bootstrap stages17:52
juergbiwondering whether we should allow some more flexibility with junction handling17:52
juergbithere could even be a generic bst project with generated .bst files from pypi for pure python packages? not sure17:53
tristanI'm... not all here btw, gonna sleep soon last night was toooo much and need to recover :)18:04
juergbisleep well :)18:07
gitlab-br-botbuildstream: merge request (remove-absent-manifest-files->master: MANIFEST.in: remove files that are no longer in this repo) #289 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/28918:27
jjardon[m]hi19:04
jjardon[m]https://gitlab.gnome.org/GNOME/gnome-build-meta/-/jobs/942919:04
jjardon[m]when the support for the new shell: syntax was introduced? our pipeline is failing even after trying to use current bst master19:05
juergbihm, it works locally19:07
juergbiRequirement already satisfied: buildstream in /usr/local/lib/python3.6/site-packages19:09
juergbijjardon[m]: is it possible that it's using some previously installed buildstream? i'm not familiar with that CI setup19:10
juergbimaybe we need to update the buildstream docker images19:10
juergbihowever, it seems the local buildstream pip3 install in gnome-build-meta is useless if it anyway only uses the one from the docker image19:11
jjardon[m]yup, it works locally as well; CI problem sorry for the noise19:12
jjardon[m]ah, that can be it19:12
*** tm has quit IRC19:16
*** cs_shadow has joined #buildstream19:47
*** Prince781 has quit IRC19:56
*** Prince781 has joined #buildstream20:11
*** Prince781 has quit IRC20:18
*** Prince781 has joined #buildstream20:44
*** xjuan has joined #buildstream21:03
*** tristan has quit IRC21:06
*** cs_shadow has quit IRC22:43
*** valentind has quit IRC23:30
*** Prince781 has quit IRC23:33

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