IRC logs for #buildstream for Thursday, 2017-04-13

*** xjuan has joined #buildstream00:34
*** xjuan has quit IRC03:11
*** tristan has quit IRC05:01
*** tristan has joined #buildstream06:14
*** tristan has quit IRC06:18
*** tristan has joined #buildstream06:22
*** tristan has quit IRC06:26
*** brejoc has joined #buildstream07:21
*** tristan has joined #buildstream07:35
*** tristan has quit IRC07:39
*** franred has joined #buildstream07:56
*** tristan has joined #buildstream08:18
*** tristan has quit IRC08:20
*** tristan has joined #buildstream08:20
*** ChanServ sets mode: +o tristan08:20
ChrisOops, apologies tristan, I was afk by that stage. The output contained gaps, nothing missing there.08:39
ChrisI'll try the build again and let you know how it gets on.08:39
*** jonathanmaw has joined #buildstream08:40
tristanChris, no worries, I think I need to fix that line as I described, ENOTEMPTY doesnt look right08:51
ChrisHm, it's failed again, but when trying to extract a glibc artifact.09:15
Chrishttp://paste.baserock.org/owonecehun09:15
tristanChris, this is interesting that you are encountering this consistently and I have never09:16
tristanChris, can you try modifying the line as I suggested ?09:17
ChrisSure, give me a sec.09:17
tristanChris, after that... one more thing before relaunch09:17
tristanChris, rm -rf ~/.cache/buildstream/artifacts/extract09:18
tristanThat will ensure the extracts happen again09:18
tristanto help provoke the problem happening again09:18
tristan(although it wont provoke rebuilds of what you've already built)09:18
ChrisSure. You're suggesting changing ENOTEMPTY to EEXISTS, yes?09:19
tristanExactly09:20
tristanos.rename is trying to place the extracted artifact to a location that exists09:20
tristanif it already exists, it means another process beat that one to the punch09:21
tristanwhich is fine09:21
ChrisOk, will keep you informed.09:22
tristanChris, thanks :)09:23
ChrisIt's thrown this almost immediately, just reading through it now. No build failure, but it's been at this point for about 4 and a half mins thus far. http://paste.baserock.org/doluqinege09:27
tristanChris, ok the frontend thing I will be fixing today...09:30
tristanBut that's a symptom that shouldnt happen anyway09:31
tristanNow that is a bit weird, about the exception09:31
tristanOh09:31
tristanChris, there is no S in EEXIST actually09:32
tristanmy bad09:32
ChrisHaha no problem.09:32
tristanwell, only one S :)09:32
tristanno trailing one09:32
*** ssam2 has joined #buildstream09:32
Chris4th time's a charm.09:33
tristanChris, Ok great, lets apply that change then09:34
jonathanmawtristan: have you had a chance to reivew my new merge request?09:34
ChrisIt's building now, will keep you posted.09:34
tristanjonathanmaw, sorry, I should have by now, have been trying to wrap up and do something with all my lost time swimming in pip/venv yesterday :-S09:35
tristanjonathanmaw, give me one hour to wrap up and most probably merge your branch by then09:35
tristanjonathanmaw, in the meantime... please look into the bzr source :D09:36
*** ssam2 has quit IRC09:36
tristanwith that, I think we'll have all sources needed to auto-convert flatpak json09:36
*** ssam2 has joined #buildstream09:38
tristanChris, would you like to file an MR for that or should I just commit / push the change ?09:46
ChrisIf you have it ready to go, fire away, otherwise I can do it now09:47
tristanChris, sure09:48
tristanjust testing that the change doesnt break anything here for any reason and pushing that09:49
ChrisNo probs. It's building ok here thus far.09:49
tristanyeah, I wonder if here it never triggered because lightning fast SSD09:50
tristanbut still this is curious09:50
tristanChris, according to `man 2 rename`:09:51
tristanENOTEMPTY or EEXIST09:52
tristan              newpath is a nonempty directory, that is, contains entries other than "." and "..".09:52
tristanChris, so I suppose the error chosen may be OS / condition dependent09:52
tristanWe should handle both in this case09:52
* jonathanmaw starts reading how bzr works09:53
ChrisIt seems like it. I'll have a read into it.09:55
tristanyeah, I suspect my OS/libc (and juergbi's) has been reporting ENOTEMPTY, while yours decided on EEXIST for some reason09:56
tristanBut its documented at the libc level that both can be raised09:57
tristanChris, indeed, I just got the same error you did, but with [Errno 39] Directory not empty:...09:58
tristanSo /me changes that to 'if e.errno not in [os.errno.ENOTEMPTY, os.errno.EEXIST]' and calls it fixed09:58
ChrisNeat.09:59
tristanOk, pushed that fix10:01
tristanAnd along with it, we now haz man pages10:02
tristanBut these wont appear with `pip install --user -e .`10:02
tristanThey *will* appear with `pip install --user .`10:02
tristanWhich installs directly into your ~/.local10:02
tristanOnly difference is that changes to your buildstream checkout source code will not take effect on the bst command10:03
tristanwithout `pip uninstall && pip install --user .`10:03
tristanerr,  `pip uninstall buildstream && pip install --user .`10:03
* tristan now checks/merges jonathanmaw's code and then sets out to include an "Installing and Running" section of the docs with ironfoot's docker guide included10:04
tristanOh, and I shouldnt forget also, more graceful handling of uncaught exceptions in plugins10:04
tristanI'm thinking, a BUG: message in the frontend10:04
tristaninstead of a double stack trace10:05
ironfootthink about people sending infromation about something not working10:06
ironfootmight be good to show the stack trace10:06
tristanironfoot, of course, but only the one that is important :)10:13
tristanironfoot, currently the frontend chokes and fires another exception when a child process has a bug10:13
ironfootaha, i see10:14
tristanjonathanmaw, merged your tar source :)10:35
tristanjonathanmaw, I added to that a couple commits10:35
tristanOne to just add a link in the main documentation face page (we list all the plugins so they are easy to lookup)10:35
tristanAnd notably this one which makes a couple minor changes: https://gitlab.com/BuildStream/buildstream/commit/de09acfd87f6c97b6e877fc0d4b10340844ee6c010:36
* tristan has been pondering making some change in how plugins report errors, perhaps changing it so that they just call self.error(), and have Plugin.error() raise an ElementError/SourceError10:37
tristanthat would only mean that errors would automatically always have an str(self) formatted into the string10:38
tristanbut meh10:38
* tristan files https://gitlab.com/BuildStream/buildstream/issues/8 regarding man page auto-generation10:56
tristanIf anyone feels like getting a pip/setuptools/distutils headache, feel free to fix that :D10:57
*** brejoc has quit IRC11:00
*** brejoc has joined #buildstream11:36
jonathanmawtristan: AIUI, bzr is written with python, using bzrlib. Does that give me free rein to use bzrlib for the bzr source plugin?11:49
ssam2my only concern would be whether it's installed by default in the Python search path, but on my system seems like it is11:55
ssam2does it work with python3 ?11:56
ssam2seems to be installed for python2 only on my system in fact11:56
jonathanmawhrm, yep, bzrlib doesn't get installed for python311:59
jonathanmawso it looks like I'm using the binary :-/11:59
tristanI am skeptical of using bzrlib12:18
tristanRight now as it stands, using ostree via python bindings is a bit of a pain and hurdle for installing, for one12:19
tristanFor another, it's causing some unexplained bugs with suspend/resume, possibly because we're running it directly in process and maybe it has it's own signal handling12:20
tristanInstalling bzr is one thing, installing bzrlib may be another12:20
tristanAnyway yes, it's python 2, lets just invoke it :)12:21
jonathanmawtristan: I haven't used bzr before, what does a typical use-case look like? (i.e. do people refer to a specific commit in a bzr branch?)12:33
tristanjonathanmaw, I think its relatively similar to svn ?12:36
tristanI havent used it in a long time, and only in passing to build something someone else maintains12:36
tristanThe key of course is "Find out how to address an entirely specific set of sources" (this is 'ref' and need not necessarily be a single string/checksum, 'ref' can be a dict if the VCS demands it)12:37
ssam2i believe in bzr you get a revision number12:38
tristanAnd "Find out how to determine what is the specific set of sources for a symbolic name" (this is 'track', most if not all VCSs have the concept of branch or tag)12:38
brejocHi I'm the author of this comment: https://blogs.gnome.org/tvb/2017/02/06/introducing-buildstream-2/#comment-394012:42
brejocI'm really interested in exploring the possibilities of BuildStream for web applications. But I'm lacking overview… a lot. I understand how I'm supposted to "build" my application, but I have no clue where to start from. Usually I'm just picking the current Debian release as a Docker image to start building. Where would I get a Debian base system here? Additionaly is is it already possible to package everything in a neat Debia12:42
brejocn package at the end? Sorry for the huge amount of text…12:42
tristanWelcome brejoc :)12:45
tristanNo worry, thanks for your interesting comments !12:45
tristanOk so I'll try to reply some of this hear12:46
tristanWe should really start using the mailing list though for more serious/archived discussion :D12:46
tristanbrejoc, So there are a few cruxes to the issue12:46
tristanFirst, if you want to build something with BuildStream, well... you have to build it :)12:47
tristanSo, the last demo in the latest blog post, builds a "damn everything"12:47
tristanbrejoc, but that wont be what you want12:47
tristanBecause building everything, means maintaining everything, so that's a very specific case12:48
tristanbrejoc, what I have been having in mind, is to implement Source plugins which can interact with distro packaging mechanisms12:48
tristanbrejoc, please stop me if/when you have any questions :)12:49
tristanSo basically, in BuildStream you have a pipeline if Elements, and each Element can have one or more Sources12:49
brejocNo, no, please go on! :)12:49
tristanSources are there to obtain anything external, usually to obtain source code12:49
tristanBut, for instance we have the ostree source plugin, which can be used to pull in pre-built flatpak runtimes12:50
tristanIn the last example /me finds link12:50
brejocI've seen it, I know what you mean.12:50
tristanfor instance we have: https://gitlab.com/BuildStream/buildstream-tests/blob/build-gnome/elements/gnu-toolchain/base-platform.bst12:51
tristanAnd https://gitlab.com/BuildStream/buildstream-tests/blob/build-gnome/elements/gnu-toolchain/base-sdk.bst12:51
tristanThose are "import" elements which, we use to stage a deterministic runtime from which we bootstrap our own12:51
tristanjust as an example12:51
tristanSo "import" just takes what is in a Source and stages it verbatim12:52
tristanNow, a Source plugin has some constraints12:52
brejocSo I would have to find an ostree of a Debian release. Are there any?12:52
tristanBecause we want A.) To always refer to something exact, we want to always build something deterministic12:52
tristanAnd B.) We want to be able to "track" something symbolic12:52
tristanSo that we can always "try the latest stable branch of foo"12:53
tristanbrejoc, I think not, I am thinking bigger than that actually :D12:53
tristanor, I think it's a bit more ambitious but possible12:53
brejocOkay :)12:53
tristanRather than enforcing that an ostree repository be created for certain versions of Debian/Fedora/FooDistro12:54
tristanI would really like to see, say, 'dnf' and 'dpkg' Source implementations emerge12:54
tristanWhich actually cater to those constraints12:54
tristanSo this way, we could have a Source which is able to track "jessie"12:54
tristanAnd able to checkout a "very specific version of jessie"12:55
brejocOh, I see. That is indeed very interesting!12:55
tristanThis would open the door, both for the kind of use case you describe, but for other things as well12:55
tristanSay, imagine we had the GNOME release modulesets, and we could run CI on variants of distributions12:55
tristan"Lets try building the whole GNOME Desktop on the latest development release of Debian sid, or Fedora, or whatever"12:56
tristanI did some reading last week I think on the subject, and it doesnt seem altogether obvious12:56
tristanBut I think it can be done12:56
tristanBecause it's a typical case for sysadmins12:57
tristanI.e. they have produces a prestine install of something that works12:57
tristanAnd they want to dump some metadata into a file, and reuse that metadata to reinstall another machine with "Exactly this RHEL version, _exactly_"12:57
tristanor suchlike12:57
tristanSo that would be a great direction forward, for the one half of the pipeline12:58
brejocYou are absolutely right. Usually not every server is update to date.12:58
tristanFor the other part, I have in other projects been able to fairly easily generate binary rpms from binary artifacts I've built _without_ rpm12:59
tristanand think that is also entirely possible with dpkg as well12:59
tristanThis of course will work much better when; you have built and are deploying from a sysroot/SDK that is actually the target version of Debian you want to distribute to12:59
tristanSo, you could have support for staging various versions of Debian -> Building on that -> Deploying for _that_ version of debian13:00
tristanAnd it would theoretically be no different from doing the same thing manually, on a real debian host of that version13:00
tristanExcept of course, you could do the whole thing on gentoo or whatever :)13:01
brejocYou are describing an utopian future of building software. I live it! :D13:01
brejoclive==love13:02
tristanFor the deploying Docker container cases, I think thats even more easily achieved, you would just have a pipeline which takes the "everything you staged + what you've built = > deploy it all into a container image"13:02
tristanbrejoc, I'm more and more excited about this project as it materializes too yes :)13:03
brejocWow, I'm actually pretty gobsmacked at the moment!13:04
tristanEnough to look into writing up a "dpkg" Source implementation ?13:05
tristanhehe13:05
brejocI can try. But you'd have to point me into the right direction.13:06
brejocLet's start with: which is the best disto to install BuildStream. Ubuntu seems to be no perfect fit.13:07
tristanWell, jonathanmaw has just whipped up 'tar', the ever typical tarball source, and now looking into 'bzr' (which wraps up all the sources supported by flatpak, so soon we try to convert flatpak json to BuildStream projects)13:07
tristanbrejoc, I use debian stretch, but since recently it works with debian jessie13:08
tristanOn jessie you need bubblewrap and ostree + the ostree gir support from jessie backports13:08
tristanIt needs python 3.4 (it may work or older pythons but that's untested)13:09
brejocAre there packages for bubblewrap and ostree?13:09
tristanYes, both in stretch and jessie-backports13:09
brejocAwesome. So my first two steps would be the installation of BuildStream and looking into the tar source from jonathanmaw?13:10
tristanSo I'm in the process of writing up some user docs for installing13:11
brejocThe tar source can already be found in master?13:11
tristanbut the instructions in https://gitlab.com/BuildStream/buildstream/blob/master/HACKING.rst should work13:11
tristanYes13:11
tristanUmm, yes it's in master, probably you dont want it as a template though13:11
tristanbrejoc, the Source implementation is pretty straight forward though13:12
brejocOkay. I'll be back soon! :p13:13
tristanSo a Source derives from Plugin (as does Element), which provides some helpers you'll need to use13:13
tristanAlright :)13:13
* tristan was going to point at docs13:13
tristanbrejoc, there are a few sources already though, the only thing about tar is that it doesnt really 'track' (cause it's just a tarball)13:13
tristanbut all of them show pretty much what is needed to implement13:14
tristangit is well done, but harder to read / follow because it supports submodules13:15
* tristan is falling behind schedule for GUADEC but notices he still has another full week before CFP deadline... good13:17
brejocOkay, I'll take a look and see if I understand it.13:17
tristanbrejoc, I'm on east asia time so I might disappear, but I do pop in late night every now and then so I'm not "gone"13:18
tristannext week I'll be europe time for a week13:18
brejocNice. Then we'll be in the same time zone.13:18
* tristan should probably writeup better plugin author facing docs13:19
tristanBut https://buildstream.gitlab.io/buildstream/buildstream.plugin.html#module-buildstream.plugin13:19
brejocI'm in France right now, but should be back in Germany at the end of the month.13:19
tristanAnd https://buildstream.gitlab.io/buildstream/buildstream.source.html#module-buildstream.source13:19
tristanShould be helpful13:19
brejocThanks! Haven't seen those yet.13:20
* tristan very much enjoyed his short stay in Berlin, especially the hacker spaces were very cool13:20
tristanbut I've heard that "Berlin is not really Germany" :)13:20
tristanyeah I think the docs are pretty nice13:20
tristancheck em out :)13:20
tristanStarting from https://buildstream.gitlab.io/buildstream/13:20
brejocOh well, which part of Germany is Germany then? Saarland, where I'm coming from, isn't really Germany too. :)13:21
brejocPerhaps Bayern. But nobody likes them! :p13:21
tristanHeh, it's just what I've been told, that Berlin is something completely different :)13:21
brejocIt is. But Berlin is nice. I've been there three times. The nerd scene is awesome there!13:22
*** franred has quit IRC13:24
*** brejoc has quit IRC14:25
*** tristan has quit IRC14:39
*** tristan has joined #buildstream14:43
*** ChanServ sets mode: +o tristan14:43
*** tristan has joined #buildstream15:04
*** ChanServ sets mode: +o tristan15:31
*** tiagogomes_ has quit IRC15:54
*** brejoc has joined #buildstream15:58
*** brejoc has quit IRC16:03
*** jonathanmaw has quit IRC16:24
*** brejoc has joined #buildstream18:25
*** ssam2 has quit IRC18:41
*** brejoc has quit IRC20:16
*** xjuan has joined #buildstream21:39
*** xjuan has quit IRC22:26

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