IRC logs for #buildstream for Tuesday, 2020-05-26

*** aminbegood has joined #buildstream03:29
*** aminbegood has quit IRC03:38
*** tristan has quit IRC03:40
*** aminbegood has joined #buildstream03:50
*** aminbegood has quit IRC03:55
*** mohan43u has joined #buildstream04:58
*** mohan43u has quit IRC05:24
*** tristan has joined #buildstream06:04
*** ChanServ sets mode: +o tristan06:04
*** benschubert has joined #buildstream07:43
*** thinkl33t has joined #buildstream07:52
*** cphang has joined #buildstream07:55
*** phildawson has joined #buildstream07:56
tristanhi benschubert, any thoughts on !1937 ?08:08
benschuberttristan: hey, currently looking at 1935. do you want 1937 first?08:09
*** jude has joined #buildstream08:11
tristanbenschubert, nah, 1937 is a smaller one08:20
benschubertok! I'll look at it afterwards08:20
tristanlanding 1935 will be good to get out of the way :)08:21
*** tpollard has joined #buildstream08:38
benschuberttristan: for 1937, this seems like a breaking change from BST1 no? Would be great to always get those through the ML I think, at least for record tracking. Other than that I am not 100% sure, the 'target' to me was the thing you were pointing to, which was clear. 'Link' speaks less to me, but I can do with it too08:38
*** santi has joined #buildstream08:38
tristanbenschubert, :-S08:42
tristanAny other suggestions ? I really liked "inherit", that was clearest to me08:43
tristanTarget is something that you smash with whatever you're throwing at it (i.e. replacing the target junction configuration with this one)08:43
benschubertThat's one way of seeing target. For me it's more the think you point to to answer.08:44
benschubertI like `inherit` too actually, or `use` maybe if we want something shorte08:44
tristanI'm not picky about length, I do find target confusing08:44
tristanbenschubert, I'm in the middle of yet-another-list-post, reviving old mummies to walk among us again08:45
benschubertyeah I think `inherit` would be better then. Might want to ping cs-shadow once he's in though :)08:45
benschubertouch, which one?08:45
tristanartifact cache configurations08:45
tristanbenschubert, see:  https://irclogs.baserock.org/buildstream/%23buildstream.2020-05-25.log.html#t2020-05-25T07:58:2308:46
tristanAnyway08:46
tristanDon't want to distract with that08:46
tristanI was gonna say, I could raise the issue of 'inherit' for 1937 on the list after finishing this mail08:46
tristanit'll be easier to write08:46
* tristan tries to catch cs-shadow on list or issue comments since he doesn't seem to be around IRC much these days08:47
tristanmaybe focused on doing things :)08:47
benschuberttristan: I'll ping him but yesterday was a day off here :)08:49
*** phildawson_ has joined #buildstream09:07
*** phildawson has quit IRC09:07
WSalmonbenschubert, give me a ping if i can help with https://gitlab.com/BuildStream/buildstream/-/issues/1310 its a pretty massive blocker for anyone trying to work with bst-master, its even hurting my ability to evaluate other MR's10:35
benschubertWSalmon: how can I reproduce? take bst master and build which element? I don't want to have to build everything10:42
benschubertif you have a link to the failed build, please add it also10:43
WSalmonbenschubert, components/libffi.bst10:43
WSalmonbst-master + bst-plugins-experimental-master, seem to brake all the FD branches like this, i have eg willsalmon/bst2-buildorder which i linked in the ticket10:49
tristanbenschubert, fwiw I've revived the mummies10:57
tristanIt's a real can of worms10:57
tristanand thanks for the review !10:58
tristanI'll be needing more thoughts on "allowing duplicate junctions" (https://mail.gnome.org/archives/buildstream-list/2020-May/msg00017.html), I think we've got a collection of ideas and we'll need to choose a winner10:59
*** sudip has joined #buildstream10:59
tristanI like "internal junctions", "whitelisting conflicting junctions" (would need both with that approach), or the new "allow renaming projects"11:00
tprestontristan: regarding your reply to WSalmon's email here, I think you are interpreting the problem correctly https://mail.gnome.org/archives/buildstream-list/2020-May/msg00016.html11:00
tristantpreston, Great :D11:01
tristanIt's actually hard to know :)11:01
tprestonbut I'm still trying to parse your answer (and the links you provided) - I'm new to BuildStream!11:01
tristanAhhhh yes, there is a lot of context packed in there11:01
tprestonI'm going to outline a concrete example and then try to see if I can find an answer in it all :p11:02
tristantpreston, Basically I'm proposing 2 things, one of them was proposed a long time ago and was fairly popular11:02
tristantpreston, can I try to communicate it to you here actually ?11:03
tprestongo ahead11:03
tristanOk so, let me first try to explain how we arrived at the idea of a third plugin type11:04
tristantpreston, as you probably understand, BuildStream's data model is a build graph composed of Elements related by dependency (which in turn "own" Sources)11:04
tristanThis is intended to be very simple, so that elements just do permutations of filesystem data11:05
tristanNow it happened on a few occasions, that we saw proposals adding more and more features to the Element class11:05
tristanNotably the testing proposal11:05
tristantpreston, This was kind of counter design, adding more and more functionality to Element fails to leverage fine grained elements, making everything exponentially more complex11:06
tristanBasically, what I think was driving this was the fact that people think of Elements as if they were .bst files11:07
tristanAnd people want convenience11:07
tprestonjust to clarify, what do you mean an Element "owns" a Source?11:07
tristantpreston, I mean that the lifecycle of a Source object is tied to an Element basically, the Element creates them11:07
tristanmore than that, the Element does not share it with anyone, Elements cannot *refer* to Sources belonging to another Element11:08
tprestonok11:09
tristantpreston, Ok so... that's not really the most relevant part of this; the more relevant thing is that people want to achieve a lot with a little (of course)11:09
tristanSo approaches to a problem which involve "Lets create a simple element and encourage this configuration of elements" were not very popular11:09
tristanEven though... thats sort of what BuildStream is meant to do11:10
tristanGive you a lot of simple elements which do little things, and allow you to express anything with that11:10
tristantpreston, it became pretty clear I think, we needed a way for people to express multiple elements, more conveniently, in YAML11:10
tristanSo I had a first basic idea which is linked in that email... but juergbi had a better idea, which was to invent a third kind of plugin which would allow customization of how groups of elements were expressed11:11
WSalmon<tristan> more than that, the Element does not share it with anyone, Elements cannot *refer* to Sources belonging to another Element <- but the source dose not know which element asked for it and as far as i can tell the bst can see when a uni sorce is used twice and dose not need to invoke it if its used in mulitple places11:11
tristanWSalmon, that second part is a side effect of how caching works as I understand11:12
tristanBug number 5 https://gitlab.com/BuildStream/buildstream/-/issues/511:13
tprestontristan: I can't visualise this 'So approaches to a problem which involve "Lets create a simple element and encourage this configuration of elements" were not very popular'11:13
tristanheh, still open, but not hugely bad11:13
tprestonHave you got examples of simple elements and that kind of configuration?11:13
tristantpreston, ok so, Chandan wanted to implement "testing of elements"11:13
tristantpreston, for one example (there were others I can recall, not specifically right now)11:14
tristantpreston, So the thing about testing, like running `make check` for instance...11:14
tristantpreston, is that I think ultimately, you don't want to block reverse dependency builds on the completion of `make check`11:14
tristanThat's quite suboptimal11:14
tristanInstead you want to model your data so that you have another element which tests while reverse dependencies of the element currently under test, are also building11:15
tristantpreston, right now there are still some issues blocking such an approach from happening, notably sharing of build trees needs to be something a testing element can depend on11:16
tristantpreston, But as you can see, that would require writing multiple .bst files11:16
tristanand people like the idea of "One module one bst file", especially if you have a larger project11:16
tprestonhang on, what's a "reverse dependency build" and why would it block on `make check` - wouldn't the element just build, get cached and then it can be used?11:16
tristantpreston, say you build glib and then build GTK+, but you want to run `make check` for glib11:17
tristanGTK+ is a reverse dependency build of glib (because it depends on glib)11:17
tristantpreston, Now today, if you simply ran `make check` in your autotools or meson element at the end, GTK+ could not start building until glib was exhaustively tested11:18
tprestonok, so you're saying you want to run `make check` after the build - sometime later?11:18
tprestonok got that11:18
tristanright, what a waste of time :)11:18
tristanhehe11:18
tristanBut you still want something to signify that glib was validated11:18
tristanit need not be the presence of the built artifact, though11:18
tpreston... hang on11:18
tprestonwhat if the tests fail11:18
tristanthen you have a built glib artifact11:19
tristanand failed test artifact for that same build11:19
tristanAt some point of your process, you'll want to stop the train because of that failure of course11:19
tprestonAnd GTK+ is half-way through building? On a failing glib?11:19
tristanSure11:19
tprestonOk so it's like a pipeline11:19
tprestonpre-emptive pipeline I mean11:19
tristanthat is exactly what we call it yes :)11:19
tpreston:p11:19
tristanI was trying to avoid introducing another term :)11:20
tprestonhaha np, thanks for taking it slow11:20
tristanSo, with the idea of a plugin which allows the expression of multiple elements with a single .bst file, we could do a lot11:20
tristanWe could have special purpose plugins like this which users can write11:20
tristanWhich define implied dependency relationships between the elements declared11:21
tristanand parse their own YAML11:21
tristantpreston, like little programs of bst elements which build on other existing element plugins11:22
tristantpreston, with this approach, you might have something like a plugin which lets you define a bunch of dependencies to deploy, some parameters specifying options in what the image should be11:22
tristantpreston, and it could internally expand to a cluster of elements which includes a compose element and a filesystem image creating element11:23
tristantpreston, following me so far ?11:23
tprestonI think so. To reword: the idea is to create a more complex plugin type, which allows expressing dependencies.11:24
tprestonCan this not be achieved with the current plugins11:24
tpreston?11:24
tprestonOr includes?11:25
tpollardI think that's the description of the current deployment script elements11:25
tristantpreston, I hope it would not be *that* more complex, but yeah basically, it would be a plugin type which "assembles element clusters"11:25
tristanIt has the responsibility of parsing a format and integrating with the loader11:25
tristanin such a way that a hand full of elements can be expressed with a single file, with a special purpose11:25
tprestontristan: parsing a YAML format and intergrating with the bst loader, you mean?11:26
tristantpollard, right I'm using that as an example; not sure *which* deployment scripts you mean but it's generally the process we use in fdsdk11:26
tpollardformalising script elements into plugins is something I'd prefer for this11:27
tristantpreston, Ummm, I think I lost the trail here...11:27
tristantpollard, Right but, what if you also wanted to include the compose step11:28
tprestontristan: sorry I don't know what you mean by format and loader in this statement "It has the responsibility of parsing a format and integrating with the loader"11:29
tristantpollard, it's all basically the same domain, wouldn't it be cool if you had one bst file which (A) Implicitly depended on the tools it needs for deployment... (B) Indicated which dependencies needed to be deployed, including split rules, and (C) Expressed things like partition sizes etc11:29
* tristan is now juggling two conversations with two staggeringly similar nicks ;-)11:29
tristantpreston, sorry I think I'm referring to something too internal11:30
benschubertOr in another direction: having a single bst file that gives you: a library that oyu can consume in BuildStream, a 'deb/rpm' file for it, and a test target to make sure it works, without having to have 3-4 elements there :)11:30
tpollardtristan: yes it would11:31
tristantpreston, Basically I mean it's a plugin, so it's just a python file... it has Plugin.configure() and that is given a YAML node, just like other plugins11:31
tristantpreston, Then... it would "do something" which would result in creating elements, which might or might not be related to eachother implicitly by dependency11:32
tristantpreston, And the output of that plugin would be the instantiation of these elements basically11:32
tristanThe BuildStream core would need to define an API contract for correctly interacting with this thing11:32
tristani.e. being able to depend on it's elements11:32
tristanor some of them in some way11:33
tristanRight, such a thing would allow modularity and reusability of constructs of multiple elements11:33
tristanwhich would satisfy a wide (unlimited ?) variety of use cases11:33
tristantpollard, of course my email brings in *another* concept along with the older (hmmm, maybe "composite plugin" I could call that idea ?)11:35
tristanerr, tpreston, or both11:35
tpreston:p11:35
tristanWhich is the idea that a plugin could be "bound to a project", such that it had an intimate relation with that project11:35
tristanAnd could implicitly depend on the tooling used to deploy an image, with the certainty that that element exists, and provides what is needed by the scripts used11:36
tprestontristan: I know you're thinking abstract, but I'm trying to think how this solves our problem of sharing element construction between similar projects. Is it almost like an element factory?11:39
tprestonFrom my limited perspective, an example problem we have is "There is one way to create an sdcard.img for a Raspberry Pi" and we want to allow projects to just grab the sdcard-image.bst element off-the-shelf, or customise it to some degree (different rootfs-size, format)11:41
tprestonSo your proposing some kind of plugin which "generates" this kind of element, for your project?11:41
tprestonI have a prototype which does this using includes:11:43
tprestongeneral raspberry pi image: https://gitlab.com/celduin/bsps/bst-boardsupport/-/blob/master/include/board/raspberrypi/image.bst11:43
tprestonspecific raspberry pi image (for a sample project) https://gitlab.com/celduin/bsps/bst-boardsupport/-/blob/master/sample/rpi4-features/elements/deploy/image.bst11:44
tprestonI guess I don't grok why this is "wrong" yet11:45
tristantemplating is another approach which I haven't given much thought to, I feel like that road should have some way to give parameters to the (@) include semantic11:46
tprestonI've done that in the form of YAML variable overrides11:46
tristantpreston, i.e. as WSalmon already pointed out on the list, you are going to need to presume how this project decided to junction you (i.e. junction name)11:47
tristanAlso it only gets you as far as one element at a time11:47
tristantpreston, I mean, includes were not really made with templating/macros in mind, and I do feel that this road will lead to things which don't report errors super easy to understand by users11:48
*** hasebastian has joined #buildstream11:49
tristanI still find it surprising that the loader was changed to process some of the directives in advance of parsing the dependency dictionaries11:50
tristanI wonder what this implies, I think that an element cannot really rely on it's YAML until it's been fully composited11:51
tristanIt may have opened up a whole class of errors we're not seeing yet11:52
tprestontristan: What *is* the way to express templating? Plugins I guess.11:54
tristanEssentially yes, those are the things being reused11:55
tristanCurrently only at a one-element-at-a-time basis11:55
tristantpreston, this might be interesting: https://docs.buildstream.build/master/arch_data_model.html#element-composition11:56
tristantpreston, note that the files like this: https://gitlab.com/BuildStream/buildstream/-/blob/master/src/buildstream/plugins/elements/autotools.yaml are basically what is "Element defaults" in that picture11:57
tristanAnd that those default yaml files for elements are not specific to BuildElements11:57
tristanAny element can provide such a "template", which undergoes the regular process of composition11:58
tristanWith the element declaration (the .bst file) having the final say11:58
WSalmonyes, plugins are the best way to reuse understanding and reduce the amount that needs to be in a element but the question i am trying to ask is when thats not good enough, when you need to reuse more than what a plugin allows for then includes allow you to share/reuse more than what a plugin allows for11:58
tristanthe https://gitlab.com/BuildStream/bst-plugins-experimental/-/blob/master/src/bst_plugins_experimental/elements/x86image.yaml implementation for example, did not have a lot of work go into it11:59
tristanit's not immensely reusable or smart and could be improved a great deal I think11:59
tristanWSalmon, right, and you are also pointing out some of the drawbacks of that, and I can see that "Right now" it may be something you can do12:00
tristanWSalmon, it's not really very bullet proof, so I'm suggesting revisiting the idea of composite plugins which could get you much further12:01
tprestontristan: how do you envision the composite plugin improving, say x86image.yaml?12:03
tristantpreston, in the way I described today (possibly too vaguely) :)12:04
tristantpreston, I mean if you look at a project that uses x86image, you will see that (A) You need to build the tools which x86image requires in the / sysroot... (B) You need to write your compose element separately to decide what your main filesystem will be composed of... (C) You need to roll your initramfs separately with other elements, (D) You need to define the dependency relations of all of these12:05
tristantpreston, but instead, you could have an element which (A) Already knows the element which provides the tools x86image needs (granted the additional "bound to a project" feature) ... (B) Internally uses a compose element... (C) Internally defines how to deploy your provided /init script or such for the initramfs... (D) Implicitly ties these elements together with dependency relationships12:07
tristantpreston, So you could have one bst file which is read by a "composite plugin" (look it's already got a name ;-)) with some sane defaults, give it some parameters and declare that whole construct in one go12:08
tpreston(sorry just in a meeting, brb)12:13
* tristan has to split at this point...12:26
*** tristan has quit IRC12:29
*** toscalix has joined #buildstream12:38
benschubertWSalmon: can you point me to where `infodir` is defined? I could not find it. I think it is a bug where we are not reporting an unknown variable correctly12:51
benschubertWSalmon: ah nevermind found it it's in the projects' default in buildstream13:02
benschubertAny reasons to not break the cache keys with https://gitlab.com/BuildStream/buildstream/-/blob/master/src/buildstream/buildelement.py#L148 ? Seems like an easy cleanup if not13:38
*** santi has quit IRC13:41
*** santi has joined #buildstream13:41
benschubertWSalmon: ok the problem is wiht 'integration-commands' which are part of the 'public data' and not part of the element config, this part is apparently _not_ expanded. I'll have to write a test for this and fix it13:50
benschubertI wonder if htere are other places where this is not done now :/13:50
*** tristan has joined #buildstream13:51
benschuberttristan: > Any reasons to not break the cache keys with https://gitlab.com/BuildStream/buildstream/-/blob/master/src/buildstream/buildelement.py#L148 ? Seems like an easy cleanup if not14:05
WSalmonbenschubert, thanks for looking in to this, i have been in meetings a lot of this after noon14:05
*** ChanServ sets mode: +o tristan14:06
tristanbenschubert, juergbi asked me the same thing the other week I believe14:06
tristanor maybe it's the second time ?14:06
tristananyway yeah, lets clean that up14:06
juergbiyes, that was me14:06
juergbiwhen we do that we should make sure to change get_unique_key() such that it skips unused command lists14:07
juergbithat way if we add new command groups in the future we won't break anything14:07
benschubertjuergbi: yep seems good. Thanks both!14:07
*** hasebastian has quit IRC14:09
douglaswinshipnewb question: filter elements and compose elements are the only kinds of plugin that respond to domains and split rules, right? (In terms of the basic plugin types, i mean). I know that manual elements can _apply_ split rules to their own artifacts, but I'm talking about recognizing and responding in some way based on the domains of the files in their dependencies.  So for instance, I can't14:28
douglaswinshipwrite a script element, and then tell it to perform a certain operation on all the files in a particular domain?14:28
tristandouglaswinship, you can write a script element with the tools you need staged at /, and stage the output of a compose element into the %{install-root}, do your thing on those files and be done14:30
douglaswinshipRight, but i do need to go via a compose element first?14:31
douglaswinshipThat's what i was double-checking.14:32
tristanTheres a bunch of ways you know, and it of course depends on what you want to do14:32
tristanHowever, it's recommended that you use tools in the sandbox and not modify content directly using python in Element.assemble()14:33
tristankind of breaks determinism14:33
tristannote that split rules are a first class citizen, they are inherently understood by Element.stage_dependencies()14:33
tristanSo any element you write can potentially stage pre-split artifacts14:34
douglaswinshipTbh, the details are going over my head here. I'm still not at all familiar with internals like Element.assemble() and Element.stage_dependencies(). But I think you're confirming what I was trying to ask. The basic plugins like script and manual elements, can't discriminate the files in their dependencies based on domains (at least not directly). But, assuming I have an appropriate use case, I14:42
douglaswinshipcan write a new plugin that does.14:42
tristanpretty much14:43
coldtomthat's the gist douglaswinship14:43
tristandouglaswinship, we try to provide stock elements that are simple, such that you can combine them and achieve mostly whatever you need14:43
tristanWith BuildStream 2 and the way CAS and staging works with buildbox, I am under the impression that the overhead of going through compose | script is fairly low14:44
tristanI think real paths are not manipulated on disk with compose except for when running integration commands with bst2... if I'm not mistaken14:45
tristanjust the virtual directory API is mostly used to manipulate paths and define the resulting artifact14:45
douglaswinshiptristan: yup, it's not a big overhead at all. I was just talking with someone who didn't (initially) realise that you needed even that small overhead, and it made me want to double check i'd understood it correctly.14:46
tristanwith bst1 it is a bit heavy14:46
tristanoh I mean overhead in terms of processing and I/O14:46
WSalmontristan, we have a element, bob.bst, and then we need some domains in alpha.bst and some in beta.bst, douglaswinship is asking if, without a custom plugin, you can avoid having, bob-a.bst and bob-b.bst were bob-*.bst is a compose with filter element, the cost in turms of build is low but there is a cost of humans maintaining elements14:46
tristanI think in bst1, you need to stage the whole thing14:46
tristanand it really goes into a directory14:46
tristanWSalmon, sounds like yet another interesting usage for a hypothetical composite kind of plugin, simple constructs like this could let people build their own compose-and-script thingies :)14:47
douglaswinshipcoldtom: thanks for the one-line answer btw. That was exactly what I was looking for. :D14:50
WSalmona script element can not be used here as you cant AFAIK filer on the output of our existing elements not the input14:53
WSalmon* for our existing plugins14:54
tprestontristan:15:20
tprestonwhoops15:20
tprestonone second15:21
tprestontristan: sorry for the delay, I got caught up in meetings and lunch. I sort of understand the need for a composite plugin but I don't really understand problems with the first list you described about x86image. As you said just above the point is to have many small and simple elements we can compose larger ones from - so a composite element kinds of goes against that.15:24
tprestonWSalmon: maybe you have a clearer view of the problem that this solves? You've spent more time with this than me15:24
tprestonThe problem I'm seeing at the minute is sharing A. common element behaviour (eg. building linux), B. common element data (raspberry pi linux kernel all have the same sources) and C. specific element data (raspberry pi 3 model b uses bcm2711_defconfig, some device tree overlay, $foo firmware and $bar config.txt)15:28
tprestonI think the right solution for A is a new plugin (a "linux" plugin)15:29
tprestonMaybe includes *are* the right solution for B?15:30
WSalmontpreston, i think tristan is trying to say that plugins are the best way to share element "code/internal" and i agree with that, I think tristan is also saying that long turm we can make bst better at that, and i agree there too. but were i have tried to say that for now we can take advantage of includes to solve some other issues, tristan has said that thats not how he envisaged it working. but he is not saying oh this should never work, more15:32
WSalmonthat its quite fragile. i may be miss reading the situation15:32
WSalmoni think that for our use case we may need to use includes to achive what we want for now while also reducing our use as upstream gives use more syntactic suger along the way.15:33
WSalmoni dont like to put works in some ones mouth but some times trying to rephrase what you think some one said can highlight differences of understanding15:36
tprestonMy take on it is that "plugins are the right way to share /behaviour/" and if the current plugins don't support your complex use-case, then we need more plugins! :D15:37
tprestonBut I don't really grok the nature of that complex use-case15:37
WSalmonthat gose some of the way, linux for instance falls in that camp but bst puts some constraints on plugins that mean we can only go so far15:38
tprestonWhat I grok is: libreML (for example), want to add support for Raspberry Pi, and it needs someway to consume - from another BuildStream project - /behaviour/ for that target platform (linux plugin, u boot plugin, sdcard-image plugin?) and /data/ (Raspberry Pi 3 defconfig, etc)15:39
WSalmona element-template/plugin can not know what project it came from with public API and this can make dependencies a bit tricky15:39
WSalmonalso plugins cant say please depend on these and then let my dependencies be expanded after that15:40
tprestonSpecifically how it makes dependencies tricky is what I'm trying to understand15:41
WSalmonwe agree these features would help reduce the amount that needed templating, but i would still argue that including would be useful for other projects to use elements15:42
WSalmonwe agree these features would help reduce the amount that needed templating, but i would still argue that including would be useful for other projects to use "reuse-elements" <- i need a better way to express this15:42
WSalmon* minimise the amount that a upstream project needs to recreate in its own project to use script like elements15:43
tprestonJust "use"? As I understand it, junctions just increase the "bag-o-elements" you have access too. And it's really about constructing an element pipeline from that big ol' bag15:43
*** toscalix has quit IRC15:43
tprestonSo increasing "re-usability" is about creating generic "behaviour" (plugins) and consumable data (bst files)15:45
WSalmontpreston, right but the issue is when the artifact of those elements isnt quite right and you need a new artifact that's instructions are almost identiacal, how do we share the instruction or "element"15:45
tpollardfork or patch the element definition15:46
* tpollard runs15:46
tprestonYou make a plugin15:46
tprestoneg. how do we share almost identical autotools instructions?15:46
WSalmonyou cant say i want to use those exact instructions "element" but with a slightly diffrent dependency15:46
WSalmonthats what a include lets you do15:47
tprestonSo for autotools, the behaviour is specified in the plugin, then we change the dependency list for the exact implementation for this element15:47
WSalmoni want to include the instructions but i need to supply a extra dependency15:47
tpreston(I'm speculating, someone please correct me if I'm wrong)15:47
tprestonWSalmon: Hm, I'm trying to think of an example for your dependency case15:49
WSalmontpreston, but the bst model so far has been to have a auto tools project and then 100 elements that use that, we could have 100 plugins and then 100 elements that have a 1:1 relation ship, but as plugins cant inherit from each other the "core" auto tools bits would be repleted in every single plugin15:49
WSalmonby saying that this can all be solve with plugins i think tristan is just moving the maintenance task rather than reducing it.15:52
benschuberttpollard: I don't think your answer is so bad. If you have a coherent project that is given to you but you don't like it, adding patches is often an easy way to tweak it, and widely used15:52
WSalmonbenschubert, right, but as some one how has had to maintain such patches over the long term i have had my fingers burnt. the also dont solve the issue of script like elements that you want to depend on element in your project15:53
WSalmonScript elements can be used to take existing elements and tweak them, the act of tweaking may want to be defined once and shared via a junction but the element subject to the tweak may come from the project containing the junction.15:55
WSalmon^ to quote me on the mailing list15:55
juergbihttps://gitlab.com/BuildStream/buildstream-docker-images/-/merge_requests/169 is needed for https://gitlab.com/BuildStream/buildstream/-/merge_requests/1918 (field-based node properties), however, the former breaks incremental workspace builds until the latter is merged16:01
juergbiany objections to force merging the former. the pipeline in the latter (already using the new docker images) is green16:02
benschubertjuergbi: fine by me16:03
juergbidone16:09
*** cs-shadow has joined #buildstream16:11
cs-shadowjuergbi: hi, I didn't manage to write it in time :) but please see https://gitlab.com/BuildStream/buildstream-docker-images/-/merge_requests/169#note_34943305616:14
juergbics-shadow: yep, replied16:15
juergbias long as we merge !1918 soon enough, there shouldn't be any real issues16:15
juergbiafaict16:15
cs-shadowjuergbi: thanks! that makes sense. Just wanted to make sure, seems all good now16:15
juergbita16:16
*** santi has quit IRC17:13
*** santi has joined #buildstream17:13
tristanWSalmon, I think your paraphrasing is just about accurate yes. I also think that making BuildStream better at supporting more complex constructs in this way is an already discussed and widely accepted idea (in other words, should someone decide to pick that work up, it would certainly be a welcome contribution)17:14
tristancertainly, if a group of developers were trying to prototype an ideal solution to this sort of thing with buildstream, I'd recommend exploring that avenue17:14
*** cs-shadow has quit IRC17:15
tprestonok, I think that answers our questions for now17:19
tprestonthanks tristan, really appreciate your input17:19
*** cs-shadow has joined #buildstream17:20
*** tpollard has quit IRC17:43
*** santi has quit IRC18:07
*** santi has joined #buildstream18:08
*** santi has quit IRC18:11
*** cs-shadow has quit IRC18:41
*** santi has joined #buildstream19:01
*** cs-shadow has joined #buildstream19:52
*** benschubert has quit IRC20:08
*** jude has quit IRC21:12
*** cs-shadow has quit IRC22:01
*** sudip has quit IRC22:56
*** cphang has quit IRC22:58

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