IRC logs for #buildstream for Tuesday, 2017-05-23

*** hergertme has quit IRC04:22
*** hergertme has joined #buildstream04:28
*** tristan has joined #buildstream05:47
paulsher1oodjjardon[m]: call me petulant, but i won't be attempting that :)06:18
*** ssam2 has joined #buildstream07:29
*** LaurenceUrhegyi has joined #buildstream08:29
*** LaurenceUrhegyi has quit IRC08:34
*** LaurenceUrhegyi has joined #buildstream08:34
*** jonathanmaw has joined #buildstream08:45
tristanvioleta, so the buildstream-tests repo is just something I threw together so that people could "try stuff", there are various branches in there which build different things, but it would seem like a good name for a repo to hold an actual buildstream test suite, too09:35
violetaI see, I did think it didn't have a lot in it :-)09:36
tristanI guess, we could have different branches in there that we would mark as "protected" (kind of bunch of separate masters), each one of which holds a project that tests a certain aspect of the buildstream plugins09:36
violetawhy does each aspect have to be tested on different branches?09:37
tristanyeah the "build-gnome" branch in there is most interesting I guess, if you want to look at it; that 'build-gnome' is, is a baserock conversion that builds a converted gnome system from the bootstrap all the way to an image deployment09:37
violetaif it makes sense to have this other repo separately, we could just create a test-suite one specifically for it09:37
tristanvioleta, well, that is a good point, it could all be on the same "branch", but what I would like is to have a separate buildstream "project" for each plugin09:38
violetaok, I'll have to look more into this before I have more questions :-)09:39
tristanThe point is to have small samples which quickly identify something that went wrong, and to try to get decent coverage09:39
tristanSure :)09:39
tristanvioleta, are you familiar with the gitlab side of things, too ?09:40
tristansetting up .gitlab-ci.yml and suchlike ?09:40
violetanever used gitlab before09:40
tristanAh, ok well, that is going to be core to this also, maybe I should outline a bit more clearly09:40
* tristan doesnt want you to get lost :)09:41
violetathanks \o/09:41
violetaI don't want to get lost either09:41
tristancurrently buildstream CI is failing since a week (not the test suite, but the pages docs deployment, I have to look at that)09:42
tristanbut here: https://gitlab.com/BuildStream/buildstream/blob/master/.gitlab-ci.yml09:42
tristanSo that is the gitlab-ci.yml in the buildstream project root09:42
tristanIt tells gitlab to run some things every time something is pushed to the repository09:42
tristanthe format is pretty simple, and already takes care of setting up the environment to have buildstream's dependencies installed09:43
tristanSo at this line we run the test suite: https://gitlab.com/BuildStream/buildstream/blob/master/.gitlab-ci.yml#L2009:43
violetais this like Travis?09:44
* tristan has never met Travis :)09:44
violetahah, Github Travis CI :-P09:44
violetaok ok09:44
tristanI guess its very similar then, i.e. you can see it's assumed that CWD is in a checkout of buildstream09:45
tristanIn any case... we're going to want 2 different setups here09:45
tristanWe'll want, after running the test suite, to also checkout buildstream-tests where the tests are, and run bst build on those projects in that repo, which we can checkout right there in the script09:46
tristanAlso, we'll want a very similar .gitlab-ci.yml setup for buildstream-tests09:46
tristanWhich just always runs against buildstream master09:46
violetaok09:47
tristanThat way, we can run the tests both when A.) Someone commits to a buildstream branch, it runs against the most recent test cases... and B.) Someone updates the test cases, they get rerun in a merge request against buildstream master before updating the mainline test cases09:47
tristanMakes sense ? :D09:47
violetayes, makes sense, thanks :-)09:48
tristangreat09:48
tristanOk so... it looks like running a debootstrap of amd64 on an aarch64 machine works fine, at least for our purposes :)09:54
tristanJust because, we happen to have some aarch64 machines...09:54
tristanonly problem now, is that it seems the apache reverse proxy thing is ... borked09:55
tristanand I am allergic to all things networking09:55
tristanwell, all things which involve ips and routing tables and all of that nonsense09:55
tristanNope !09:59
tristanGood news: https://gnome7.codethink.co.uk/repo/10:00
tristanOk that currently serves a debian amd64 testing snapshot, which will be updated regularly ... once I fix/finish this script which does it on a cron job10:03
*** tristan has quit IRC10:16
*** tristan has joined #buildstream10:16
*** LaurenceUrhegyi has quit IRC10:19
*** LaurenceUrhegyi has joined #buildstream10:23
*** ChanServ sets mode: +o tristan10:32
ironfoottristan: let me know if you need help setting up infra10:43
tristanironfoot, actually I think I understand now... or not really but kindof10:57
tristanironfoot, actually my setup of the bot was going to work, but I would have just had to wait around for 30 minutes or so10:57
tristanmaybe10:57
ironfoot:)10:57
tristananyway, in this case... I have these 8 aarch64 cartridges which were donated for building GNOME on arm10:58
ironfootright10:58
tristanAnd they all run apache behind this reverse proxy thingamajigie10:58
tristanWhen I install one of them or wake them up after a long time, they get a new ip on the local dns10:58
tristanand I have to update the reverse proxy setup on the jumpserv middleman10:59
tristanSo far so good10:59
tristanI did that last time, and this time10:59
tristanAnd then after restarting apache... the servers dont resolve10:59
tristanI think this was the same issue with the bot which expects to receive POST10:59
tristanironfoot, so anyway... if I come back 30 min later and leave the config as is... it starts to resolve11:00
tristanSo i'm thinking, some DNS somewhere has to slowly get updated and figure out what gnome7.codethink.co.uk resolves to11:00
tristanit "eventually" works, just not right away11:00
tristananyway now https://gnome7.codethink.co.uk/repo/ is being served, and looks like my cron job setups are also working11:02
tristanSo there will be a daily import of the ostree for both i386 and amd64 debian arches into that repo11:02
tristannice, added armhf and arm64 to that list :)11:14
tristanok next: Continuous auto migrations of jhbuild modulesets11:14
* tristan tries to build against the gnome7.codethink.co.uk hosted runtime11:15
*** LaurenceUrhegyi has quit IRC11:25
*** LaurenceUrhegyi has joined #buildstream11:42
persiatristan: I don't know the details of your setup, but a few solutions I've seen work before are: A) have a client that runs on startup on the machine that connects to the proxy and updates config immediately after boot, B) Using an overlay network internally, with each node advertising that it can route to a logical IP address thorugh the physical interface, and redirects pointing to logical IP addresses, and C) configuration of the DHCP server to11:48
persiaprovide static IP addresses to be associated with the MAC addresses  for the machines behind the proxy.11:48
persiaMaking it work with pure DNS is complicated, and requires fairly tight timings, which can be frustrating if there is a long keepalive on some SOA further up in the hierarchy.11:50
tristanpersia, right now it's not broke, so I wont spend time fixing it :)11:51
tristanheh11:51
persiaexcellent plan :)11:51
tristanIt's rare enough that these machines get re-setup11:51
*** jude has quit IRC12:47
jonathanmawhmm, when trying to build with my bzr plugin, I'm getting the error "    bzr source at emacs.bst [line 4 column 2]: Failed to checkout revision 118363 from branch /home/jonathanmaw/.cache/buildstream/sources/bzr/savannah_emacs/trunk to /home/jonathanmaw/.cache/buildstream/build/emacs-4p14l0eo/buildstream/build"12:53
jonathanmawit seems to be because emacs-$foo/buildstream/build doesn't exist.12:53
jonathanmawI'm guessing that's because it's stage's responsibility to make sure that dir exists12:53
*** jude has joined #buildstream13:01
ssam2when I run `setup.py test`, no tests are discovered13:02
ssam2is that happening for anyone else?13:02
jonathanmawssam2: seems to be working for me13:03
ssam2maybe i'm missing deps and it's swallowing the errors somehow13:04
tristanWell, my bad news is that cross bootstrapping is not working easily with debootstrap13:05
tristanBut on the bright side13:05
tristanIt was very easy to change for multistrap13:06
ssam2what's multistrap?13:06
ssam2oh https://wiki.debian.org/Multistrap13:06
tristanhttps://wiki.debian.org/EmDebian/CrossDebootstrap#Multistrap13:06
tristanYep13:06
ssam2so you could debootstrap and then multistrap in there13:06
ssam2presumably this only for arches Debian is already ported to though so not much use to me13:07
tristanso its actually closer to what I want, it will unpack everything but not run the scriptlets, giving me a cross-arch created chrootable thing13:07
ssam2but good for doing armv8l and such i guess ?13:07
tristanWhich I could actually run dpkg --configure -a inside of on real hardware or qemu to make it bootable13:07
tristanssam2, actually, its necessary for me right now because I *happen* to have my hands on an aarch64 machine I can cron some automated imports with13:08
tristanSo I need cross in order to also produce/publish the x86 runtimes13:08
tristanRight not useful for your cross bootstrapping new arches thing13:08
tristanthis is to produce base systems that satisfy the GNOME moduleset sysdeps which I can run builds of converted modulesets on top of13:09
tristanssam2, not sure about your ./setup.py test problem, did you follow the docs on installing deps and such ?13:09
ssam2I've done `pip3.4 install --user buildstream`13:10
ssam2pip3.5 rather13:10
ssam2so should have all the deps in my PYTHONPATH13:10
tristanright if that passed, it should be working really13:10
ssam2to be fair, it failed with a weird error13:10
ssam2but installed stuff first13:10
tristanwell13:11
ssam2https://wiki.debian.org/Multistrap13:11
ssam2argh13:11
ssam2https://pastebin.com/Few61mK013:11
ssam2python packaging is dismal13:12
tristanjonathanmaw, so yes, we dont create the build directory in advance as that would cause issues sources13:12
ssam2upgrading pip has fixed that13:13
tristanjonathanmaw, i.e. if you do git clone url <directory> and the directory exists, well git wont like that13:15
tristanlooks like I'm not connected to the internet :-S13:15
ssam2ok, upgrading py.test has fixed that13:15
ssam2a test suite!13:15
* tristan gets reconnected seemlessly, it seams13:15
tristanssam2, yeah so did you follow the advice ?13:16
tristanand try again ?13:17
tristanis that the full log too ?13:17
ssam2it's working now13:17
ssam2had to upgrade pip and py.test13:17
ssam2i guess its an issue with `pip` packages that they don't get autoupdated, unlike distro packages13:18
tristanNice13:20
tristanYeah pip is garbage13:20
tristanBut oh well13:20
tristanssam2, so btw... ok with `pip install --user` you will get man pages, but... you probably want `pip install --user -e`13:49
tristanssam2, the difference is that, with `-e` it will do a developer install, which means that any modification you make to buildstream will be effective immediately and not require a separate install step13:49
tristanjust saying, in case you wonder "how come this change isnt working ?!"13:50
tristanthat is in the HACKING file, but not in the user facing getting started docs13:50
ssam2ok, ta13:51
ssam2ok, ta13:51
ssam2(oops)13:51
ssam2I did `--develop` which is hopefully the same13:51
ssam2yeah, seems to be13:52
tristanI think so, anyway it's what pip internally passes to setup.py13:59
*** LaurenceUrhegyi has quit IRC14:07
*** LaurenceUrhegyi has joined #buildstream14:09
ssam2I got an initial Baserock system -> BuildStream conversion done pretty easily14:18
ssam2defs2bst seems to work great14:18
ssam2have found some teething issues with ctrl+c during Git fetches I think14:19
ssam2my desktop started to seize up so I hit ctrl+c, and that fixed stuff14:19
ssam2but on resume a bunch of fetches have failed14:19
tristanssam2, I have opened this for that purpose: https://gitlab.com/BuildStream/buildstream/issues/3014:20
tristanNot much we can do otherwise, I think14:20
ssam2ok cool14:20
ssam2yeah `git clone` is just a bit fragile14:20
tristanWell, note we have this context manager which handles suspend / resume14:21
tristanSo if for example, a git source knew that git handles a specific unix signal to try to reconnect and resume... we could hook into that and send it14:21
tristanbut... meh14:22
ssam2urgh, high disk IO making my desktop unusable14:22
ssam2Linux really not great at scheduling under pressure14:22
tristanYes, that will happen with gnome shell14:22
tristanor with linux14:22
tristanindeed, io makes my life hard here too14:23
*** ssam2 has quit IRC14:26
*** ssam2 has joined #buildstream14:27
ssam2that didn't take long... Linux got itself completely locked up and i had to reboot14:28
ssam2i really haven't missed this from working on Baserock14:28
tristanWhat ??14:28
tristanssam2, well, you can configure your fetchers and builders14:28
ssam2yeah, i'll do that14:28
tristaneither on command line or in a config file14:28
ssam2should be OK if I have just 1 or 2 fetchers14:28
tristanYou think it's the fetch tasks ?14:28
tristanI wonder, well, it's possible14:29
ssam2hmm, let me look at the logs14:29
ssam2it did look like there were 8 fetches going on14:29
tristanI recently cranked them up to 10 by default14:29
ssam2starting from scratch remember14:29
tristansince at least here, it makes little or no difference to me14:29
ssam2yeah, only logs I have are fetch jobs14:29
tristanmostly blocking on network I/O14:29
tristanwell, that'll be it then I guess14:30
tristanI think in normal usage though, it's really the ostree that is I/O intensive14:30
ssam2ah, I think there was an ostree pull going on14:30
tristanWhen caching artifacts and the initial extractions/checkouts14:30
ssam2for the gnome SDK14:30
tristannod14:30
tristanOnce that completes once, should be better14:31
ssam2long term it would be nice to provide "starter pack" bundles, like a big tarball with some snapshot of the various Gits and OStree repos you're likely to need14:31
tristanI suspect though, with artifact cache shares and downloading artifacts, things will be similar14:31
ssam2more of a burden for us to provide, but saves each new user going through this same initial hassle14:32
tristanssam2, well, that's what artifact cache sharing should probably accomplish by itself, though14:32
ssam2oh true14:32
ssam2yeah I guess then you go back to only needing to clone a repo once you hack on something14:32
tristandepending, but yeah14:32
tristani.e. depending on build mode, with build plans based on weak cache keys, then you dont even need to clone everything that depends on glib when hacking on glib14:33
tristanfor example14:33
* ssam2 tries again with 2 fetches14:34
ssam2*fetchers14:34
tristanI honestly think it wont make a huge difference, maybe ostree needs to be throttled or smth ?14:38
tristananyway let me know if it changes much :)14:38
tristanssam2, I'm guessing you have old fashioned hard disks, not SSD ?14:38
tristanmaybe a good internet connection + slow disks will cause that14:39
ssam2yeah, old HD14:41
tristanOk, stayed a bit late, but now I think I nailed the server to import these debootstraps14:41
tristanwith gpg signing of the ostree commits and all that14:42
tristanunfortunately looks like my download from gnome7.codethink.co.uk is very slow :-S14:42
tristaneek, average 375ms round trip14:43
tristanok times up, I'll retry the build from home14:52
* tristan out...14:52
*** tristan has quit IRC14:55
jonathanmawhrm, it looks like my bzr tests are failing in CI because they don't have bzr15:04
jonathanmawfor some reason the exception raised by preflight() isn't getting propagated when it's in a Setup class initializer15:05
ssam2sounds like a bug15:06
ssam2in something..15:06
jonathanmawseems like Setup is a fixture that comes from pytest. there's probably some internal magic that swallows the exception15:07
jonathanmawI'm going to try moving the call out of setup to see if the problem persists15:07
ssam2i see no reason pytest should ignore exceptions in fixtures... it might be something about the way that fixture is implemented15:09
ssam2can't see anything obvious though15:09
ssam2i'm eagerly awaiting buildstream to start actually building stage1-binutils, but it's been "Staging gnu-toolchain/base-sdk.bst/5aa1311b" for 5 minutes15:11
ssam2ok, finally started building15:12
paulsher1ood....just like the old days, watching moprh :)15:12
ssam2so many memoriues15:12
paulsher1oodheh15:12
ssam2it really shouldn't take 5 minutes to do an `ostree checkout` though, if this isn't just a one time thing then something must be wrong15:12
ssam2oh it seems to have gone quicker the 2nd time15:14
ssam2must be a one time thing the first time you do `ostree checkout`15:14
jonathanmawhmm, nothing raised when preflight() is called outside the constructor, either15:27
jonathanmawI'm expecting the exception to be raised because I use utils.get_host_tool(), which raises an exception15:27
jonathanmawand I can see nothing wrong with get_host_tool()15:35
jonathanmawsod it, I'm going to leave it alone and just try to ensure bzr is installed in the CI runner.15:36
*** tristan has joined #buildstream15:44
jonathanmaw>:( when I add in .gitlab-ci instructions to install bzr, the tests that use bzr still fail15:57
jonathanmawlatest litany of failure at https://gitlab.com/jonathanmaw/buildstream/builds/1698283015:57
jonathanmawsetup.source.track(), setup.source.stage() and setup.source.get_consistency() all lead to calling 'bzr'15:58
jonathanmawother than the tests failing when they oughtn't to in CI, the bzr plugin seems to be functional16:08
jonathanmawemacs from bzr is failing to build, but the generated stage looks okay, and I have tests that the output of stage is expected.16:09
*** ssam2 has quit IRC16:24
*** jonathanmaw has quit IRC17:01
*** ChanServ sets mode: +o tristan17:24
*** LaurenceUrhegyi has quit IRC19:36
*** violeta_ has joined #buildstream21:00

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