IRC logs for #buildstream for Thursday, 2018-08-09

*** leopi has joined #buildstream04:25
*** tristan has joined #buildstream04:29
*** bochecha has joined #buildstream05:37
*** tristan has quit IRC06:24
*** juergbi has quit IRC06:45
*** juergbi has joined #buildstream06:47
*** tristan has joined #buildstream07:17
*** toscalix has joined #buildstream07:51
qinustyCan anyone tell me how/where plugins are loaded within buildstream?08:09
KinnisonI'd guess from https://gitlab.com/BuildStream/buildstream/blob/master/buildstream/_plugincontext.py08:13
*** noisecell has joined #buildstream08:36
tiagogomestristan, could you give another look at https://gitlab.com/BuildStream/buildstream/merge_requests/60008:46
tristantiagogomes, I don't understand at all how that fixes the race :-S08:50
tristantiagogomes, last time I saw scheduler changes here, which I was hoping tlater could comment on; those looked appropriate. The original patch also made the calculation more fault tolerant, which *also* seemed sensible in combination with that08:51
tristanbut I'm totally lost as to how changing the location of the temp directory changes things08:51
tristandoes this exclude the tmpdir from the size calculations ?08:52
tiagogomesDidn't the commit message helped?08:52
tristantiagogomes, didn't expand it, my bad...08:52
tristanUmmmm, tiagogomes how can a temporary file be reaped while we're calculating the size ?08:53
tristanDoes the CAS use deep OS features for the tempdir which can interfere ?08:53
tristanmounting a tempfs or smth with, unforeseeable consequences ?08:54
tiagogomesIt is true that linux doesn't finish off with the file if there are processes with a open file descritor to it08:54
toscalixI will be at akademy 2018 spreading the news about buildstream and freedesktop-sdk, among other things: https://toscalix.com/2018/08/08/codethink-is-sponsoring-akademy-2018-and-i-am-attending/08:55
tiagogomesHowever, the race is that when you do the os.walk, the file still exits; after when you do a stat the file might have disappeared08:55
tristantiagogomes, ok and this happens always in the temp area ?08:56
toscalixI will not stay for the whole event, which is similar in length and format to GUADEC but 3 full days08:56
tristantiagogomes, so iiuc, cache size calculation is not exclusive; and happens while other things might be adding to the artifact cache; which iiuc was intended and alright08:56
tiagogomesI only saw it under those circumstances08:57
tristantiagogomes, which means that the temp files might be in use and then dissappear, as a result of cache additions during builds and pull08:57
laurencetoscalix, I will review the content proposal now08:57
tiagogomesyup, that's what happens. The ElementJob doesn't need to acquire the cache resource08:57
tristanSo, basically the scheduler does not have a problem, but including the temp dir causes problems because of this08:58
tiagogomesThat were my own conclusions08:58
tristantiagogomes, I think the ElementJob *must* acquire the cache resources, but not exclusively, but I think that's what you mean08:59
tiagogomesThough you could have another ArtifactCommit job that was responsible for committing the artifact an acquired exclusive access to the resource08:59
tristanand I think that resource.py could probably be made more clear08:59
toscalixlaurence: yes please, I would like to add links after merged and then send the first contents to work on to the mailing list08:59
toscalixincluding those links08:59
toscalixso you probablly will see an additional MR from me today. I am travelling this afternoon so I would like to send the proposal before that09:00
tristantiagogomes, commits happen without exclusive access, only cleanup jobs require exclusive access; but I *think* we're on the same page here09:00
tristantiagogomes, commenting, I'm just going to suggest an alternative wording for that commit message09:04
tiagogomesok :)09:07
tristantiagogomes, ah, one more thing; it seems the MR did not properly capture that it closes #52009:10
tiagogomestristan that's because I didn't want the issue to be automatically closed :)09:11
tristantiagogomes, please just take care that it is a appropriately closed at the right time (it is mentioned in the MR so traceability is fine, just the automation wont do it)09:11
tristanAha !09:11
tristanOk no worry :D09:11
*** jonathanmaw has joined #buildstream09:15
tiagogomesWere the gitlab irc notifications disabled?09:25
tristanlooks like the bot is not around... ironfoot ?09:26
tristanmaybe a server restarted ?09:26
tristangitlab-br-logger seems to be present in #freedesktop-sdk09:27
tristangitlab-br-bot, rather09:27
jjardonHi, does the git source plugin supports git lfs ?09:31
rdaleno09:32
jjardon:( ok thanks09:41
ironfoottristan: will have a look soon09:45
* jjardon opens https://gitlab.com/BuildStream/buildstream/issues/56709:47
rdalei've replied with my patch attached and what i think is wrong with it atm10:00
valentindtristan, I think I have it all for !616 (deterministic staging). Could I have a review to tell me if I forgot things?10:05
tristanvalentind, I was going to check that next actually :)10:16
valentindtristan, Great.10:16
tristanvalentind, What is the `deterministic` argument added to public API used for, asides from the local source plugin ?10:30
tristanvalentind, comments all up10:44
valentindtristan, if false, then we go back to previous behavior, which keeps permissions.10:46
valentindI thought we maybe needed something like that. But I can rename to keep-permissions (and interpret it as opposite).10:47
tristanvalentind, no no, do what the comments say; don't add any of that to the core copy_files()10:47
tristanvalentind, copy_files() is used throughout; as far as I can see, this is only needed in the local plugin10:48
valentindtristan, Ah to the copy_files OK.10:48
valentindtristan, It is needed for remote in 1.210:48
tristanNo, remote only needs to chmod(0644) after stage, and that's it10:48
tristan(also in the comments)10:49
valentindtristan, OK.10:49
valentindtristan, so I just write another function to recursively copy files for local?10:49
tristanvalentind, the point is that copy_files() needs itself to not be a focal point for handling permissions and such; whatever is supported by the virtual fs stuff (in progress) and CAS, needs to just work and pass through10:50
tristanvalentind, I think you dont need that; you just need to first (A) list_recursive_thing_from_utils.py()   (B) Use the explicit list and pass it to copy_files(), avoiding a double walk... (C) Iterate over the same list and just set the perms10:50
valentindtristan, OK, I will do that.10:51
tristanWhat is going to be tricky and confusing, and I don't exactly know how is going to work, is how os.chmod() and such is going to transparently "just work" over the virtual FS, while the CAS based artifact slowly gets fixed to support more file attributes10:52
tristanI suppose there is a strategy in place for all of this, but I still have to get through a ton of stuff before I can get a grasp on what is planned there10:53
tristanoops, missed one more comment, valentind; you forgot to bump the artifact version10:54
* tristan adds to issue10:54
valentindtristan, to force rebuild artifacts?10:54
tristanvalentind, that's what I was saying the other day10:55
valentindSorry, I missed something. OK.10:56
tristanvalentind, I said that it would be ideal that you have a single merge request, so that we don't need to bump the artifact version too many times :)10:56
valentindtristan, Ah, right. I did not get it. Sorry.10:56
valentindFound another bug with SafeHardLinks. dup syscall does not work. It gives an fd, but this fd is not useable.11:07
valentindActually I can seek it. But read gives a EBADF.11:08
valentindI think I know why the mmap and this fail.11:10
valentindBecause when you pass O_CREAT, then SafeHardLinks uses O_WRONLY even if you passed also O_RDWR.11:10
tristanvalentind, oh sounds like a potentially nice find !11:11
valentindYEs, that was simpler than I thought.11:11
valentindNow I have to find out how to get those flags from fuse.11:11
tristanit often is; finding out the problem is harder :)11:11
valentindIf only mmap gave EBADF instead of a bus error when passing an fd that is not readable when we ask for read rights.11:12
*** tiagogomes has quit IRC11:28
*** tiagogomes has joined #buildstream11:29
valentindtristan, the flags to create fixed the mmap issue.11:48
tristancreat() ?11:49
* tristan recalls the one regret of the design of the POSIX system library API11:50
valentindWell in FUSE API is is called "create" and it used when open was called with O_CREAT.11:50
tristan:)11:50
valentindBut I suppose creat calls the same.11:50
tristanvalentind, I'm just horsing around11:50
tristanWSalmon, just commented on your issue... I think we have the right solution for the plugins to ensure they are configured properly; they need to properly assert that in their configure() implementations :)11:52
tristanWSalmon, in fact, that seems to just be a detail that was missed for a long time11:52
WSalmontristan, im just reading thought the notes, many thanks for the detailed reply11:56
tristanWSalmon, my take on this is that; individual plugins have their own configuration, and they already (implicitly) raise LoadError in `Plugin.configure()` when the configuration provided is unsatisfactory12:00
tristanWSalmon, if there is nothing you can do with a source when neither ref or track are specified in the YAML config, it is already a bug that an error is not raised at Plugin.configure() time12:00
WSalmonjust looking at the .configure in git.py now12:01
WSalmon:)12:01
*** leopi has quit IRC12:05
tristanvalentind, btw, do we have a solution yet for `tar` ?12:20
tristanvalentind, I'm seeing in the comments that you removed something for `tar`, but don't understand how it is fixed12:20
valentindtristan, There is nothing broken in tar. I have not found any determinism.12:21
valentindnon-determinism.12:21
tristanvalentind, even when run as root vs non-root ?12:21
valentindPython's tarfile does not make different between root and non-root.12:21
tristanEh ?12:21
tristanHmmm12:21
valentindGNU tar does.12:21
valentindWell, it does with respect to chown. But it does the chown first.12:22
tristanSo wil Python's tarfile error out when trying to extract say, a file with extended attributes ?12:22
valentindFor the permissions, they are the same whether you use root or not.12:22
tristanRight, and the ownership bits of course12:22
tristanThose will be different12:22
valentindextended attributes are not extracted.12:22
tristanNot *at all* ? Or not *when being a regular user* ?12:23
valentindNot at all. I have not seen anywhere in Python's code where it every does it.12:23
tristanvalentind, it seems like a class of bugs to treat separately, but still to keep our eye on12:23
valentindtristan, And I think GNU tar also ignores extended attributes unless you tell it to use them.12:23
tristanvalentind, that is surprising, as I am quite sure that for instance, YBD works; supports static device nodes in the artifacts, which are implemented with tar, and requires that you be root for it to work12:24
valentindtristan, yes, there might be reasons to change the behavior in the future. Maybe we do not want the permissions to work like that. But it is deterministic.12:24
tristanvalentind, the chown is still disturbing; when you say it does the chown first; that is unconditional ??12:25
valentindtristan, Maybe it passes "--xattrs".12:25
tristanvalentind, I think YBD had a special python code for extracting, iirc12:25
tristani.e. it walks the archive and does stuff, that's probably why it works12:25
tristanSo if you run as root; and extract/stage the tarball; if it does not chown(root), then the owner UID/GID in the sandbox do not match the root UID in the sandbox, afaict12:27
valentindtristan, no, it does it only if uid or euid is 0.12:27
tristanvalentind, exactly12:28
valentindBut we fix users later.12:28
valentindThere is this set_deterministic_user that is run later.12:28
tristandeterministic_user ?12:28
tristanaha12:28
tristanRight, that is a bit unfortunate but required :-S12:29
tristanvalentind, I suppose we will need a format semantic when supporting staging directly to the CAS and preserving all attributes; so that it does not suddenly start behaving differently12:29
tristanvalentind, I'm satisfied with the "why it's not broken", thanks for explaining that :)12:30
valentindtristan, What is YBD? I would like to see what they do.12:31
valentindOh I see, it is part of baserock.12:32
*** tristan has quit IRC12:36
WSalmontristan, could you suggest a good value or if i need a new element for LoadErrorReason for missing ref+track, i was expecting there to be something like "invalid combination of options"12:40
paulsherwoodvalentind: https://gitlab.com/baserock/ybd/blob/master/ybd/cache.py#L166 is what creates artifacts in ybd12:42
valentindpaulsherwood, thanks12:43
*** leopi has joined #buildstream12:47
*** tristan has joined #buildstream12:54
valentindtristan, So I have tested with device file. It just fails as non-root.12:59
*** jonathanmaw_ has joined #buildstream13:00
tristanvalentind, lets treat this as a separate class of issues; in any case our intention was to not support static dev nodes from the start so that is not a great example13:01
*** jonathanmaw has quit IRC13:01
*** flatmush1 has joined #buildstream13:27
*** toscalix has quit IRC13:30
*** flatmush has quit IRC13:47
*** flatmush1 has quit IRC13:51
valentindSuddenly with pylink-0.12.1 I get new errors.13:54
valentindOr, no it does not seem to be the issue.13:55
valentindpylint 2.1.1 is an issue. Had to rollback to 1.9.3.14:00
valentindqinusty, I see you had the same issue as me.14:02
*** toscalix has joined #buildstream14:02
*** toscalix has quit IRC14:04
qinustyYes14:05
qinustyBut is it an issue of pylint, or just more things we can tidy up/fix14:05
*** flatmush has joined #buildstream14:06
juergbivalentind: pylint 2.1.1 passes here on master, what issue do you see?14:10
valentindjuergbi, https://paste.gnome.org/pdnsvmtjz14:11
valentindUnless there was a fix recently on master.14:12
valentindThat I did not see.14:12
juergbiI'm wondering why I don't see any of those14:13
juergbivalentind: how do you invoke it?14:13
valentindpython3 setup.py test14:14
juergbisame here14:14
juergbiI'm on Python 3.7 now but I also checked recently with 3.6 and latest pylint14:14
valentindjuergbi, Did you see the last issue by qinusty ?14:15
juergbino14:15
valentindhttps://gitlab.com/BuildStream/buildstream/issues/57014:16
* tiagogomes points out that we still test against 3.5 in the CI14:17
juergbiand 3.6 as well, iirc14:18
juergbibut probably not 3.7 yet14:18
juergbii can reproduce the warnings by directly invoking pylint, but not via setup.py14:19
valentindjuergbi, you should add "pylint == 2.1.1" in setup.py to be sure it does not pick the wrong one.14:20
valentindI would not trust too much setuptools.14:21
juergbino difference, it's the only pylint version on the system14:22
valentindjuergbi, how do you get errors calling it manually and not through setup.py?14:24
valentindDo we have a configuration for pylint somewhere?14:24
juergbi.pylintrc in the source directory14:29
*** leopi has quit IRC14:29
juergbivalentind: is it possible that you have a system or user-wide pylintrc that gets used by setup.py test even though it shouldn't?14:29
juergbibtw: the currently used testsuite docker images have pylint 2.0.0, afaict14:30
valentindjuergbi, I do not have pylint installed system wide. And no configuration.14:30
valentindI have removed the .eggs directory and tried it again. Same issue.14:32
valentindHave to go soon. Will look at that more later.14:33
*** edb has joined #buildstream14:33
WSalmonvalentind i presume you have taken all the stuff in setup.cfg in to account?14:41
tiagogomeswhat directories buildstream looks for plugins14:41
*** noisecell has quit IRC14:57
*** leopi has joined #buildstream15:30
*** noisecell has joined #buildstream15:31
*** toscalix has joined #buildstream15:52
*** noisecell has quit IRC15:56
tiagogomesSomething odd is going on here15:56
tiagogomesIf a build failed before, If I run bst again it will just display the results of the last build?15:57
*** phildawson has quit IRC16:02
*** phildawson has joined #buildstream16:02
qinustyfatal-warnings is in the pipeline and almost ready for review tpollard, I'll try and get it merged tomorrow.16:03
skullmanhuh, found a race condition in source fetching. If two repositories have a common submodule and the fetches run in parallel they can cause an exception when the second finishes fetching and attempts to rename it into place in the cache.16:03
* skullman looks to see if there's already an issue16:03
tpollardqinusty: awesome! look forward to seeing it :)16:04
tpollardtiagogomes: that's expected now16:04
tpollardI think anyway16:05
qinustyNotes about ref-not-in-track: We decided that ref-not-in-track could be associated with a few plugins and not just git, so I have added it as a 'core warning'. I'll let you work it out from the docs since it'll be a good check to see if my docs make sense.16:05
qinustytpollard ^16:05
tpollardtiagogomes: https://gitlab.com/BuildStream/buildstream/merge_requests/56116:05
skullmanah, it's basically the same as issue 516:08
jmacSuddenly started getting this: "Error loading user configuration: YAML file has content of type 'CommentedMap' instead of expected type 'dict': "16:28
laurenceNexus, could I ask you to cast your mind back to this - https://gitlab.com/BuildStream/buildstream/issues/16616:29
jmacAfter updating master16:29
laurenceAnd ask, did it get back-ported in the end?16:29
laurenceI hope that it did and we can close the issue16:29
tpollardjmac: urk16:31
Nexuslaurence: what about it?16:44
laurence<laurence> And ask, did it get back-ported in the end?16:44
laurence<laurence> I hope that it did and we can close the issue16:44
*** toscalix has quit IRC16:45
qinustyurgh now the lint issues are happening to me when I use ./setup.py test etc16:45
Nexuslaurence: you'd have to ask tristan, i asked the same question on the issue16:46
WSalmontristan i have updated https://gitlab.com/BuildStream/buildstream/merge_requests/621 and https://gitlab.com/BuildStream/buildstream/merge_requests/628 in line with your comments, any feed back would be great!16:49
jmacThis is silly, I'm getting that CommentedMap error on ancient versions of buildstream master now and I haven't updated any packages on my system16:50
laurenceNexus, well, you asked a different question16:52
laurenceBut now I have an answer to mine16:52
qinustyNothing better than ancient versions of builstream jmac, while bisecting last week I went through the chunk of commits which don't build without __version__.py existing which WAS created by setup.py.16:53
* qinusty pushes to gitlab and hopes his pipeline passes for tomorrow16:55
*** jonathanmaw_ has quit IRC17:03
qinustyIs the gitlab not dead?17:03
qinustyS/not/not17:03
*** bochecha has quit IRC17:05
*** bochecha has joined #buildstream17:05
*** xjuan has joined #buildstream17:07
*** bochecha has quit IRC17:10
*** bochecha has joined #buildstream17:10
jmacCan anyone tell me what version of ruamel they have on their system?17:20
bochechajmac: 0.13.1417:21
bochecha(from the Fedora 28 package)17:21
jmacRight, I've figured out what happened - I ran `pip3 install --user -e` on my system and it's upgraded ruamel to 0.15.5217:23
jmacFiling an issue now17:31
laurencephildawson, can we close off the ticket for ''bst workspace open -f' does not behave as documented' - https://gitlab.com/BuildStream/buildstream/issues/44917:36
*** hergertme has quit IRC17:38
*** hergertme has joined #buildstream17:38
*** hergertme has joined #buildstream17:39
laurencejmac, thanks for posting that to the list - enjoy the long weekend !17:45
*** rdale has quit IRC17:46
jmacHope it helps!17:49
jjardonrelated with what jmac just discovered: can I have reviews of https://gitlab.com/BuildStream/buildstream-docker-images/merge_requests/56 , please?18:03
*** phildawson has quit IRC18:22
*** leopi has quit IRC19:30
*** cs_shadow has quit IRC20:14
*** edb has quit IRC20:23
*** tristan has quit IRC20:28
*** bochecha has quit IRC22:04
*** cs_shadow has joined #buildstream22:54
*** xjuan has quit IRC23:18

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