IRC logs for #buildstream for Thursday, 2017-10-12

*** tristan has joined #buildstream05:05
*** givascu has joined #buildstream06:55
*** adds68 has joined #buildstream07:34
gitlab-br-botbuildstream: issue #111 ("Unix platform cannot interact with artifact shares") changed state ("opened") https://gitlab.com/BuildStream/buildstream/issues/11107:41
gitlab-br-botbuildstream: issue #112 ("Artifact configuration is confusing and fragile, need canonical push/pull urls.") changed state ("opened") https://gitlab.com/BuildStream/buildstream/issues/11207:48
*** anahuelamo has joined #buildstream08:17
*** anahuelamo has joined #buildstream08:18
*** givascu has quit IRC08:25
*** givascu has joined #buildstream08:25
*** jude has joined #buildstream08:40
*** jonathanmaw has joined #buildstream08:46
juergbitristan: regarding https://gitlab.com/BuildStream/buildstream/issues/5 i don't think it makes sense to solve this by requiring the user to specify shared sources in a separate place08:53
juergbifor one, this would still allow accidents to happen (unless we detect this and simply error out) and isn't user friendly08:54
juergbialso there might be cases where a user wants to use two different refs of the same source repo (e.g., gtk+ 2 and 3). and shared source doesn't help in that case08:54
juergbii.e., i think we should fix this internally and thus, completely independent of the recursive pipeline approach08:55
juergbiregarding definition of subprojects for recursive pipelines. while it would be possible to put this all in project.conf, i think it would be better to put those in separate files09:02
juergbito not let project.conf grow too big/complex, and the file-based approach is easier for things like bst track09:02
juergbiwhile it would be possible that a project would be referenced twice, this would also be possible when declared in project.conf, and the conceptual issue even exists for two independent projects that have .bst files for the same module09:03
juergbialso, i don't see any implementation issues dealing with it (elements in different subproject definitions would be treated as completely separate elements)09:03
juergbidoes this make sense to you so far?09:03
tristanjuergbi, yeah I raised issue 5 because I thought it might very well fit into this scenario, but dont let that be a blocker for you09:12
* tristan reads the rest...09:12
tristan... so far... agree that I would prefer also the details of what Source/configuration options, live in a separate file...09:13
tristanHopefully it would also be an Element09:14
juergbithat's the big question now09:14
juergbiif we treat it as Element, it would still be pretty special09:14
juergbinot all Element actions would make sense on it09:14
*** ssam2 has joined #buildstream09:15
juergbii don't think treating it as a stack would be useful09:15
tristanSo... sorry juggling conversation... one sec...09:15
tristanjuergbi, so... I think that having the junction of one project depending on another being "special" is very, very acceptable; even expectable; for a core feature like this09:17
juergbiformulated like this, i agree09:17
juergbithe question for me is whether it would be confusing to have this in the same directory with the same file extension09:18
tristanI would go so far as to say; when depending on a "junction" (for conversation sake, and cause I like the name)... it would be totally acceptable to extend the core dependency declaration format for depending on such an element09:18
juergbii'd be ok with it if you are09:18
tristanSo for instance... you can have an element depend on a junction element.bst, withe type: build or run... and with element: foo.bst09:19
tristanmeaning you depend on element foo.bst from that project with that configuration09:19
juergbii was planning on either junction.bst:foo.bst or junction.bst/foo.bst09:19
tristanif that also makes sense with your plan, that sounds interesting09:19
tristanI see09:19
juergbibut conceptually i guess that's pretty close09:19
tristanYeah... for the YAML format, I feel I prefer addressing things with an extension to the dictionary09:20
juergbiwouldn't matter much implementation wise, i suppose09:20
juergbijust different syntax09:21
tristanYou will, however need a new display name for the elements which the project builds09:21
tristani.e. for the logs and stuff09:21
juergbii like the concise path-like syntax as we can use it everywhere as a single thing09:21
juergbibut i'm flexible on the syntax09:21
tristanOr, that can be solved by just saying "If there is more than one project... elements are displayed as 'project:element.bst' "09:21
tristanfull element name vs short-hand, local element name09:22
*** tlater has joined #buildstream09:22
juergbiwouldn't it be nice for the display name to match the dependency name in the .bst files09:22
juergbi?09:22
tristanIt's unneeded in this approach I think, no ?09:22
juergbieither way works fine09:22
juergbii generally like consistency with how things are represented09:23
tristanOr, we give people a rope to hang themselves with, and dont force a single junction:project association ?09:23
juergbibut dict extension works for me as well09:23
juergbimultiple projects in a single junction? i don't understand what you mean with that09:24
tristanin which case, if you can have multiple junctions to the same project at different versions / configurations (which *is* useful), then you need to distinguish using the junction element name09:24
juergbiah, the other way round, ok09:24
tristanNo, multiple junctions to the same project, depended on for different reasons09:24
tristanright09:24
juergbithis should conceptually be allowed but i don't think it should frequently be used/needed09:25
juergbi(except for the import case but that will be slightly different)09:25
juergbi*import-like case09:25
tristanRight09:26
juergbiok, i'll assume dict extension for now but syntax is anyway a detail in the end implementation-wise09:27
tristanjuergbi, if having multiple elements from the same project, but with differing cache keys; does not present huge obstacles to our core (separate element instances I suppose, should be fine)... then lets keep the rope people can hang themselves with existing, hiding somewhere out of sight09:27
tristanAnd if it causes trouble, we'll later need to add some strong error handling around that09:28
tristanbut I dont see it as a huge concern for initially landing it09:28
juergbiyes, i don't foresee any real obstacles in supporting that09:28
tristansounds like an all around nice way forward to me !09:29
juergbiand i understand it right that you're ok with using a special 'kind' of .bst files that may not conform to regular Element?09:30
juergbican hopefully provide a more complete description soon09:31
tristanjuergbi, yes; i.e. it's a core element 'kind' (class)... derives from Element... and has sneaky special sauce09:34
juergbiok, that might work well. thanks for the feedback09:34
tristanAnd in the format documentation about dependencies, it's documented that the additional attribute *only* applies to this special element09:35
juergbiright09:35
*** semanticdesign has joined #buildstream09:50
tlaterjonathanmaw: The reason this doesn't work when installed with the editable flag is that it is then *not* installed as a zip file10:28
tlaterWhich means that setuptools won't have to extract the file, and just keeps it in the original moduke10:28
tlater*module10:28
tlaterApparently python does not handle setting sys.path to a path inside a module10:29
tlaterAnd since pluginbase does just that I think this is causing our issue10:29
tlaterTo fix this, I think the only possible solution is to copy the file to a tempdir10:29
tlaterThis also means that plugins always have to be exactly one file10:29
tlaterBut I think they had to already...10:29
* tlater attempts this change and sees if he's correct10:31
tlaterI can't believe I wrote a plugin system that works only exactly when python decides to zip its modules, as opposed to the opposite...10:32
gitlab-br-botbuildstream: issue #113 ("Distinguish between tracking and saving in `bst build --track`") changed state ("opened") https://gitlab.com/BuildStream/buildstream/issues/11310:33
tristanAny opinions on issue #113 ?10:33
* tristan thinks this is easy to implement; and if we do - it should block 1.010:34
tristanbecause it would otherwise be a semantic behavior change of `bst build --track`10:34
ssam2i've always avoided `bst build --track` because i don't like the idea that building stuff can effectively update my source code10:34
tristanSo that is a +1 I guess10:35
ssam2pretty much10:35
tristanI'm thinking the typical GNOME case here10:35
tristanpeople are used to always building latest and desiring that10:35
ssam2i find `bst track` a bit weird but also super useful10:35
tristanand git stash or such will get in the way10:35
juergbicould it make sense to use sources without ref for such cases?10:37
tristanyes, I think I intend to for GNOME modulesets of devel release, too10:38
juergbi(that would implicitly track but not save)10:38
tristan(and that already works fwiw)10:38
tristanI think that we want gnome-modulesets master to always refer to master branches in GNOME with no ref10:39
tristanAnd release branches to ideally only refer to release branches of GNOME modules (where possible)10:39
tristanAnd only have tags for tracked things10:39
tristanthat is something to explore and needs more thought, but I think it's about right10:40
juergbido we already implicitly track without save if there is no ref?10:40
juergbior error out?10:40
tristanerror out10:40
tristanThat I want to keep10:40
tristan... because we still focus on deterministic, predictable stuff ... it should be explicit10:41
tristanltu, did you start looking at the wiki for monthly meeting minutes yet ?10:42
tristanltu, also my proposed tentative first meeting date, some *cough* people might be interested in attending we might want to chase after and see if the date is suitable10:42
tlaterjonathanmaw: That wasn't it either :(10:53
jonathanmaw:(10:53
tlaterjonathanmaw: Have you tried running the test directly, outside of the test cases? When I do it seems to work - perhaps it's caused by specific CLI flags.10:58
jonathanmawtlater: I get a different error, so that's hopeful :)10:59
ltutristan, heh...my view is that the core folk are necessary, i hadn't thought of those interested parties as part of that10:59
tlaterOooh, what's the error?10:59
ltui can ask of course but i suspect they will just want to read the minutes after the meeting10:59
lturight so i'm creating a new page on the wiki now10:59
jonathanmawtlater: error was https://pastebin.com/kyuhcZkW. making some changes to see if it persists.10:59
jonathanmawI made some changes and it went back to __import__ not found :/ fingers crossed I can freely move between those two fail cases :P11:00
jonathanmawI get the pasted error when I install the package with "--egg"11:01
tristanltu, fair enough, I've sent private emails around11:05
tristanltu, "participation in the project" can take on other forms than just writing code; I think it's fair to encourage stake holders to participate11:06
* tlater has no idea what this issue is anymore11:26
tlaterIt turns out that building multiple elements makes the issue go away11:27
tlaterIt only occurs when building exactly one element11:27
tlaterWhich has to be the external plugin one11:27
tlaterIt happens in the test case, because that one just so happens to have its dependencies cached already11:27
tlaterjonathanmaw: Can you confirm that behavior?11:28
jonathanmawtlater: hmm, I can wipe the cache, so it has to pull in base-configure again11:29
tlaterjonathanmaw: You can also wipe dpkg-build-test's cache and then build dpkg-configure(?)-test11:29
tlaterdeploy, sorry11:30
jonathanmawtlater: hrm, seems to be the same problem. I even went as far as to change the config to a completely separate cachedir11:49
jonathanmawbut I'm still getting 'NoneType' object is not subscriptable.11:50
tlaterNot sure why that solves the issue for me then :/11:50
* tlater found an interesting function in pluginbase that might allow importing from python packages, maybe that solves some of this weirdness11:50
jonathanmawtlater: what's the function? I'd like to manually hack around to see if I can load it that way11:52
tlaterIt's http://pluginbase.pocoo.org/#pluginbase.PluginSource -> open_resource11:53
* tristan wonders if jonathanmaw and tlater are in the same country... maybe taking a look at jonathanmaw's console and debugging a bit might yield interesting results11:54
jonathanmawtlater: yep, just across the hall from each other. tlater had a look earlier this morning.11:54
tristan:)11:54
tlaterUnfortunately we're equally dumbfounded, and I have managed to reproduce almost exactly what he has.11:54
* tristan is not jealous11:55
tristannot about the country thing, the bug, heh11:55
tristan(although not jealous of that either heh)11:55
tlater;P11:56
*** givascu has quit IRC12:24
*** tristan has quit IRC12:34
*** tristan has joined #buildstream13:05
tlaterI can load files from plugins now, but can't load plugins from files. Something tells me this open_resource idea wasn't great.13:49
tristanyeah, anything pip is, 90% pain13:52
* tristan usually throws in a provocative troll in #python on freenode to get people riled up and subtly extract the info he needs13:52
tlaterIn this case the issue appears to be pluginbase, actually.13:53
tlaterBut I'm not sure, I still can't find the cause13:53
tristanremember that we _only_ care about pip as a means of *discovery* of plugins13:57
tristanwhich are python files in a directory13:57
tristanplugin base works fine for loading files from a directory.13:57
tlaterYup. We can manage to find python files in a directory, but loading them somehow gets rid of all builtin python modules.13:57
tristantlater, note that we distribute our plugins as data files13:58
tlaterWhich causes all kinds of neat errors.13:58
tristanand we make damn sure there is a gap, with no intermediate __init__.py mucking things up13:58
gitlab-br-botbuildstream: issue #114 ("Give better errors on overlaps") changed state ("opened") https://gitlab.com/BuildStream/buildstream/issues/11414:10
jonathanmawtlater: looking at the code, should I be providing a "plugins" field to find the dpkg_build element? I'm guessing not, because the outcome would be more likely to be unable to find the plugin, not it behaving weirdly.14:18
tlaterjonathanmaw: A plugins field where?14:19
jonathanmawtlater: in project conf14:20
tlaterNo, that's not required for these plugins.14:20
jonathanmawproject uses _extract_plugin_paths14:20
tlaterThe code relevant to these plugins is almost entirely in _plugincontext.py :)14:21
tlaterIT'S GARBAGE COLLECTION14:22
* tlater is sure of this one14:22
tlaterOh damnit14:23
tlaterpluginsources have a 'persistent' attribute that I didn't notice - apparently they remove any plugins they imported when they are garbage collected14:24
tlaterThis is fine as long as the plugins are being loaded, but since I create a new pluginsource with a different searchpath to load the external plugins everything breaks down once those functions end14:24
tlaterThis is why internal plugins work, and why external plugins break - and why it's entirely inconsistent, because sometimes garbage collection kicks in and sometimes it doesn't.14:25
tristanThat seems strange, we should implicitly have a reference to the loaded namespaced plugin - or...14:25
tristanMaybe *I* regressed your thing... when I made a change for on-demand loading ?14:25
tlatertristan: We do, but not to the plugin source, which removes the object that still has a reference14:26
tristanOr rather not, cause I think I made that change in advance of your branch14:26
* tlater already tested this, unless I'm having odd issues again it solves it :)14:26
tlaterjonathanmaw: I'll clean it up a bit and push, would you mind trying to confirm the fix?14:27
jonathanmawtlater: I'd love to14:27
tristanwe should have jonathanmaw test every new feature ;-)14:27
tristanhehe14:27
* tristan ducks14:27
gitlab-br-botbuildstream: Tristan Maat created branch external_plugin_errors14:30
gitlab-br-botpush on buildstream@external_plugin_errors (by Tristan Maat): 1 commit (last: _plugincontext.py: Fix third party plugin loading) https://gitlab.com/BuildStream/buildstream/commit/4fbbad19602717a1a39fbdbd94dc50c4a72cfcf614:31
tlaterjonathanmaw: ^^^ :)14:31
*** tristan has quit IRC14:32
*** tristan has joined #buildstream14:39
jonathanmawᕕ( ᐛ )ᕗ things are happening!14:41
jonathanmawfingers crossed!14:41
jonathanmawtlater: seems to have solved that particular problem!14:48
tlater\o/14:48
tlaterBut what do you mean by 'that particular'?14:49
jonathanmawI'm currently seeing "Directory '/buildstream/install' was not found inside the sandbox, unable to collect artifact contents", but that looks like it'll be specific to the dpkg_build element in some way.14:49
tlaterHm, yeah, probably. I'm not seeing this with my old plugin repo, but it is pretty old, so things may have changed.14:50
tristanthat doesnt sound related to loading plugins at all no14:51
gitlab-br-botbuildstream: merge request (external_plugin_errors->master: _plugincontext.py: Fix third party plugin loading) #107 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/10714:55
gitlab-br-botpush on buildstream@non-sandbox-builds (by Tristan Maat): 20 commits (last: _frontend/widget.py: Report selected project options, if any.) https://gitlab.com/BuildStream/buildstream/commit/ce5a47973bb639c1f61cd65cce212bb0308f013415:11
gitlab-br-botbuildstream: merge request (non-sandbox-builds->master: Add %{script} format to `buildstream show`) #102 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/10215:11
gitlab-br-botpush on buildstream@external_plugin_errors (by Tristan Maat): 1 commit (last: _plugincontext.py: Fix third party plugin loading) https://gitlab.com/BuildStream/buildstream/commit/85c1a8bcfab764d780b21069f656061a2b2faf2815:16
gitlab-br-botbuildstream: merge request (external_plugin_errors->master: _plugincontext.py: Fix third party plugin loading) #107 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/10715:16
gitlab-br-botpush on buildstream@81-non-empty-read-only-directories-not-handled-during-bst-build-and-others (by Tristan Maat): 20 commits (last: _frontend/main.py: Added -o/--option main CLI params) https://gitlab.com/BuildStream/buildstream/commit/9dbeffa291f3eb3a951ae785f7b42b211f70847016:05
gitlab-br-botbuildstream: merge request (81-non-empty-read-only-directories-not-handled-during-bst-build-and-others->master: Ensure that artifact file permissions are set in the right order) #100 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/10016:05
gitlab-br-botpush on buildstream@81-non-empty-read-only-directories-not-handled-during-bst-build-and-others (by Tristan Maat): 1 commit (last: Ensure that artifact file permissions are set in the right order) https://gitlab.com/BuildStream/buildstream/commit/59c14af228a3cf3e5155e932cff01ebca4a4a44b16:57
gitlab-br-botbuildstream: merge request (81-non-empty-read-only-directories-not-handled-during-bst-build-and-others->master: Ensure that artifact file permissions are set in the right order) #100 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/10016:57
*** jude has quit IRC17:06
*** jude has joined #buildstream17:08
jonathanmawtlater: it looks like it was packaging-related after all.17:12
jonathanmawI think the defaults from the .yaml files aren't getting merged in, since I was able to get my build to succeed by copying the defaults yaml into the element.17:13
tlaterThe /buildstream/install issue?17:13
jonathanmawtlater: that one17:13
jonathanmaw/buildstream/install was empty because it never ran any commands.17:13
tlaterHrm, I'll have a look tomorrow - need to hurry up right now :/17:13
jonathanmawyep17:13
jonathanmawsee you later, tlater17:13
tlatero/17:13
*** tlater has quit IRC17:15
*** jonathanmaw has quit IRC17:16
*** ssam2 has quit IRC17:20
*** semanticdesign has quit IRC20:37
*** semanticdesign has joined #buildstream20:37
*** semanticdesign has quit IRC21:23
*** semanticdesign has joined #buildstream21:23
*** semanticdesign has quit IRC22:48
*** semanticdesign has joined #buildstream22:48
*** semanticdesign has quit IRC23:51
*** semanticdesign has joined #buildstream23:52

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