IRC logs for #buildstream for Tuesday, 2017-11-14

*** mcatanzaro has quit IRC03:43
*** bochecha has joined #buildstream06:52
*** bochecha has quit IRC07:37
*** bochecha has joined #buildstream07:38
*** jude has joined #buildstream08:42
* persia is experiencing frustration with yet another electronic calendar that tries to comprehend timezones and fails to present this to the user effectively08:42
persiaIs the meeting today at 14:00 or 15:00 UTC?08:43
*** anahuelamo has joined #buildstream08:45
*** givascu has joined #buildstream08:48
juergbipersia: 14:00 UTC09:02
juergbihttps://www.timeanddate.com/worldclock/fixedtime.html?iso=20171114T1409:02
persiaThanks.09:02
*** givascu has quit IRC09:05
*** givascu has joined #buildstream09:05
*** valentind has joined #buildstream09:16
*** bochecha has quit IRC09:20
*** noah has joined #buildstream09:25
*** WSalmon has joined #buildstream09:41
*** jonathanmaw has joined #buildstream09:49
*** WSalmon has quit IRC10:02
*** WSalmon has joined #buildstream10:02
*** noah has quit IRC10:03
*** bethw has joined #buildstream10:04
*** adds68 has quit IRC10:09
*** ssam2 has joined #buildstream10:12
*** givascu has quit IRC10:19
*** csoriano has quit IRC10:30
*** csoriano has joined #buildstream10:31
ssam2this test failure is frying my head: https://gitlab.com/BuildStream/bst-external/-/jobs/4016153111:04
ssam2because I can't reproduce it locally11:04
ssam2I guess I can try running that test inside the Docker image that we run the tests in11:04
ssam2ah ok, it occurs in the docker image11:11
*** valentind has quit IRC11:12
ssam2i didn't add an __init__.py ! of course.11:13
tlaterHeh11:19
ssam2juergbi, is your recursive-pipelines branch pushed anywhere ?11:20
ssam2i'm interested to try it out a little if possible11:21
ssam2do people like having the bot notify on every push ?11:33
ssam2or should we limit it to merge requests and issue changes ?11:33
ssam2i'm looking at the bot config to add bst-external and buildstream-docker-images repos to its config11:33
ssam2as well11:33
ssam2but seems like buildstream.git is the only repo where the bot sends messages for each push. personally i find that quite noisy11:34
juergbissam2: not pushed yet, planning to do that soon11:44
ssam2ok. valentind's branch of freedesktop-sdk has two projects, one which depends on the other, so i thought it'd be a fun testcase11:45
juergbibot notifying on every push to master (and stable branches) might be ok, but the notifications of pushes to other branches definitely sounds too much to me11:46
juergbigood idea, might set up a test for this11:46
ssam2hmm, i'm not sure if we can limit push notifications just to master11:48
ssam2currently it notifies about every branch11:48
*** gitlab-br-bot has quit IRC11:53
*** gitlab-br-bot has joined #buildstream11:53
ssam2i've left notifications for the buildstream.git repo as they are, but we should now be notified on issues and merge requests for the bst-external and buildstream-docker-images repos11:56
ssam2meanwhile, review of https://gitlab.com/BuildStream/bst-external/merge_requests/7 would be appreciated :-)11:56
*** tristan has joined #buildstream12:09
* tlater is getting very annoyed at docker :|12:21
tlaterIt takes like 10 minutes to install buildstream12:21
ssam2could you be more specific about what you're doing ?12:22
ssam2docker has multiple storage backends, some of which are very slow12:22
ssam2so might be a config issue12:22
tlaterssam2: Hm, fair, I'm installing buildstream from a volume mounted on my host12:22
tlaterDo you know how to specify a somewhat faster backend for volumes than whatever the default is?12:23
ssam2https://docs.docker.com/engine/userguide/storagedriver/selectadriver/12:23
tlaterTa :)12:23
ssam2overlayfs probably a good one12:23
*** bethw has quit IRC12:25
gitlab-br-botpush on buildstream@97-apply-pep-3102-to-all-public-api-surfaces (by Jonathan Maw): 14 commits (last: Refactor, remove some unused imports) https://gitlab.com/BuildStream/buildstream/commit/cc6e09ce63c7576bd3f258515946e38a945903f413:04
gitlab-br-botbuildstream: merge request (97-apply-pep-3102-to-all-public-api-surfaces->master: WIP: Resolve "Apply pep 3102 to all public API surfaces") #127 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/12713:04
gitlab-br-botbuildstream: merge request (97-apply-pep-3102-to-all-public-api-surfaces->master: Resolve "Apply pep 3102 to all public API surfaces") #127 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/12713:05
juergbireminder, monthly meeting in 55 min in #buildstream-meetings13:06
tristanOh!13:23
tristanjuergbi, one hour before I expected it, is that true ?13:23
tristanor 1h and 55min ?13:24
juergbithe meeting is at 14:00 UTC and it's now 13:24 UTC13:24
juergbiok for you?13:24
tristanoh yeah, it's great13:24
tristan11pm instead of midnight is a bonus :D13:24
juergbi:)13:25
*** bethw has joined #buildstream13:34
*** tristan has quit IRC13:45
*** tristan has joined #buildstream13:55
* persia peers around13:59
juergbimeeting imminent in #buildstream-meetings13:59
tlaterpersia: You mean pers around?14:00
persiaHeh, but no, I was in the wrong place.  I didn't realise we had enough meetings to need a meeting channel (although the lack of bot notices during the meeting might be nice)14:01
juergbiyes, that was the main motivation for the separate channel, iirc14:01
*** xjuan has joined #buildstream14:08
juergbixjuan: are you here for the meeting? please join #buildstream-meetings14:09
xjuanjuergbi, no, not really :)14:09
juergbiok, nm14:10
*** hashpling has joined #buildstream14:23
*** mcatanzaro has joined #buildstream14:29
*** jonathanmaw has left #buildstream14:31
tlaterGah, I'm struggling to get buildstream's tests to run under docker14:45
tlaterCurrently I'm getting ldconfig errors14:45
tlater"Can't find source path /root/modified-buildstream/buildstream/integration-tests/tmp/build/amhello-kzogbjmt/scratch/_/mount: Permission denied"14:45
tlaterWhile running things as root in docker :/14:46
ssam2that's weird. it works for me14:49
* tlater starts again with just ssam2's image14:51
ssam2it looks like a FUSE or possibly bubblewrap issue14:51
ssam2also, are you running with seccomp disabled ?14:51
tlaterssam2: Yup, that was my first intuition14:52
tlaterIt's possible I just borked a container enough for it to freak out like that14:53
*** hashpling has quit IRC15:01
*** sstriker has joined #buildstream15:03
persiassam2: On artifact certification: My initial thought is that artifact should be considered certified if any one of the signatures on the artifact matches any one of the signatures on a whitelist that is configured for the user (possibly inherited from project configuration), and that for many use cases, this is satisfied by a single signature.  The part I don't understand is how the UI is complicated if it permits adding a new signature rather15:11
persiathan replacing a signature if someone wants to certify a previously certified artifact.15:11
ssam2how does someone certify a previously certified artifact in the first place ?15:12
ssam2the initial certification would be done implicitly as part of the build process15:13
persiaI presume there exists some command like `bst certify foo` with optional arguments to indicate the key and/or identity to be used.15:13
persiaIs there an optional argument to *not* certify a result?15:14
ssam2i don't see what purpose that would serve15:14
* persia can imagine many use cases related to iterative debugging where one would actively not want to certify an artifact.15:14
ssam2i don't think users should really be certifying artifacts in the first place15:14
ssam2the goal is for automated builders to be doing certification15:15
persiaIn the Debian world, developers are strongly discouraged from certifying any artifact that would be unsuitable for distribution, because doing so breaks using certifications for authentication.15:15
ssam2if you're developing a new buildstream feature, certainly don't certify or push your artifact anywhere15:15
ssam2but i don't think it's great to add special UI just for BuildStream developers15:15
tristanssam2, I think we can have users signing artifacts, and I suspect that we may also want QA teams certifying already built artifacts15:15
persiaSo, there is a mechanism by which a user can choose to certify or not certify?  (where autobuilders are considered as a special class of user)?15:16
ssam2there has to be some kind of mechanism, yes15:16
tristanssam2, which might involve a pull from one server and promotion to another server, or perhaps promotion of an artifact to a "tested" branch on the same server15:16
ssam2like, just don't have a private key, for example15:16
tristanAlso, I dont think we want to consider that the automated builder and the regular user are "different things"15:16
persiaI don't think it is acceptable to require a user not to have a GPG key in order to not certify things.15:17
ssam2ok, let's step back a bit15:17
ssam2what cases are there for producing an artifact that's "unsuitable for distribution" ?15:17
ssam2bear in mind that if it's in a cache, nobody is going to pull it unless they want to15:17
tristanonly artifacts which we dont push anyway15:17
tristanI.e. workspaced15:18
tristanor depending on workspaced15:18
persiaIn the Debian environment, I usually did it by adding random debug statements into some source code while debugging.  I wanted to use the debug artifacts locally, but distributing them would have been bad.15:18
persiaThey usually also had garbage changelogs, etc.15:18
ssam2ok. That doesn't apply in BuildStream15:18
persiaWhy not?15:18
ssam2someone would have to have exactly the same random debug statements as you in order to pull that artifact15:18
ssam2in which case, pulling that artifact would be correct15:18
ssam2(if they did happen to have exactly the same random debug statements in their code, I mean(15:19
persiaAh, right, because artifacts are inherently unordered, so publishing garbage is safe.15:19
* tristan will leave you to it and wait for another proposal, at which point I'll probably spend at least half a day thinking about it all over again, and a new discussion can start15:20
persiaNext hurdle: there exist a number of use cases for developers to have more than one GPG key.  Is there a useful mechanism yb which the user can specify *which* key to use?15:20
ssam2yes, i think we should make it configurable which key you use to sign15:20
persiaSo, yes, now that I realise that publishing garbage is actively useful, I no longer can think of any reasons not to certify, and if I can choose with which key I am certifying, then all is good.15:21
tristanOr, since the *project* probably comes with the full public keys which are acceptable for validation of that project from that project's artifact share15:21
tristanIt can probably be deduced from the public keys stored in the project itself15:21
tristanwithout burdening the user with config options15:21
persiatristan: That isn't a safe choice, as it blocks key transition.15:21
tristanI'll take your word for it now, but suspect that it might be convenient in a lot of cases15:22
persiaAlso makes it hard for people to publish stuff if they aren't identified as project developers, which breaks various downstreaming use cases.15:22
tristanbut I know you have put a lot of thought into this15:22
persiaI've no issues with adding it as a possible shortcut for convenience, but think it isn't a safe *only* mechanism.15:22
tristanpersia, I dont mean *dont have a config option*15:22
persiatristan: Then I'm not arguing with you :)15:23
tristanpersia, I mean, if you *are* a recognized pusher anyway, why not15:23
tristanI mean why not deduce it, if you are already a well known signer, but anyway...15:23
tristanproblem can be bigger than that, but might be a nice added convenience15:23
tristanI dont expect most developers who are not on a special list, to be regularly pushing stuff, but that might also happen15:24
persiassam2: So, I suppose the thing I want is to choose a signature storage mechanism that would potentially allow multiple signatures to exist if someone later wrote separate tooling to support `bst certify ${ARTIFACT_HASH}`, but there's no reason for the implementation you have described above not to be deployed without having written that.15:24
persiassam2: Do you think that will cause any issues for your implementation?15:24
ssam2there are various ways it could work internally, so i doubt that would be an issue15:25
ssam2and makes sense to make it flexible internally15:25
persiaHaving the internals flexible enough to potentially later support multiple signatures is my only concern.  The UI you describe is so amazingly clean that I'm delighted that the first implementation won't have any sensible way for the user to add multiple signatures as it would only clutter the UI.15:26
persiaAlso, thank you for disabusing me of the concern that there be a requirement for uncertified artifacts: I've spent too many years working with tooling that treated certified artifacts as sacred and meaningful because of the signature rather than the content: this is a far better design.15:27
ssam2i guess the main question about the internals is whether to store signatures in or out of the artifact15:27
ssam2storing them within seems simpler but less efficient. so I guess we should probably prototype that first and see how well it works in practice15:28
tristanI still tend to think signatures belong inside the "artifact"; however once you get into an artifact; there are different things to sign15:31
persiaMy only concern with storing within is whether that breaks hashes: in a content-aware world, I fear changing content for fear it changes the reference to the object.15:31
tristanbut, I could be convinced otherwise given strong arguments15:31
tristanalso, transmission of the signature inside the logical artifact unit ensures an end-to-end nature15:31
tristanwhere the artifact server is not a point of failure in the equation15:32
persiaIn Debian, an "artifact" consists of several files.  Certifications are stored as signatures within the "description" and "changes" files, where these files have checksums for all the other files (as a means of proxying certification).  I don't know if any of the ideas from that can be reused.15:32
ssam2we'd have to sign everything except the signatures themselves, of course15:32
persiaThis is subject to problems in the event of a server failure mid-download, as one might not have the right content, but any mirror of the full set of files in an "artifact" is self-consistent and the certification can be validated.15:33
tristanIn the ostree artifact server, if we had multiple branches to store the same artifacts under, we can "promote" an existing artifact by resigning it and pushing it onto a known branch15:33
tristanor a user branch15:33
tristanat no cost of extra disk space on the artifact server, except for the new signature15:33
ssam2we can also do that with commit metadata15:33
ssam2however, with commit metadata the identity of the commit stays the same15:33
ssam2which could be a problem, as how do you know if there are new signatures ?15:33
persiatristan: I don't understand that use of "promote" after developing my appreciation of the content-aware nature of buildstream artifacts.15:33
tristanI am afraid this conversation might be getting deep into treating ostree as something we require, trust and are tightly coupled with15:34
tristanwhich we are not.15:34
ssam2that does affect the design, indeed15:35
tristanI just mean, if we *did* add signatures to the abstract artifact storage unit (the definition of the content of an artifact), with ostree, it would be costless to store it multiple times15:35
persiaI like the idea of the identity of commits staying the same, as it makes it easier to reuse existing data, despite the complications of not automatically providing guidance on signatures.15:35
ssam2my main concern is time to hash all 700MB of GCC15:35
ssam2hopefully that turns out to not matter15:35
ssam2if it does matter, the fact that OSTree already has a hash of it would come in handy15:36
tristanI am very afraid that a proposal might require ostree to calculate GPG15:36
persiahashing large binaries turns out not to take very long when contrasted to the time required to compute a certificate for a large binary.15:36
ssam2we can't *require* ostree, as we have a tarball backend15:37
persiaThis is part of why Debian chooses to run multiple hashes over content, and then only certify the set of hash values (and filesizes) in a separate text file.15:37
tristanssam2, We dont know what the user has when the user has an artifact15:38
tristanAll we know, is the user has the content15:38
tristanthat content, should be self verifiable, ideally, also15:38
tristanthat seems quite within our capability15:38
*** sstriker has quit IRC15:39
tristanthe computation time for generating that signature, I'm not hugely concerned with; if we can assert that our home grown, self contained algorithm for signing/verifying *always matches* that which has assistance from an artifact backend, that would be a nice optimization15:39
tristanthat may be a matter of just asking the backend for the hashes and filenames and sizes15:40
tristanor such15:40
ssam2makes sense15:41
persiaI think such an algorithm shouldn't be self-contained: let's depend on GPG or at least on some well-known frequently accelerated crypto hashes, so we aren't a) really slow and b) hopelessly insecure as are all first implementations of new hashes15:42
persiaOther than that, works for me :)15:42
tristanpersia, yes, in that sense I agree; lets not rewrote GPG in python15:42
tristan*rewrite15:42
tlaterssam2: Could you try running the buildstream integration tests in your container if you have one? Dw if you don't, but I just can't get them to work right now.15:57
gitlab-br-botbuildstream: merge request (130-interactive-prompt-prefix->master: Accept the first characters as shortcut on interruption prompts) #151 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/15116:09
nexusIs there a doc i can read that explains clearly: What buildstream is, What is does, how, and why? i'm trying to go through all of the docs and add detail, clarify points and fix errors, but i can't find any sign of a generic "This is what Buildstream is"16:11
*** givascu has joined #buildstream16:29
tristannexus, probably we need to create something to that effect; possibly the right place for that to live would be on the website which currently doesnt exist16:43
tristannexus, I could send you the original architecture / project pdfs if you'd like to draw inspiration from that16:44
nexustristan: That'd be great :)16:45
persiaWhile the website is an excellent place for it, the first paragraph of the top-level README would benefit from an abstract, for folk who end up with the repo and not the website.16:52
ssam2buildstream solves a problem that you only have if you're working on a large project that's split up into many small, different components16:52
ssam2well, they don't have to be small components, just numerous and different from each other16:52
persiaBut there are a vast number of projects that fall into this category: building distros, building distributed systems, building integrated computing environments, etc.16:53
persiassam2: It's a matter of scale.  Even vegastrike is a "small" project in the context of a project that consumes vegastrike.16:53
persiaOr maybe s/consumes/integrates/16:54
ssam2right. I think the key is that it's split up16:54
* persia picked vegastrike as it was once on the shortlist of projects that took up so much space on Debian mirrors that it was considered for ejection from Debian16:54
ssam2e.g. some companies have enourmous code bases which they keep in a single repo, with a single build system16:55
ssam2and BuildStream isn't useful there16:55
tlaterIt does make it quite hard to boil down what it does in a sentence or two, because it's hard to explain to a single person.16:55
persiaUnless the company wants to transition to a split model, yes.16:55
persiaFor me, "BuildStream is a tool that provides a consistent interface for integration developers working on projects that involve many discrete codebases with potentially variant build systems to identify component versions, build components, and generate artifacts suitable for testing or deployment."16:57
persiaThat sentence needs work, and would probably benefit from a couple more sentences to follow.16:57
persiaAlso, I suspect there are a number of important BuildStream features not captured there.16:57
persiaIf nothing else, the workgroup support features (shared caches, shared project config, etc.) deserve some highlighting.17:00
* tlater thinks the fact that it uses no host tools is also pretty important17:01
persiaMaybe s/build/bootstrap and build/?17:02
persiaOr maybe an additional dependent clause, replacing the full stop with ", from a specified sysroot for improved reproducibility." or something?17:03
* persia leaves fixing the sentence to people still in Tuesday17:03
tlaterI like the second one better, because 'bootstrap' sounds too buzzwordy - on the other hand, that may be what we want ;P17:03
*** anahuelamo has quit IRC17:04
*** jonathanmaw has joined #buildstream17:18
*** tpollard has quit IRC17:33
*** valentind has joined #buildstream17:55
*** jude has quit IRC18:00
*** jonathanmaw has quit IRC18:03
*** ssam2 has quit IRC18:09
*** bethw has quit IRC18:18
*** givascu has quit IRC20:38
*** tristan has quit IRC20:58
*** bethw has joined #buildstream21:21
*** xjuan has quit IRC22:30
*** mcatanzaro has quit IRC23:03
*** valentind has quit IRC23:03
*** mcatanzaro has joined #buildstream23:05
*** bethw has quit IRC23:31

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