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

*** tristan has joined #buildstream05:05
gitlab-br-botpush on buildstream@master (by Tristan Van Berkom): 5 commits (last: tests/sources/bzr.py: Removing bzr source test) https://gitlab.com/BuildStream/buildstream/commit/9742899136021d6056c8eb346da7e18cad6e828f06:45
gitlab-br-botbuildstream: issue #146 ("Use minimum python version (3.4) for integration tests") changed state ("opened") https://gitlab.com/BuildStream/buildstream/issues/14607:01
*** givascu has joined #buildstream07:18
*** givascu has quit IRC08:05
*** jude has joined #buildstream09:16
*** valentind has joined #buildstream09:21
gitlab-br-botpush on buildstream@exceptions-refactor (by Tristan Van Berkom): 6 commits (last: Refactoring: Move ElementError and SourceError to their respective classes, create SandboxError) https://gitlab.com/BuildStream/buildstream/commit/0defb35c0334d78e48bcf21ec6b106b67761e1bc09:33
gitlab-br-botpush on buildstream@sandbox-mounts-refactor (by Tristan Van Berkom): 9 commits (last: Refactoring: Move ElementError and SourceError to their respective classes, create SandboxError) https://gitlab.com/BuildStream/buildstream/commit/0defb35c0334d78e48bcf21ec6b106b67761e1bc09:51
*** tiagogomes has joined #buildstream09:52
*** jonathanmaw has joined #buildstream09:58
gitlab-br-botpush on buildstream@sandbox-mounts-refactor (by Tristan Van Berkom): 1 commit (last: tests/sandboxes/mounting/mount_simple.py: Changed to test new Mounter object) https://gitlab.com/BuildStream/buildstream/commit/bad18ff2b20573a2dbfe0c057bf4d29a6ba0fd4e10:12
tristanhttps://gitlab.com/BuildStream/buildstream/-/jobs/39149160 <-- this has been happening for I think over a week now, "Failed to create cache"10:14
tristanThis might just be a gitlab issue, if it's our fault we should fix that... it causes us to re-download stuff during integration tests, which takes more time10:15
tlatertristan: It might be because cache/buildstream/sources ends up empty for some reason10:18
tristan:-S10:18
tlaterThen the cache server rejects it because the file is empty, causing that error10:18
tristansomething broke, then10:18
tristanalso fyi all; there is going to be some hard core churn on master today10:19
tristanNothing which effects user interactions, all related to removal of public API which is not justified to be public10:20
*** ssam2 has joined #buildstream10:20
tristanjuergbi, for you I expect this will hurt the most - so far I've made all exceptions (except ElementError and SourceError) private, but I'm thinking of going ahead and making Project private10:21
tristanAny justification for having a public Project object ?10:21
* tristan sees that the only use it has currently, is for the translate_url() method, which can easily be migrated directly to the Source API10:22
juergbii can't think of anything right now10:23
juergbiwe can always go from private to public again later if needed10:23
tristanssam2, since you walked in... could you take a quick look at https://gitlab.com/BuildStream/buildstream/-/jobs/39149160 ? There seems to be a regression with caching the sources in our integration tests, I *think* you are the last to play with those10:23
tristanssam2, if you don't know what's going on there, don't bother worrying about it - just raising this in case you might know the quick fix10:24
tristanjuergbi, indeed10:24
tristanjuergbi, I suspect it will be a bit painful for your rebase, but I think it's best right now to hide anything which is not of use to plugin authors10:25
juergbiagreed, i'll manage10:26
ssam2tristan, i think it's an internal gitlab glitch10:27
tristanssam2, I thought it might be too, but as tlater pointed out, look at the end of the job10:27
tristanssam2, it says "WARNING: cache/buildstream/sources/: no matching files"10:28
tristanSo it looks like we're not caching the right directory, or we're not configuring it correctly10:28
tristanah, indeed10:29
tristanlooking at the logs: Source Mirrors:          /builds/BuildStream/buildstream/integration-tests/tmp/sources10:29
tristanhrmmm10:29
tristanssam2, anyway this is starting to look like changes unrelated to your docker stuff and caching fixes10:29
ssam2"no matching files" will be unrelated to the failure. it's strange though if there are usually files there...10:30
tristanthe ./run-tests.sh --sources ${XDG_CACHE_HOME}/buildstream/sources argument seems not working10:31
tristananyway, I can't deal with this today, but I dont expect to deride anyone's work with this either10:32
*** jude has quit IRC10:32
*** givascu has joined #buildstream10:34
ssam2looks like --sources only works if the directory already exists10:43
ssam2needs to either raise an error if it's missing, or create the directory if it's missing10:43
* ssam2 votes for creating the directory10:43
tlatertristan, having spent some more time meditating on the --except changes, I think I misunderstood them a bit10:44
ssam2oh, or if we do `realpath -m` instead of `realpath` it should work10:45
* ssam2 will send a patch10:45
tlaterDo we want *all* dependencies of an excepted element to be excluded?10:45
*** jude has joined #buildstream10:49
gitlab-br-botpush on buildstream@sam/test-source-caching-fix (by Sam Thursfield): 1 commit (last: integration-tests: Fix `run-tests.sh --sources DIR` when DIR doesn't exist) https://gitlab.com/BuildStream/buildstream/commit/2ec4203c2306b566e624499f95ac037f53ecadc810:50
gitlab-br-botbuildstream: merge request (sam/test-source-caching-fix->master: integration-tests: Fix `run-tests.sh --sources DIR` when DIR doesn't exist) #137 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/13710:51
*** valentind has left #buildstream10:52
tristantlater, ok so maybe my idea of how it should work is confusing...10:54
tristantlater, what I want is to continue to have the same functionality, which iirc is basically "Exclude everything recursively, except for elements which are indirectly depended upon from outside of the --except scope"10:55
tristanI think that is the right thing, still10:55
tlatertristan: looking at the example here though: https://gitlab.com/BuildStream/buildstream/issues/13110:56
tristanbut, I dont know if it makes the most sense, I feel like it does, but I could be wrong10:56
tlaterThat seems like it won't be enough10:56
tlaterBecause in that case the dependencies of target elements will in all cases be indirectly depended on10:56
tlaterSo you end up not excepting anything10:57
tristantlater, so you have some toplevel targets, defining your main inclusion / pipeline10:58
tristantlater, and then you have some except targets... those targets *intersect* at one or more elements10:59
tristanWhen I say *intersect*, I mean only the topmost elements at which they cross10:59
tristan*Those* intersections become the real exclusion targets10:59
tristanNow you have toplevel / pipeline10:59
tristanAnd you have some elements in there which are to be excluded recursively10:59
tristanThose should be excluded recursively, excepting for elements which are indirectly depended upon from *above* the intersections11:00
tristanThats how I envision it11:00
tristanWe could be more brutal and except *everything* including the intersection point and below it11:00
tlatertristan: Ah, that makes a lot more sense - I interpreted "intersect" as all shared child nodes of any generation.11:01
tlaterWhich would be the more brutal approach11:01
tristanBut it seems nice to not - for instance if you want to track or fetch, excepting for this part, you dont have to worry about now knowing what the parents depend on11:01
tristans/about now knowing/about not knowing/11:01
* tlater wishes he could draw graphs on IRC11:02
tristanStill, I am open to being challenged on this - but the behavior should not change post 1.0, thats the whole point11:03
tristanExcept everything ruthlessly ? Or gently except things which are not depended upon by parents via outside of the except intersections (indirect)11:04
tlatertristan: I have a feeling this might be a bit hard to use, because the user will struggle to know in detail what is going to be excluded this way.11:05
tristanIndeed11:06
tristanjuergbi, ssam2, care to weigh in also on the above ?11:06
ssam2it can be tricky figuring out everything that pulled in a dependency11:07
tristanI have this feeling like, excepting something means only remove this branch, if untouched by the outside11:07
ssam2thing is, --except is quite a special case anyway11:07
tristanBut, on the other hand, what are the real use cases11:07
ssam2it's basically so we can generate source bundles without the stage1 and stage2 toolchain11:07
tristanssam2, actually not that special, I expect it to be used extensively for, say GNOME11:08
ssam2ah OK11:08
tlaterA brutal approach seems most useful for that specific use case, though.11:08
tristanssam2, i.e. for instance... we want to keep the base system "stack" pretty much at the same place11:08
tristanso we want to `bst track --except base.bst core/meta-gnome-core.bst` a lot11:08
ssam2ah yes, track --except11:09
tristanbecause pulling in a fresh base means rebuilding the world11:09
ssam2much more use cases than build --except, which will mostly just break your build :-)11:09
juergbimight work better with some kind of project/element configuration11:09
tristanand it means ostree downloading the source and doing that heavy lifting11:09
ssam2in the case of track, it should probably be the brutal approach11:09
tristanjuergbi, that is certainly "on the menu", but not blocking 1.011:09
juergbiright11:09
tristanjuergbi, i.e. my idea was to have "tracking profiles" for that purpose, making things a bit more easy11:09
ssam2if you run `track --except foo` and then foo is included anyway, that's annoying, even if the tool is correct11:09
tristanssam2, that cannot happen, though; because direct targets that are explicitly excepted (or the intersection points) *will* be excepted11:10
tristanssam2, it's whether the parent of an excepted element depends somehow on a dependency of the excepted element11:11
tristanin which case we un-except that child (yes: visualization would be useful here)11:11
tristanIt seems confusing to explain, which is a good reason to hesitate...11:12
tristanOk actually wait !11:14
tristanIts easy to explain11:14
tristanSo here it is... if you run `bst <command> --except bar.bst foo.bst`11:15
tristanThen you are running a command on the foo.bst target, and excepting elements recursively from bar.bst downward11:15
tristanSo far so good11:15
tristanThe question however arises... What happens to elements which foo.bst depend on AND bar.bst depend on (foo.bst depends on common dependencies, but not *via* bar.bst)11:16
tristanNow there is choice11:16
tristanDo we include those in the exclusion ? Or to we exclude those commonalities from the exclusion ?11:16
* tristan *thinks* he found a way to explain it a bit better11:17
tlatertristan: And you're proposing that we should exclude only the first row of these commonalities?11:17
tristanIf you drew a graph, foo.bst is blue (target) and bar.bst is red (exclude)... the commonalities which are not reached *via* bar.bst, but via other pathways, are purple (both exclude and include IMO)11:18
tristanQuestion is: What to do with the purple elements ?11:18
tristantlater, either explicit exclude, or the topmost intersection elements themselves; *must* be excluded, I think that top row is excluded regardless of either approach11:19
tristantlater, elements become purple when say... I'm excluding a smaller stack from a bigger toplevel stack... and the toplevel stack depends on some of the excluded stacks internals, *not because it depends on that excluded stack*11:20
tristanSo, I happen to need zlib to build my toolchain... but something in my middleware depends directly on zlib, without ever assuming that it came from the toolchain11:21
tristanzlib is purple in this case, when the toolchain is excluded from the whole system expression11:22
tlaterAlright, I think I understand now11:23
tlaterAnd the choices here are to either exclude all purple elements or to keep them?11:23
ssam2when put like that, it seems to make more sense to keep them11:24
gitlab-br-botpush on buildstream@private-project-refactor (by Tristan Van Berkom): 12 commits (last: Refactoring: Move ElementError and SourceError to their respective classes, create SandboxError) https://gitlab.com/BuildStream/buildstream/commit/0defb35c0334d78e48bcf21ec6b106b67761e1bc11:26
gitlab-br-botpush on buildstream@sandbox-mounts-refactor (by Tristan Van Berkom): 2 commits (last: sandbox: Refactoring, moving accidentally public MountMap into it's own file) https://gitlab.com/BuildStream/buildstream/commit/69cc9ef00b957a202a80c7690f7ee3e5ad8b8eda11:31
gitlab-br-botpush on buildstream@private-project-refactor (by Tristan Van Berkom): 4 commits (last: sandbox: Refactoring, moving accidentally public MountMap into it's own file) https://gitlab.com/BuildStream/buildstream/commit/69cc9ef00b957a202a80c7690f7ee3e5ad8b8eda11:32
tristantlater, basically yes, the question is whether we keep those purples or discard them11:32
tristanSo originally, we were discarding those from --exclude as I recall11:32
tlaterAgain, given how hard it was to explain this here, I feel this might be very hard to understand for an actual user.11:33
tristanthat was the expected functionality, I think - and now the differences are that there may be more than one exclude, and that an exclude can be an orthogonal target (so we need to collect the toplevel intersections)11:33
tristantlater, I think that the user wont consider the purple elements until it happens11:34
tristantlater, and when it "happens" is when it counts that buildstream does something least harmful to the user11:34
tlatertristan: I'm pretty sure they currently are still included, actually11:36
tristanthey are forcefully excepted even if depended upon indirectly by parents ?11:37
tristanI'm pretty sure that was unintentional11:37
tristanBut that doesnt answer the question: What is less harmful to the user, in the case of ambiguous purple elements11:38
tristanfetch is never harmful, track can be harmful11:39
tlaterIn that case, *not* tracking deeper dependencies is less harmful11:39
tristanshow will only reflect the correct thing either way11:39
tlaterSo a more brutal --except would cause less mistaken tracks11:39
tristanindeed...11:39
tristancan someone else care about this too for a moment ? I dont want to make a hurried call on this right now11:40
tlaterThis might actually be worthy of some ML discussion11:40
tristantrue...11:48
tristantlater, assuming it's easier to brutally exclude all purple, want to start with that approach ?11:48
tristantlater, I think it's close to the last 1.0 blockers, and you are blocking on this11:49
tlatertristan: Yeah, that seems sensible11:49
tristantlater, ok so... also I would like to see the whole API for `bst build --track` replacements...11:56
tristantlater, Can you write the whole plan up to the list ? The comments I made on several disconnected bug reports were decent ideas, but I havent considered the whole thing as a whole11:57
tlaterSure :)11:57
tlaterI assume only the changes for the bst build --track changes?11:58
tristantlater, all together - the --except algorithm probably has an effect on that too, I feel that this was all the same issue, even if filed as 4 separate reports12:00
tristanmultiple toplevels, ability to --exclude multiple elements, not necessarily exactly in the pipeline but calculating the intersection points... the --track not differentiating from saving or not saving the track results, and the problem that build --track doesnt allow more granular selection of elements12:01
tristanit all plays into how we express pipelines on the command line, and the blocker issues with `bst build --track` which are effected by this12:02
tristantlater, basically I want to see all the proposed changes grouped together, so that we know that we are not adding something redundant, or introducing CLI options which could be more simple12:02
tristanI want somebody (you) to have thought about that, and how future proof the plan is in general12:03
* tlater starts reading back into the tracking changes12:03
tristanit can be that I suggested things which made sense in one context, but not when you put the whole plan together12:04
tristanssam2, https://gitlab.com/BuildStream/buildstream/-/jobs/39159818 looks promising, gitlab timeout issues aside12:05
tristanthanks for doing that !12:06
tristan"Source Mirrors:          /builds/BuildStream/buildstream/cache/buildstream/sources"12:06
ssam2oh yeah, that seems to be working better12:08
gitlab-br-botbuildstream: merge request (private-project-refactor->master: Refactoring: Remove unneeded public API) #138 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/13812:10
* tristan thinks he can remove a lot of additional junk from Context API too12:12
tristanOh, maybe the whole thing !12:13
tristanActually, not a single plugin calls .get_context()12:13
tristantlater, in case you didnt notice, I merged your branch sans the weird decision to ignore tty-ness on BST_TEST_SUITE env var12:16
tristantlater, if there is some reason for that to have been snuck into the branch, you might justify it in a separate merge request12:16
* tristan doesnt see a need for that, though12:17
tlatertristan: Yes, sorry about that, it was a workaround for my test runner somehow behaving as a tty... I didn't actually want to include it.12:17
ssam2jonathanmaw, tristan: does https://gitlab.com/BuildStream/bst-external/merge_requests/ look OK ?12:20
ssam2bah, I mean https://gitlab.com/BuildStream/bst-external/merge_requests/212:20
tlatertristan: Should I include the merged multiple-targets change in the mail?12:24
tristanssam2, the gist of it looks correct to me, looks like I merged those removals a little prematurely12:25
tristanssam2, is there no docs comments perhaps in the accompanying .yaml files which need adjustment for this ?12:25
tristantlater, sure why not; I mean that part is not a proposal and pretty much a no-brainer solid change; but it adds some context to lead with "recently we merge a bla bla multiple targets"12:26
* tlater will resist the urge to quote exactly that12:27
tristantlater, as a thought exercise / straw man, it may help to come up with some example invocations based on the proposed changes12:28
tristanssam2, looks good to me, merging12:32
tristanssam2, looks like the same cache trick needs to be fixed on bst-external ?12:33
*** tpollard has joined #buildstream12:33
tristanthis is also not a big deal... but food for thought: https://gitlab.com/BuildStream/buildstream/issues/14612:38
tristanWe are not catching cases where newly added code needs python > 3.4, because we're using modern python in the runner12:38
gitlab-br-botbuildstream: merge request (private-project-refactor->master: Refactoring: Remove unneeded public API) #138 changed state ("merged"): https://gitlab.com/BuildStream/buildstream/merge_requests/13812:48
gitlab-br-botbuildstream: Tristan Van Berkom deleted branch private-project-refactor12:48
gitlab-br-botpush on buildstream@master (by Tristan Van Berkom): 12 commits (last: Refactoring: Move ElementError and SourceError to their respective classes, create SandboxError) https://gitlab.com/BuildStream/buildstream/commit/0defb35c0334d78e48bcf21ec6b106b67761e1bc12:48
gitlab-br-botbuildstream: merge request (sam/test-source-caching-fix->master: integration-tests: Fix `run-tests.sh --sources DIR` when DIR doesn't exist) #137 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/13712:49
gitlab-br-botpush on buildstream@sam/test-source-caching-fix (by Tristan Van Berkom): 20 commits (last: plugins/elements/script.py: Issue #121 - Remove traces of pre-/post- commands) https://gitlab.com/BuildStream/buildstream/commit/656ddd347ed338926a320a04eb5c71b562faf71012:49
ssam2i've pushed a fix for the run-tests.sh script in bst-external12:51
tristanand I just set your patch to buildstream to merge :)12:52
* tristan was waiting on his huge branch to complete first12:52
tristancould just as well have been a direct push to master, for the .gitlab-ci.yml change12:53
tristanok well, removal of Context from public API will wait till tomorrow12:54
tristanclosing time12:54
* tristan remembers he heeds to take care of Chandon's incremental builds branch12:54
tristan*needs12:55
tristanWe're going to punt that to post 1.0 though - there are starting to be too many moving goal posts12:55
tristanfor that patch, anyway12:55
persiaAre we close to 1.0?  Incremental builds seems like a really nifty feature for the non-automated case.12:55
ssam2i believe we are very close to 1.012:57
* persia smiles in anticipation12:57
ssam2https://gitlab.com/BuildStream/buildstream/issues?label_name%5B%5D=Blocker12:58
tristanpersia, https://gitlab.com/BuildStream/buildstream/merge_requests/12613:05
tristanpersia, see my last comments I just added to the discussion13:05
tristanpersia, that said, I am still hopeful to land incremental builds early in 1.1 and start using 1.1.x immediately for GNOME purposes13:06
tristanthe cache key problem though, is gonna be tricky to get by13:06
*** tristan has quit IRC13:17
*** tristan has joined #buildstream13:21
tristanweird: https://gitlab.com/BuildStream/buildstream/-/jobs/3917715113:25
tristan"Failed to commit artifact: No such file or directory"13:25
tristanSounds like we have race conditions, or maybe the filesystem exposed in gitlab runners dont ensure atomicity13:26
ssam2ugh13:36
gitlab-br-botbuildstream: merge request (sam/test-source-caching-fix->master: integration-tests: Fix `run-tests.sh --sources DIR` when DIR doesn't exist) #137 changed state ("merged"): https://gitlab.com/BuildStream/buildstream/merge_requests/13713:36
gitlab-br-botbuildstream: Sam Thursfield deleted branch sam/test-source-caching-fix13:37
gitlab-br-botpush on buildstream@master (by Tristan Van Berkom): 1 commit (last: integration-tests: Fix `run-tests.sh --sources DIR` when DIR doesn't exist) https://gitlab.com/BuildStream/buildstream/commit/0f134712d3efb31cd1e3d53d464a8e66ee92a5f113:37
ssam2tristan, by the way do you have a copy of the vm image generation work you did ?13:37
ssam2it used to be in buildstream-tests but I can't find it in any branch13:37
ssam2and i'm having issues with the initramfs scripts, probably exactly the same issues you already solved13:37
ssam2hmm, actually my initramfs.gz looks totally messed up, maybe it's not the script at fault13:40
ssam2seems the issue is that the 'script' element runs its commands with the cwd set to / now13:47
ssam2where before it would run commands with cwd set to %{build-root}13:47
ssam2which is fine, but we should document the expected behaviour at least13:47
* ssam2 will send a patch for https://buildstream.gitlab.io/buildstream/elements/script.html#module-elements.script13:47
tristanlemme check14:10
tristanssam2, should be build-gnome branch iirc, is this not good: https://gitlab.com/BuildStream/buildstream-tests/tree/build-gnome/elements/initramfs ?14:11
tristanssam2, note that the scripts from baserock had problems, and I fixed those manually I think14:13
tristanssam2, also this https://gitlab.com/BuildStream/buildstream-tests/blob/build-gnome/elements/base-system-image.bst ... looks like jonathanmaw updated that after creating x86Image element14:13
tristanit could be things are a wee bit out of date and maybe need updating for churn in buildstream, but I think that is the right thing14:14
jonathanmawI'm not sure if the x86image tests ever really worked, though. coming back to them there were so many reasons why they shouldn't have worked :/14:15
tristanthe initrd looks correct, pulls in the gnu-toolchain.bst, adds some scripts, and composes just the runtime14:15
tristanthen https://gitlab.com/BuildStream/buildstream-tests/blob/build-gnome/elements/initramfs/initramfs-gz.bst takes it and gzips it up into /boot14:15
tristanjonathanmaw, I only ever tested it by booting the result14:16
tristanI dont think we ever got to having automated tests which did that14:16
tristanI  do *clearly* recall having to modify https://gitlab.com/BuildStream/buildstream-tests/blob/build-gnome/files/initramfs-scripts/init to get it to work14:17
tristanthere is no way it would boot with the existing baserock stuff14:17
ssam2ah cool, i didn't find that14:28
*** semanticdesign has joined #buildstream15:06
gitlab-br-botpush on buildstream@sam/bst-checkout-metadata (by Sam Thursfield): 1 commit (last: Allow checking out artifact metadata with `bst checkout`) https://gitlab.com/BuildStream/buildstream/commit/e187ec0e25b398619ede835df614dadf6961842317:06
*** Ebardie has quit IRC17:14
gitlab-br-botbuildstream: merge request (sam/bst-checkout-metadata->master: WIP: Allow checking out artifact metadata with `bst checkout`) #139 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/13917:18
*** cs_shadow has joined #buildstream17:30
*** gitlab-br-bot has quit IRC17:41
*** gitlab-br-bot has joined #buildstream17:41
gitlab-br-botpush on buildstream@sam/manifests (by Sam Thursfield): 2 commits (last: Allow checking out artifact metadata with `bst checkout`) https://gitlab.com/BuildStream/buildstream/commit/e187ec0e25b398619ede835df614dadf6961842317:50
*** valentind has joined #buildstream18:03
*** ssam2 has quit IRC18:05
*** jonathanmaw has quit IRC18:32
*** tiagogomes has quit IRC19:02
*** givascu has quit IRC20:46
*** tristan has quit IRC21:11
*** jjardon[m] has quit IRC21:41
*** mattiasb has quit IRC21:41
*** mrmcq2u[m] has quit IRC21:41
*** cgmcintyre[m] has quit IRC21:41
*** kailueke[m] has quit IRC21:41
*** waltervargas[m] has quit IRC21:41
*** ptomato[m] has quit IRC21:41
*** ptomato[m] has joined #buildstream21:47
*** julien has joined #buildstream22:43
*** valentind has quit IRC22:44
*** julien has joined #buildstream22:44
*** julien has quit IRC22:45
*** waltervargas[m] has joined #buildstream23:46
*** mrmcq2u[m] has joined #buildstream23:46
*** mattiasb has joined #buildstream23:46
*** kailueke[m] has joined #buildstream23:46
*** cgmcintyre[m] has joined #buildstream23:46
*** jjardon[m] has joined #buildstream23:46

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