IRC logs for #buildstream for Wednesday, 2017-07-05

gitlab-br-botbuildstream: Tristan Van Berkom deleted branch 44-symlinks-in-the-sandbox-are-broken-by-the-path-to-the-buildstream-cache-containing-symlinks07:55
*** tristan has joined #buildstream08:03
*** ChanServ sets mode: +o tristan08:20
*** tiagogomes has joined #buildstream08:25
*** jude has joined #buildstream08:28
juergbitristan: besides moving the load_public_data call from build() to Pipeline.__init__(), i also need to add such a call to TrackQueue.done(), right? (guarded by if element._cached())08:29
*** violeta has joined #buildstream08:31
*** tlater has joined #buildstream08:35
tristanjuergbi, not really no... unless that is a way to strengthen this fragile setup ?08:47
tristanjuergbi, currently... TrackQueue.done() only force recalculates the consistency (sources)08:47
tristanThe reason why building with --track works, is that the artifact has never been interrogated for whether it is cached or not, until *after* it passes through the TrackQueue08:48
tristanthat's why it will have an unresolved '????????' key until it (and it's dependencies) get passed the TrackQueue08:48
*** jonathanmaw has joined #buildstream08:49
tristanjuergbi, so basically, creating a pipeline with Pipeline( ... inconsistent=True ... ), just means; load it up but dont interrogate the source consistency or cached state08:49
tristanthis is also a bit of an optimization for the case of tracking enabled scenarios (because interrogating the caches can be I/O intensive and take a long time)08:50
tristanwe dont need to know if an element was cached, or if it's sources have the correct ref, when we know we're going to ask for a new ref along the way anyway08:51
juergbitristan: as my suggestion is for TrackQueue.done() i don't see why it would break building, i.e., it's already been processed by the track queue08:57
juergbiwhat other place do you suggest to trigger plugin data loading for the case of build --track where some artifacts are already in the local cache?08:57
juergbi(there is currently no implicit loading in get_public_data() or anything like this)08:57
*** ssam2 has joined #buildstream08:58
juergbieh, public data08:58
tristanjuergbi, Ah right... just because we tracked, doesnt mean we're going to build it, so it needs doing somewhere08:58
tristanjuergbi, Ok so maybe this belongs directly inside Element._cached() ?08:58
juergbiyes, we could do it conditionally for performance reasons08:59
tristanIn Element._cached() there is also a force recalculate, so when force recalculating it would seem the right place to reload that too08:59
juergbii was considering this originally but that relies on someone calling _cached() before calling get_public_data()08:59
juergbiwill probably always be the case but more by coincidence09:00
tristanWell, I guess an invariant is that an element has been interrogated for being cached, before ever trying to build it09:00
tristanAnd calling get_public_data() is invalid on an element that was never either built or cached09:01
juergbii guess that's relatively sane09:01
juergbiit's still somewhat side effect-heavy for _cached()09:01
tristanIt could be more user friendly to have better exceptions for this than 'assert()'09:01
tristanBut in any case they should remain regular exceptions (not derived from _BstError), so that they always show up as "BUG" and have a stack trace09:02
tristanI guess that's not very important anyway09:02
tristanjuergbi, True, but then maybe it's _cached() which needs to be renamed ?09:02
tristanjuergbi, i.e. it's a bit confusing already the flow of this09:03
juergbii would actually like it better to load it on demand in get_public_data(). the reason i didn't go down that route was that it might be mainly triggered in child processes and thus, it would be done multiple times, increasing overhead09:03
tristanthe side effect is already that something can have a cache key before it should09:03
tristanwhen accidentally calling _cached() ahead of a TrackQueue09:03
tristanwhich is pretty bad09:03
*** jude has quit IRC09:10
tristanSo I wonder if there is a design flaw; I think I need "project variants"09:23
tristanOtherwise, when building a huge amount of GNOME modules for either flatpak runtime *or* regular system, then I will have a lot of repetative YAML defining variant conditional prefix etc09:24
*** jude has joined #buildstream09:31
tlaterIt's possible that there is a globbing issue with the default project conf split rules - since moving to the newest master my test on that has been failing.09:40
tlaterSpecifically, only specifying "runtime" in a compose element stages everything.09:40
tlaterAh, yeah09:43
tristan...09:44
tristantlater, yeah there is a bug ?09:44
tristantlater, ok so what about the everything else... should we get the CI up first and address this separately ?09:44
tlaterYeah, that should work.09:45
* tristan was hoping to start with one test and a functional CI pipeline before adding more tests09:45
tlaterI think that the rules ignore things like /usr/share/doc/*09:45
tristantlater, /usr/share/doc/* only means every file in /usr/share/doc/, it does not capture /usr/share/doc/subdir/file09:46
tlaterYup. I think the default config does that - which probably isn't expected?09:46
tristanalthough the default project config has %{docdir}/**09:46
tristanSo it should be okay09:46
tlaterHmm...09:46
tlaterWell, I'll get the CI up first, I suppose.09:46
tristantlater, the default is data/projectconfig.yaml09:47
tristanyes, lets merge that ASAP09:47
tristanwith colors09:47
tristan:)09:47
tlaterColors are working :)09:47
tristantlater, I just fixed something that was missing (import problem)... but with master you can do, say: `bst show --deps none --format "%{public}" <element>`09:54
tristanbut yeah, dont let it get in the way of landing the initial CI09:55
tlaterProbably pushing for the last time before landing it now... Just waiting for the tests to finish.09:55
*** tlater has left #buildstream09:59
*** tlater has joined #buildstream10:00
gitlab-br-botpush on buildstream@master (by Sam Thursfield): 1 commit (last: build-all.sh.in: Fix typo `ldcondig` -> `ldconfig`) https://gitlab.com/BuildStream/buildstream/commit/8dc8a3ecba70501fbe0ad1e1abf614cab34d494810:02
gitlab-br-botbuildstream: merge request (artifact-storage->master: WIP: Artifact storage enhancements) #45 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/4510:03
tlaterCould you check this merge request, tristan? https://gitlab.com/BuildStream/buildstream-tests/merge_requests/610:03
juergbijonathanmaw: please retest with my latest branch10:08
gitlab-br-botbuildstream: merge request (tristan/test_tests->master: WIP: Add integration tests) #40 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/4010:08
jonathanmawjuergbi: okie dokie10:08
gitlab-br-botbuildstream: merge request (tristan/test_tests->master: WIP: Add integration tests) #40 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/4010:09
gitlab-br-botbuildstream: merge request (tristan/test_tests->master: WIP: Add integration tests) #40 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/4010:11
ssam2tristan, did you say you've seen this zlib issue before ? https://pastebin.com/bZv13Q1Y10:18
* ssam2 starts by forcing `make -j 1`10:19
ssam2which gives a much saner output, but still fails to find the ld.so ... https://pastebin.com/mKfy93Ua10:20
ssam2urgh! this is broken symlinks in my chroot again :-(10:20
ssam2hopefully this is just an old chroot, otherwise something has regressed10:21
tristantlater, ummm, so you are sure that that branch only contains clean commits ahead of upstream master... right ?10:21
tristantlater, I dont think so10:21
tlaterWhich one?10:21
tristantlater, buildstream-tests10:22
tlaterHm... lemme check, it should10:22
tristanok well, I seem to have a totally screwed buildstream-tests checkout10:23
tristanso I'm recloning that to take a look10:24
tristantlater, looks like it was my branch which was totally screwed this time, not yours10:24
tlaterIt should be clean, nothing strange going on.10:24
tlaterAh, alright10:24
tristannot sure how that happened, but doing git pull --rebase in master, caused mayhem10:24
tristanok, lets merge that10:25
tlaterI'll run the pipeline on buildstream then, just to confirm nothing breaks there, and then that can also be merged10:26
tristantlater, the other one is borked it seems10:26
tristanhttps://gitlab.com/tlater/buildstream/-/jobs/2115199110:26
tlaterYeah, shouldn't be anyomre10:27
tristanyeah maybe update that branch first, now that the other is merged, you want buildstream-tests master10:27
gitlab-br-botpush on buildstream@master (by Sam Thursfield): 1 commit (last: buildelement.py: Log commands run by source-bundle scripts) https://gitlab.com/BuildStream/buildstream/commit/f997084c22c2e1b744b03907ee850299ed3d90e510:27
tlaterThat's something it pulls from the other branch10:27
tristannod10:27
tristanssam2, I dont recall from looking at that... I need to see the conversation you were having about zlib...10:27
tristanlemme check history here...10:27
ssam2tristan, it was something you mentioned in the planning meeting on monday10:28
ssam2on reflection, i doubt it was anything related though10:28
tristanssam2, ah okay...10:28
tristannow I remember what I was remembering in our meeting10:28
tristanhere is a hint about what might be going wrong...10:28
ssam2the problem i'm having is that /usr/lib/ld-linux.so is a broken symlink again; but maybe i'm using an old build10:28
ssam2hopefully :/10:29
ssam2actually, since the symlink fix didn't affect cache keys, it's entirely possible that i managed to build with the wrong branch10:29
tristanbasically this crazy stuff here: https://gitlab.com/BuildStream/buildstream/blob/master/buildstream/_sandboxbwrap.py#L38710:30
tristanssam2, I think that's what I was thinking of, you ended up having some crazy device files lying around right ?10:30
ssam2ah! that's a separate issue but yeah I still need to work out why that happened10:31
tristanthere is something weird about bwrap, when you tell it to bind mount a specific device, it can leave it behind10:31
ssam2urgh10:31
tristanand in a weird state, like; bwrap creates it with it's suid root10:31
tristanso it's in group root10:31
tristanfreaking weird10:31
tristanleaks files it creates10:31
tristanshould probably be fixed upstream10:31
ssam2yeah that could be involved10:31
tristanI thought it was fixed though, because it was causing real issues for me before I worked around it10:32
tristanbut maybe changing to proper ostree user mode checkouts fixed that10:32
tristan(or "hid" the bug)10:32
tristanI think I was failing to create the bogus files10:32
tristanunder group root10:32
ssam2yeah, the issue with /dev/null was that it was actually a regular file which looked very much like something had done `mkdir --version > /dev/null` and the output had been literally written to /dev/null10:33
ssam2which seems like the inverse of that issue, i.e. /dev/null wasn't present when it should have been10:33
tristanthat would be very odd10:33
tristanbut it could be that it ends up being a regular file10:33
tristanmaybe that sandbox stuff should be more brutal and lets say: prejudice about files left in /dev10:34
tristanright not it tries to be very selective10:34
ssam2it could do; i can't see any use case for allowing artifacts to contain /dev10:34
gitlab-br-botbuildstream: merge request (tristan/test_tests->master: WIP: Add integration tests) #40 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/4010:34
tristanso if the user wants to store their own crap in /dev (not as 'null' or the devices we care about), we dont make any assumptions about what they are building and just let them do that10:34
tristanWell, who knows, maybe /dev is not a mount point in the target, but contains some file; who am I to say "you cant do that" :D10:35
tristananyway that's my *first* instinct10:35
tristanbut anyway, brutally clearing /dev can be a good idea10:36
tristaneventually I think though, we should have some clear documentation of limitations10:36
tristanincluding "You are not allowed to create artifacts with stuff you want to store in /dev"10:36
ssam2yeah, as long as we automatically mount stuff there in BuildStream, it's going to be a special case10:38
tlaterDamnit, I'll have to rebase again...10:48
tlaterThe tests are working on buildstream too, though10:48
gitlab-br-botbuildstream: merge request (tristan/test_tests->master: WIP: Add integration tests) #40 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/4010:49
gitlab-br-botpush on buildstream@master (by Tristan Van Berkom): 1 commit (last: main.py, widget.py: Moving some imports from main -> widget) https://gitlab.com/BuildStream/buildstream/commit/ed62ffd5229e90893ed5854dbc60368bcb8ddf9f10:58
jonathanmawjuergbi: artifact-storage branch seems to be working fine for me now10:58
gitlab-br-botbuildstream: merge request (tristan/test_tests->master: Add integration tests) #40 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/4011:03
tlaterAlright, that (^) can probably be merged too.11:03
jonathanmawjuergbi: I can even checkout the changes afterwards.11:07
gitlab-br-botbuildstream: merge request (tristan/test_tests->master: Add integration tests) #40 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/4011:08
tlaterI'll go grab lunch while I'm waiting :)11:11
juergbijonathanmaw: great, thanks for testing11:12
juergbiis this already with dynamic public data or just making sure there are no regressions?11:13
jonathanmawjuergbi: with dynamic public data11:13
juergbinice11:13
gitlab-br-botbuildstream: merge request (artifact-storage->master: WIP: Artifact storage enhancements) #45 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/4511:19
gitlab-br-botbuildstream: merge request (artifact-storage->master: Artifact storage enhancements) #45 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/4511:20
*** tristan has quit IRC11:22
*** tristan has joined #buildstream11:24
*** ChanServ sets mode: +o tristan11:25
tristanhttps://gitlab.com/tlater/buildstream/-/jobs/2115917511:26
tristansweet11:26
* tristan merges11:27
tristanwe haz integration tests \o/11:27
tristanyay tlater11:27
gitlab-br-botbuildstream: merge request (tristan/test_tests->master: Add integration tests) #40 changed state ("merged"): https://gitlab.com/BuildStream/buildstream/merge_requests/4011:27
gitlab-br-botpush on buildstream@master (by Tristan Van Berkom): 3 commits (last: .gitlab-ci.yml: Add integration tests) https://gitlab.com/BuildStream/buildstream/commit/c7158e4db79b87e70432c946224b9a7ce4944a1811:28
tristanummm11:29
tristanjuergbi, I'm a bit worried about get_public_data() loading on demand, as we lose the assertions11:30
tristanjuergbi, dont we ?11:30
tristanAlso, if it's possible that a cache key can be calculated through that code path, then it's possible that an element calling get_public_data() at the wrong time, might load the incorrect public data in advance of processing a TrackQueue11:30
tlaterCool, colorful integration tests \o/11:39
tlatertristan: I assume I should start working on developer workspaces then?11:40
tristantlater, if you can get to the bottom of compose element today, better tie that up first11:42
tristantlater, what other tests are we skipping ?11:42
tristanand why, what's failing ?11:42
tristanjuergbi, I know what to do11:42
tlatergit (because I couldn't figure out how to get .git directories to run)11:42
tlaterostree (a checkout error, haven't gotten to the bottom of that)11:42
tlaterAnd...11:43
juergbitristan: we still have the _assert_cached() call. yes, it must not be called before potential tracking. however, that's the same for _cached()11:43
tristanjuergbi, I'm going to keep what you did (load on demand), but I'm going to make 'recalculate' of _cached() tristate11:43
tlaterOh, the x86image test11:43
tlaterBecause it has way too many dependencies11:43
tlaterAnd I'm just not sure how to write it11:43
tristanjuergbi, this way, default recalculate is None, means find out if cached if not yet checked11:43
tristanjuergbi, but explicit False means, dont try at all unless its already been calculated11:44
juergbiah, to prevent accidental recalculate11:44
tristanexact11:44
juergbisounds sensible11:44
tristanand retain the assertion11:44
tristanif ever a plugin calls outside of build phase11:44
tristanjuergbi, I'll just merge the branch and do it locally, wont take me a minute...11:44
juergbigreat, thanks11:44
tristantlater, ok screw x86image, that's too complex11:45
tristantlater, and I'm not happy with the API surface yet either11:45
tristantlater, and git and ostree well... we could just remove those tests honestly, Sources all have converage in ./setup.py test anyway11:45
tlaterSo the only test to fix is compose?11:46
tristantlater, ok so... if you can get a test for compose, that would be awesome, and you can just remove the others11:46
tristantlater, yep, funny git is not working though, that means any of the build element tests are relying exclusively on tarballs ?11:47
tlaterYep11:47
tristanthat's not ideal :-/11:47
tlaterGit is working, technically, I just can't include a git repo in the repo11:47
tristanOh11:47
tristantlater, yeah, in ./setup.py test, we generate them on demand11:47
tlaterAh11:48
tlaterHm, that could actually work here11:48
tristana bit weird to have a git repo revisioned inside a git repo11:48
tlaterIt's impossible without strange command flags, anyway.11:48
tristanyeah well, we set environment variables so that we can test predictable track output11:49
tristan(git shas)11:49
tlaterShould I change things to that? I've just cloned repositories and made tarballs locally, it should be predictable11:49
tristantlater, but in any case, it's not ultimately important to test that part... just annoying we cant use real git repos as test cases11:49
tristantlater, an alternative, if we're worried about relying on external / untrustable resources... is we could commit to some 'test-repo/' prefixed branches of buildstream-tests itself11:50
tristanif we want to use git checkouts, that are not from, say, git.gnome.org or smth, in the test suite11:50
tristanmeh11:51
tlaterThat could work, although it won't make things too much more reliable11:51
tristantlater, nah leave that as is, I'd rather get you on workspaces asap11:51
tlaterAlright, I'll try and see what the problem with compose is and fix that then.11:51
tristanbut would be really great to have a test case for compose, and maybe we solve a bug in the process11:51
tristannod11:51
tlaterI'll have to reboot first... Turns out the reason I kept pushing 755 files was that my root directory was mounted with those permissions in fstab. So much for using debian because it doesn't break.11:54
*** tlater has quit IRC11:55
gitlab-br-botbuildstream: merge request (sam/host-and-target-arch->master: Add --host-arch and --target-arch, and 'host-arches' conditional) #34 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/3411:55
*** tlater has joined #buildstream11:57
ssam2turns out i didn't test my `bst checkout` changes til now :-(11:57
ssam2but they are now fixed11:57
ssam2and the good news is that the symlinks issue and the /dev/null issue have gone away after a clean rebuild11:57
ssam2the later issue may have been caused by me not mounting /dev in the bootstrap chroot initially, rather than any buildstream problem11:58
tristanHmmm12:02
tristanhow come I can no longer checkout 'build-gnome' in buildstream-tests with 'git checkout build-gnome' ?12:02
tristangit branch -r says there is an origin/build-gnome there12:03
tlaterI didn't mess with origin... I'll try12:04
tristandont worry about it12:05
tristantlater,12:05
tlaterEither way, it checks out fine for me12:05
tristanjuergbi, your branch does something really strange I didnt anticipate :-S12:06
tristanjuergbi, usually when doing `bst show <target>`, logging is disabled during the phase that we load the pipeline and interrogate cached state12:06
tristanNow... I have a ton of log lines showing me that it's interrogating whether a source has it's ref or not (git cat-file)12:07
tristanwhich usually only shows up in `bst --debug...` mode12:07
* tristan tries to work out why12:07
tristanoh its my change !12:08
tristanok maybe I did it wrong12:09
tristanyeah my mistake, fixed12:11
juergbiok12:11
tristanSo, as it stands, we dont have Element.set_public_data()12:13
tristanAre we going to need it ?12:13
tristanI can see that modifying the returned dict of Element.get_public_data() can work in most cases12:13
tristanbut does not allow adding a new domain12:13
juergbii was wondering that as well, forgot to mention12:13
* tristan doesnt mind leaving this out for now, seems that jonathanmaw is getting along fine without it12:13
juergbiit probably makes sense to support it12:13
tristanyeah12:13
gitlab-br-botpush on buildstream@master (by Tristan Van Berkom): 10 commits (last: _yaml.py: Dump sanitized mappings as unordered mappings) https://gitlab.com/BuildStream/buildstream/commit/3ba6b89bf3fdfcadf95565215a3d3380c112fcf212:13
tristanit's a simple API addition12:13
gitlab-br-botbuildstream: merge request (artifact-storage->master: Artifact storage enhancements) #45 changed state ("closed"): https://gitlab.com/BuildStream/buildstream/merge_requests/4512:14
gitlab-br-botbuildstream: issue #14 ("Artifact Cache Storage Enhancements") changed state ("closed") https://gitlab.com/BuildStream/buildstream/issues/1412:14
gitlab-br-botbuildstream: issue #15 ("Dynamically set Element public data") changed state ("closed") https://gitlab.com/BuildStream/buildstream/issues/1512:15
tristantlater, ssam2, is it correct that `source bundle` need not care about integration commands ?12:17
tristanI guess12:17
tristan?12:17
tristanBecause anyway, with recent changes, it means that it is just not allowed12:18
tristanOr, you must have previously built a pipeline before being able to source-bundle it, which would be very strange12:18
tristanI think it matters little, though12:18
tlaterI used the same implementation morph did, and just run ldconfig after every element12:19
tlaterProbably not the best thing to do12:19
tristanI think it's fine for the purpose it was made for12:20
tlaterIs it expected that the /usr/share/doc directory is included in an artifact that was created with just the runtime domain?12:22
tlaterWithout any contents, that is.12:23
tristantlater, yes12:23
tristantlater, well, it is with the default rules12:23
tristantlater, we can change the default rules, though :)12:23
tristantlater, /usr/share/doc/** does not capture '/usr/share/doc' itself12:24
tlaterHm, yeah. This changed from before globbing, I think12:24
tristantlater, actually you raise an interesting point, it *could*12:24
tlaterI don't think changing globbing rules to do that makes much sense, I wouldn't expect it to do that. But I would expect the defaults to exclude the doc dir if I specify I don't want docs.12:25
tristanjuergbi, jonathanmaw: I'm going to make set_public_data() a hard requirement, I think it's all around safer this way12:26
jonathanmawtristan: ok, sounds sensible.12:26
tristanSo Element.get_public_data() will return a deepcopy() of the data, not risking any unintentional mutations of the data model12:27
jonathanmaws/sounds/seems/12:27
tristanSame with set_public_data()12:27
juergbiok12:27
tristantlater, fwiw the specific case revolves around whether 'utils.list_relative_paths()' is going to report directories with a trailing '/' or not12:28
tlaterAFAIK, the current implementation matches how .gitignore works12:29
tristantlater, I'm confused that the regex appraoch differed in this regard, but thats approximately the 'thing' I think12:29
tristantlater, /usr/share/doc/** would match the directory and it's contents, if directories are listed with a trailing '/', but it would not match /usr/share/document.txt12:30
tristanI'm a bit torn, I think current approach is better ?12:30
tristanthan listing directories with explicit '/12:30
tristan'12:30
tristan ?12:30
tlaterYeah, probably, but I think that's up to you ;) I'm just a bit concerned that the behavior changed, but I guess there are no real users yet.12:31
tristanI guess current approach is superior12:33
tlaterShould I change the defaults to exclude the docs/other directories though?12:33
tristantlater, even if you need to write 2 entries in split rules to do /usr/share/doc AND it's recursive content... the other way means that there is no way to exclude a directory but not it's content12:34
tristani.e. current approach leaves every case possible to capture, afaics12:34
tristantlater, sure, I guess that is sensible, the default splits will become much larger, but that's fine12:34
tlaterCool :)12:35
tlaterOne thing to note though, including a directory without its contents is probably a very very rare use case12:35
tristanoops I broke the testsuite :)12:35
tristantlater, better to not impose restrictions though, I think12:36
jonathanmawtristan: I'd like your input in the correct way to do something for dpkg-deploy. The problem is that commands are written in configure, and the list of packages to extract is not available until later. My current approach is to substitute those packages in by modifying the command list in assemble, just before chaining up to ScriptElement's assemble. To do this, I'm accessing self._ScriptElement__commands. (I'm also doing similar in dpkg-build,12:38
jonathanmaw but that's based of BuildElement, where commands isn't prefixed by __)12:38
gitlab-br-botpush on buildstream@master (by Tristan Van Berkom): 2 commits (last: element.py: Added Element.set_public_data()) https://gitlab.com/BuildStream/buildstream/commit/8806a8841e1829791c1b532e71cf6b4b4f5e4a2612:38
tristanjonathanmaw, ok heads up, your modifications of dicts returned by get_public_data() will no longer work, set_public_data() is required12:39
jonathanmawIs _ScriptElement__commands the right way to do it? Should I be changing ScriptElement to remove the __? Should I be rewriting the assemble method so that I modify the commands before running the command in the sandbox?12:39
tristan(can be a get -> modify -> set)12:39
jonathanmawtristan: yep, that bit's understood.12:39
tristanjonathanmaw, lets think of what API we need for this12:39
tristanof course, poking into private data is certainly wrong12:40
tristanbut seems you have a need12:40
tristan"commands are written in configure"12:40
tristanYou mean something like a dpkg kind of configure12:40
tristannot an Element.configure()12:40
tristanI'm a bit lost12:41
jonathanmawa DpkgDeployElement's configure method12:41
jonathanmawafaict, at that time I can't access the elements I'm depending on12:41
tristanjonathanmaw, ok so thats right..., this derives from ScriptElement right ?12:41
jonathanmawso I can't extract the list of which packages exist12:41
jonathanmawtristan: DpkgDeployElement derives from ScriptElement, yep12:42
jonathanmawDpkgBuildElement derives from a BuildElement.12:42
tristanso why is ScriptElement.add_commands() not correct ?12:42
tristanOk we're talking about two things12:42
tristanone at a time please12:42
tristanjonathanmaw, wanna talk about build element or deploy element first ?12:43
jonathanmawtristan: the deploy element12:43
tristanOk12:43
tristanso the deploy element is an element to deploy an artifact to a dpkg package12:43
jonathanmawyep12:43
tristanAnd does not require anything about what kind of element produced the artifact12:44
tristanIt has a sane default for the output of regular build elements12:44
tristanBut that can be augmented by public data12:44
tristanWhich is either manually specified12:44
tristanOr possibly dynamically generated by a previous dpkg-build element12:44
tristanjonathanmaw, so far we're on the same page ?12:45
jonathanmawtristan: a dpkg-build element automatically generates public data that a dpkg-deploy element can use to generate the package.12:45
jonathanmawI haven't given much thought to defaults for when that doesn't exist12:45
tristanOk12:45
tristanBut a human being can also specify those details12:46
tristanRight ?12:46
jonathanmawyep12:46
tristanSo it could have been something I converted, imported from a source rpm, maybe generated public data for12:46
tristanand then decided to deploy as debian package12:46
tristanSo, you are reading some things in Element.configure(), for the element configuration ?12:47
jonathanmawtristan: yep. that reminds me, I need to document in some central place what the appropriate fields are for public data.12:47
tristanWhich define some things to add to the commands of a script element ?12:47
jonathanmawtristan: well, DpkgDeployElement.configure. It uses ScriptElement.add_commands() to add the commands12:48
tristanjonathanmaw, Ok so... one thing is... please in the very near future, write to the mailing list about what all the public data you are using actually is12:48
jonathanmawAIUI that's the appropriate place, since that information is needed to generate cache keys.12:48
tristanit would be nice to briefly discuss this on the ML and look at what parts have to be dpkg specific, which can be generalized, and which could potentially undergo a smooth transition in the future (i.e. maybe they remain dpkg specific until such a date that we can change that in an API compatible way)12:49
tristanjonathanmaw, ok so what exactly are you reading from the configuration that needs to go into the commands ?12:49
tristanAnd... again, why is ScriptElement.add_commands() not good enough ?12:50
tristanwhy do you absolutely need to poke at the insides ?12:50
jonathanmawtristan: I need to know which packages were generated. Currently I'm reading the public data of the element that was specified as "input" from the yaml, and using the keys from public.bst.split-rules as the list of packages12:51
jonathanmawhmm, add_commands can overwrite based on group name, so that makes things a bit simpler.12:52
jonathanmawCurrently the way I'm inserting the list of packages into the commands is substituting the text "<packages>" with a space-separated list of packages12:53
jonathanmaw(since I'm using a shell for-loop to run the commands)12:53
jonathanmawI suppose if I store a copy of the commands, I can make the substitutions and then make the changes using add_commands() without having to touch private data12:55
tristanjonathanmaw, if you need to dynamically set the commands based on element public data, then that has to be done at assemble() time, not in configure()12:56
tristanand will be omitted from the cache key, but it's okay, as long as the algorithm is stable, it will create the same thing based on that public data12:56
tristanjonathanmaw, of course, you can load something from the yaml and put that in your cache key, and substitute later at assemble() time, that's also fine12:57
jonathanmawtristan: yep, seems sensible12:57
tristanuser configurable things on your build element itself, need to be in the get_unique_key()12:57
jonathanmawI was about to suggest the same but in different words12:58
tristanOh13:03
tristanI screwed up again with public data ??13:03
tristanfrak13:03
gitlab-br-botpush on buildstream@test-public-data (by Tristan Van Berkom): 1 commit (last: Testing) https://gitlab.com/BuildStream/buildstream/commit/c8c5516c7f426b17cfc5c7ba4f29c09a0ba13d7313:10
gitlab-br-botpush on buildstream@test-public-data (by Tristan Van Berkom): 1 commit (last: Testing) https://gitlab.com/BuildStream/buildstream/commit/4f3a71f898ad550e98c1e74f96ffa1fd145c998013:17
tristanOk, so integration tests caught my bug... mere *hours* after landing them13:23
tristan\o/13:23
tlater\o/13:23
tlaterYeah, the caching is really slow, unfortunately13:24
tristannah it's pretty quick !13:24
tlaterI have a really strange one13:25
tlaterCompose tests are working, but I decided to add more to double check default behaviour13:25
tlaterAll of them work...13:25
tlaterExcept for the docs dir13:25
tlaterThat one is still not excluded13:25
tlaterI guess I'll push my branches and ask then, probably overlooking a typo or something13:26
tristantlater, it should be specified as '/usr/share/doc' to capture the directory itself, not '/usr/share/doc/'13:26
tlaterOh13:26
tlaterWouldn't doc/ work?13:26
tristanNope13:26
tristanWe discussed this recently :)13:26
tristanif /usr/share/doc/ were to work, then /usr/share/doc/** would also capture it13:27
tlaterOh, right, I'm stupid13:27
tristanI suppose that is noteworthy in the public data documentation13:27
tlaterInterestingly enough that change also doesn't fix this13:27
tristanI need more information13:28
tristanlink ?13:28
tlaterYeah, I'll push the branch in a second13:28
tlaterOh, nevermind, seems to be working now? I'll take it...13:29
tlaterCool13:29
tristanheh13:30
tristanOkay !13:30
tristanI was worried we had bugs in the compose element, but it turns out it is working as expected !13:30
tristangood news13:30
tristantlater, I suppose they might break for one shot depending on what order we apply the defaults change and the tests13:31
tlaterHm, yeah13:31
tristantlater, also, I wonder if it makes more sense, at least for this test, to override the split rules entirely in the tests project.conf13:31
tlaterI can add a [exclude-ci] commit thing13:31
tristanand, if that is even possible13:31
tristantlater, nah dont worry, it doesnt matter if a pipeline fails once just for that13:32
tristansometimes gitlab is very slow to *start* a test, though13:33
tlaterYou can manually start the pipeline. I've had it refuse to start before.13:33
ssam2the issue may be that we only have 2 runners, and i am running lots of builds for the GCC upgrade13:37
ssam2i'm not sure entirely how it works, jjardon[m] would know more ... but I think it's limited to 2 because he is paying per isntance13:38
ssam2*instance13:38
tlaterLet's hope my computer didn't do weird permission things again...13:38
ssam2ah no, that's nonsense, the buildstream ones seem to be separate from the Baserock ones13:39
jjardon[m]ssam2: we have unlimited runners in definitions: they are spawn on demand by a manager runner that is always on13:39
ssam2ah OK13:39
ssam2so i'm talking double nonsense13:40
tlaterWould you merge the MR, tristan? Then I can try the buildstream pipeline. https://gitlab.com/BuildStream/buildstream-tests/merge_requests/713:40
ssam2but are the buildstream ones using the same infra or different ?13:40
ssam2i don't know how to check that13:40
jjardon[m]dont think buildstream is using baserock runners atm13:40
jjardon[m]OH, seems you are actually using it: see baserock-manager-runner2  in https://gitlab.com/BuildStream/buildstream/settings/ci_cd13:42
jjardon[m]but you are using the shared runners as well (the ones gitlab.com offer for free), so maybe sometimes you do builds on those as well13:42
gitlab-br-botpush on buildstream@tristan/split-domains (by Tristan Maat): 1 commit (last: projectconfig.yaml: Restore old default split domain behaviour) https://gitlab.com/BuildStream/buildstream/commit/c6446ec07edab5b069a5bf1a74ba109f39cf5c1713:44
tlaterHeh, I just noticed that the files bst checks out are created on jan 1st 197013:51
tlaterI suppose that's the mtime normalization?13:51
tristantlater, actually that is ostree13:53
tristanfunny enough, our normalization is nov 11, 201113:54
tlaterOh, I guess my interface shows creation and not modification then.13:54
tlatertristan: Did you flag the message earlier? It would be nice if we could get this merged so I can move on: https://gitlab.com/BuildStream/buildstream-tests/merge_requests/714:04
tristantlater, I pressed "merge when pipeline completes" :)14:06
tlaterIt won't though because the changes haven't been applied to master yet :/14:06
tristanAh14:06
tlaterActually, merging master first makes more sense, these cases aren't being tested for yet14:06
tlater*buildstream14:07
tlaters/master/buildstream/14:07
tristanmerged14:07
tlaterOk, thanks :)14:07
tristantlater, so we need an MR for buildstream to update the default splits ?14:07
tristanand *that* pipeline will pass14:08
tristantlater, this looks misleading: Error: File permissions differ for files results//compose-no-devel/usr/lib/debug/hello (-rw-r--r--) and expected//compose-no-devel/usr/lib/debug/hello (-rwxr-xr-x\n)Error: File permissions differ for files 'results//compose-no-devel/usr/lib/debug/hello' and 'expected//compose-no-devel/usr/lib/debug/hello'14:09
tristancompose-no-devel14:09
tlaterYeah, I believe that MR is there already14:09
tristantlater, is it actually true ?14:09
tlaterNo, it's my system's weird permission issue again -.-14:09
tristanI dont see any MR for that at: https://gitlab.com/BuildStream/buildstream/merge_requests14:09
tlaterOh, wait, let me put that one up then14:09
tlaterWill be easier to test that way around, since that one isn't affected by my strange defaults14:09
tristantlater, I think that one is failing because a file that was expected to exist, didnt; or the other way around14:10
tristani.e. it's the failing compose test14:10
gitlab-br-botbuildstream: merge request (tristan/split-domains->master: projectconfig.yaml: Restore old default split domain behaviour) #49 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/4914:10
tristanAnd it's telling us that it's a permission mismatch14:10
tristanI think the reporting is misleading14:10
tlaterNo, I think the reporting is right14:10
tlaterThere probably actually is a permission mismatch, because my machine generates things with the executable bit set for some reason.14:11
tristanohhhh14:11
tristanweird14:11
gitlab-br-botbuildstream: merge request (tristan/split-domains->master: projectconfig.yaml: Restore old default split domain behaviour) #49 changed state ("merged"): https://gitlab.com/BuildStream/buildstream/merge_requests/4914:11
gitlab-br-botpush on buildstream@master (by Tristan Van Berkom): 1 commit (last: projectconfig.yaml: Restore old default split domain behaviour) https://gitlab.com/BuildStream/buildstream/commit/c6446ec07edab5b069a5bf1a74ba109f39cf5c1714:11
tristanthats why you were making MRs with weird permission changes ?14:11
gitlab-br-botbuildstream: Tristan Maat deleted branch tristan/split-domains14:11
tlaterYeah. I thought I fixed it, but apparently not14:12
tristanLooks like _pipeline.py accidentally became executable14:13
tristanannoying14:13
* tristan fixes14:13
gitlab-br-botpush on buildstream@master (by Tristan Van Berkom): 1 commit (last: _pipeline.py: Restoring good old 0644 on this file) https://gitlab.com/BuildStream/buildstream/commit/4f5a72edaa64a107595e52f677a43d05e70a12e414:13
tristanany reason why build-all.sh.in and build-module.sh.in templates should be executable ?14:14
* tristan thinks not14:14
tristanthe ostree push/pull scripts need to be14:14
tlaterThose scripts are set executable by bst when they are installed, so no, they don't need to be14:14
* tristan still doesnt have the ability to test real ostree-push with gnome7... time to pull my hair out in agonizing stress :-/14:15
tlaterGah, sorry, I'll need to sort out this weirdness soon.14:15
gitlab-br-botpush on buildstream@master (by Tristan Van Berkom): 1 commit (last: build-all.sh.in, build-module.sh.in: Removing unnecessary executable bits) https://gitlab.com/BuildStream/buildstream/commit/b304bdd015ef226d524afc1d622549b037ca408014:16
gitlab-br-botpush on buildstream@master (by Tristan Van Berkom): 1 commit (last: main.py: Removing final unnecessary executable bit.) https://gitlab.com/BuildStream/buildstream/commit/ae59134a32cf7c28d8d0b4ccb5518a2a0c18b97b14:18
tristantlater, I'm soon leaving the building...14:33
tristanis there another buildstream-tests commit you need up there so we can close the lid on this ?14:33
tlaterYeah, but it's not done yet :/ I need to pull a new base sdk too, so this will be another hour14:33
tlaterI'll make sure the MR is there tomorrow morning, this time without failing tests14:34
tlater-> Not sure why, but my cache decided to empty itself14:34
tlaterI need to move to a distro I understand a bit better...14:34
tristantlater, I think cache key calculation change with commits of today14:42
tristanrather than being emptied14:42
tristantlater, specifically juergbi's branch this morning changed everything14:42
tlaterThat's possible I suppose14:42
tlaterHm...14:42
tlaterI think I found it though14:43
juergbiyes, that was unavoidable14:43
tlaterWhat's the fastest way to keep empty directories in git?14:43
gitlab-br-botbuildstream: merge request (jonathan/dpkg-build->master: WIP: Jonathan/dpkg build) #37 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/3714:43
tristantlater, I dont know that you can revision an empty directory14:44
tristanI think you cannot, with git14:45
tlaterHmm... That's annoying14:45
tlaterI think the standard is keeping a .gitkeep file in it14:45
tlaterBut that needs to be removed before the script runs14:45
tlaterOh, I can just remove those in the test14:45
tlaterWith a bit of luck that should have fixed it14:48
tlaterUnfortunately the CI doesn't seem to want to run...14:49
*** tristan has quit IRC14:56
*** ssam2 has quit IRC15:08
*** ssam2 has joined #buildstream15:10
*** jonathanmaw has quit IRC15:42
tlater]#]16:05
*** tlater has quit IRC16:20
gitlab-br-botpush on buildstream@master (by Tristan Van Berkom): 2 commits (last: _yaml.py: Added node_copy() and list_copy()) https://gitlab.com/BuildStream/buildstream/commit/fcd2c348bb595fc3d3549cc1207afef632f83d8016:22
*** jude has quit IRC16:27
*** tristan has joined #buildstream17:44
*** ChanServ sets mode: +o tristan17:45
ssam2the source-bundle bootstrap on armv8l64 is finally getting underway18:11
ssam2had to rework fhs-dirs so that /lib64 is a proper symlink to /usr/lib6418:11
gitlab-br-botpush on buildstream@sam/host-and-target-arch (by Sam Thursfield): 2 commits (last: Add --host-arch and --target-arch, and 'host-arches' conditional) https://gitlab.com/BuildStream/buildstream/commit/13dfcb284bc6a83cd94739b1ca9f38a7e43f9aa518:53
gitlab-br-botbuildstream: Sam Thursfield deleted branch sam/host-and-target-arch18:53
*** ssam2 has quit IRC19:03
*** tristan has quit IRC20:32

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