IRC logs for #buildstream for Friday, 2018-05-18

*** tristan has quit IRC00:52
*** jennis has joined #buildstream01:50
*** noisecell has joined #buildstream04:03
*** noisecell has quit IRC04:03
*** noisecell has joined #buildstream04:15
*** noisecell has quit IRC04:18
*** Prince781 has quit IRC04:34
*** bochecha_ has joined #buildstream05:00
*** bochecha_ has quit IRC05:09
*** bochecha_ has joined #buildstream05:25
*** Prince781 has joined #buildstream05:49
*** Prince781 has quit IRC06:54
*** Prince781 has joined #buildstream07:11
*** ernestask has joined #buildstream07:28
*** toscalix has joined #buildstream08:00
toscalixvalentind: I need your help to understand some details about how BuildStream work. Can we have a video chat this morning? It shouldn't be long08:08
toscalixwell, some are not details08:08
toscalixI read the docu and the architechtural document but still....08:08
*** jonathanmaw has joined #buildstream08:15
valentindtoscalix, sure.08:26
valentindjonathanmaw, Sorry I did not answer yesterday. I was not working.08:27
valentindjonathanmaw, I think for the mirrored URI for plugins, we should let the plugin decide it. Maybe just have method Source.get_mirrored_uri(), and then we override it in some places. Would that help?08:40
valentindor more get_mirrored_path.08:41
jonathanmawvalentind: yep, that works for me08:41
valentindWe could even make it a "generator" that does the counting.08:43
valentindSo that we can have the {n} anywhere in the path.08:43
jonathanmawah, a generic function where sources can define their own format string?08:49
valentindWell, either it returns a format string, or it returns a generator that you can iterate.08:56
valentindGenerator as in Python generator.08:56
valentindWith "yield"08:57
*** noisecell has joined #buildstream09:02
jmacToday I'm getting inconsistent results from pylint - either no errors, or 4 import errors, on the same source09:12
tlaterjuergbi: There are ways to do that09:22
tlaterI think it's as simple as including '# pylint: disable=all' at the top of the file or somesuch09:22
* tlater isn't sure about the exact syntax, but our fuse file has the correct header09:23
tlaterjmac: Run in CI? Locally? What source?09:23
juergbiah, that analysis is also done via pylint? the files are already ignored via .pylintrc, though09:23
juergbialso, I don't want to modify the generated files09:23
jmactlater: Locally, just running ./setup.py test --addopts "-m pylint"09:23
tlaterOh, juergbi, were you asking about the checks tristan recently introduced?09:24
juergbijmac: I actually also get one import order issue locally for a few days now. consistently, but I don't see that in CI09:24
tlaterPylint does code quality checks too, they aren't as neat though.09:24
juergbitlater: yes, the 'code quality' check09:24
juergbias per gitlab terminology09:24
tlaterYeah, sorry, not sure about that :/09:25
tlaterjmac: Don't specify -m pylint09:25
tlaterThat is enabled by default, specifying enables scanning files that aren't checked by CI, I think.09:26
tlaterOh, you're running *just* pylint09:26
jmactlater: So how do I run only ... yep09:26
jmacEven if it were scanning extra files, it shouldn't be inconsistent09:26
tlaterNot sure where the inconsistency comes from, but we'll perhaps want a nicer way to specify "just pylint".09:27
*** aday has joined #buildstream09:35
tlaterjmac: For the time being, `pylint --rcfile .pylintrc buildstream` in the main project directory seems to work.09:35
jmacI'll try that09:36
jmacI wonder if the inconsistency comes from directory ordering09:36
* tlater wonders if we should recommend using pylint directly anyway 09:41
tlaterI find the setup.py syntax is more confusing than helpful here09:41
tlaterAlso really easy to forget --addopts09:41
jmacMy default test is 'setup.py test', which I think should be the standard for local testing09:43
tlaterOh, certainly09:43
jmac...and my goal is to run a subset of those tests, and I want them to be as close to how setup.py runs them as possible09:44
tlaterHm, that's a point09:44
tlaterIt's harder to configure sensibly, unfortunately09:44
tlaterIt might be better to add a custom command, instead09:44
tlater'./setup.py lint' for example09:44
jmacThat would be good09:45
*** bethw has joined #buildstream09:52
*** Prince781 has quit IRC10:03
*** mohan43u has quit IRC10:15
jmacRunning `pylint` directly can give very different results to setup.py - on my system, /usr/bin/pylint is a script which uses Python2, and has a completely different version of the pylint library10:16
jmacI've hacked around that but it's a bit of a trap10:16
tlaterRight, I forgot about that... Why can't python3 just be the default for everybody? |:10:17
tlaterWell, certainly just a temporary measure, I'll open up an issue about this10:17
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/34710:31
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/34710:32
tlaterIs the CI server down?10:32
* tlater 's MR complains about not being able to connect :|10:33
jmacWorse, I installed pylint3 while experimenting and now pylint via setup.py reports a tonne of new errors :\10:37
jmactlater: CI seems to be OK now10:41
tlaterYeah, I noticed :)10:41
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/34710: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/34711:03
*** bethw has quit IRC11:33
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/34711:49
*** jennis has quit IRC12:13
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/34712:29
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/34712:35
*** bethw has joined #buildstream12:41
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/34712:43
jmacCan anyone help me with an import issue? element.py has `from . import SandboxFlags`, despite SandboxFlags being part of the 'sandbox' package. When I try to use the same syntax to import from my own new module, it fails - how does that import get resolved?13:17
bochecha_jmac: can you show some details? (file layout and content)13:20
jmacIt's from current buildstream master, but I'll try and paste some examples13:21
tlaterjmac: The SandboxFlags may be imported in __init__.py13:21
tlaterYour new module would have to be in the same module as element.py - I assume it is?13:21
jmacMy new module is called 'storage' and is in the same directory as element.py and sandbox/13:21
jmactlater: I saw the import in buildstream's top-level __init__.py, and duplicated it for 'storage'13:22
jmacDidn't make any difference13:22
tlaterIf you can push a WIP branch it would make debugging a lot easier :)13:23
jmacI can but it's full of other patches13:26
jmachttps://pastebin.com/7TPnU2fy are some of the relevant bits; I'll push a branch later13:27
tlaterImports rely so much on file structure that it's hard to help out without looking at the actual files13:27
tlaterjmac: I'm not being particularly helpful here, but is that break of naming conventions (Directory.py) deliberate?13:28
jmacIt was deliberate as in I meant to do it, but not deliberate as in I expect it to be committed that way13:30
tlaterAlright, just wondering :) The issue can be in the modules inside storage, as well, I can't spot it immediately, sorry |:13:32
jmachttps://gitlab.com/BuildStream/buildstream/commits/jmac/cas_backed_vdir is the branch, but I can't figure out how to get GitLab to show a diff vs master13:34
*** aday has quit IRC13:38
*** aday has joined #buildstream13:40
tlaterHrm, that branch looks like the import should work perfectly fine - simplest way to debug would be to launch an interactive shell and attempt to `import Directory` from various modules, to see where it isn't picked up13:45
jmacok...13:45
jmacI shall try that shortly. Thanks for taking a look.13:46
NexusJust to confirm a theory of mine. Do we determine the current buildstream version by the latest tag?14:01
Nexusi.e. if i run `git tag 9.9` will buildstream think it is version 9.9?14:01
gitlab-br-botbuildstream: merge request (valentindavid/update_mirror->master: WIP: update mirror) #440 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/44014:13
toscalixtlater: I am processing the tasks associated to the Inmediate priority, to be able to erase the milestone. Are you currently working on #188 https://gitlab.com/BuildStream/buildstream/issues/18814:14
*** xjuan has joined #buildstream14:15
toscalixadds68: are you working on #189 https://gitlab.com/BuildStream/buildstream/issues/189 ?14:15
toscalixabderrahim[m]: are you currently working on #316 or is it idle https://gitlab.com/BuildStream/buildstream/issues/316?14:15
adds68toscalix, no i believe jmac was looking into that14:15
toscalixadds68: thanks14:16
tlatertoscalix: I'm not currently working on #188 - I'm not sure when/if I will get to that, either.14:16
toscalixtlater: thanks14:16
toscalixjmac: are you working on #189 https://gitlab.com/BuildStream/buildstream/issues/189 ?14:16
jmacNo, but I can link to the remote exec work now and close that issue14:17
toscalixah, the  issue is not valid anymore?14:18
toscalixthere is another one that substitute this one?14:18
gitlab-br-botbuildstream: issue #189 ("Performance issues with running the artifact cache") changed state ("closed") https://gitlab.com/BuildStream/buildstream/issues/18914:18
jmacYes, it says so in the discussion14:18
toscalixthanks14:18
toscalixjuergbi: are you working on #136 https://gitlab.com/BuildStream/buildstream/issues/136 ?14:21
toscalixabderrahim[m]: it seems there is a MR merged associated to #316 but the ticket is not closed.14:24
abderrahim[m]toscalix: I'm not working on it.14:25
*** aday has quit IRC14:25
abderrahim[m]I just tried to provide enough info.14:26
abderrahim[m]It was closed but I reopened it as I got the error once again14:26
toscalixabderrahim[m]: thanks14:26
abderrahim[m]btw, #383 looks very similar, and the fix there might have fixed #316 as well14:27
toscalixah tlater you are working on https://gitlab.com/BuildStream/buildstream/merge_requests/34714:27
toscalixchecking #38314:27
gitlab-br-botbuildstream: merge request (jennis/136-clean-remote-cache->master: WIP: jennis/136 clean remote cache) #421 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/42114:32
gitlab-br-botbuildstream: merge request (jennis/136-clean-remote-cache->master: WIP: jennis/136 clean remote cache) #421 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/42114:32
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/34714:35
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/34714:35
*** xjuan has quit IRC14:35
tlatertoscalix: Yes indeed - hope to get it finished up soon, too :)14:35
tlaterThough progress has been quite a lot slower than I'd hoped, for lots of reasons.14:35
toscalixah, so when you close  the MR, issue #135 can be closed14:36
gitlab-br-botbuildstream: merge request (jennis/136-expire-remote-cache-artifacts->master: WIP:136 expire remote cache artifacts) #364 changed state ("closed"): https://gitlab.com/BuildStream/buildstream/merge_requests/36414:37
toscalixinmediate priorities milestone closed. All tickets has been moved to the current milestone with priority Urgent.14:40
toscalixhttps://gitlab.com/BuildStream/buildstream/boards?=14:40
tlaterThanks toscalix :)14:41
tlaterThis looks quite pretty too, should help pointing people to low hanging fruite.14:41
tlaters/fruite/fruit/14:41
toscalixI will be pinging most of you in the coming days to try to assign the right severity and status to the tickets you are working on14:41
finnoo very nice14:42
toscalixI will publish the policy but the idea is that those things you consider people should be paying attention to, should be labeleed as Important. Those absolutely relevant are Urgent. Please do not use Critical. This is assigned in extraordinary cases only.14:43
toscalixfinn: this is the status board: https://gitlab.com/BuildStream/buildstream/boards/134373?=14:43
toscalixwhen you move the tickets around, labels change automatically14:44
toscalixthis way we can see who is doing what and the severity of the tasks, so people can pick the most important ones14:44
toscalixright now we have tons of critical stuff. We will need to process them14:45
toscalixcritical is... "leave what you are doing and solve this" kind of situation14:45
tlatertoscalix: I suspect some of those are slightly mislabeled, and should be urgent instead.14:46
toscalixagree, and most of them simply Important, but those who evaluate them should decide14:47
finnOtherwise the project is very much on fire14:47
toscalixyep14:47
* finn prepares the hose14:47
tlaterWell, some of them are certainly still problems we just haven't managed to reproduce ;)14:48
* tlater recalls spending days on 12814:48
tlaterAnd is now running into a *very* similar issue14:48
toscalixI will create an IRC or video chat triage meeting to assign the righ priority to bugs and tasks14:48
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/34714:53
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/34715:03
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/34715:11
*** noisecell has quit IRC15:19
*** tristan has joined #buildstream15:23
tlaterOof, we have about a million workspace tests all of a sudden15:26
* tlater is starting to worry that the test suite is becoming too large to sensibly run during development15:26
tristantlater, it takes a few minutes here, I wouldnt say it's sensible to run the whole thing in edit/compile/test cycles (I'd rather be selective about which tests to run in that scenario), but still very reasonable to run once you're done with your changes before submitting the MR15:28
tlatertristan: It's about 10 minutes on my machine15:29
tristanmaybe around 8 minutes here actually, hopefully could get optimized15:29
tristantlater, exactly, so not good for edit/compile/test, but reasonable before pushing an MR I still think15:29
* tlater might just need to get more efficient in narrowing down which tests he should run.15:30
tristanedit/compile/test should always be `./setup.py test --addopts 'tests/path/to/test'`15:30
tlaterIt's a little harder when you find that there are bugs in the broader scope just before a merge, but yeah, that's more sensible :)15:31
tristanin refactors, you generally need to run them all, but when doing a particular feature, it's usually pretty obvious what to run15:31
tristanDemos[m], I would call the generated debian stuff fairly experimental stages now, it mostly needs more usage to ensure that bases are covered and the public data API (input used to generate debian package metadata) is sane... for RPM, I feel like the problem is a little bit simpler (bias perhaps for my understand RPM packages a bit better than debian), there is this issue open https://gitlab.com/BuildStream/buildstream/issues/17015:39
valentindIt seems that we allow staging with some artifacts making symbolic links to some directories, and other artifacts using those path without symbolic links. I am not sure this is what we want because to me it sounds like depending on the order of staging, you will either get something working or an error.15:40
tristanDemos[m], also contains a link to a prototype which does it, the gist of it being basically A.) Generate a spec with only the parts that define the distribution and runtim dependencies, _not_ the build parts... B.) Run `rpmbuild -bb` to collect the artifact output and create a package with it15:41
tristanvalentind, the order in which dependencies are staged is certainly very meaningful, both in terms of how symlinks work and in terms of overlaps15:42
tristanvalentind, in some cases it is necessary to at least have `type: runtime` dependencies for otherwise orthogonal elements in order to declare the intended staging order15:43
valentindBecause of dependencies, order might actually not be obvious for the user.15:44
tristanvalentind, the question of symbolic links is mostly that, usually only one element is the one which "create" / "provides" it, so you might need to have something that links `/opt/foo -> /usr/local/orgname` staged *first*, before building a ton of stuff that configures into /opt/foo, with the desire of partitioning something else in /usr/local/orgname or suchlike15:45
tristandependencies provide the technique for declaring staging order15:45
tristanif it is not clear to users, it should be made more clear, possibly with helpful examples and such15:46
valentindtristan, OK, but I think we should detect when we get the wrong order and properly give an error message.15:46
valentindWe did get cryptic error with freedesktop SDK.15:47
tristanWe give errors in some symlink edge cases, and we have the overlap errors (which I think could be less verbose and more clear)15:47
valentindNow in freedesktop SDK we try to never mix up symbolic links and directories. Because it is source of issue.15:47
tristanBut we cannot give any error or hint for something which we cannot realistically know what was, or was not intended (we cannot read the project author's mind)15:48
valentindOne thing you can do is make an element that builds all symbolic link and make all depend to it, so that they all use the symbolic links.15:48
tristanthat is recommended for symlinked directories15:49
valentindOh, yes I am talking about sym links to directories.15:49
valentindThe problem of being only recommended is that people will get into issue late, and they will not understand what is happening.15:49
tristanhowever it is almost necessarily not something one should enforce, i.e. you generally have a "something to link to", then you "link to it", and everything else which wants that link "sees the link"15:49
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/34715:50
valentindFor instance, #390. I think this is due to a symlink to directory.15:50
valentindtristan, we have warning on overlap. I think we should have warnings for sym links to directories that are not consistant there as well.15:51
valentindBecause it gives a good information on what 2 artifacts are in conflicts.15:51
tristanvalentind, if you are installing into /opt/foo, which you "think" is supposed to be a symbolic link, but forget to depend on it to ensure it exists, BuildStream has no way of knowing at *that time* that you thought /opt/foo "should be a symlink"15:51
valentindwhich15:51
tristanSo there is nothing to say about that at *that time*15:51
tristanHowever, when you eventually stage the element which creates the /opt/foo link, and it is an already existing directory instead, there is an opportunity to report a sensible warning, which could be optionally an error (like how overlaps are also optionally errors)15:52
valentindtristan, Sure. But when you compose, we should say that one artifact considered /opt/foo as a directory and the other as a symlink15:52
tristanThat might be enhanceable15:52
jjardonhi, using junctions so project A depends on project B; does that mean that project B will use the cache server from project A?15:53
tristanvalentind, if you know where the warning/optional-error is possible to report to make it more helpful, then please document it thoroughly in an issue :)15:53
valentindtristan, OK, I will look at it a bit more and do that.15:53
tristanvalentind, symlinks is the trickiest thing about staging, so thoroughly here is key :)15:54
valentindBut I think it belongs along with overlap warnings.15:54
jjardonIf yes, Is there a way to disable that?15:54
tristanvalentind, it sounds sensible, but it seems to me we might want a separate class of warning-optional-error than overlaps, to make it clear that it was a symlink disagreement15:54
tristaninstead of just a "file which overlapped another"15:55
Demos[m]tristan: Doing RPMs that way would make them incompatible with koji/obs right?15:55
valentindtristan, It will be different warning. Just the code will be around the same place.15:56
tristanDemos[m], it's possible to "run rpmbuild on your own spec file and reuse all the rpmbuild mechanics", but it's counter the general mission I think; we ultimately want the "build story" to be decoupled from the "package / deploy / distribute" story15:57
tristanDemos[m], i.e. we want to use the same build element to build an artifact, and then use an element to deploy it through deb, and another element to deploy it through rpm15:58
tristanvalentind, sounds sensible I think yes15:58
gitlab-br-botbuildstream: issue #401 ("If a project B use project A as a junction, B should not try to use the bst remote cache of A (at least by default)") changed state ("opened") https://gitlab.com/BuildStream/buildstream/issues/40115:58
tristanjjardon, by default "A project declares it's artifact cache server" indeed, for instance we benefit from that in GNOME, we use the same revisioned ref of freedesktop-sdk and rely on freedesktop-sdk to provide the built artifacts for the version we depend on15:59
tristanjjardon, I think overrides need to be enhanced for more dynamic setups, I think the only overrides beyond that which are currently available, are user config and not project config16:00
jjardonthat can be a problem if suddenly that cache is used by 100 people, instead only 316:00
jjardonI'd prefer that GNOME can use it's own cache server16:01
Demos[m]tristan: hmmm yeah. Unfortinately rpms want to handle dependencies their own way16:01
jjardononly use the freedesktop one if there are updates16:01
tristanjjardon, I see this as a performance problem, not a design problem, honestly.16:01
tristanjjardon, ultimately I think we want to have less repetition of builds and redundant artifacts, and more sharing; if that is a problem, then we need better performance and/or better host machines16:02
jjardontristan: if a project have declared its own cache server, then is that used or still the cache or the junction is used directly, without any caching?16:02
tristanDemos[m], True, public-data allows for some measure of overriding for the specific cases, currently the debian plugin uses the BuildStream dependency model for generating dependency metadata but I think that also for debian, that needs more enhancements to be more flexible16:03
tristanjjardon, I dont understand the phrase16:03
tristan " then is that used or still the cache or the junction is used directly, without any caching "16:04
Demos[m]tristan: I'm thinking in terms of my experience with CPack, which does a similar thing for RPMs/DEBS (as does the meson rpm plugin). For CPack, the generated debs and RPMS don't really reduce work much because they are super primitive and throw away lots of data.16:05
tristanDemos[m], I think that the current debian plugin was originally designed with the thought in mind "Lets take this organizations custom set of debian packages which define their custom OS, and make a script which converts it all into BuildStream elements, with the build / deploy steps separate"16:05
tristanDemos[m], While that is useful for some edge cases, I don't think that's essentially the best, most popular use of it; so that's another reason to consider it experimental :)16:06
Demos[m]yeah, certantly having debs/rpms as a possible binary artifact source makes sense16:07
tristanOh, as a source that is a completely different topic to me16:08
tristani.e. importing packaged data into a runtime to build on top of; is a completely separate goal16:08
tristanalso useful :)16:08
Demos[m]it would be nice to be able to leverage bst's dependency info in some cases. Like a ton of projects have really quite complex setups for building their official rpm/apt repos (puppet, foreman, rdo(openstack)). One reason is because if you have a large number of dist packages building them on a dev machine tends to involve like mockchain, which is very, very primitive16:09
*** finn has quit IRC16:10
*** finn has joined #buildstream16:10
tristanRight, so I think there are cases where say, you are an org and you release an App, and you want to release 2 deb packages and 2 rpms (say one for LTS and one for latest of each distro)16:10
tristanIn that case, the BuildStream dependency model is not interesting to you16:11
tristanThere are cases where you want to build a fully functional / bootstrapped system from the ground up for your own embedded product, and you want to use RPM or Debian as a deployment / upgrade mechanism16:12
tristanIn that case the dependency model can automate much or potentially all of the work16:12
tristanThere are cases where you have something in the middle too, I guess; like building a "suite" which includes separate packages for some middleware16:13
tristanjjardon, trying to understand your question, "or the junction used directly", makes me think that maybe you think a junction is a cached entity which contains content; if that is your line of thinking: no it is not like that16:15
tristanjjardon, actually junctions never produce artifacts themselves, they are just a window into the artifacts provided by the project you depend on (whether you need to build them locally, or are available and downloadable in that project's cache)16:15
Demos[m]Maybe something like having rpm macros that are able to pull metadata from buildstream? so you still write the spec yourself but you don't have to duplicate much info16:21
tristanUmmm, one could potentially have an integration command (which runs before any build stuff after staging), which takes public data in context and generates something in /var/rpm/macros (dont recall if that is the correct directory but you get the idea)16:23
tristanNot sure if you have access to dynamic context there, though; would need to investigate that idea further16:23
tristan(i.e. dynamic context of variables and such about the element being build, rather than the lower level element which declared the integration command)16:24
tristanOr, a customized element could have a pre configure command which generates a macros file based on variables in context before doing anything else16:24
tristanDemos[m], I dont think my head is 100% in the game for this topic though right now, and I think there is a chasm between our viewpoints (as in, it's hard for me to understand in a very precise way, what you want to have accomplished)16:26
tristanDemos[m], might be a topic better suited for the mailing list (also it's 1:30am here :))16:26
jjardonTristan sorry, let's try again; what I'd like is that if project B uses A as a junction, and project B have defined a cache server, then project B will use it's own cache server for everything (even its own copy of the artifacts produced by A), only accessing the A cache server if there are updates from project A16:27
Demos[m]yeah, I'm not sure I understand what I want.16:28
Demos[m]I may tinker with some stuff and come to the mailing list16:28
Demos[m]However: I have to go deal with an /extremely/ needy server right now16:28
*** xjuan has joined #buildstream16:29
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:29
*** bethw has quit IRC16:38
*** jonathanmaw has quit IRC16:40
tristanjjardon, I think we can do something similar to what you ask, as I said, I think overrides need to be enhanced for more dynamic setups... however I doubt that your specific request makes perfect sense16:48
tristanjjardon, i.e. I can envision that a B never uses A's cache server, meaning that B needs to rebuild it's copy of A artifacts itself, that is very straight forward16:49
tristanjjardon, I can imagine something more complex and "feature territory", whereas there are mirroring functionalities baked into the cache server (e.g. B's server actually "pulls" artifacts from A's server automatically and mirrors them)16:50
tristanjjardon, but I think you're losing me at "only accessing the A cache server if there are updates from project A", not exactly sure how that would work16:51
tristanthe first option, is really only a matter of enhanced configuration options16:51
tristanthe second option is a heavy duty "feature"16:51
jjardonTristan user of project B checks its own cache first , the if its not there it uses cache from A. And it will only push to B16:52
tristanthat said, thinking about mirroring services for artifact caches "on it's own" sounds interesting, given the load issues we've been seeing16:52
tristanjjardon, right, ok that part makes a bit more sense to me now16:53
tristanjjardon, that is fairly within reach with some configuration data, remember that "Multiple artifact caches for a project" is a feature introduced before junctions existed16:54
tristanand junctions did not go very far towards extra enhancements of this16:54
tristanso the first "multi cache" already works exactly how you describe16:54
jjardonYup16:55
tristanjjardon, this was mostly thought up for cases of workflows where there is a "stable" or "dev / side branch" activity for a project, where a branch might pull artifacts from "mainline", but only push the differing artifacts to "dev"16:55
*** tiago_ has quit IRC16:55
tristanjjardon, What you ask for is fairly within reach, but... I think it might not solve what you want it to16:56
tristanjjardon, if for instance, B sets itself up to push only to B, and download first from B and then A if not found in B16:57
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:57
tristanThen, as long as artifacts existed in A, B will never contain them16:57
tristanjjardon, so basically, since B never had to build stuff that was downloaded from A, you dont get to reduce the server load for A16:58
tristanUnless you implement this mirroring stuff in *some* way16:58
tristanwhich is less trivial16:58
tristanAlso, I'm not sure that that is the best way to address load; if we need mirrors for load, maybe they should just strictly be mirrors, and not be tied into this so deeply16:59
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/34717:00
tristanjjardon, I guess one could say that: If not exists in B, download from A, if still not exists... download sources and "Build it"... regardless of how the artifact was obtained: Push it to B17:01
jjardonTristan how difficult would be to always check if the artifact exist in the server and push if it us not there?17:01
tristanjjardon, still, if this is really a question about server load, I dont know if this is a "solve", it just pushes the problem from one place to another17:02
jjardonWell17:02
tristanjjardon, that is less difficult now that I think of it17:02
*** toscalix has quit IRC17:04
tristanjjardon, you can file an issue for this feature, or raise discussion on the ML, either way to get the ball rolling; I agree we need more configuration and control of artifact caches now that we have junctions in play17:04
tristanI just think we need to really think of what problems we're solving, and if we're really solving them the right way17:05
jjardonAs I said, free desktop project can have 10 users and everything is ok; I think I makes sense gnome / KDE / others take care on their own cache , instead relay all of then in the freedesktop one17:05
jjardonI have to take a plane now; I have filled an issue already17:05
jjardonI will try to expand there later17:05
tristanThat would mean to never resort to download from A, if you wanted control17:06
tristanmaybe that should *also* be an option17:06
tristanjjardon, and maybe it is project A which needs to declare this for people who depend on it, rather than allowing depending projects to configure in a way which spams your servers17:06
tristanI do still feel skeptical about acknowledging "the load is too much" argument, things may slow down with hundreds of thousands of parallel requests, if they happen to occur at the same time17:07
tristanbut things "should not break"17:07
tristanif we're designing around a broken implementation: That is bad - better to fix the implementation17:08
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/34717:10
*** Prince781 has joined #buildstream17:38
*** Prince781 has quit IRC17:41
*** Prince781 has joined #buildstream17:42
*** bochecha_ has quit IRC18:07
*** Prince781 has quit IRC18:14
*** Prince781 has joined #buildstream18:16
*** ernestask has quit IRC18:39
*** xjuan has quit IRC19:17
*** Prince781 has quit IRC19:31
*** Prince781 has joined #buildstream19:52
*** bochecha_ has joined #buildstream19:56
*** tristan has quit IRC20:06
*** Prince781 has quit IRC20:07
*** bochecha_ has quit IRC21:55
*** noisecell has joined #buildstream22:32
*** Prince781 has joined #buildstream22:47
*** noisecell has quit IRC23:18

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