IRC logs for #buildstream for Tuesday, 2017-10-10

*** tristan has quit IRC02:21
*** bochecha has quit IRC02:44
*** bochecha has joined #buildstream02:45
*** bochecha has quit IRC02:49
*** bochecha has joined #buildstream02:49
*** tristan has joined #buildstream02:50
*** jude has joined #buildstream07:42
*** jude has quit IRC08:31
*** jude has joined #buildstream08:35
*** bochecha has quit IRC08:39
*** bochecha has joined #buildstream08:40
*** bochecha has quit IRC08:44
*** bochecha has joined #buildstream08:44
*** jonathanmaw has joined #buildstream08:46
*** tlater has joined #buildstream08:58
*** ssam2 has joined #buildstream09:11
*** jonathanmaw has quit IRC09:55
*** jonathanmaw has joined #buildstream09:56
*** ssam2 has quit IRC10:01
*** jonathanmaw has quit IRC10:24
*** ssam2 has joined #buildstream10:24
*** jonathanmaw has joined #buildstream10:25
gitlab-br-botpush on buildstream@options-refactor (by Tristan Van Berkom): 15 commits (last: project.py: Support project options) https://gitlab.com/BuildStream/buildstream/commit/0df3d75e9de524b8bc8165b2055b4008724064c110:30
tristanHmmmm10:35
tristanI think there is no chance of breakage here10:36
tristanssam2, juergbi ... I'm literally about to land project options10:37
tristanSigh... deep breath ?10:37
ssam2what could possibly go wrong10:37
juergbihehe10:37
tristan:)10:37
tristanYeah... the one thing is; I didnt do the (<) (=) and (>) thing yet10:38
*** jude has quit IRC10:38
ssam2so you can only append stuff to dicts ?10:38
tristanSo composition resulting from project option conditionals will just use whatever buildstream decides10:38
tristanssam2, to arrays yes10:38
ssam2oh yeah. dicts are unordered of course10:38
tristanBut, I suppose the worst that can happen, is that people use options extensively this week10:38
tristanbefore implementing declarative list composition10:39
tristanand have expectations that dont match10:39
ssam2probably less of a big deal than the arch conditionals breakage that is about to ensue :-)10:39
tristanvariants are anyway not in use - they go away with this branch (which is actually split into 2 branches)10:39
tristanWell, regarding that; I actually have 3 branches10:40
tristan- remove-variants10:40
tristan- options-refactor (adds options)10:40
tristan- remove-arches10:40
tristanMy plan is to land the first 2 now10:40
tristanAnd we migrate everything over to use the new arch conditionals10:40
tristanthen remove the 'arches' stuff10:40
ssam2ah ok10:41
ssam2that seems a better plan10:41
juergbimakes sense10:42
tristanAlrighty, lets push the button on this10:42
tristanUnfortunately the CI is taking ages for the unix platform10:43
tristanSo, I will have to coax it and retry... otherwise the documentation wont update10:43
* tristan did HUGE documentation refactor today10:43
tristancomplete restructure - now much more coherent, broken down into Installing, Running, Project Format, Built-in Plugins, Writing custom Plugins10:44
ssam2nice10:44
gitlab-br-botpush on buildstream@master (by Tristan Van Berkom): 14 commits (last: userconfig.py: Default element format doesnt include %{variant} anymore) https://gitlab.com/BuildStream/buildstream/commit/dfa5186e77a74c928ce4ab679c532e442ac33d4310:45
tristanHere comes the first10:45
tristanremove-variants branch is landed10:45
gitlab-br-botpush on buildstream@master (by Tristan Van Berkom): 20 commits (last: _yaml.py: Dont blindly coerse strings to bool in _yaml.node_get()) https://gitlab.com/BuildStream/buildstream/commit/1405bbb9018550223f8f75ae705afe2a160bc42b10:46
tristanhere comes options-refactor10:46
* tristan makes CI only run on the tip10:46
tristanIf you want a preview of the docs, just can build them10:47
tristanThere are 5 option types10:47
tristan- bool10:47
tristan- enum10:47
tristan- flags10:47
tristan- arch (derived from bool, convenience thingy)10:47
tristan- element-mask (derived from flags, convenience thingy)10:48
tristanssam2, one thing I tried to figure out today but didnt succeed... is how you do things like (('literal1', 'literal2') & flags_variable)10:48
tristanwith jinja2 expressions10:49
ssam2hmm10:49
tristanseems undocumented, they support lists but no mention of sets in literals10:49
ssam2so flags_variable is a list of strings, or an integer ?10:49
tristanor rather: (('literal1' | 'literal2) & variable)10:49
tristanlist of strings yes10:49
ssam2ah right10:49
ssam2i would have thought '&' is for boolean AND10:50
ssam2probably the best we can do is `('literal1' in variable) or ('literal2' in variable)`10:50
tristanI think it's pythons way of mimicking how we do bitmasks in C but generically with sets10:50
ssam2i can't do list & string in Python10:50
tristanWell, I asked for the real pythonic ways, and they run a bit differently, but also dont work in jinja210:51
tristani.e. the AND way is like `{'literal1', 'literal2'} >= set_variable`10:51
tristanthe OR way is `{'literal1', 'literal2'} & set_variable`10:52
tristanbut anyway; not in jinja it seems10:52
tristanssam2, which is actually comforting in a way10:52
ssam2ah yeah, seems python set() overloads various operators to be fancy10:52
tristanBecause it seems to indicate, at least we're not doing something crazy like blindly evaluating user provided strings with a python interpretor10:53
ssam2we could have done that ourselves in 1 line :-)10:53
ssam2(and of course i'm glad we didn't)10:53
tristanheh10:53
tristanwell, what I did do, but didnt document, cause I think something better should exist...10:54
tristanis I sort the selected flags in the loaded list10:54
tristanSo, if you want to do (['bar', 'foo'] == flags_variable)10:54
tristanyou can10:55
tristanBut (['foo', 'bar'] == flags_variable) will never match, because ordering10:55
ssam2hmm.. i'm certainly in favour of having everything in stable sort order10:56
tristanyeah but I'm not digging into jinja and mucking with how the expression side of things are10:56
tristanSo for arch conditionals10:56
tristanWhat I've done; is I've just created an option which derives from the `enum` type10:57
ssam2i guess to avoid relying on that you'd need to do `len(flags_variable)==2 and 'bar' in flags_variable and 'foo' in flags_variable`10:57
tristanSo you can declare what arches you support10:57
tristanAnd it has the added nicety of defaulting to the result of `uname -a`10:57
ssam2that sounds good10:57
tristanSo you can define one or two or three of those if you like10:57
*** jude has joined #buildstream10:58
tristanAnd deriving from the same logic... if your default is not one of the supported ones, and the user does not provide a `--option arch arm` (or configuration equivalent)...10:59
tristanthen you get an unsupported option error10:59
ssam2excellent10:59
tristanlooks like https://gitlab.com/BuildStream/buildstream/-/jobs/35695223 started without burning minutes on waiting for the docker or some other irrelevancy11:01
tristanSo there is a hope in hell that docs will be published :)11:01
tristanlooks like I typo'd there but nobody noticed11:04
tristan<tristan> - arch (derived from bool, convenience thingy)11:04
tristans/bool/enum11:04
ssam2hah, makes more sense11:14
ssam2i dunno how to speed up the docker fetches significantly... in the baserock CI we actually set up a local docker registry in the same cloud provider, but it still takes a minute or two to start the tests11:15
ssam2shrinking the docker base would no doubt help11:15
ssam2i did try to do an alpine-based image last week, but they don't seem to package GI .typelib files at all11:16
ssam2at least, they didn't for OSTree, which is the one we need11:16
ssam2it was only about 200MB compared to the 600MB fedora one though11:16
tlaterssam2: Getting rid of the `dnf install` calls could help a lot, creating intermediate containers takes a lot of time.11:19
tlaterIt could also help to chain a few of the setup commands with && rather than specifying everything individually.11:20
ssam2the first of those is done actually11:20
ssam2https://gitlab.com/BuildStream/buildstream/merge_requests/10511:20
ssam2ci for that branch took 43 minutes though, so it's not a huge win ...11:21
tlaterAh, cool :)11:21
tlaterWell, baby steps...11:22
persia&& doesn't make the shell faster: it's the same as set -e with carriage returns in a script.11:24
ssam2given a list of shell commands where each command is run in a new shell, sticking them all on one line with && does provide a speedup11:25
persiassam2: For the desktop-docker use case, is there a way to setup a local provider so that only the first operation is slow(ish), or is that also already done.11:25
gitlab-br-botpush on buildstream@sam/ci-update-docker-image (by Tristan Van Berkom): 20 commits (last: setup.py: Added jinja2 dependency) https://gitlab.com/BuildStream/buildstream/commit/0ec8a1e623c07d8096a0aa1118daec0fdf25962011:25
gitlab-br-botbuildstream: merge request (sam/ci-update-docker-image->master: .gitlab-ci.yml: Follow latest BuildStream Docker image) #105 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/10511:25
ssam2persia, surely that's up to the desktop user to do?11:25
persiassam2: In that situation (e.g. in make), I tend to either use escaped newlines or here documents for ease-of-reading).  But yes, not spawning N subshells is faster.11:26
ssam2desktop docker is fast apart from the initial pull11:26
persiassam2: Yes.  I just wonder if it can be done easily.  I may be overoptimising.11:26
ssam2i think you are :-)11:26
tristanthe bottleneck to CI is the freedesktop runtime really11:27
ssam2that said, setting up a local docker registry is (of course) just a matter of pulling the correct docker image11:27
ssam2its something about gitlab CI's setup that is causing the 1-5 minute delay on CI running11:27
tristanWith that nifty tiny runtime you've been cooking up, things will go much more quickly11:27
ssam2also true11:27
tlaterpersia: It *is* faster in docker, since docker wants to create intermediate containers for each command you run. It does not distinguish between things concatted with &&, though, which means you avoid a fair amount of drive bottleneck.11:27
tlaterI'm not sure how the gitlab CI uses that, though.11:27
ssam2tlater, it's only `docker build` which does that I think11:28
ssam2when you use `docker run`, you get a new container that is then abandoned or deleted afterwards (depending on whether you pass --rm)11:29
ssam2but since the backend is copy-on-write, spawning a new container is very cheap11:29
ssam2it's committing changes that has a cost11:29
tlaterI was under the impression that gitlab CI created containers for each individual command for some reason11:30
ssam2it must concat everything into one script, because env vars persist once set11:31
tlaterI frankly don't even know why I thought that. It seems entirely pointless and stupid for performance reasons in this case.11:34
tlaterIgnore that then x)11:34
tristanw00t http://buildstream.gitlab.io/buildstream/ !11:38
tristanrelevant bits to project options... Project Format -> Introduction -> Directives11:39
tristanand Project Format -> Project Configuration -> Options11:39
tristanwhooops11:40
tristanlooks like I missed committing something added11:40
tristan(anyway for the project options, it's not missing)11:41
* tristan adds11:41
ssam2looks good11:42
ssam2someone needs to do a round of "it's" fixes :-)11:42
tristanoh those11:43
tristanyeah11:43
tristanI developed a habit of caring about that a few months ago11:43
tristanthen I lost that habit :-/11:43
tristanSo a really annoying part of the slowness of CI... is serializing merges :-/11:55
tristanLike I just rebased ssam2's branch to improve the CI, but have to wait for it to finish before I can push my fix for the missing doc .rst file :-S11:55
tristanWell, seeing as the pytest ran, and the CI *is running*, I suppose I could logically make the call that the .gitlab-ci.yml didnt break after the rebase; and just not pay attention11:57
persiaThis is why I like zuul.  It deals with serialisation, and automerges anything that can be fast-forwarded that has been approved.11:57
persiaBut it's annoying to set up :/11:57
tristansounds like a decent feature yes11:58
tristanif fastforward is possible, please do that, re-run CI and then merge (or fastforward again at the end of CI if need be, repeating until merge or fastforward is no longer possible)11:59
tristanoh wait :-/12:06
tristanssam2, why are we following the "latest" tag in our CI with https://gitlab.com/BuildStream/buildstream/merge_requests/105 ?12:06
tristanthats exactly what we didnt want right ?12:06
ssam2not sure12:07
ssam2the 'latest' tag only gets updated when someone merges stuff to master in https://gitlab.com/BuildStream/buildstream-docker-images12:07
ssam2or someone runs the CI pipeline12:07
ssam2i can change it to use a fixed version if preferred, just that then there will be an extra step needed every time the docker image changes12:07
tristanThat's preferred please12:08
ssam2the gitlab logs show the sha256 of the exact container that was used, so there is traceability12:08
ssam2ok12:08
gitlab-br-botpush on buildstream@master (by Tristan Van Berkom): 1 commit (last: Added missing file from documentation makeover) https://gitlab.com/BuildStream/buildstream/commit/b98eb1f0d3f34c9ac35a9518c108e3fe8960c13912:09
tristanssam2, wait a sec12:09
tristanssam2, dont bother, maybe we can live with that, as long as there are no surprises12:10
tristanThe goal is only "Never have a random image"12:10
tristanMaybe I'm overthinking this - if anyway we have to make an explicit action for the "latest" tag to change12:10
tristanssam2, thoughts ?12:10
ssam2i think following "latest" should be fine12:11
ssam2as we control it12:11
tristanyeah ok, have to just think a bit more "distributed"12:11
tristanand it makes sense12:11
gitlab-br-botpush on buildstream@master (by Tristan Van Berkom): 1 commit (last: .gitlab-ci.yml: Follow latest BuildStream Docker image) https://gitlab.com/BuildStream/buildstream/commit/7704f58146ef266e135425e11572df434573c37012:13
gitlab-br-botbuildstream: merge request (sam/ci-update-docker-image->master: .gitlab-ci.yml: Follow latest BuildStream Docker image) #105 changed state ("closed"): https://gitlab.com/BuildStream/buildstream/merge_requests/10512:13
tristanscrew a second round of passing CI12:13
tristanwhat will be interesting, is the day that our CI actually *does* fail because of a new docker, and that we have to modify buildstream to support a newer base (although that is hopefully very unlikely)12:16
tristanit happens though specifically with docs12:16
tristancause when sphinx changes, we can get breakage, I guess cause... python culture :-/12:17
ssam2since the docker images are Fedora based, ideally every 6 months we'll update to the next release12:17
tristanpoint I guess is, when we find that an update is breaking buildstream, that is a good time to start testing both the old and new images12:18
ssam2right, so buildstream is tested on multiple platforms12:18
ssam2part of the reason for calling the docker image 'buildstream/buildstream-fedora' (which is of course pretty longwinded) is that we can in future maintain debian, ubuntu or whatever in parallel and test there too12:19
tristanyeah :)12:19
* tristan looks forward to 'buildstream/buildstream-win32' ;-)12:19
gitlab-br-botpush on buildstream@74-prevent-artifacts-from-containing-files-in-buildstream-build (by Tristan Van Berkom): 20 commits (last: _options: OptionPool implementation, core project options module) https://gitlab.com/BuildStream/buildstream/commit/058f8ced73042d28472b3270210d625fa6bc8e1012:26
gitlab-br-botbuildstream: merge request (74-prevent-artifacts-from-containing-files-in-buildstream-build->master: Add warnings when staging to /buildstream/build) #93 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/9312:26
ssam2ok to use the new docker image in the buildstream-tests repo as well? it's https://gitlab.com/BuildStream/buildstream-tests/merge_requests/1812:41
gitlab-br-botbuildstream: issue #100 ("Avoid package upgrades during CI") changed state ("closed") https://gitlab.com/BuildStream/buildstream/issues/10012:42
tristanssam2, yes please fire away !12:50
* tristan presses merge button12:51
tristanbeat you to it I guess12:51
*** tiagogomes has quit IRC12:53
ssam2ah thanks12:55
persia+1 on using "latest" with logs, for repos under control of the same project team.  Doing that with foreign repos is dangerous (as those aren't under project control), but for native repos, it makes life so much easier not to have to fuss about upgrading foo every few days and untangling the resulting integration issues because latest bar hasn't been tested with latest baz before.13:01
tristanpersia, my main concern was that latest tag moving is an explicit action13:02
tristannot something that changes (under our control is still better, but different meaning)13:02
persiatristan: In that case, I'm not +1 anymore.  I believe CI should try to integrate master of A against master of B, as otherwise one has a potential headache when moving one of the goalposts.13:05
tristanNo.13:05
tristanUnaccepted :)13:05
persiaTo me, the entire point of CI is that one doesn't have a manual integration step when e.g. redefining "latest".  That said, I know I'm not in a majority school of thought here, so :)13:05
tristanpersia, They both have to CI against eachother - but if a CI for a merge request of buildstream code fails - I need to know with certainty that it was tested against the same thing which passed the last time13:06
tristanI.e. "The content of this commit broke the CI"13:06
tristanNot "The random content on which this was tested"13:06
persiaI think you and I are violently agreeing here.13:06
tristan:)13:06
persiaI define "random content" as "things in repos outside project control".13:07
persiaAs such, any test should be against static snapshots of "random content", occasionally updated.13:07
tristanIn this case, we're talking about a docker image that is auto generated from upstream repos13:07
persiaBut, for two repos under project control, both should be automatically constantly updated as master.13:07
tristanWe control the creation of the image... but if it's "rolling" by itself... I dont want to point to "latest" of it.13:07
persiaAnd if a commit breaks, it doesn't matter if it is a commit to foo or bar, which ever commit doesn't pass the test is the bad one.13:07
persiaAh, if the image isn't deterministic, then I agree.13:08
persiaIf it is, then I don't.13:08
persiaI suspect you agree with me, despite the apparent argument :)13:08
tristanRight, so the situation now, is the other gitlab should do CI when we trigger the thing... and if that fails; we gate the update of "latest" on passing the buildstream tests13:08
tristaniiuc13:08
jonathanmawtristan: I'm picking up https://mail.gnome.org/archives/buildstream-list/2017-September/msg00003.html. Is "buildstream-plugins" a good name for this repo? iirc there was discussion on whether to have gstreamer-like *-plugins-{base,good,bad}13:09
tristanHowever of course, noticing that the latest build of fedora packages breaks buildstream, would probably also mean we need to fix buildstream in a back-compat way13:09
*** tiagogomes has joined #buildstream13:09
tristanMyeeaaaaah... I dunny13:09
persiaWhere the migration of "latest" must pass against latest BuildStream, and a merge to BuildStream must pass to latest "latest".  Yes.  I presume there is tooling that regularly rebuilds "latest" and proposes merges?13:09
tristanjonathanmaw, I was skeptical of that name13:09
tristanespecially if there was going to be more than one13:10
jonathanmaw"buildstream-external-plugins" probably describes what it's going to be most accurately for the present13:10
tristanAlso, I wonder if we want separation between debian specific stuff... and "stuff that we dont think is stable enough yet"13:10
persiabuildstream-contrib?13:10
persiaMaybe with "devel" and "stable" directories?13:10
tristanboth buildstrem-contrib and buildstream-external-plugins say nothing of the content except that they are external to the main repo13:11
persiatristan: Yes :)  Maximum flexibility.  Once the content is comprehended, we can refactor, no?13:11
tristanBut then again... maybe we dont have to care so much - because we can change that with a bit less friction than changing stuff with buildstream repo13:11
tristanyeah I think I'm saying what persia just said13:11
* persia also13:12
tristanwe have a tendency of violent agreement :)13:12
persiaHelps iron out the details.13:12
tristanAnd keep life spicy13:12
tristan*keeps13:12
persiaWhy don't lions eat elephants?  Have you seen elephants dance?13:13
tristanHow about 'bst-external' for now ?13:14
persia+113:14
tristanI like the bst abbreviation, and external captures the loooooooooooooooooooooong buildstream-external-plugins meaning13:14
persiatristan: Do you want devel/stable subdirs?  Some other taxonomy?13:14
tristanAlso project using these plugins will have to type out the entire name of the repository they are using plugins from13:15
tristanwhich is a good reason to not have suuuuuper long names13:15
tristanpersia, not for now; and I dont believe the current structure supports that13:15
tristancurrently plugin discovery from pip installed modules (only discovery we have for now) - is one name, one directory of plugins, in one repo that gets installed13:16
tlatertristan: Multiple repos are supported :)13:17
tristantlater, "repos" ?13:17
tristanexplain13:17
tlaterYou can have multiple plugin repositories13:18
tristanyes13:18
tristanAnd you can depend on multiple external plugin repositories13:18
tristanCorrect ?13:18
tlaterYes13:18
* tlater thought you were implying that you can't13:18
tristantlater, can a single repository have plugins living in separate subdirectories ?13:18
tlaterYes13:19
tristanAh, so it is supported13:19
tristanWe *could* have some split there then, but I dont really care for it if anyway we might change it13:19
tlaterThe plugin project structure is pretty free form, anything that you can point to using python modules.13:19
tristanAlso "devel / stable" would not be the right structure13:19
tristanpersia, it would rather be "devel / debian"13:20
persiaWIth the idea that any coherent collection of plugins from devel would get a new top-level directory?13:21
persiaIf so, I'd hope that was documented in the README, as otherwise it makes "debian" look sorta awkward and lonely.13:21
tristanor be migrated to buildstream proper when we consider it stable, if it's widely used enough and general purpose enough13:21
persiaRight, of course.  I meant only the things that clearly didn't belong in core.13:21
tristanYeah; I guess I like using a purpose-named directory for purpose-specific things, because...13:22
tristanWhen if one day we decide we want to chop it up into separate repos; we'll already have that structure13:23
tristanbut... I'm really nit picking about something I'm *mostly* ambivalent about at this point13:23
jonathanmawok, shall we stick with bst-external for the time being, containing both the dpkg elements and the x86image element?13:23
persiaYes, plus git, making chopping and reorganising history easy.13:24
tristanI do *feel* that devel / stable sends an incorrect message about the purpose of the repo, though13:24
persiajonathanmaw: Please.13:24
tristanjonathanmaw, yes +113:24
persiatristan: If you don't consider "debian" stable, why isn't it "devel"?13:24
tristanpersia, Actually, it's a good point that I dont really think about the "debian" stuff as "stable", I wasnt really thinking of that aspect13:25
tristanBut it's not the driving factor for me to not want it in buildstream repo13:25
tristan(but it indeed, would be another good reason to not want it _yet_, if we wanted it at all)13:25
persiaI think BuildStream core shouldn't contain anything specific to any distro or project.13:26
tristanExactly, thats the driving factor13:26
persiaSo I agree with that, but I think that if one uses "devel", all the devel stuff belongs there, and anything non-devel is inherently understood as different by folk looking at the repo.13:26
tristanpersia, ok so in this case, we can actually say that all of this stuff is experimental13:26
persiaand just toss it all in one bucket, with a READMe talking about experimentality?13:27
tristanAnd maybe we're going to want to put distro specific stuff in their distro specific repos, and split them up, when they are better tested and API more stable13:27
persiaIf there are good bits, people should adopt them and maintain them elsewhee, in a repo under stricter governance and stronger CI?13:27
tristanSo maybe when we get debian stuff more tested and refined, it can graduate to somewhere else ?13:27
tristanpersia, that approach also solves some API issues, I.e. once we're done with it; and put it somewhere that is "stable"... projects need to explicitly ask for the new plugin set13:28
tristanwhich is a good thing in a way right ? (less surprises)13:28
tristanThen we could change `bst-external` for `bst-experimental`13:29
tristanAnd seems all neat and tidy ?13:29
tristanMaybe x86Image will come back into buildstream, or maybe it will go into a repo called... heheh ... "bic" !13:30
persiaLet's stick with -external.  Reduces the amount of jonathanmaw's patience we burn today.13:30
tristanthen there will be mic, wic... and bic !13:30
* persia had happily spent many years not thinking about mic, and now needs to step away from the computer13:30
tristan:)13:30
*** tristan has quit IRC14:04
gitlab-br-botbuildstream: Tristan Maat created branch 108-integration-tests-not-idempotent-and-self-contained14:41
*** bochecha has quit IRC15:00
*** bochecha has joined #buildstream15:04
tlaterIn regards to issue #98 (C-c doesn't kill interactive processes) - it seems that what's happening is that we kill the process running inside a child python process, but said child python process doesn't die for some reason, which means that our process never realizes its grandchild died.16:26
tlaterSo it seems like all of that is entirely outside our control16:27
tlaterThe child process is launched by Popen(), and new_session doesn't change anything... Maybe shell does?16:28
jonathanmawhmm, while trying to make the dpkg element work as an external package, I'm getting https://pastebin.com/zjddC8K0 when I try to build a dpkg_build element16:28
jonathanmawI'm not entirely sure I did it correctly, but I changed the element name from "dpkg_build" to "BuildStream-external:dpkg_build"16:28
jonathanmawI know the documentation builder couldn't handle package names with hyphens in, maybe something similar's happened here16:29
tlaterjonathanmaw: BuildStream-external is supposed to be the pip package name, I'm not sure if that's correct - though the traceback definitely shouldn't be happening.16:30
jonathanmawit seemed to be unable to find the superclass. As an experiment, I tried to import sys and make it sys.exit() with a useful message, and it complained it couldn't find "sys"16:30
jonathanmawand when I tried importing sys in the body of the text, it claimed it couldn't find _import_16:31
jonathanmawwhich is very strange16:31
*** tristan has joined #buildstream16:31
tristanjonathanmaw, from the logs... yeah, if we're not allowed hyphens, I guess underscores16:35
tristanI dont know if that's the problem or not, fwiw; just saying, its not the first time I wanted a hyphen but python stole it away from me16:36
tlaterIt looks like this is might happen if the element plugin isn't defined in the plugin package.16:37
tristanregarding ^C... I think it will abort for certain if we unshare the pid16:39
tristanbecause our killing of the indirect subprocess of bwrap ensures this16:40
tristantlater, however; I have a sneaking suspicion that you may have left things behind with cross_platform because of file renames, and not checking that you had exactly the last copy before the merge16:40
tristanthat happened for something else already16:41
tristantlater, it would be good to verify for sure that this ^C thing is not one of those16:41
tristanjob control is the hardest part of all of this so far16:41
* tristan curses unix signals16:41
tlaterAlright, I'll double check, though I made sure to use a fresh copy of the file during the rebase16:42
tristananother thing to *note*: We're not doing it right16:42
tristanI am sure I've debugged this numerous times, and was pretty confident that we had a pretty functional terminal enough16:42
tristan(the side effects were not this severe at all)16:42
tlaterWhat's the not doing it right part?16:43
tristanThe proper way to do this... is some weird thing about providing a proper console device to the child namespace, and having a side process doing IPC with it16:43
tristanthat was from Dr Richards in #kernelnewbies on OFTC16:43
tristanwhich, if you can manage to tease good info from that channel... is a decent resource for all this namespace complexity16:44
tristanshort of digging through kernel code :)16:44
tlaterHeh, let's hope that's not required for python multiprocessing.16:45
tristanwell its required for having a fully functional terminal16:45
tristanin a child namespace16:45
tristanthe definition of that is ... not sure16:45
tristanbut it does cause either bash or dash to complain about it16:46
tristanjob control is at least no disabled with bash, and that's because of the start_new_session thing16:46
tristan(i.e. if we inherit the same process group, then bash can deal)16:47
tristancreating a new group iirc means no job control in interactive shells16:47
tristanwhich had the opposite effect of... I'm running a shell, and when I launch something... and press ^C... EVERYTHING goes down immediately16:47
tristan(lets just say... the water is deep and there be dragons)16:48
tlaterKernel dragons, in fact!16:48
* tlater will look into fixing the potential regression first, we can worry about figuring out the "proper" tomorrow/later :)16:49
tristanyeah if you could verify it's not a regression that would be really good16:50
tristanand verify that your port has not fallen behind what was in master at the time in any other way either, also important :)16:50
*** ssam2 has quit IRC16:52
tlaterjonathanmaw: You may have also forgotten to set the 'entry_points' in setup.py16:55
tlaterI suspect the issue is that you have a plugin package, but no entry point for the actual plugin16:56
jonathanmawtlater: I'll have to check that it's correct, but it was your work originally :P16:56
* tlater didn't consider this edge case16:56
tlaterDamn, that's weird16:57
jonathanmawit's definitely an avenue of investigation for tomorrow. ta tlater.16:57
tlaterAlright :)16:57
*** jonathanmaw has quit IRC16:58
*** anahuelamo has quit IRC17:03
*** tlater has quit IRC17:11
*** persia has quit IRC17:30
*** persia has joined #buildstream18:07
*** jude has quit IRC18:18
*** tristan has quit IRC18:31
*** jude has joined #buildstream20:30
*** jude has quit IRC22:06
*** jude has joined #buildstream22:07
*** jude has quit IRC22:17
*** david-mora_ has joined #buildstream23:52

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