IRC logs for #buildstream for Thursday, 2018-05-10

*** slaf has quit IRC00:25
albfan[m]tristan, just need to remove the type:build from autotools test!04:13
albfan[m]and build meanwhile workspace is open. haha I changed the hello world project based on flatpak runtimes04:58
paulsherwoodalbfan[m]: can you publish that somewhere? i'd like to try it :-)05:01
*** bochecha_ has quit IRC05:26
*** bochecha_ has joined #buildstream05:26
*** bochecha_ has quit IRC05:31
albfan[m]https://gitlab.gnome.org/albfan/buildstream-flatpak-autools06:20
albfan[m]paulsherwood: just pushed it06:20
albfan[m]I have to talk with tristan to see how we can add more examples (meson, cmake, whatever) and move around on runtimes (I dig with ostree into sdk.gnome.org with still to new for me to get it all)06:22
*** tristan has joined #buildstream06:41
paulsherwoodalbfan[m]: cool, thanks!06:52
albfan[m]paulsherwood: feedback welcome! (even examples request)07:00
albfan[m]most obvious is that use a local source is not buildstream aligned, PR with a git source would be accepted!07:01
paulsherwoodalbfan[m]: probably needs a link to builstream install, in case user doesn't have it07:08
paulsherwoodperhaps needs a licence in the repo07:08
albfan[m]paulsherwood: See credits on README. But yes all should be extra clear, MR?07:09
albfan[m]Licence, you are right!07:09
paulsherwoodalbfan[m]: ack07:18
*** bochecha_ has joined #buildstream07:29
tristanjust caught the backlog on the handy logger...07:44
tristanalbfan[m], so I'd really like to start adding examples, the problem is that I need to establish precedent on an examples section such that examples are consistent (readability wise), that the information on those pages is not too redundant, and that they are reliable (which means: I'd like to literal include the bst fragments from a directory, and at least run `bst build` on them in CI)07:47
*** bochecha_ has quit IRC07:47
*** dominic has joined #buildstream07:54
tristanalbfan[m], also note your repo still does the mistake we were doing back then, it imports the runtime twice redundantly07:58
gitlab-br-botbuildstream: merge request (issue-21_Caching_build_trees->master: WIP: Issue 21 caching build trees) #372 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/37208:04
*** toscalix has joined #buildstream08:07
tristanalbfan[m], https://gitlab.gnome.org/albfan/buildstream-flatpak-autools/merge_requests/108:14
tristanalbfan[m], that fixes it, to only stage the SDK, and just setup some symlinks for usr merge08:14
*** bethw has joined #buildstream08:27
*** aday has joined #buildstream08:36
*** jonathanmaw has joined #buildstream08:45
albfan[m]tristan: Merged. I will remove the files/src/src extra dir. If you find time to write down how you want to build those examples (one repo, many repos) and how to document it (I can deal with sphinx syntax)08:50
albfan[m]I have some ideas a platform runtime and a binary tar, etc...08:51
tristanalbfan[m], I want it *in buildstream* actually, I have headaches from the days of everyone making their own tutorials on different websites and bitrotting over the years, I dont want to repeat that mistake :)08:54
albfan[m]tristan: cool. maybe an examples under https://gitlab.com/BuildStream/buildstream/tree/master/doc?08:55
tristanalbfan[m], for this specific example, I suppose it will use a specific ref from sdk.gnome.org, but for most examples I want to standardize on the alpine image we use for testing, and then change that image atomically for a freedesktop-sdk built base08:56
albfan[m]sure, the idea is to show how to interact with ostree, more than any other runtime08:56
tristanalbfan[m], So an example I guess has 3 components; the example rst file... an examples directory with the project demonstrating the example, and a CI integration test ensuring it does what we're saying it does08:57
tristanI guess that the ${name}.bst, should correspond to examples/${name} directory and probably an entry in tests/integration/${name}.py08:58
albfan[m]ok, working on it08:59
tristanin order to display nice yaml fragments in rst, we can use this trick which we repeat a lot: https://gitlab.com/BuildStream/buildstream/blob/master/doc/source/projectconf.rst#L79809:00
tristanalbfan[m], probably yes we want an examples subdirectory in doc/source, so examples would be doc/source/examples/${name}.rst09:00
*** tiago has joined #buildstream09:02
tristanalbfan[m], we had a "master plan" but lacked time to really work on it, for now adding an initial cleanly done example is a good start, we may chop it up later to avoid redundancy... i.e. we're thinking of having a "Getting started" section which comes before examples, and shows the simplest possible project, and moves on to building something on a real runtime, getting the user familiar with how to interpret and use variables in build elements,09:03
tristanso that they can make use of the reference material later09:03
tristanalbfan[m], so we're hoping to keep this "Getting started" part minimal, add examples of "how to do specific things", and make the examples link to eachother rather than exhaustively redundantly explaining things09:03
tristanbut I think this "Build an autotools element on a flatpak SDK" example is a great start09:04
tristanjuergbi, valentind: Unfortunately, it seems that the version parsing is really working fine... I am seeing 0.1.7 and no --die-with-parent on debian 8, and 0.20 with --die-with-parent on fedora 27, and 0.21 with --die-with-parent on debian 9, in all cases the function resolves correctly09:09
juergbitristan: on which system(s) did the issue occur?09:10
tristandifferent ones09:10
tristanI'm sure I've seen it fail on fedora, and at least one of the debians09:10
juergbihm, so bwrap is used exactly the same way, no idea what's happening, then09:11
tristanit might not be related to that patch, it's just that I saw it first on one of the pipelines for that MR09:12
gitlab-br-botbuildstream: merge request (valentindavid/update_mirror->master: WIP: update mirror) #440 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/44009:18
gitlab-br-botbuildstream: merge request (valentindavid/359_cross_junction_elements->master: Allow names for cross junction elements) #454 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/45409:18
albfan[m]tristan: ack09:20
tristanalbfan[m], thanks for looking at this !09:21
*** tristan has quit IRC09:33
albfan[m]tristan: my pleasure, buildstream deserves it09:51
awacheuxHi! I'm currently working on the SourceTransform plugin feature. To implement it, I'm deriving the Source class to extend its behavior. However, I couldn't figure out a way to access the other Source plugin of a build element from the one of the Source plugin. This is required to stage the previous sources before tracking the SourceTransform. Is there a way to access those other Source plugins from one source plugin?09:54
awacheuxActually, I've implemented a `_is_source_transform()` method and I change the behavior of `Element._track` based on whether the source we are tracking is a `SourceTransform`. I'm not satisfied with this solution as it doesn't look neat to me.09:56
toscalixdo we want to organise a bst workshop or similar during GUADEC?10:05
toscalixif so, has there been contacts with the GUADEC content committee already?10:05
gitlab-br-botbuildstream: merge request (juerg/no-remote-summaries->master: Drop use of OSTree summary files and dynamically plan build dependencies) #446 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/44610:29
*** tiago has quit IRC10:42
*** tiago has joined #buildstream10:42
*** tiago has quit IRC10:43
*** tiago has joined #buildstream10:43
*** tiago has quit IRC10:48
gitlab-br-botbuildstream: merge request (214-filter-workspacing->master: Make workspace commands on a filter element transparently pass through to their build-dependency) #317 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/31710:52
gitlab-br-botbuildstream: merge request (juerg/no-remote-summaries->master: WIP: Drop use of OSTree summary files and dynamically plan build dependencies) #446 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/44610:57
*** tristan has joined #buildstream11:21
tristantoscalix, First they will select the talks, the schedule is supposed to be final today actually11:23
tristantoscalix, then, normally they will open up a wiki page for BoFs11:23
tristanonce it opens up, we need to reserve a free spot11:23
toscalixok11:24
tristanawacheux, For SourceTransform, the core certainly needs to provide help here, the semantics for tracking will be different for a SourceTransform as I understand11:24
tristanawacheux, for the check you mention, I think in this case isinstance(plugin, SourceTransform) would be fine11:24
tristantoscalix, actually I sent them an email today because I dont have access to the mailbox I normally use, I will have to sort that out next month I think in Canada11:26
tristanSo I hope I didnt miss a window, but I sent them an email anyway saying that if they are waiting for some email confirmation from me, please let me know via this email address11:26
*** aday has quit IRC11:31
*** aday has joined #buildstream11:32
gitlab-br-botbuildstream: merge request (tristan/etag-mr-fixup->master: buildstream/plugins/sources/_downloadablefilesource.py: Store etag along with cache.) #458 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/45811:36
gitlab-br-botbuildstream: merge request (valentindavid/etag->master: Store etag along with cache.) #441 changed state ("closed"): https://gitlab.com/BuildStream/buildstream/merge_requests/44111:38
juergbioh, does anyone know why is Python list += horribly broken?11:41
juergbiit mutates the list and thus does not do the same thing as foo = foo + b11:41
juergbiincredibly unexpected11:42
tristanWhoa, I didnt know that no11:42
jmacNever noticed, I always use .extend() or .append()11:44
tristanI usually use that if I want mutation, and expect that other operations wont mutate indeed11:45
tristanalthough I am preferring comprehensions11:45
tristanit happened again, on debian 9: https://gitlab.com/BuildStream/buildstream/-/jobs/6752233011:49
tristanwhere --die-with-parent is most certainly used11:49
tristanI am thinking of reverting that patch11:49
tristanI will make a branch with it reverted and run CI on it many times11:50
*** bochecha_ has joined #buildstream11:52
*** zilbermanka has joined #buildstream11:57
*** zalipka has quit IRC11:59
gitlab-br-botbuildstream: issue #377 ("Change how `etag` is stored for file download source plugins") changed state ("closed") https://gitlab.com/BuildStream/buildstream/issues/37712:03
gitlab-br-botbuildstream: merge request (tristan/etag-mr-fixup->master: buildstream/plugins/sources/_downloadablefilesource.py: Store etag along with cache.) #458 changed state ("merged"): https://gitlab.com/BuildStream/buildstream/merge_requests/45812:03
*** tiago has joined #buildstream12:08
*** bethw has quit IRC12:09
gitlab-br-botbuildstream: merge request (jennis/nest_workspaces_commands->master: Nest workspace commands in ToC) #456 changed state ("closed"): https://gitlab.com/BuildStream/buildstream/merge_requests/45612:11
gitlab-br-botbuildstream: merge request (tristan/workspace-soft-reset->master: Add soft reset functionality for workspaces) #459 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/45912:26
gitlab-br-botbuildstream: merge request (chandan/workspace-soft-reset->master: Add soft reset functionality for workspaces) #457 changed state ("closed"): https://gitlab.com/BuildStream/buildstream/merge_requests/45712:26
*** bethw has joined #buildstream12:32
juergbitristan: we originally decided that in non-strict mode we'll still pull strict artifacts if we already have an artifact in the local cache that only matches with the weak key12:37
juergbihowever, it seems that this isn't properly working at least for a few months given that the planner filters out locally cached elements and thus they will never even enter the pull queue12:37
juergbiand it's causing problems in my no-remote-summaries branch12:38
juergbifurthermore, without summary files, we could avoid a lot of individual pull jobs if we reverted that decision12:38
juergbiso I'm wondering whether we should change the policy12:38
juergbior whether to properly fix it12:39
juergbiit would simplify a few things12:39
juergbi(we would still attempt to download strict artifact before weak artifact but only if we don't even have a weak artifact in the local cache)12:40
gitlab-br-botbuildstream: issue #375 ("Provide a way to run configure-commands again for workspaced elements") changed state ("closed") https://gitlab.com/BuildStream/buildstream/issues/37512:42
gitlab-br-botbuildstream: merge request (tristan/workspace-soft-reset->master: Add soft reset functionality for workspaces) #459 changed state ("merged"): https://gitlab.com/BuildStream/buildstream/merge_requests/45912:42
jmacjuergbi: I've just done a full fetch and build of freedesktop-sdk/bootstrap. In the whole build there were only two uses of a sandbox which didn't run commands and they were 20 seconds out of a 34 minute build.12:53
jmacCould you point me at the places we're likely to use the CAS-backed sandbox?12:53
juergbijmac: e.g. compose and import plugins manipulate the sandbox directory outside of commands12:55
jmacYes, but a compose plugin must run the integration commands of its dependencies12:57
juergbiyes, if there are any12:57
tristanjuergbi, you want to *not* pull artifacts by their non-strict keys ?12:57
tristanoh no12:58
juergbijmac: why are you looking for cases without commands?12:58
tristanyou want to stop pulling the strong artifact if we have a weak one ?12:58
juergbitristan: exactly12:58
tristanjuergbi, that sounds less than desirable doesnt it ?12:58
tristanjuergbi, dont we want to get the closest possible ?12:58
jmacjuergbi: Because we can't use the CAS-backed virtual directory implementation if the sandbox needs to run commands12:58
juergbitristan: I'm not sure12:58
juergbitristan: in general, yes, this would be desirable12:59
tristanso, that's why we did that, right ?12:59
tristanI mean, it still makes sense to me12:59
jmacI don't know why import jobs don't show up in my logs, I'll have to check that12:59
juergbitristan: yes, however, performance of small incremental builds take a big hit12:59
juergbiespecially without summary files12:59
juergbijmac: this is just for testing without FUSE?13:00
jmacjuergbi: It's for the phase before we have the FUSE, yes13:00
tristanjuergbi, without summary files, wouldnt we: A.) Try to pull the strong key... if that fails.. B.) Try to pull a weak one ?13:00
juergbijmac: if you have compose in a project without integration commands, that could work13:00
jmacjuergbi: Right, but I'd like some evidence that it actually helps... I need to find a project in which that's the case13:01
juergbitristan: yes, but it means that we'll pull tons of elements in every session even if nothing changed13:01
tristanjuergbi, and then of course fallback to doing a local build... but isnt that preferable performance wise than building locally ?13:01
juergbior rather, attempt to13:01
juergbitristan: it's not about pulling vs. local build, it's about pulling vs. nothing13:02
juergbiif we already have a weak artifact locally13:02
tristanI think I have to reboot13:02
* tristan will be back in some minutes...13:02
*** tristan has quit IRC13:03
jmacjuergbi: I'll take a look around some other example projects and see what I can find13:03
juergbijmac: not sure whether it makes too much sense to test performance of CAS-backed virtual directories without FUSE13:03
juergbimost time will typically be spent in regular element builds13:03
juergbifor that we'd need to test the combination of CAS-backed virtual directory and FUSE13:03
jmacjuergbi: My point is, once we have FUSE we may as well just use the existing file-based directory system backed onto the FUSE13:04
juergbiah, no, with remote execution at some point we want to avoid the need to have complete artifacts locally13:04
juergbiso we want to be able to manipulate Merkle trees without having the corresponding files present13:04
juergbiwell, it might also be possible with FUSE13:05
juergbidepends on some details13:06
jmacI thought all the Merkle tree data would be local in this implementation13:06
*** xjuan has joined #buildstream13:06
juergbithe Merkle trees themselves will most likely always be local13:06
juergbibut we'd like to not require having all referenced files locally13:06
jmacSo you are manipulating Merkle trees, just through a filesystem-style interface13:07
jmacDoing in a move/copy/link through the FUSE wouldn't need you to have the files13:07
* paulsherwood wishes he had more time to dig into this... it feels like we're making it harder than it needs to be13:07
jmacpaulsherwood: I'm making sure here that it's necessary to do a bit of work. I'd much rather we added less code if possible. But it may be necessary.13:08
paulsherwoodjmac: ack13:09
paulsherwoodi'm probably wrong.. but in the baserock implementation we only cared about git repos... so 'Merkle trees' didn't need to be thought about because we could rely on git for the magic13:10
paulsherwoodi appreciate that here folks are trying to keep working outside git repos, but i do wonder if it's really worth the bother13:11
paulsherwood(and again.. i may be completely confused... but for me... a remote git repo already has all the hashes i would need... i don't need to recover all the files to find them out)13:12
paulsherwoodsorry if this is completely irrelevant again13:12
*** tristan has joined #buildstream13:13
jmacpaulsherwood: If you're on the BuildStream mailing list, juergbi's post called "Proposal for Remote Execution" may be useful for background13:13
tristanannoying, GNOME Shell has a bug where the battery indicator stops working and gets confused - impossible to tell if my plug is properly connected13:14
paulsherwoodi did read it. i didn't understand why we woudl have to copy a tmp dir rather than just move it in place, so assumed it was beyond me13:14
tristanjuergbi, ok so I think I am catching on...13:14
tristanjuergbi, basically you are saying... we keep trying to download a strong one when we have a usable one available, and depending on network, we spend a variable amount of time finding out that a strong one is "still not available remotely"13:15
tristanjuergbi, I have two impressions... first is, why is it taking so long just to find out if there is a ref ? surely this could be done in a single round trip13:16
tristanjuergbi, my second impression is... yeah if we want to change that behavior, then I think we will want two policies13:16
Nexustristan: on https://gitlab.com/BuildStream/buildstream/blob/master/buildstream/_frontend/cli.py#L224      Doesn't track_save need to be in the correct order to be assigned correctly?13:17
tristanjuergbi, i.e. if you run `bst --no-strict build ...`, maybe you want that because network performance might suck beyond regular expectations...13:17
jmacpaulsherwood: I don't know which tmp dir you're referring to there13:17
tristanjuergbi, but what if you are working in non-strict mode, and you explicitly call `bst pull` ? I feel like in that case, you would want to try to get the more accurate strong artifacts no ?13:17
juergbipaulsherwood: this is about the sandbox root (sysroot), not related to git/source trees13:18
tristanNexus, for stylistic purposes, I think I prefer the correct order yes; in python with those decorators technically speaking: not at all13:18
tristanNexus, the decorator knows what arg name it will assign, if you rename "track_save" to "track_pony", then it will cause a runtime error because a "track_save" argument could not be found13:19
juergbitristan: yes, of course, the behavior in non-strict mode is anyway clear13:20
juergbias there are never multiple artifact candidates in that case13:20
juergbiah, you mean pull in non-strict mode, misread that13:20
juergbithat could make sense13:21
juergbiand that's probably the case where it currently works properly13:21
juergbifor bst build it doesn't currently work properly (and hasn't in months, if ever, afaict)13:21
tristanI'm still a bit baffled why the performance seems to be so bad, though13:21
tristanjuergbi, one thing however is certain... we have a semantic problem with "retries"13:21
juergbimaybe the performance is not as much of an issue13:23
juergbiwe don't have persistent HTTP connections at the moment but it should still be just a single HTTP request13:23
tristanjuergbi, I think I failed to file a bug about that, but basically if we have a retrying task, the job currently has no way to inform the core "Does it make sense to retry this job ?", i.e.... I tried to download a file, and I successfully contacted the server, who said the file doesnt exist... or I successfully downloaded the file, and failed because the checksum was incorrect13:23
juergbiso maybe it's ok13:23
tristanlike, if you download a file and assert it's incorrect, please dont go and download it 2 more times, that's silly13:23
juergbihm, I thought we're handling this properly already13:24
juergbidoes not exist => no failure but returns False13:24
juergbiI don't see any retries on non-existing pulls here13:24
tristanOk that is good13:24
tristanI think there is a case where it's not handled well13:24
tristanwill have to find it13:24
juergbiok, so let's keep the policy for now and let's properly fix it. change it later if necessary13:25
juergbithis does mean we need slightly different plans for bst fetch and bst build, though13:25
juergbiassuming we don't want to fetch sources for cached elements13:25
tristanRight, that is an interesting point13:26
juergbior use the same plan but use skip_cached=True for bst fetch -d plan13:26
tristanthe default for `bst fetch` is `--deps plan`13:26
juergbiin FetchQueue13:26
tristanwhich means we would also want to skip downloading sources for elements which are not cached, but never need to be locally cached13:26
tristanjuergbi, so remind me again the rationale for non-recursive Element._get_full_name(), I think it was because we dont want duplicate elements from the same sub-sub projects appearing13:28
juergbiwe'd need some other canonicalization otherwise13:29
tristanjuergbi, right now this is causing headache for addressing of junctioned elements; ideally I think we would want symmetry here13:29
juergbigiven that we coalesce subprojects based on junction name13:29
tristani.e. if I want to open a workspace, or track a junctioned element, that is fine `bst track junction.bst:element.bst`13:29
tristanbut what if I want to track a sub-sub-project element ?13:29
tristantwo different naming schemes would be bad13:30
juergbihm, the issue being that a sub-junction name can't be found because it's not loaded yet?13:31
tristanBasically yeah13:32
juergbiI don't think there is any other option for addressing than specifying the full path13:33
tristanI guess recursively loading *everything* first before any addressing begins is a kinda-sorta option13:34
tristanbut it's heavy duty13:34
juergbiloading all .bst files, that would be a big change13:34
tristanyeah it would, I dont like it13:34
tristanbut also I dont like that addressing an element is different from how it appears, I also dont like that sub-sub-sub-project element names are too big, though13:35
juergbiwe could change the output such that it's recursive in the case that the junction is indeed specific to a particular subproject and not shared13:36
tristanHow is a junction shared ?13:37
* tristan scratches head, not sure he gets how that works13:37
juergbiif you have two junctions with the same name in two different subprojects, they are merged13:37
juergbibuildstream requires that you have a junction with the same name in a common ancestor of these subprojects13:37
tristanAha ! special feature13:38
juergbias that decides which junction config to use13:38
tristanWe have test coverage for this ?13:38
juergbiyes, should be covered13:38
juergbiI think I mentioned a while ago that we might want to make this more configurable, i.e., also allow multiple junctions of the same name without merging but let's ignore that for now13:39
tristan"BuildStream uses the junction element name as key to determine which junctions to merge. It is recommended that the name of a junction is set to the same as the name of the linked project."13:39
tristanhttp://buildstream.gitlab.io/buildstream/elements/junction.html#module-elements.junction13:39
juergbiyep13:39
tristanvalentind, Hmmmm, ok so I've got the story straight - still not sure what is the best thing to *do*13:41
tristanvalentind, the problem is that for sub-sub-project elements, they are encouraged to not be repeated, although contrary to what I thought in the comment, they are not disallowed13:42
tristani.e. it is possible to have two separate junctions which refer to the same project, even at different versions; but the diamond sibling projects which reffer to a common dependency should use the same junction name to avoid mismatches13:42
tristanand the parent project should provide a junction for that sub-sub-project in order to dictate terms, if I understand correctly (i.e. if two sibling projects disagree about which ref to use for the sub-sub project, the parent should decide)13:43
tristanvalentind, so this explains that, there can be multiple paths to qualify the same junction, in fact13:44
juergbiit's enforced even if the refs were identical13:44
tristanOk, so parent *must* provide one to decide, that is preferable, even13:44
tlaterDid we ever show progress updates for fetch operations or is that my imagination?13:48
juergbidepends on the source, iirc13:49
tlaterAh, right, git probably would be a bit hard.13:49
tristantlater, yeah, I've been wanting to remove them for `ostree` for the longest time13:49
tristanthey are A.) obnoxiously a lot of output and B.) completely incorrect anyway (percentage reported by ostree jumps up and down while it discovers more objects it wants to download)13:50
tlaterIMO they would still be nice if they were accurate enough13:50
tristanprogress bars in the status area would be cool, sstriker asked for that at one point13:50
tristanthen it might be worth doing for git as well13:51
tristanand some build systems can even contribute to progress bars, that would be very tricky to implement though (e.g. CMake does, I think meson + ninja does)13:51
tlaterA progress-bar API for plugins! :)13:52
tristantlater, and an implementation in _frontend/status.py yeah13:55
valentindtristan, But the name of the junction not the project is in the path. I do not see how you get a diamond.13:56
valentindtristan, is it possible to give path of junctions to an element that is ambiguous?13:56
tristanvalentind, lets pretend that gnome-build-meta depends on two separate projects, and both of those depend on the bootstrap project13:56
valentindOr from an element, is it possible to have several valid paths?13:56
tristanto refer to elements in the bootstrap project, you can address it via the freedesktop "sdk" project, or the other one13:57
valentindtristan, in my opinion if two sub projects depend on a same project, for buildstream, they should be considered as different.13:57
tristanvalentind, they are absolutely not, that is very intentional13:57
tristanvalentind, and there are good use cases for that to be supported, too; and enforced that they use the same sources13:58
valentindBut if they have different revisions or different options?13:58
valentindHow can you enforce two subsubprojects are actually the same?13:59
tristanvalentind, it is recommended to use the project name as the junction name, and BuildStream is documented to merge them on that junction name13:59
tristanvalentind, even if the parent project does *not* directly use that junction, it must define it, in order to ensure the sub-sub project gets the correct ref/configuration14:00
tristanvalentind, in fact, this is all in the immediate backlog here :)14:00
tristanand documented here: http://buildstream.gitlab.io/buildstream/elements/junction.html#module-elements.junction14:00
tristanthere are cases where you intentionally want a sub-sub project to be separate, but it is usually more desirable to enforce that they are exactly the same, and produce the same artifact14:01
valentindtristan, So is there an error if a conflict is detected?14:02
valentindtristan, The problem here is that for "workspace open", I do not see a way to discover the element unless the top project redefines all the junctions.14:03
valentindtristan, I would have thought that buildstream had enough information to detect which elements are the same and use the same artifacts.14:04
valentindtristan, could we fail, or warn if we detect an subsubproject has no junction at top level? No matter whether there are conflicts or not.14:07
valentindThe documentation says you should do this to solve conflicts. It is not user friendly. Asking the user to fix those in the beginning instead of behaving in a surprising way, would be better.14:08
gitlab-br-botbuildstream: merge request (issue-21_Caching_build_trees->master: WIP: Issue 21 caching build trees) #372 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/37214:13
tristanvalentind, If you happened to define the same sub-sub project elements with exactly the same configuration, they would have the same artifact cache key, and those artifacts would be reused indeed14:15
tristanvalentind, coalescing on junction name is an additional feature to *ensure* that you dont mistakenly have different configurations14:16
tristanstill, the fact that those elements are the same still means we need to display them as the same, there is the uniqueness of the artifact, and there is also the uniqueness of how it is displayed in logs and loaded in the pipeline14:17
tristani.e. we could end up loading two times those elements, which would be undesirable; as such _get_full_name() shows the expected thing14:18
tristanthat doesnt solve the addressing part for loading purposes, but it does explain the *why*14:19
tristanjuergbi, valentind; if we're going to have to have different ways to address and display cross junction elements, I think the bigger question here is how (and where) do we express this in documentation14:22
valentindI think it makes sense to have the input to also use this _get_full_name() given the way it works.14:23
tristanand if we can avoid it, the only solution I can think of is to recursively load everything14:23
tristanvalentind, I agree that that is more desirable14:23
tristanbut finding it is tricky14:23
tristanit means that if there are many junctions, all of those junctions need to be tracked and fetched before any addressing of cross junction elements can occur14:23
valentindWell, if you have not redeclared junctions on top level, you cannot open a workspace on subsub projects.14:24
valentindThat is fine behavior.14:24
tristanAh14:24
tristanI see what you mean14:24
tristanI hadn't thought of it that way14:24
valentindI think I should also limit the parsing.14:24
valentindJust so that everything works the same.14:24
tristanit should14:24
tristanindeed14:25
valentindBut there should be a plan to warn users when we detect subsub projects not declared on top level.14:25
tristanjuergbi, just to be extra clear... *if* you have a junction element of the same name in a parent project, which is used in a sub-project, that junction element overrides the subproject junction, correct ?14:25
tristanjuergbi, i.e. *even if* there are no diamonds ?14:25
juergbiyes14:26
valentindtristan, the thing is that the user might not even know if there is a diamond.14:26
tristanvalentind, I agree14:26
juergbiessentially the top-most version wins14:26
juergbiif there is a conflict, report an error14:26
juergbiconflict as in, there is no single top-most version14:26
tristanvalentind, maybe not a warning14:26
tristanvalentind, maybe we need to rather enhance how we display what was loaded in the heading of a master build log14:27
tristansuch that it is more clear what is the shape of depending projects14:27
valentindAlso you have the case where you update a subproject, and then suddenly there is a diamond that appear.14:28
tristanvalentind, the problem I see with a warning is that, it means something is wrong... and if for example, you are only writing a flatpak, and you depend on a runtime, and that runtime uses subprojects, etc... then basically the topmost project should not have to care14:29
valentindBecause the new version uses a same subsubproject as another subproject.14:29
*** tristan has quit IRC15:00
*** tristan has joined #buildstream15:27
*** noisecell has quit IRC15:30
tristanso far I've run the reverted bwrap version checks a bunch of times without a failure (there were failures but not of that variety, rather typical, expected rebase and failed to get the git ref failures)15:36
tristanand I've seen the spurious failure occur twice (once for each of two other merge requests, which I merged via "Retry")15:37
tristanI'm running three more pipelines on the revert, I know it's not a "real fix", but would rather revert and get it out of the way for now15:38
* tristan will run more pipelines over the night and see tomorrow15:38
tristanlets run a couple on master too and see if the spurious error wants to rear it's ugly head15:38
* jmac pushes his branch again to see if the unexplained errors go away15:41
gitlab-br-botbuildstream: merge request (214-filter-workspacing->master: Make workspace commands on a filter element transparently pass through to their build-dependency) #317 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/31715:45
tristanjmac, right, I havent merged the revert... but you might try a rebase against `tristan/revert-bwrap-checks` if you want to try your code against the revert for now15:48
jmacAh, ok15:49
valentindFor freedesktop-sdk, I would like to be able to depend to elements with a sysroot. When the element's artifact is staged as runtime, nothing change, it goes in /. But when it is staged as build dependency, then I want it to go in the specific directory.15:53
tristanvalentind, not sure exactly what you're after, but staging artifacts at specific locations is doable with `script` element15:54
valentindtristan, script is problematic15:54
tristanvalentind, there is also a base class for more specialized `script` elements15:54
valentindBecause we lose the splits.15:54
valentindSo to keep splits we have to make several images an rebuild it after.15:55
valentindAnd also, I might want to depend only on specific subset of elements, then I have to create a script for that subset.15:55
tristanit's late for me (1am), and I have take-out to eat, this sounds more involved15:56
valentindOr one script per element.15:56
valentindSo (number of elements)*(number of splits) scripts.15:56
tristanThat sounds like what the "filter" element is actually for (subsets of elements)15:56
valentindtristan, we can talk about it tomorrow.15:56
valentindNot urgent.15:56
tristan:)15:57
valentindBon appétit.15:57
tristanSure, can also always use the ML, fwiw I'm more interested in exactly "The practical use case and thing you want to achieve"15:57
valentindOK15:58
gitlab-br-botbuildstream: merge request (valentindavid/359_cross_junction_elements->master: Allow names for cross junction elements) #454 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/45416:03
*** noisecell has joined #buildstream16:24
*** bethw has quit IRC16:37
*** aday has quit IRC16:41
*** aday has joined #buildstream16:41
*** aday has quit IRC16:45
*** dominic has quit IRC16:45
*** finn has quit IRC16:50
gitlab-br-botbuildstream: merge request (135-expire-artifacts-in-local-cache->master: WIP: Resolve "Expire artifacts in local cache") #347 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/34716:56
*** jonathanmaw has quit IRC17:15
*** noisecell has quit IRC17:16
*** aday has joined #buildstream17:21
*** aday has quit IRC17:25
*** toscalix has quit IRC17:32
*** bochecha_ has quit IRC17:58
*** aday has joined #buildstream18:51
*** aday has quit IRC18:55
*** jsgrant has joined #buildstream20:00
*** tristan has quit IRC20:02
*** xjuan has quit IRC20:42
*** xjuan has joined #buildstream21:05
*** xjuan has quit IRC22:07
*** cs_shadow has quit IRC23:01

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