IRC logs for #buildstream for Friday, 2017-04-07

*** tristan has quit IRC04:53
*** ssam2 has joined #buildstream08:26
*** jonathanmaw has joined #buildstream09:14
*** tristan has joined #buildstream09:16
*** ChanServ sets mode: +o tristan09:16
tristanjonathanmaw, run out of disk space yet ?09:17
jonathanmawtristan: nope, still have 14G left, apparently :)09:19
jonathanmawlooks like my overnight build failed on gnu-toolchain/stage1-binutils, though. I'll shove it on pastebin.09:20
jonathanmawhttps://pastebin.com/8cbvhJz109:21
tristan:-/09:21
tristanOh09:22
tristanOk I see09:22
tristanjonathanmaw, that's not because of ldconfig (although there *was* such a bug a whiiile back)09:22
tristanthats because of "No permissions to creating new namespace, likely because the kernel does not allow non-privileged user namespaces. On e.g. debian this can be enabled with 'sysctl kernel.unprivileged_userns_clone=1'."09:22
tristanjonathanmaw, normally that is solved because the `bwrap` program is supposed to be installed as setuid root09:23
tristanalthough perhaps an older package of bwrap is not setuid ?09:23
tristanjonathanmaw, first ensure that debian jessie installed bwrap as setuid root, and if it did not well... that's a bit sad for jessie as it will come up again :-/09:24
tristanYou can also do what the message says and allow unprivileged_userns_clone on your system, or, you can set it setuid on your system09:25
jonathanmawtristan: looks like it was me building bubblewrap from source that had the problem09:26
jonathanmawInstalled bubblewrap from package manager (might have been from jessie-backports) seems to be setuid09:26
tristanAh !09:28
tristanOk !09:28
tristanjonathanmaw, just to confirm, that solved it for you ?09:35
jonathanmawstage1-binutils seems to have succeeded now09:37
jonathanmawso I think so09:37
tristanAh, ok09:37
jonathanmawon the other hand, there's an ugly stack trace in the middle of my stdout https://pastebin.com/0dKuV3BJ09:37
tristanWell, unfortunately, if you're still down at binutils, I dont think 14GB is going to be enough09:37
tristanoh that's horrible09:38
tristanI may have regressed that somehow, have been playing with exceptions lately and things tend to already be fetched once I've fetched them09:39
jonathanmawthere, cleared up to 32G09:39
* tristan tries to reproduce09:39
*** tiagogomes has quit IRC09:40
*** tiagogomes has joined #buildstream09:40
* tristan provokes a fetch task09:42
tristanoh, that just worked09:44
tristanjonathanmaw, so I think cntl-C and process termination is rough around the edges09:44
tristanmay need some cleanup, how did you provoke that ? it didnt happen all on it's own did it ?09:45
tristanwas a cntl-C ?09:45
jonathanmawtristan: afaict it happened without user input. the stdout up until that point is https://pastebin.com/rJURYNNy09:46
tristan:-/09:48
tristanalthough it seems to have received SIGTERM somehow09:49
tristan File "/home/jonathanmaw/workspace/buildstream/buildstream/buildstream/utils.py", line 570, in _terminator_handler09:49
tristanjonathanmaw, so basically, that "happened" but the build just continued, just that you have this in the middle of stdout ?09:50
* tristan confused how this could have happened09:50
tristanjonathanmaw, anyway let me know what happens, and if this is reproducible10:13
jonathanmawok, no new stack traces yet. Currently fetching  linux-api-headers and python, by the looks of it.10:14
tristanahhh, yeah linux fetching will take a long time :-/10:16
tristanthat'll block the build10:16
* tristan hasnt built from a 'no sources exist yet' state in a very long time10:16
ssam2mirroring many git repos efficiently is still not a very well solved problem10:17
ssam2Trove helped by serving tarballs of the whole repo instead of going through the git clone protocol, does buildstream make use of those?10:17
ssam2really Git should be more efficient here10:17
tristanssam2, well you can't really cheat bandwidth, you have to get them somehow10:17
tristanindeed10:18
tristanthere is that10:18
tristanno we dont use the tar-server10:18
tristanssam2, I'm hesitant to do that too, to be honest though, parallel fetching should mostly solve that issue10:18
ssam2Depends.. some repos are pathalogically slow10:18
ssam2like GCC where there's a big Changelog10:19
ssam2downloading and extracting a tar shortcuts all that nonsense10:19
tristanssam2, what I've noticed when we do serial fetches, is that there is a ramp-up time when communicating with git first (maybe that's just network), and then there is some computational overhead which may be server side10:19
tristanso, if you fetch many things in parallel, you mostly get to use up your bandwidth10:20
tristanwhat I dont like about adding the tar-server support is that it's another custom moving part10:20
ssam2I agree10:23
ironfooti believe that for the gcc case, downloading the tarball (for the real git mirror, and not gcc-tarball) was worse10:38
ironfootit's a *huge* tarball10:39
tristanmaybe it includes mpfr/mpc and that stuff ?10:39
tristanor maybe indeed it's a ChangeLog from hell10:39
ironfootlong long history, for gcc I think a shallow clone would be way faster10:41
tristanI dont think a shallow clone really exists, I spent over a day looking into git features for something like that10:42
tristanthere is something in relatively new versions of git10:42
tristanhowever, it requires that the git repo you are pulling from is configured with special sauce10:42
ironfoot`git clone --depth 1`10:43
tristanAh, theres a reason why I couldnt just use that10:45
tristansomething to do with primarily relying on commit shas, and only having branch tracking as an optional feature10:45
ironfootjust wanted to point out that it exists :)10:46
* ironfoot clones gcc with --depth 110:46
tristanyeah, I did see that, and there is something that lets you also get "only this commit sha" too (the latter being something relatively new and tweaky)10:46
ironfootcloned10:49
ironfootthat was fast10:49
tristanironfoot, ok hotshot :)10:54
tristannow go play in https://gitlab.com/BuildStream/buildstream/blob/master/buildstream/plugins/sources/git.py10:54
tristanSee if you can apply that :)10:54
ironfootof course not saying this is what you (or we) have to do, only that it looked interesting to me in the past11:13
ironfooti wish I could spend some more time looking at this, I promise11:14
tristanironfoot, I'm of course just teasing11:16
tristanironfoot, but if it _is_ possible and I've overlooked something, feel free to find it :D11:16
tristanthe constraints of the plugin are hard though, to make that shallow clone fit11:16
ironfootjust some more data about the quick investigation I've done: gcc.git tarball (produced by magic trick in trove)  is 1.8G, shallow clone is 770M, being 670M the actual size of the gcc.git tree (100M of .git)11:21
ironfootwhat i just wanted to point out is that *maybe* the tarball trick is not always faster/a good idea11:22
paulsher1oodgood point11:46
jonathanmawAnother build failure: https://pastebin.com/NxtUB1YU12:06
jonathanmawgnulib/gnulib-tool: no such file or directory12:07
jonathanmawalso, when I tried to drop into an interactive shell, it failed with "sh: can't access tty; job control turned off"12:07
tristanhmmm, there was an incident months ago this reminds me of12:07
tristanjonathanmaw, yeah that's normal12:08
jonathanmawprobably because you don't have a full shell in the sysroot when building coreutils, at my guess.12:08
tristanwe didnt give it a /dev/tty12:08
tristanwe could12:08
tristanjonathanmaw, check if the subdir exists and has content12:08
jonathanmawwhere would I find that in buildstream?12:09
tristanin the shell you should be in /buildstream/build12:09
tristanthat is the build directory12:09
jonathanmawah, so I am!12:09
jonathanmawthe "gnulib" dir is empty12:10
jonathanmawI think it's a submodule12:10
tristanironfoot, it finally happened again12:10
tristanthis happened once to ironfoot12:10
tristanit would be really awesome to find out why... jonathanmaw can you check the full log in ~/.cache/buildstream/logs ?12:11
tristanand see if it says anything about checking out gnulib ?12:11
tristanjonathanmaw, this is something that... happened once and didnt happen again, you got lucky to trigger it12:11
tristanthe build log should be in the log directory + build-essential/coreutils-common-coreutils/9028a2a8-build.16994.log12:14
jonathanmawtristan: https://pastebin.com/FLQWh9DA12:16
jonathanmawthat's the references to gnulib in the fetch and build logs12:16
ironfootoh i remember, something about staging the source but not the submodules12:16
tristanjonathanmaw, ok so I'm only concerned with the build log of coreutils12:19
tristanactually, can you paste that full build log ?12:19
tristanjonathanmaw, part of that build log will be the staging (clone + checkout) of coreutils into the build directory12:19
tristanit *should* be accompanied by the staging of gnulib12:20
tristanbut I suspect it will not be12:20
jonathanmawtristan: https://pastebin.com/uH6t6QPH12:20
jonathanmawhow do I check which sources have already been fetched?12:20
jonathanmawI suspect it might be related to the fact that buildstream seems to defer fetching repos12:21
tristanhmmm12:21
tristanjonathanmaw, the submodule will have been fetched at the same time as coreutils12:21
tristanjonathanmaw, you can look for gnulib in ~/.cache/buildstream/sources/git12:22
jonathanmawif I understand the logging format correctly, if gnulib was fetched, ther's be a <hex>-fetch.<number>.log12:22
tristanit will be there12:22
jonathanmaw./git___git_baserock_org_delta_gnulib12:22
tristanwhat's going on I think is at stage time, the GitSource plugin *sometimes* forgets about there being a submodule12:22
jonathanmawyep, it exists12:22
tristanyeah note that sources which belong to the same element are not fetched in parallel12:23
tristanscheduler is only in element granularity12:23
tristanand actually, the submodule is a detail of one source12:23
tristanso it's all done synchronously, that's why it'll end up in the fetch log of coreutils12:23
tristanif it was not already fetched by some other module12:24
tristanwhich also has a gnulib submodule (highly likely)12:24
tristanbut the problem here is at stage time12:24
tristanAh12:25
tristanironfoot, I think it will happen... only the first time around12:26
tristanOk, I will try to reproduce and fix12:26
tristanmy guess is that in git.py, we need self.refresh_submodules() at the beginning of self.stage()12:26
tristanjonathanmaw, for right now, feel free to just terminate and restart, it will pick up where it left off, and you wont get that problem again for coreutils12:27
jonathanmawok. I'll restart my build and see what happens.12:27
tristanyeah12:27
tristanI'm pretty damn sure, because now that the mirror is there, when it loads up, it will be aware of the submodule already12:27
tristanwhat happened is that fetch() happens in a subprocess, and discovers/fetches the submodule in that process12:28
ironfootaha, makes sense12:28
tristanwhen we call stage in the build subprocess, and it wasnt there in the master process at load time, it never did a cat-file on .gitmodules yet12:28
ironfootusing git is possible to see the contents of .gitmodules of remote files, i believe12:29
tristansure, but still12:29
ironfootbut pointless if you want to make the build tool to not depend on internet connections12:29
jonathanmawironfoot: I think you need the server to do something special to do it remotely12:29
tristanironfoot, we dont want the pipeline load to imply network activity first12:29
tristanonly in fetch()12:29
tristanand we dont want network activity at build time either12:29
tristanexactly12:30
* tristan pushes some patches which "freeze time" when the build is suspended12:31
tristanthat's a bit nicer12:31
tristandurations dont include stopped time12:31
tristannow, I think bwrap is acting up at SIGCONT time though, seems it does not consistently continue and needs a kick in the nuts every so often12:32
*** tristan has quit IRC12:45
*** tristan has joined #buildstream12:49
*** ChanServ sets mode: +o tristan12:49
tristanNice, I reproduced it, lets try the fix12:53
tristanFixed the submodule issue in master12:57
tristan81G/home/tristan/.cache/buildstream/12:58
tristan:-/12:58
tristanthat's a bit big I think12:59
* tristan makes backup of his cache and runs a full build of gnome system with fetches and everything overnight13:02
tristanah, I think ostree plugin can use some love, seems I have some tmp directories that remain and are a big huge13:04
jonathanmawhrm, failure building ostree, unable to access https://github.com/mendsley/bsdiff15:45
jonathanmawprobably because I didn't pull the new version of buildstream that fixes the submodule problem :/15:46
*** jonathanmaw has quit IRC17:08
*** ssam2 has quit IRC17:26
*** tristan has quit IRC22:11

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