IRC logs for #buildstream for Friday, 2017-09-29

*** tristan has joined #buildstream06:14
*** ChanServ sets mode: +o tristan06:14
*** bochecha has joined #buildstream08:05
gitlab-br-botbuildstream: merge request (cross_platform->master: Cross platform) #81 changed state ("merged"): https://gitlab.com/BuildStream/buildstream/merge_requests/8108:30
gitlab-br-botpush on buildstream@master (by Tristan Van Berkom): 12 commits (last: widget.py: Replace tail with a python implementation) https://gitlab.com/BuildStream/buildstream/commit/be20f4113dd2c0b67e6223f83c86b9490224584a08:30
gitlab-br-botbuildstream: Tristan Van Berkom deleted branch cross_platform08:30
*** jonathanmaw has joined #buildstream08:52
*** ssam2 has joined #buildstream08:57
*** tlater has joined #buildstream09:03
tlaterOh, the cross platform branch is finally merged \o/09:11
tristanYay !09:12
tristanAnother one bites the dust09:12
bochechaoh, that should help with installing bst-receive-artifacts without having bwrap installed, then, shouldn't it?09:19
bochecha(that was 91)09:20
tristanOh that...09:23
tristanI dont think no... but we should be able to do something about that09:24
tristanSheesh /me hates this setuptools09:24
* tristan thought he was doing the right thing setting up this python project, to follow all the standard practices09:25
tristanSometimes standard practices are just so ... insufficient, though :-/09:25
tristanbochecha, fwiw; it looks like in some near-ish future; all of our python hacks will explode in our face :)09:27
tristanhttps://www.python.org/dev/peps/pep-0552/09:27
tristanof course, building older pythons will still remain a thing, so python hacks will have to stay around but eventually; it will explode and we'll have to make them conditional09:28
bochechayeah, the whole python packaging space is (finally) evolving (one could say "getting fixed")09:29
bochechathat will definitely break things, but hopefully it should also bring a lot of sanity :)09:29
paulsherwoodis there an understanding of the need for provenance in the 'getting fixed' approach?09:30
paulsherwood(ie some confidence that we know whose source we are building)09:30
tristanpaulsherwood, I guess that would be in the domain of distutils and pip, I am not aware of signing mechanisms and such in their deployment infra (but there may be)09:33
tristanbochecha, btw, I'm not sure how your suggestion for setup.py works; I added a print("{}".format(sys.argv)) to setup.py and ran this: https://bpaste.net/show/494818725dba09:33
bochechatristan: iirc the `install` command class has a `user_options` attribute which will contain the options passed by the user to the cli09:35
bochechaI guess you need a custom install command class which handles those09:35
bochechathat's from memory, though09:35
tlaterbochecha: You're right on that one. It's moreso for commands than flags though09:35
tlaterHmmm, actually, you'd just have to override the default install command09:36
bochechayes, override it with a custom class which only adds support for the desired options, and defers everything else to the defaul command09:43
* tristan had tried something like that before09:44
tristanI think I was fiddling with trying to automate the generation of man pages09:44
bochechathat's another painful thing with Python09:44
bochechathere's a patch posted on the Python bug tracker to have argparse generate man pages09:45
bochechawhich is a pretty nice idea (at least for simple cases which can be handled automatically from the automatic argparse help)09:45
tristanExcept, like with everything else python; the thing is the standard library is the shitty one nobody wants to use, except for the most basic of purposes09:45
tristanClick generates man pages from the help output, and has just a few formatting issues09:46
tristans/the thing is/the thing in/09:46
bochechaah, I didn't know click did that09:47
bochechaI'm not a big fan of click, though... I guess I'm just used to argparse :)09:47
tristanits an extension yeah https://github.com/click-contrib/click-man09:47
tristanwell click solves more problems (and *cough* would solve them better if the maintainer looked at my patches) than just command line parsing09:48
tristanwhats really nice is the decorators create a whole data model which can be applied to generating help output, man pages, automation of bash completion, etc09:48
tristanand then also gives you the things you will want for cli apps (prompting the user, echoing with colors, automatically avoid ANSI escape codes when not connected to terminal)09:49
bochechaI think click didn't do all that last time I looked at it09:50
bochechayou're making me want to have another look :)09:50
tristanheh maybe09:50
tristanit has some history and was forked out of another pocoo project I think09:50
bochechayeah, it came out of flask09:50
bochechanow that I think about it, the last time I used click was probably in June 201409:51
bochechaI probably should have a new look, lets could have happened since then :x09:51
bochechas/lets/lots/09:51
tristanbochecha, maybe you have a trick for this; I have this command: https://bpaste.net/show/d709b0036ea5 and that successfully picks up the arg10:32
tristanI can probable put all of the system assertions directly and conditionally in the install.run() as well10:33
tristanOnly thing is; it's impossible to conditionally set the entry_points10:33
tristanafaics10:33
bochechawell, first, I'd use the other form of writing entrypoints10:33
tristanWhat is that ?10:33
bochechabecause then it's a bit nicer and easier to append to a list rather than having strings10:33
bochechathis: https://framagit.org/bochecha/org.ideascube.Example/blob/master/setup.py#L46-5310:34
bochechabut for your actual question... yeah, I don't know how to conditionally pass entrypoints10:34
tristanAh10:34
bochechait might be too late in fact, since they are supposed to be passed to the setup function :-/10:35
tristanbochecha, well in that case, it's a dict, so it's mutable, maybe we'll get lucky :)10:35
bochechatrue10:35
bochechabut it's possible setuptools already did what it had to do with that dict, and so modifying it won't change the outcome10:35
bochechamaybe in case the option was passed to only install the receiver, you can just remove the `bst` script :P10:36
tristanit worked \o/10:40
tristanYeah I did the opposite, append the `bst` entry point if that's not specified10:40
bochechathat feels like such an awful hack :)10:40
bochechabut hey, if it works...10:40
tristanI dont think we'll see better :-/10:41
bochechaI hope the pyproject.toml stuff, when it takes over, will have something for deps which aren't Python modules, and conditional builds10:41
ssam2fwiw i've been building a python app with Meson just fine10:41
bochechayeah10:42
ssam2i guess it lacks support for python dep management though10:42
bochechapip already has support for different build systems (iirc it supports distutils, setuptools and flit)10:42
bochechaadding support for meson in pip would be pretty great, because then everything is possible :)10:42
bochechayou'd `pip install foo`10:43
bochechapip would download and install the deps10:43
bochechaand then use meson to build/install foo10:43
tristanEh I have little faith10:44
bochechawell, Python packaging has always been awful, so it can only get better ;)10:44
tristanheh10:44
bochechatristan: to get back to a more constructive conversation, did you have any time to think about what to do with those pyc files?10:45
bochechai.e should I spend time trying to handle those corner-cases Flatpak handles, or do we say "just don't do that, it's awful"?10:45
tristanbochecha, yeah I just didnt get to merging it, I think lets go with the dd trick you did without any additional crazy hacks10:45
bochechaworks for me10:46
bochechaI'll push the fix for the integration tests then :)10:46
bochechaand open an MR for it10:46
tristanI dont want to add those at all, and if we must; we should have documentation about which specific cases those are (they do ugly things)10:46
tristanI mean, installing the same .py file is already nonsense; should only happen in the case of circular deps I suppose10:47
bochechayeah, and py/pyc files should really come together IMHO11:02
bochechainstalling just the py (you don't trust the bytecode optimisations?) or just the pyc (proprietary software?), I can understand11:03
bochechaif installing both, then they really should be coming together11:03
*** semanticdesign has joined #buildstream11:04
gitlab-br-botpush on buildstream@91-allow-only-receiver-install (by Tristan Van Berkom): 2 commits (last: setup.py: Added --artifact-receiver-only install option) https://gitlab.com/BuildStream/buildstream/commit/559f9e38cf27269a9d421c18a71d39db91d57d7311:15
gitlab-br-botbuildstream: merge request (91-allow-only-receiver-install->master: Resolve "bst-artifact-receive does not require bubblewrap") #99 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/9911:15
tristanbochecha, yeah I was going to do a fix for the tests and push that, an MR will be helpful11:24
tristanbochecha, of course CI will fail heh... but no worry I'll just merge them both and things will land rightside up11:24
tristancrap, racing against 1hour deadline CI now :-/11:26
tlaterIt seems to be about 50/50 whether the unix tests manage to succeed in < 1 hour11:26
ssam2i'm sure that can be altered11:27
bochechatristan: https://gitlab.com/BuildStream/buildstream-tests/merge_requests/1711:27
tristanyeah I think it's a limit imposed by the free gitlab runners (in which case, totally reasonable)11:27
gitlab-br-botbuildstream: merge request (fix-pyc-timestamps->master: Fix timestamps in Python bytecode) #98 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/9811:29
gitlab-br-botbuildstream: merge request (91-allow-only-receiver-install->master: Resolve "bst-artifact-receive does not require bubblewrap") #99 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/9911:30
gitlab-br-botpush on buildstream@91-allow-only-receiver-install (by Tristan Van Berkom): 2 commits (last: setup.py: Added --artifact-receiver-only install option) https://gitlab.com/BuildStream/buildstream/commit/b8b85e6639d1df06dd3480878f2c7177d5c92e4211:30
gitlab-br-botpush on buildstream@fix-pyc-timestamps (by Mathieu Bridon): 16 commits (last: Fork and embed fusepy) https://gitlab.com/BuildStream/buildstream/commit/bf0f2863e8cea73e41d5d9efca3126e4075fc3ae11:30
gitlab-br-botbuildstream: merge request (fix-pyc-timestamps->master: Fix timestamps in Python bytecode) #98 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/9811:30
bochechatristan: ok, both MRs are in, I removed the WIP status from the first one, tests are running (and will fail obviously), should be all ready to be merged :)11:31
tristanyep, I'll do on command line...11:37
gitlab-br-botpush on buildstream@master (by Tristan Van Berkom): 1 commit (last: Fix timestamps in Python bytecode) https://gitlab.com/BuildStream/buildstream/commit/4a29f7eb2c53cd3d06038d3cbb44d1ce835de64711:39
gitlab-br-botbuildstream: issue #94 ("BuildStream could be more helpful when build Python code") changed state ("closed") https://gitlab.com/BuildStream/buildstream/issues/9411:39
gitlab-br-botbuildstream: merge request (fix-pyc-timestamps->master: Fix timestamps in Python bytecode) #98 changed state ("merged"): https://gitlab.com/BuildStream/buildstream/merge_requests/9811:39
bochecha** Couldn't install with extension module, trying without it...11:42
bochecha** BuildFailed: command 'gcc' failed with exit status 111:42
bochechaI guess the tests might run a bit faster if the C extension was compiled?11:43
bochecha(that's from https://gitlab.com/BuildStream/buildstream/-/jobs/34488586)11:43
tristanHmmm, I thought we fixed that by removing the --upgrade options when installing with pip11:44
*** semanticdesign has quit IRC11:44
*** semanticdesign has joined #buildstream11:45
gitlab-br-botpush on buildstream@91-allow-only-receiver-install (by Tristan Van Berkom): 3 commits (last: Fix timestamps in Python bytecode) https://gitlab.com/BuildStream/buildstream/commit/4a29f7eb2c53cd3d06038d3cbb44d1ce835de64711:45
gitlab-br-botbuildstream: merge request (91-allow-only-receiver-install->master: Resolve "bst-artifact-receive does not require bubblewrap") #99 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/9911:45
bochechawow, I never realized the tests were so awfully slow in the CI :o11:46
tristanbochecha, the I/O is terrible11:47
bochechais that because they run in Docker, where OSTree isn't as fast as it could be? (I remember Flatpak does some magic with ostree's fuse-rofiles to speed everything up, which doesn't work inside Docker)11:47
tristanprocessing is not great, but I/O is horrible11:47
tristanI implemented a job which clones a bunch of gits and runs a conversion of one builder format to another... maybe 6 months ago11:47
tristanI implemented a change which doubled the I/O11:48
tristanOn my laptop, this turned 4 minutes into 5 minutes11:48
tristanOn the gitlab runner, it turned 45minutes into an hour and a half :-/11:48
bochechaouch11:48
tristanwas a bit hilarious too... people were telling me that my last commit made the task take and hour and a half11:51
tristanI was debugging it for a day, and then later learned that it was originally taking 45min11:51
tristanheh11:51
bochechaand I find my CI is long, at ~10 minutes :x11:52
tristanI think we can dedicate our own runners though11:52
tristanand get better performance11:52
bochechaprobably if you stop using docker as well11:52
bochechagitlab ci allows running the ci jobs either in docker images, or as simple shell scripts directly on the runner host11:53
*** tlater has quit IRC11:53
tristanyeah not sure... I feel like it might be interesting to have the .gitlab-ci.yml declaring the exact image I'm going to test on11:54
tristanAnd then even iterate through various images, ensuring today's buildstream works with last years fedora or such11:54
*** tlater has joined #buildstream11:58
*** semanticdesign has quit IRC12:07
tristanoh yeah12:07
*** semanticdesign has joined #buildstream12:08
tristanOnce we churn out some tiny base runtimes... we should refactor the integration tests to use those12:08
tristanA huge bottleneck is also that some of the tests use the freedesktop flatpak base runtime12:08
*** adds68 has quit IRC12:12
ssam2tiny base runtimes ... got to about 300MB in Baserock12:15
ssam2it's hard to get a G++ toolchain smaller than that I think12:15
tristanyeah, which is much smaller :)12:16
tristanssam2, once you have the issue of hosting sorted out, we should change our integration tests to use that instead12:17
ssam2sounds good12:18
tristanI would be interesting if we could even share code between the "Example projects" and the integration tests... but meh, I wont hold my breath12:18
*** adds68 has joined #buildstream12:18
gitlab-br-botbuildstream: issue #91 ("bst-artifact-receive does not require bubblewrap") changed state ("closed") https://gitlab.com/BuildStream/buildstream/issues/9112:34
gitlab-br-botpush on buildstream@master (by Tristan Van Berkom): 2 commits (last: setup.py: Added --artifact-receiver-only install option) https://gitlab.com/BuildStream/buildstream/commit/14fa10f490b59a55307378b565cb517ad96d5aab12:34
gitlab-br-botbuildstream: merge request (91-allow-only-receiver-install->master: Resolve "bst-artifact-receive does not require bubblewrap") #99 changed state ("merged"): https://gitlab.com/BuildStream/buildstream/merge_requests/9912:34
gitlab-br-botbuildstream: Tristan Van Berkom deleted branch 91-allow-only-receiver-install12:34
tristanAright it passed !12:35
tristanlet friday night begin !12:35
*** tristan has quit IRC12:39
gitlab-br-botpush on buildstream@81-non-empty-read-only-directories-not-handled-during-bst-build-and-others (by Tristan Maat): 1 commit (last: Ensure that artifact file permissions are set in the right order) https://gitlab.com/BuildStream/buildstream/commit/264aa2dab0886d22655814dad2e25258c70e24a713:03
*** tlater has quit IRC13:13
gitlab-br-botbuildstream: Mathieu Bridon deleted branch fix-pyc-timestamps13:17
*** tlater has joined #buildstream13:19
*** xjuan has joined #buildstream13:30
*** reto has joined #buildstream14:02
*** ssam2 has quit IRC15:55
gitlab-br-botpush on buildstream@81-non-empty-read-only-directories-not-handled-during-bst-build-and-others (by Tristan Maat): 1 commit (last: Ensure that artifact file permissions are set in the right order) https://gitlab.com/BuildStream/buildstream/commit/97cf18248edc049c35fb03523cdcaf532617b1af17:18
gitlab-br-botpush on buildstream@81-non-empty-read-only-directories-not-handled-during-bst-build-and-others (by Tristan Maat): 1 commit (last: Ensure that artifact file permissions are set in the right order) https://gitlab.com/BuildStream/buildstream/commit/ac3150c1fc01ab7474827616abec66582cd6b25a17:20
*** jonathanmaw has quit IRC17:20
gitlab-br-botpush on buildstream@81-non-empty-read-only-directories-not-handled-during-bst-build-and-others (by Tristan Maat): 1 commit (last: Ensure that artifact file permissions are set in the right order) https://gitlab.com/BuildStream/buildstream/commit/b8b7b22e46ab64124a9ae744510aff646cf88e3117:22
gitlab-br-botbuildstream: merge request (81-non-empty-read-only-directories-not-handled-during-bst-build-and-others->master: Ensure that artifact file permissions are set in the right order) #100 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/10017:24
tlaterI made !100 \o/17:25
gitlab-br-botpush on buildstream@81-non-empty-read-only-directories-not-handled-during-bst-build-and-others (by Tristan Maat): 16 commits (last: widget.py: Replace tail with a python implementation) https://gitlab.com/BuildStream/buildstream/commit/be20f4113dd2c0b67e6223f83c86b9490224584a17:28
gitlab-br-botbuildstream: merge request (81-non-empty-read-only-directories-not-handled-during-bst-build-and-others->master: Ensure that artifact file permissions are set in the right order) #100 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/10017:28
*** tlater has quit IRC17:28
*** tristan has joined #buildstream20:17
*** tristan has quit IRC21:31
*** semanticdesign has quit IRC23:20
*** xjuan has quit IRC23:40

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