IRC logs for #buildstream for Thursday, 2017-07-06

*** tristan has joined #buildstream08:03
*** tlater has joined #buildstream08:28
tlaterMorning o/08:36
tlaterMy merge request is up, tristan: https://gitlab.com/BuildStream/buildstream-tests/merge_requests/808:38
*** jonathanmaw has joined #buildstream08:50
*** ssam2 has joined #buildstream09:21
tristantlater, why the extra leading space in 'image:  samthursfield/buildstream:0.1-20170621.1' ?09:24
tlaterOh, whoops, I used that to trigger the CI when it was stuck at some point09:26
tlaterThe space is gone now :)09:53
jonathanmawtristan: looks like I need a moderator to approve my subscription to buildstream-list09:57
jonathanmawAIUI only you or jjardon can approve me09:57
ssam2that doesn't seem right09:59
ssam2it should be a public mailing list09:59
ssam2what's the exact issue you're getting?09:59
tristanjonathanmaw, didnt I reply to your email ?10:03
tristanjonathanmaw, anyway, I tried to login, jjardon[m] created the ML and I dont know how to login to admin10:04
tristanjust please subscribe to the list first, then you wont have any problems10:04
jonathanmawtristan: I tried to subscribe and it seems I'm still waiting approval. I've twice tried to send an E-mail to be notified that it's subscriber-only.10:04
tristanreally ??10:05
tristanthat is weird10:05
tristanno no... it is *certainly* subscriber only10:05
tristanbut approval is automatic10:05
ssam2emails that you sent before you subscribed won't be automatically approved just because you subscribed10:07
ssam2probably easiest to resend them once you have subscribed to the list10:07
tristanssam2++10:09
jonathanmawssam2: afaict I am in some kind of limbo between being subscribed and not10:09
jonathanmawsince I got an E-mail that someone (me) was trying to subscribe me to the mailing list I was already on.10:09
ssam2weird10:10
ssam2tristan, you could possibly ask for the list admin password in #sysadmin10:10
ssam2since you are an admin10:10
ssam2jonathanmaw you should be able to check your subscription status at https://mail.gnome.org/mailman/listinfo/buildstream-list ...10:11
ssam2or try unsubscribing and resubscribing or something10:11
* jonathanmaw tries unsubscribing10:12
tristanjuergbi, so I thought on that more and as you see, wrote too many emails, sorry :)10:16
juergbiprocessing now ;)10:17
tristanjuergbi, the one I sent today contains thoughts I was having while running on the treadmill at ~1:30am... I have a feeling we're missing an ingredient, which is the related project that is being built10:17
tristanSo first, yeah; I think we're over paranoid with the tunnel vision that "This can be built against any version of these dependencies", because it omits the part that, in any case the project will dictate exact revisions of everything10:18
tristanHowever10:18
tristanIt is also true, that you may have multiple projects, which build the same thing against entirely different revisions of things10:19
tristanthat is a bit mind boggling to think about10:19
tristanIt renders it literally impossible to even have a concept of "Which weak key artifact is /closest/ or /most recent/ for my artifact"10:20
tristanalthough I'm not sure it matters in practice10:20
tristanAh10:20
tristanscratch that; in *any* case, at least artifacts are stored within a "project name" namespace10:20
tristanthat helps things a bit10:20
tristanI think10:21
juergbiyes, it's possible that i'm a bit paranoid about this. i just want to make sure we're not skipping a more reliable solution10:22
tristanI admit I dislike the idea of adding more than one 'ref' to sources... especially considering that a "ref" is an abstract thing which a source only names "ref" by convention10:23
tristanbut also, I'm not sure if I've thoroughly understood (or if you have either) exactly what you are proposing10:24
juergbibtw: i wouldn't add a second tracking reference. you would typically keep both refs on the branch you're tracking10:25
jonathanmawI unsubscribed, and re-subscribed. I've got the Welcome to the "Buildstream-list" mailing list E-mail and everything10:31
jonathanmawand my third try also needs moderator approval10:31
tristan:-/10:33
juergbithe mailman admin interface should show why10:33
tristanjuergbi, yeah, exactly :-/10:33
tristansigh, so off to #sysadmin to ask for a password then10:34
tristanjjardon[m], do you have that password, though ?10:34
tlatertristan: Is the CI finished now?10:34
tristantlater, \o/10:35
tristanlets move on !!10:35
tristanI havent seen it run on buildstream repo yet (with latest changes)10:35
tristanbut should be good10:35
tlaterI just did10:35
tlaterIt passed \o/10:35
tristannice: https://gitlab.com/BuildStream/buildstream/pipelines/960038910:36
tristanhttps://gitlab.com/BuildStream/buildstream/-/jobs/2131027310:36
tristancute10:36
tlaterSo, for developer workspaces, should this be another command that creates a local copy of an element's source and allows the user to edit and build that as a a replacement for the original?10:38
tristantlater, https://wiki.gnome.org/Projects/BuildStream/Roadmap/Workspaces10:38
tristanbasically yes10:38
tristantlater, so long as the workspace is "open", the workspace should override the element source(s)10:39
tristanThe part that is mostly unclear here to me... is what do we do for elements with more than once source ?10:39
tlaterWe'd just need to check out all those sources, no?10:40
tristanShould the workspace be Source based instead of Element based, and have a simple syntax for elements with only one source (and otherwise require a full specification if the element has more than one source) ?10:40
tristanthere are a lot of facets to this10:41
tlaterThere's also the question what happens when multiple elements depend on the same source... So yeah, it can't be element based.10:42
tristantlater, first of all, for a vcs based source; ideally I want the checked out source to be routed to the real origin (I think we discussed this)10:42
tristantlater, on that I think you are wrong10:42
tristani.e. multiple elements -> same source10:42
tlaterWhy can't that happen?10:42
tristanin the data model, even if they happen to be the same upstream source, they are separate sources10:42
tristanelements own their sources, they do not refer to a shared source10:43
tristanit's a rather corner case10:43
tlaterWould it make sense to share a source for the developer workspace?10:43
tristanbut there is another side effect of that: https://gitlab.com/BuildStream/buildstream/issues/510:43
tristanI personally feel like that is going to add complexity to the thing, for relatively small added benefit10:44
tlaterWell, if it ever turns out to be useful that can be added later, I suppose.10:45
tristantlater, however; one way you can look at it is... for instance if I say `bst workspace open <element.bst> <directory>`10:46
tristanthen say, by default it will try to put the source in that directory10:46
tristanbut it could also have `bst workspace open --no-checkout <element.bst> <directory>`10:46
tristantlater, i.e. you could hardwire yourself, two separate elements to have a workspace opened on the same linux directory ?10:47
tlaterYeah, that works10:47
tlaterI guess technically you could also have a --force flag which just uses that directory for the source even if it contains something10:48
tristanIn that case, we need to be careful to copy files into the staging area (and not hardlink them)10:48
tristanin case files are being modified by parallel builds, we wouldnt want that happening10:48
tlaterThat's almost a bit unfortunate, but probably easier than figuring out if the source is shared.10:49
tlaterYou also mentioned you wanted bst to keep track of changes on top of whatever VCS may be part of the source?10:50
tristanyeah anyway we already avoid hardlinks at source staging time10:50
tristanthe git source has an explicit --no-hardlinks thing10:50
tristanstaging sources is not really a bottleneck10:50
tristantlater, nah... we discussed that but, we want instead to just generate the Source's unique key based on a recursive directory checksum10:51
tristanthat will 'just work' for any kind of source10:51
tristanSo asides from all of this10:52
tristantlater, I think that we will need to start storing data in `<project-directory>/.bst/`10:52
tristanI'm not sure what else we could possibly want this for at the moment, but we'll want to store data about which workspaces are open (and where) in say: <project-dir>/.bst/workspaces10:53
tristanit cant really go into ~/.cache/buildstream10:54
jjardon[m]tristan: sorry, what password?10:56
tlaterPassword for the buildstream mailing list admin interface10:59
tristanjjardon[m], yeah that one... having trouble with jonathanmaw's subscription here11:01
* tristan looked in his emails for 'buildstream-list' but did not find any "Welcome, you are an administrator, here is your password" kind of email11:01
tristanthe list says I'm an admin, though heh11:01
tlatertristan: Should the `bst workspace` command check out all sources of an element or allow picking individual ones?11:05
tristantlater, so yeah I was thinking on that... others please feel free to chime in...11:05
tristanmy feeling right now is that it should be individual sources11:05
tristanSo... I think that for instance, you could optionally specify `--source 0` to specify the first source of an element11:06
tristanIf an element has only one source (99% of the time that is the case anyway)... then you dont need to specify it11:06
tristanIf an element has more than once source, and you fail to specify that, then bst errors out and says "Tell me which source you want, you ambiguous dimwit !"11:07
tlaterThere's no way to give the sources names, is there?11:07
tristanNah sources are unnamed11:07
tristanThere could, possibly, be a way to do it with the url, but even that is not reliable11:08
tlaterMight share the url with a different ref, I suppose.11:09
tristanbecause that is again, only named 'url' by convention11:09
tristanSo also... now I've said this a few times... but I'm starting to be skeptical about it...11:10
tristanI *want* a checked out source to be routed to the real origin, in the case of a VCS11:10
tristanI mean, the user would want that by default11:10
tristanbut11:10
tristanis it that bad if we dont do it ?11:10
tlaterIt's a bit of a pain to route it manually, if needed.11:11
tristanBecause as it stands, we can easily just stage the source into a directory, and we dont have to modify the Source API or anything11:11
tristana bit of a pain yes11:11
tristangit remote set-url origin <url>11:11
tristantlater, I'm also considering how painful it would be to support for every possible source type, though11:12
tristanso we mirror things from their origin, and we do so if possible with bare repos11:12
tristanand we want to move checkout from that, and reroute it's origin11:13
tristanis that going to be easy to do for bzr.... ? .... or an eventual svn or cvs ?11:13
tristantlater, ok so here's what I think we do... we leave that part out11:14
tristantlater, because implementing that is quite orthogonal to the rest of the work11:14
tristanSo, if it turns out we can do it and its very desirable, we can do it as an enhancement, without effecting the core design of workspaces really11:14
tristanMakes sense ?11:14
tlaterYeah11:14
tristanjonathanmaw, I got into the admin....11:15
tristanjonathanmaw, I approved your last post, and discarded the first two11:17
tristanjonathanmaw, but looking at the membership, nothing looks odd about your subscription11:17
tristanthe only thing I can see different from the others, is you dont have a "name" associated to your email address11:19
* tristan puts your name11:19
tlaterDo multiple workspaces of the same source make sense? If only one can be "open" at a time that won't cause issues, I don't think.11:22
persiaIf a user is expected to be able to switch between workspaces (e.g. having different workspaces for different integration projects), then I would assert the answer is "yes".  There are a number of situations when working on two different systems that a user would want to have two different locations for a source with the same identifier (and perhaps local modifications, although, as noted above, that may affect things).11:32
tristantlater, I think the same approach we discussed before addresses this: I can have two workspaces for 'linux' and for 'linux-api-headers' open to the same directory, or I can have them open to separate directories, it's my choice11:34
tristantlater, also, certainly I want to be able to open multiple workspaces11:35
tristanAnd also, there is no issue if I have separate checkouts of buildstream projects, which open workspaces to the same source directory11:35
tristanof course, I may hurt myself in the process11:35
tristantlater, one thing which certainly should be done, is in the beginning of a build, the summary should mention what workspaces are open and point to what local directories (if I have any open workspaces)11:36
tlaterI specifically meant two checkouts of the same source in the same element - it gets ambiguous which one should be used for the build.11:36
tristanAh11:36
tristanNo, only one11:36
tristantlater, I think this can be handled with sane command line options to the workspace commands11:37
tristanfor instance... when closing the workspace, perhaps you want an explicit --delete option if you expect it to actually remove the directory11:37
tristanbut by default, leave the user's work in tact11:38
tristanand then when calling `bst workspace open` and the element/source in question is already opened, bail with a warning, unless --force is specified11:38
tristansomething like that11:39
tlaterAlright11:39
tlaterWhy only one though?11:39
tlaterIf we can have multiple closed workspaces, but only one that's open, we get around the ambiguity11:39
tristanit's less information to manage, and does not deter from the UX afaics11:39
tlaterOkay :)11:40
tristantlater, my view of a closed workspace, is a workspace that buildstream knows nothing about anymore11:40
tristanit may be a directory the user has on disk11:40
tristanbut nothing more11:40
tlaterNo re-opening?11:40
tristantlater, that would be `bst workspace open --no-checkout <element> <directory>`11:40
tristanor such11:40
tristanwould be the same, basically just opening a workspace on a directory you already have11:40
tlaterPerhaps add a --reopen that does the same thing, but only if the workspace has been closed before.11:41
tristanit may just be a matter of wording, but --reopen and --open-on-this-directory-i-prepared-myself... is the same thing11:41
tristanmakes things simpler11:41
tristantlater, avoid tracking too much state11:42
tlaterI'd think --reopen makes more sense from the user's perspective.11:42
tristanbut implies we have to remember about a closed workspace11:42
tlaterI guess adding a note 'can be used to "re-open" a closed workspace' to the help menu might achieve the same thing.11:42
tristansure11:43
tristantlater, and of course, load/save everything in yaml :)11:44
tristanyaml all the way11:44
tlaterHeh, of course :)11:47
gitlab-br-botpush on buildstream@test-host-target (by Tristan Van Berkom): 2 commits (last: Add --host-arch and --target-arch, and 'host-arches' conditional) https://gitlab.com/BuildStream/buildstream/commit/039062218957bdae6473b482adc8800fd9be7ed312:10
tristanssam2, I'm running it through the CI one time and want to merge it...12:14
tristanssam2, can you also please prepare a separate patch to update: https://buildstream.gitlab.io/buildstream/format.html#architecture-conditionals ?12:15
tristanssam2, perhaps a subsection in there that briefly outlines 'host-arches' prefixed with a sort of 'normally you dont have to worry about this'12:16
ssam2doh, i thought i did that12:17
ssam2ah, I did but very briefly12:17
ssam2There is also a ``host-arches`` attribute, which operates in the same manner but12:17
ssam2follows the *host* architecture rather than the *target* architecture.12:17
ssam2...i could expand that I guess12:17
tristanoh did I miss that in the patch ? sorry12:18
* tristan was using git show to look through it and didnt see it there12:18
tristanssam2, ehh... it's not amazing but it's there :)12:20
persiaJust to check, does BuildStream distinguish between all of "host architecture", "build architecture", and "target architecture"?12:20
tristanfeels a bit terse and misguiding12:20
tristanpersia, currently no, only host and target really matter I think from buildstream's perspective12:20
ssam2yeah.. i didn't know how to explain further without going much deeper into detail12:21
tristanpersia, afaics, it provides all the context which build instructions need to provide the three to the toolchain for a cross build12:21
persiaIn my past experiences, I've had many times I needed to do Canadian Cross.  It isn't that different from basic cross support, but not adding it early makes it hard to untangle later, if something needs support.12:21
tristanand host-vs-build-vs-target is only really needed at the toolchain level12:21
tristanpersia, ssam2 is technically doing a canadian cross (well it runs the same way if not technically called that), to cross build a native compiler12:22
persiaAh, so to do Canadian with BuildStream, one would have host as host, target as build, and then the system being built would be a cross compiler?12:22
tristanas I recall, there are 2 phases (before compiling the compiler again natively on the target)12:23
tristanyou cross compile using an 'unknown' in your target triple12:23
tristanand use the 'unknown' triple to cross build the native12:24
tristanI guess buildstream would need another arch option, if it were required to build a real canadian cross12:26
tristani.e. build in an x86_64 runtime; a cross compiler to run on i386 and produce arm12:27
tristanyou'd need a way to specify that12:27
tristanbut, I'm not sure we'll ever see the day that we require that, and if we do, we can add support (but, I hope not, I think cross building a native compiler for target should be enough)12:28
gitlab-br-botbuildstream: Tristan Van Berkom deleted branch test-host-target12:30
persiaSample use case is to use some linux server to build a system for delivery that runs on corporate desktops, and is used to build target systems.12:30
gitlab-br-botpush on buildstream@master (by Tristan Van Berkom): 2 commits (last: Add --host-arch and --target-arch, and 'host-arches' conditional) https://gitlab.com/BuildStream/buildstream/commit/039062218957bdae6473b482adc8800fd9be7ed312:30
persiaWhether that's "real canadian" or not is trickier :)12:30
gitlab-br-botbuildstream: merge request (sam/host-and-target-arch->master: Add --host-arch and --target-arch, and 'host-arches' conditional) #34 changed state ("closed"): https://gitlab.com/BuildStream/buildstream/merge_requests/3412:30
ssam2the only use of --build at GCC level is to work around bad autodetection of the build machine12:30
ssam2you obviously can't just pass --build=powerpc-... and magically turn your x86 machine into a POWER one12:31
ssam2but we can work around that in the gcc.bst file, it wouldn't require the end user to pass in a flag to buildstream that we then pass on to GCC12:31
ssam2or rather to GCC's configure script12:32
persiaWell, you *can* magically change the arch of your machine with linux (qemu-static+binfmtmisc), but I was thinking more of the case where the BuildStream user needed to build a system that was itself a cross-compiler, perhaps on a different platform than that used by the cross-compiler users.12:34
ssam2persia, sure but not by passing flags into GCC12:34
ssam2right now I think it would the same way that it did with other Baserock build tools, i.e. separate .bst files for the cross toolchain12:35
tristanssam2, you could achieve the same with variants12:36
persiaRight.  That makes sense.  BuildStream only has "host+target": if the user wants something with a longer chain, the user would e.g. cross-compile a cross-compiler.12:36
tristanssam2, and one set of bst files, have the variants define variables conditional to what you want to build12:36
ssam2can you include 2 variants of the same .bst file in a single pipeline ?12:37
ssam2if so, that should work indeed12:37
tristanssam2, nope12:37
tristanssam2, but you would anyway need two separate stages right ?12:37
tristanssam2, first one is your regular cross compiler and second is the cross compiled cross compiler12:38
ssam2yeah indeed12:38
tristanand those dont really go well into one reused element anyway12:38
tristanmkay, so finally figured out the sshd_config and am now getting a failure to load the OSTree typelib, which does not make sense because; buildstream loads it fine in the same environment12:54
ssam2py2 vs py3 ?12:55
tristannah, ostree-push is already python312:59
tristanok13:19
tristanthat works well13:19
tristanturns out, on my client, I was getting a traceback from the server13:19
tristanand the server needs ostree girs installed in /usr13:19
tristanor, needs to have GI_TYPELIB_PATH in the environment executing ostree-receive13:19
tristanbut I dont know how to do that13:19
tristanAnyway13:20
tristanpushing the linker-priority.bst artifact, which was taking like 10 to 15 minutes to eventually fail with sshfd13:20
tristancompletes in seconds with real ostree-push13:20
tristangood news13:20
tristanbut I'll have to rework it13:21
tristanSo, july 6th, hmmm13:21
tristangrind time :-/13:21
tristanjuergbi, alright, I'm going to try to nail that from now until monday13:22
tristanjuergbi, I'm going to make the buildstream.conf specify 2 urls for artifact shares, one for pull and one for push; pull will be http[s] only, push will be ostree-push13:23
tristancause, its just unusable for me unfortunately :-/13:23
juergbitristan: using temporary archive-z2 repository or does it work with bare-user as well?13:26
tristantemporary archive-z213:26
tristanso compress -> push -> delete13:27
juergbiok. i guess there isn't really any other option13:27
* tristan is trying on the bare-user repo right now but doesnt expect it to work13:28
tristannah13:29
tristanit gives me a remote stack trace13:29
tristanand the ref doesnt appear13:29
tristanjuergbi, the compression though is really quite fast for a single artifact13:30
tristanprobably reduces overall transmission time anyway13:30
juergbiSSH typically uses transparent compression13:30
juergbibut the sshfs approach is definitely much slower overall13:31
gitlab-br-botbuildstream: merge request (jonathan/dpkg-build->master: WIP: Jonathan/dpkg build) #37 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/3713:31
tristanok so for now, I have changed the ssh config so the sshfs approach wont work for now with same url13:32
tristanjuergbi, if you want to use sshfs in the meantime, use artifacts@gnome7.codethink.co.uk:/srv/artifacts/repo13:32
tristanthat would work13:32
juergbiok. me alone using it might not be too useful, though ;)13:33
tristanyeah, well lemme get through my hack... and then lets collect ssh keys from the team first13:34
tristanwe should also think about some x86 autobuilders13:34
tristanto populate that cache with GNOME builds, might bust the disk space though13:34
tristananyway we're testing in this phase13:34
ssam2cache expiry is something to think about fairly soon13:35
tristanssam2, indeed13:35
juergbiyes13:35
tristanits not the easiest of problems13:35
juergbishould get some Ryzen 7 ;)13:35
tristanon the other hand, the more we get reproducible builds, the less that cache grows13:35
ssam2but to be fair, for cache.baserock.org we spent years just doing some shell one liner that deleted artifacts over a certain age13:35
ssam2the same could be done on this cache -- it's a cache so deleting too much isn't a major issue13:35
juergbiyes, but fully reproducible builds might still be a bit out13:36
tristanjuergbi, apparently flatpak is faaairly close... but yeah... only for "some stuff" :)13:36
tristanI think there is a hack specifically for python13:36
tristanbut I dont expect most of the C stuff to be reproducible13:36
ssam2most C stuff generally is, I think it's only things like embedding timestamps that causes problems13:37
ssam2as long as you use the same compiler, that is13:37
juergbiyes, and compiler versions13:37
juergbitimestamps are also in things like generated man/infopages, though13:37
ssam2but we do use the same compiler as we have fixed host tools13:37
tristanI thought there was an issue with uninitialized static buffers and debris in your ram13:38
juergbii have specs somewhere where i have a mostly reproducible base system13:38
tristandepending on what scope it's declared in13:38
ssam2we investigated this for baserock definitions a while ago and found that maybe 50% of things were already reproducible, with no effort at all13:38
ssam2and debian-reproducible have been hard at work in the intervening 2 years13:38
tristanwell, sounds quite promising then, actually13:38
juergbiyes, debian is pretty far, afaik13:38
juergbii don't expect uninitialized buffers influencing the build result13:39
* tristan seems to recall reading something about that on reproducible-builds website13:39
ssam2i think the main issue is the last 10% is another 90% of the time13:39
tristanI did give that a read some months back13:39
tristani.e. regarding buffers13:39
tristananyway, maybe it had to do with some specific contexts13:40
tristanafair, the way the C code is written can influence it's reproducibility, but maybe compilers are fixing that13:40
jonathanmawargh! I forgot my mailing list etiquette and replied directly to you, instead of to the list13:52
*** tristan has quit IRC13:52
jonathanmawand it looks like I'm still in some kind of weird mailing list limbo. my proper reply (to the list instead of tristan) is awaiting moderator approval13:57
*** tristan has joined #buildstream14:19
tlaterAm I overlooking a handy checksum computation function anywhere in bst or do I make one?14:39
ssam2python hashlib ?14:40
tlaterI don't think it has anything that computes a recursive hash, that's what I'm looking for.14:41
tlaterAh, local sources have an implementation for this... It ignores file permissions though, as far as I understand, so changes to only permissions would collide.14:51
*** jude has joined #buildstream15:37
tristantlater, look at local source16:36
tristanit does exactly what you need, we could make it a utility if that makes sense16:37
tristanjonathanmaw, I know whats wrong with your buildstream-list posts now16:40
tristanjonathanmaw, you are registered on the list as jonathan.maw@codethink.co.uk, as one might expect16:40
tristanjonathanmaw, but for some reason you are sending with From headers as jonathan.maw@codethink.com16:41
jonathanmawaha16:41
jonathanmawlooks like webmail is playing a trick on me16:41
* jonathanmaw subscribes in his secret new moniker16:47
*** jude has quit IRC16:53
gitlab-br-botpush on buildstream@workspaces (by Tristan Maat): 2 commits (last: main.py: Add workspace commands) https://gitlab.com/BuildStream/buildstream/commit/5d40d89f79a9e5cd2a6dad1c0d63e0595e5c60d616:58
*** jonathanmaw has quit IRC16:59
*** tlater has quit IRC17:01
*** ssam2 has quit IRC18:40
*** tristan has quit IRC19:38

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