IRC logs for #buildstream for Monday, 2017-12-11

*** bochecha has quit IRC01:30
*** Ya_ALLAH_Ya_Muhmd has joined #buildstream03:54
*** Ya_ALLAH_Ya_Muhmd has left #buildstream03:54
*** Ya_ALLAH_Ya_Muhmd has joined #buildstream04:27
*** Ya_ALLAH_Ya_Muhmd has left #buildstream04:27
*** semanticdesign has joined #buildstream08:34
*** semanticdesign has left #buildstream08:35
*** semanticdesign has joined #buildstream08:40
*** valentind has joined #buildstream08:50
*** starmad has joined #buildstream09:18
*** adds68 has joined #buildstream09:25
*** mathieu has joined #buildstream09:28
*** valentind has quit IRC09:30
*** jude has joined #buildstream09:39
*** jonathanmaw has joined #buildstream09:40
*** tiago has quit IRC10:15
*** tiago has joined #buildstream10:18
gitlab-br-botbuildstream: merge request (flakes-refactor->master: Remove unused imports) #178 changed state ("merged"): https://gitlab.com/BuildStream/buildstream/merge_requests/17810:27
*** ssam2 has joined #buildstream10:28
*** jude has quit IRC10:32
*** jude has joined #buildstream10:50
*** bethw has joined #buildstream10:57
gitlab-br-botbuildstream: merge request (unused-vars-refactor->master: Refactor, removing unused variables) #177 changed state ("closed"): https://gitlab.com/BuildStream/buildstream/merge_requests/17711:18
ssam2tlater, this is the glibc/musl bug : https://sourceware.org/bugzilla/show_bug.cgi?id=2160411:22
tlaterta ssam211:22
ssam2and here's a rather hacky script to scrape a whole mailman archive https://github.com/ssssam/dotfiles/blob/master/bin/fetch-list11:22
ssam2edit the BASE_URL line to point to the correct place and it should just work11:22
ssam2unless it doesn't11:22
tlaterHmm... The linux kernel config script has #!/bin/bash, which doesn't work in a busybox system12:05
tlaterI find this works fine with /bin/ash12:06
gitlab-br-botbuildstream: merge request (sam/savefile-utility->master: utils.py: Add SaveFile utility class) #179 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/17912:06
tlaterBut I'm not sure where I should put the sed line to fix that12:06
tlaterIs there anywhere in the autoconf plugin that's more suitable than 'configure-commands'?12:06
ssam2no12:06
ssam2that's the best place12:07
* tlater wonders if building linux always took this long12:25
paulsherwoodtlater: the first time i tried baserock, my machine was still running after 24 hours :)12:25
tlaterHeh, baserock isn't just the linux kernel though ;)12:27
paulsherwoodoh, well no then12:29
paulsherwoodhow long is it takign you?12:30
tlater20 minutes so far12:30
paulsherwoodok, let me guess...12:30
paulsherwoodare you using a VM?12:30
tlaterActually, yes I am12:30
tlaterGood point12:30
* tlater is also used to building on a far faster machine than this one12:30
tlaterAh, done, finally!12:31
paulsherwoodalright... next... how many cores does your VM have?12:31
paulsherwoodand is your kernel build set to use them all? (ie -j)12:31
tlaterLooks like 4, and yes12:31
paulsherwoodand plenty of memory?12:33
tlaterYeah :)12:33
paulsherwoodhttp://wiki.baserock.org/build-times/12:33
tlaterSeems reasonable: 00:18:45 [linux-x86-64-generic]12:34
paulsherwoodi think that was an outlier12:34
* paulsherwood hasn't done this for a while12:34
tlaterIn that case, it's possible that buildstream is being slow... ssam2 has been running into issues with this as of late12:35
ssam2linux can take a long time depending on config12:37
ssam2if you copied the config Baserock uses, it enables loads of stuff and probably does take about 20 mins to build12:37
ssam2you can get a way with a much more minimal config if you just want to boot a vm though ...  maybe try just doing `make qemu_x86_defconfig` and just use that12:38
paulsherwoodlooking through https://github.com/devcurmudgeon/build-logs I think it was down to approx 4 minutes on aws, 10 mins on my macbook12:38
tlaterI'll try with a more minimal config and see how long that takes12:40
tlaterAck, ssam2's config isn't in the upstream repo :|12:42
ssam2ah, i just found it from googling12:42
ssam2try a more detailed search for 'linux minimal config x86' and see what you dig up :-)12:42
ssam2for some reason the bst-external plugin docs include a list of functions at the bottom13:05
ssam2e.g. https://buildstream.gitlab.io/bst-external/bst_external.elements.dpkg_deploy.html#module-bst_external.elements.dpkg_deploy13:06
ssam2where the buildstream plugins don't: https://buildstream.gitlab.io/buildstream/sources/git.html#module-sources.git13:06
ssam2jonathanmaw, any idea why ?13:06
ssam2i notice a bit of a difference in the doc/Makefile files between the two repos, but not sure if that's the cause13:06
jonathanmawssam2: hrm, not sure13:07
ssam2seems the autogenerated .rst files differ ... in bst-external they get :members: and :undoc-members: and :show-inheritence:13:08
ssam2where in buildstream they get none of that13:08
jonathanmawssam2: looks like the buildstream plugins are generated using plugin.rsttemplate, but the bst-external ones aren't13:10
ssam2aha13:10
ssam2seems create-element-skeletons function isn't actually being called13:11
jonathanmawI think it might be being called incorrectly13:11
jonathanmawI think the globbing faisl13:12
jonathanmawfails13:12
ssam2makes sense13:12
ssam2i think the plugins should also be being ignored by sphinx-apidoc, but aren't being13:12
ssam2which is why it works anyway13:12
ssam2the buildstream/plugins dir doesn't have an __init__.py file and isn't a python package, so that's why sphinx-apidoc ignores them in the buildstream.git docs build13:13
ssam2we should probably not be calling sphinx-apidoc at all for this module, since it doesn't have any public API other than the plugins13:14
*** xjuan has joined #buildstream13:29
*** Ya_ALLAH_Ya_Muhmd has joined #buildstream13:53
*** Ya_ALLAH_Ya_Muhmd has left #buildstream13:53
*** Ya_ALLAH_Ya_Muhmd has joined #buildstream14:04
*** Ya_ALLAH_Ya_Muhmd has left #buildstream14:05
tlater^ Pretty creative way to spam14:05
*** mcatanzaro has joined #buildstream14:06
ssam2sphinx never fails to confuse me14:48
ssam2i have a link in index.rst to <bst_external.elements.dpkg_build>14:48
ssam2and sphinx generates build/html/bst_external/elements/dpkg_build.html14:48
ssam2which has a section with an id of "module-bst_external.elements.dpkg_build"14:49
ssam2and yet ...14:49
ssam2I get bst_external/elements/dpkg_build.rst: WARNING: document isn't included in any toctree14:49
ssam2somehow that link in the index.rst isn't working, but no clue why14:50
ssam2this is pretty much the same thing that works in buildstream.git's docs, but isn't working in bst-external14:50
ssam2wait, it seems to actually be working now despite the warnings14:51
ssam2well, that makes less sense than before, but at least it works14:52
mathieuis there a way to run a command inside a `bst shell --build element.bst` shell and have its result (e.g files created) exported out of that shell?15:09
*** mathieu is now known as bochecha15:09
bochecha(changed nick, not sure why Polari decided not to use the usual one)15:09
tlaterbochecha: I just wanted the exact same functionality ;) - pretty sure there's nothing15:11
ssam2i thought we added that already...15:15
ssam2yeah, you can do `bst shell COMMAND`15:15
ssam2or do you want some kind of automatic diff of files that were changed ?15:15
bochechaI'm getting to the point where my app (well, a PoC at the moment) can just be cloned by anybody, and there's no need to install a compiler, library headers, a virtualenv, ... just BuildStream then `bst build` / `bst shell`; the only thing I'm missing is for those commands like collecting the translation strings into a .pot file, which I can run in a bst shell, but then I can't get the15:16
bochecha generated pot file out of the sandbox15:16
ssam2that's pretty cool15:16
ssam2i don't do much with gettext to be honest; but is it not possible to have the translation step as an element ?15:17
tlaterHmm, are shell sandboxes stored to ~/.config/buildstream/build ?15:17
bochechassam2: it is, it has the potential to make first contributions immensely easier :) (in addition to not having to maintain virtualenvs and deps long term, rebuilding them on each developer workstation at each new Python, etc...)15:17
ssam2yeah15:18
ssam2i feel like in future we should have a higher level tool to enable this kind of thing ...15:18
bochechassam2: maybe, I didn't think about that.... but then that element will generate a pot file which will get pushed into buildstream's cache, how do I take it out and put it in my app source code?15:18
ssam2well, you build your source code in an element too, right ?15:18
bochechaI do15:18
ssam2elements can have multiple dependencies staged in different places, I thik15:18
ssam2*think15:18
ssam2so maybe you could stage the .pot on top of the source tree at buildtime somehow15:19
bochechabut the pot file needs to be put back into the source tree (the git repo)15:19
ssam2for what purpose ?15:19
ssam2i mean, i know it needs to be there once you run 'make'15:20
bochechaso that translators can find it and translate into their languages :)15:20
ssam2aha, I see15:20
ssam2that's a tricky one then, yeah15:20
bochechabut I don't want to run "make", because that requires having the deps installed on my laptop15:20
ssam2self-modifying projects!15:20
bochechawhich I'm trying to avoid15:20
ssam2sure, you want to run make inside the sandbox15:20
bochechaexactly15:20
ssam2but there must be a way to make the .pot file appear in the sandbox at the correct place before you run make15:20
bochechahaving it appear in the sandbox is not a problem15:21
bochechait's in the source git repo, so it gets taken in the sandbox like every other file15:21
bochechathe problem is updating that pot file, putting the new version in the git source tree15:21
bochechathat requires running some commands, which only exist in the build sandbox ):15:21
bochechahence, generating the pot file in the build sandbox, but getting it back out to the source tree15:22
ssam2right, ok15:22
bochechamaybe I should open an issue to discuss this better?15:23
ssam2would `bst shell sh -c "generate Makefile.pot; cat Makefile.pot"` > Makefile.pot (or whatever) be enough ?15:23
bochechaafaik the output of the `cat` command won't be displayed by bst15:23
ssam2hmm, that seems wrong15:24
bochechabst displays its own output (which I wouldn't want) but only displays the commands it runs, not their output15:24
bochechathe output of the commands go to the log file15:24
ssam2that's a bit useless in my opinion15:24
ssam2there should definitely be a way to see the output15:24
bochechayeah15:25
bochechaI often fail my builds on purpose, so that bst will ask me what to do and I can type "log" to see the outputs :P15:25
ssam2i'm not so sure about showing build logs on stdout in general, just because they happen in parallel so it would all get mixed up together15:25
ssam2but `bst shell` should definitely be scriptable15:26
tlaterssam2: Wasn't there a quiet mode specifically for this15:26
tlater*?15:26
* tlater can't remember the exact incantations to run `bst shell` that way15:26
ssam2yes i thought we already added this15:27
tlater--no-interactive maybe?15:27
tlater`bst shell --no-interactive sh -c "generate Makefile.pot; cat Makefile.pot"` > Makefile.pot15:28
ssam2yeah, when I run a command with `bst shell` I definitely see the output15:30
* tlater wonders if this changes when output is redirected and/or --no-interactive is specified15:31
ssam2no way to hide the status output though15:31
ssam2--no-interactive doesn't help15:31
ssam2I think what we lack is the --quiet flag15:31
ssam2for bochecha's use case15:31
bochechathe --no-interactive option was added recently?15:32
bochechabst complains it doesn't exist, here :-/15:32
ssam2maybe15:32
ssam2it doesn't help here anyway. I guess it's about prompting on failure, rather than hiding status messages15:32
bochechaah, `bst --no-interactive shell ...`15:32
bochechawrong order :)15:32
bochecharight, that works, I but I get the bst output added to the generated file15:36
bochechashould I send a MR adding a --quiet flag?15:37
*** Ya_ALLAH_Ya_Muhmd has joined #buildstream15:37
*** Ya_ALLAH_Ya_Muhmd has left #buildstream15:37
ssam2bochecha, if you could, that would be great !15:47
bochechaor maybe sending all buildstream output to stderr, so that a simple `>` redirection doesn't catch it?15:47
ssam2possible, yeah15:48
ssam2personally i'd be in favour of all our status output going on stderr, not sure what others thing15:48
ssam2*think15:48
gitlab-br-botbuildstream: merge request (optional-yaml-for-source-plugins->master: plugincontext: Let plugins not have YAML defaults) #180 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/18015:48
ssam2juergbi, what do you think about putting all bst status output onto stderr ?15:49
gitlab-br-botbuildstream: merge request (project-name->master: project: Export the name as a variable) #182 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/18215:49
bochecha(just realized I had never opened the pull request on exporting the project name as a variable, even though I had pushed the code to a branch a while ago)15:50
ssam2jonathanmaw, does https://gitlab.com/BuildStream/bst-external/merge_requests/12 look OK to fix the bst-external documentation ?15:52
bochechassam2: the patch to move everything to stderr is a one-liner :)15:55
bochechaso the only question is whether or not it's a good idea15:55
ssam2bah, my docs branch was wrong15:55
ssam2now actually working15:56
ssam2bochecha, agreed ... if it's so simple, send an MR and we can discuss there :-)15:56
* tlater dislikes the idea of throwing *all* output to the output labeled 'error'15:56
bochechawriting the commit message right now :P15:56
ssam2i consider the label "error" to mean "diagnostic/status messages"15:57
*** Ya_ALLAH_Ya_Muhmd has joined #buildstream15:57
*** Ya_ALLAH_Ya_Muhmd has left #buildstream15:57
tlaterWhat is "out" then?15:57
ssam2and "output" to mean "actual output of the command", which is nothing for most buildstream commands15:57
ssam2except for `bst show`, `bst shell` and maybe others15:57
ssam2actually that's a point; `show` should be writing to stdout15:58
ssam2the whole idea being that when running commands from scripts, you don't ever get status messages mixed up with the actual content15:59
tlaterI think it would be better to send output from commands run inside a shell/build to a different file descriptor, rather than deciding that everything buildstream says should be considered a status message15:59
ssam2not sure I follow, but I agree that not everything is a status message15:59
tlaterCould we not just output messages from commands to one of the other 14 file descriptors? Or is this only a feature for bash scripts16:00
ssam2however, can you think of stuff other than the output of `bst show` and `bst shell` that shouldn't be considered a status message ?16:00
ssam2what unix programs send output to random file descriptors ?16:01
tlaterI don't think I like your definition, to be frank. Most CLI applications I know use 'out' for status messages, and 'err' for status messages that indicate problems.16:01
ssam2what's a "CLI application" ?16:01
tlaterdocker for example16:02
ssam2right16:02
ssam2but the point we're discussing is making bst commands usable from scripts16:02
ssam2to do that, i'm saying we should behave more like normal programs from /usr/bin do16:02
tlaterYou wouldn't achieve that this way anyway, because build output would be random anyway16:02
ssam2build output is totally offtopic here16:03
tlaterWhat output is supposed to go to stderr then?16:03
ssam2everything that we write to the console, apart from the output of shell commands run by `bst shell`, and text produced by `bst show`16:04
ssam2build output goes to log files on disk, as before ...16:04
tlaterSo this is *only* up for discussion to ensure we can isolate `bst shell` output?16:04
ssam2yes16:05
tlaterI feel moving all output to a different descriptor just for that is a bit too heavy handed, especially because it breaks consistency with other applications IMO16:05
ssam2ok16:05
ssam2but can you think of a use case that would actually be broken by that change ?16:05
tlaterNot really, no, but anyone trying to parse buildstream output will have a moment of wondering where their output goes.16:06
tlaterI think moving `bst shell`  command output to stderr is better16:07
ssam2if anyone is currently trying to parse the mess of ANSI escape sequences that we output on stdout, i feel sorry for them16:07
tlaterThose can be disabled with --no-color16:07
juergbithere shouldn't escape sequences by default for non-terminal output, right?16:07
ssam2true16:07
ssam2but also we could completely change how we output status messages and break their scripts16:07
ssam2we don't declare our status output to be any point of stability16:08
tlaterWhy would we do this over a `--quiet` flag?16:08
ssam2i'd be happy with a --quiet flag16:09
bochechame too, it was merely a suggestion :)16:09
juergbicommon practice is to output warnings and other log messages to stderr if also non-log output is produced (which then uses stdout). if there is no real output, stdout is commonly used for everything, i.e., the log messages, iirc16:09
tristanbst shell is an interesting case because it can output both stderr/stdout, and it's nicer to be able to provide both to a caller separately16:10
juergbifor bst shell stderr for bst logs makes sense to me. similar to ssh, we should aim to have a transparent shell16:10
tristanI think we discussed this before, and I'm in favor of putting everything logging related in stderr, except for a few things we want to be parsible output, like bst show output (not startup status), and `workspace list` output and such16:11
tristanbut that doesnt solve the pretty particular case of `bst shell`16:12
ssam2yeah, i can see you might want to capture stderr16:13
juergbiquiet by default makes sense to me for bst shell. and passing through stdout and stderr separately from the child process16:13
juergbii.e., like ssh16:13
ssam2although, the only reason you should want to capture it is to pass on errors to the user; so it might not be the end of the world if there was bst log output in there too16:13
tristanarguably, if things were to be well scripted *around* bst shell, the caller would want to have all three; --quiet might be undesirable16:13
tristanand, the caller would want to be able to inform buildstream what code the script wants buildstream to exit on, in the case of a buildstream runtime error16:14
tristanotherwise how do you distinguish programatically between a parse error, an error where the sandbox did not provide the exec or it's runtime deps, and an exit code reported by the target exec ?16:15
* tristan thinks valgrind has weird opts like this16:15
jonathanmawssam2: that fix looks good to me, and looks like it works when I build the documentation locally16:19
* jonathanmaw hits the merge button16:19
ssam2thanks!16:19
*** Ya_ALLAH_Ya_Muhmd has joined #buildstream16:29
*** Ya_ALLAH_Ya_Muhmd has left #buildstream16:29
*** Ya_ALLAH_Ya_Muhmd has joined #buildstream16:41
*** Ya_ALLAH_Ya_Muhmd has left #buildstream16:41
*** bochecha has quit IRC16:55
*** jonathanmaw has quit IRC17:12
*** Ya_ALLAH_Ya_Muhmd has joined #buildstream17:17
*** Ya_ALLAH_Ya_Muhmd has left #buildstream17:17
*** noah has joined #buildstream17:29
*** jude has quit IRC17:33
ssam2another bst-external docs build breakage ... https://gitlab.com/BuildStream/bst-external/-/jobs/4404437117:47
ssam2seems 'make' vanished from the docker images17:58
ssam2no idea why17:58
ssam2oh well, we can fix the version for now17:59
* tlater is getting kernel panics now ;-;18:00
tlaterShouldn't have messed with the baserock config x)18:00
ssam2it's very easy to build a broken linux18:01
tlaterYeah, I think I'm lacking ext4 drivers18:01
* tlater might just go back, but is very happy with his 50MB image18:02
*** bethw has quit IRC18:03
*** ssam2 has quit IRC18:03
*** noah has quit IRC18:04
tlaterYep, ext4 is built as a module but this kernel doesn't support modules18:08
* tlater o\18:08
*** valentind has joined #buildstream18:23
*** semanticdesign has quit IRC18:33
*** starmad has quit IRC20:29
*** Ya_ALLAH_Ya_Muhmd has joined #buildstream20:37
*** Ya_ALLAH_Ya_Muhmd has quit IRC20:42
*** xjuan has quit IRC20:47
*** jude has joined #buildstream21:19
*** starmad has joined #buildstream22:31
*** valentind has quit IRC23:12
*** jude has quit IRC23:18
*** jude has joined #buildstream23:24

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