/srv/irclogs.ubuntu.com/2010/06/22/#ubuntu-motu.txt

cheezeburgahello?00:25
cheezeburgacan anyone tell me the command to open up the sound board?00:30
micahg!support | cheezeburga00:31
ubottucheezeburga: The official ubuntu support channel is #ubuntu. Please be aware that this channel is for development only.00:31
cheezeburgaoh sorry00:32
psusiis there something like cut that isn't so stupid simple?  I'm trying to extract the rss column from the output of ps and cut seems to be incapable of doing so since the columns are separated with multiple spaces01:06
micahgpsusi: perl? :)01:07
psusia little lighter than that? ;)01:07
psusiI can't bloody believe cut can't do this.... you would think it would be the default mode01:08
micahgpsusi: you can't places the spaces in quotes?01:08
psusione or more consecutive whitespace characters... sheesh..  heh01:08
psusino... it's the output of ps... I"m not typing it by hand01:08
psusiand I don't think that would matter anyhow01:09
ajmitchpsusi: pipe it through tr first?01:09
tumbleweedpsusi: awk01:09
psusihrm... tr might do it... I keep meaning to learn awk and never do... heh01:10
tumbleweedpsusi: ps waux  | awk '{print $6 " " $11}'01:11
tumbleweedor just {print $6} for just RSS01:11
ajmitchor you could be bad & work out which character ranges fit the field you want from the ps output, but that seems awkward01:11
ajmitchawk just fits better in this case, I think01:11
psusiahh, thanks01:12
psusihrm... can awk sum the values? ;)01:14
ajmitchyes01:14
* psusi is trying to track down why the stock ubuntu kernels seem to use 400+ mb more ram than mainline01:15
psusi545 mb actually...01:15
micahgpsusi: if each line is a value then: php -r '$myArray = file(my_file); echo array_sum($myArray);'01:17
ajmitchthat involves php..01:18
* micahg forgets most people don't have php installed :-)01:18
ajmitchs/most/sane/01:18
* micahg doesn't remember offhand how to do the same thing in perl...01:18
ajmitchhow about ps axu |awk '{sum += $5} END {print sum}'01:20
psusiI was just coming to that conclusion after reading the man page ;)01:20
psusihrm.. yea... rss totals virtually the same, yet I have 545 mb more free mem after buffers/cache when running the mainline kernel...01:21
psusi845 vs 305 mb01:22
psusiused01:22
ajmitchpsusi: memory reserved for kernel use?01:22
ajmitchis this 32 bit vs 64-bit?01:22
psusiI guess so... but how to figure out why?  64 bit01:22
psusithat's a LOT of memory for the kernel to be using....01:23
ajmitch grep 'Memory.*reserved' /var/log/dmesg01:23
psusiMemory: 1982480k/2096000k available (5600k kernel code, 468k absent, 113052k reserved, 5522k data, 884k init)01:24
psusithat seems to be with the running mainline kernel...01:24
psusithis is the Ubuntu 2.6.35-4: [    0.000000] Memory: 2041420k/2096000k available (5689k kernel code, 468k absent, 54112k reserved, 5436k data, 896k init)01:25
psusilooks about the same...01:25
ajmitch[    0.004000] Memory: 8073096k/9175040k available (4743k kernel code, 787460k absent, 313600k reserved, 2525k data, 532k init)01:26
ajmitchbut it's jaunty, on a desktop box01:26
psusinot much different...01:27
ajmitchmuch larger values absent/reserved01:27
ajmitchthough I think that's due to having 8GB RAM01:28
psusiyea, but not hundreds of mb... and absent I'm pretty sure just means you have more physical ram that is unusable due to poor motherboard/bios01:28
* psusi goes hunting for kernel vm knobs01:29
* andreserl TestDrive PyGTK Front-end Demo Released!02:02
=== Nigel is now known as G
micahgRoAkSoAx: I think I have the virtualbox patch06:28
micahgis it proper to give credit to the person that does the original work (by direct name reference instead of commit reference) if you backport their patch?06:40
dholbachgood morning07:00
iulianHello dholbach.07:12
dholbachhey iulian07:12
slytherinCan anyone help with this error - http://paste.ubuntu.com/453248/ I see this when doing debuild -S -sa, but 'quilt applied' says there are no patches applied.07:47
=== ricotz_ is now known as ricotz
RAOFslytherin: Is that a 3.0 (quilt) package?07:51
carstenhslytherin: remove this hunk from the patch and rebuild?07:51
slytherinyes07:51
RAOFslytherin: Then it'll be trying to unapply the patch before constructing the source package (because the patch has been *applied* to the unpacked source).07:52
slytherincarstenh: you might be right. I never checked if the patch was applied upstream.07:52
carstenhin dpkg 3.0 patches need to apply _cleanly_07:52
slytherincarstenh: you were right. The patch was cherry picked form upstream git. Hence it is not needed anymore with latest upstream release.07:55
carstenhhow does ubuntu handle ftbfs bugs in general? if the package has been built by chance release ubuntu including this package and this bug if nobody cares enought to fix it or are this bugs that need to be fixed before releasing?07:57
slytherincarstenh: The priority of FTBFS bugs depends on which section the package belongs to i.e. main/universe and then which package set, desktop/server/core.07:59
carstenhit's chromium or rather libv8 on 64 bit kernel with 32 bit userland, i'll check if it is in main08:00
slytherinit is in universe08:02
carstenhactually it is chromium-browser since chromium is a game08:02
RAOFcarstenh: Is the FTBFS really that specific?  We don't support that combination, except somewhat half-heartedly, so it's not terribly surprising that it doesn't work.08:03
carstenhalso universe, thanks :)08:03
carstenhRAOF: in debian it's a serious bug and I know no other package that fails to build with 32 bit userland under an amd64 kernel.08:05
carstenhbut "not supported" is what I wanted to know, thanks08:06
RAOFcarstenh: You mean a real, full 32bit userland?08:06
RAOFNot multiarch?08:06
RAOFWe still don't support that, but a FTBFS in that situation is going to be significantly more weird.08:07
carstenhRAOF: uname -a: Linux pergolesi 2.6.26-2-amd64 #1 SMP Wed May 12 23:40:58 UTC 2010 x86_64 GNU/Linux08:07
carstenhRAOF: dpkg --print-architecture: i38608:07
RAOFcarstenh: Weird.  It's not something to do with the old kernel?08:08
carstenhRAOF: they do (among other things) to detect the target arch: python -c 'import platform; print platform.machine()'08:08
carstenhRAOF: no, same with .3208:08
carstenhand just for the record: no multiarch :)08:09
RAOFGah.  This is the problem with autotools.  It's crazy and annoying and awkward, but everything else is *worse*08:09
carstenhthe problem is more not using autotools but scons and inventing weird NIH things ;)08:09
carstenhand full ack to autotools :)08:10
slytherinDoes anyone know for sure of launchpad supports orig.tar.bz2 when using 3.0 format?08:20
carstenhsupporting 3.0 implies supporting orig.tar.bz2, so if it does not it's a bug08:22
kaushalhi08:22
=== thekorn_ is now known as thekorn
carstenhhi08:22
kaushalwhich package contains mutt ?08:22
carstenhmutt08:22
kaushalon hardy08:22
carstenhmaybe you need to enable universe08:22
kaushalok08:23
slytherinmutt is in main since start.08:23
RhondaNow that's the absolte sweetest thing I ever read in a launchpad bug: "Nothing seems to work, and my dad said that you should raport your problem to ubuntu, so now im here. Thans if you fix problem."  bug 59064508:31
ubottuLaunchpad bug 590645 in tmw (Ubuntu) "the mana world (dup-of: 528957)" [Undecided,Fix released] https://launchpad.net/bugs/59064508:31
ubottuLaunchpad bug 528957 in libsdl1.2 (Ubuntu Lucid) "mouse button clicks not detected in windowed mode" [Undecided,Fix released] https://launchpad.net/bugs/52895708:31
=== hyperair1 is now known as hyperair
slytherinRhonda: Is there any particular reason why you repackage upstream tarball as .tar.gz for wesnoth?08:36
RhondaBecause source format 1.0 doesn't support .tar.bz2?08:38
directhexpresumably for backportability08:38
directhexthat's the usual reason to repack these days08:38
RhondaAnd the benefits of source format 3.0 are pretty minor when one is using quilt already.08:38
RhondaActually the workflow that source format 3.0 likes to push onto packagers is quite different from 1.0+quilt.08:39
RhondaAnd the most obvious reason: Because wesnoth upstream doesn't provide .tar.gz  :P08:39
RAOFIf you're storing in revision control I think that source 3.0 makes more sense.  Apart from that, eh.08:40
slytherinRhonda: If nothing else you could save quite a few MB on mirror by using 3.0 + bz2.08:40
RhondaRAOF: Erm, it makes less sense because source 3.0 applies patches to source in unpack stage _additional_ to in debian/patches/foo08:40
RhondaSo you get the same difference _twice_ into the VCS08:41
Rhondaslytherin: That's only a very minor gain.08:41
Rhondaslytherin: Along the same reasoning I would waste quite some processing time on the buildds or anyone who likes to fiddle around with the source.08:41
RhondaDiskspace is cheap, I always was told, and the gain isn't that much.08:42
hyperairi don't have the money for disk space anyway >_>08:43
hyperairunless you count a 1G thumbdrive.08:43
RAOFRhonda: Yeah, you get the changes twice in the VCS.  On the other hand, you also get to use “bzr annotate” on the unpacked source and it works.08:45
RhondaRAOF: I wouldn't be insane enough to store upstream sources for wesnoth in git anyway.08:46
RhondaDisk space isn't _that_ cheap. And I removed myself from wormux packaging because of the upstream sources got imported into the VCS, too.08:46
RhondaYou have the annotate on debian/patches/foo too.08:47
RhondaSo even that part is duplicated.08:47
slytherinRhonda: You live in a country with expensive electronics and expensive bandwidth, every bit counts. Anyway it is your decision as maintainer.08:47
Rhondaslytherin: It requires less bandwidth and diskspace if I pull the tarball seperately and only unpack it when it's needed. If it would be in the VCS I am required to have it unpacked on the harddisk all the time.08:49
RhondaSo yes, I am doing a decision as maintainer that helps along those lines. :)08:50
slytherinRhonda: No. I wasn't even talking about VCS.08:50
slytherinI was just talking about space in archive.08:50
RhondaPeople don't mirror the archive when they have expensive electronics and expensive bandwidth. They pull only the parts they need.08:51
slytherinThat's where expensive bandwidth comes into picture. The difference is about 30MB. Anyway, let's close the discussion.08:55
RhondaThe difference in percentage? wesnoth unfortunately isn't the best choice for a package to work on in such an environment, I'm afraid.08:56
RhondaGimme source 1.0 + bz2 and I'll upload it as is. source 3.0 isn't helpful just because of that, it's rather a pain on the contrary, sorry.08:57
slytherinI can understand.08:58
slytherinMaintaining something like wesnoth is surely pain. :-)08:58
RhondaIt really is. Deeper changes are tedious because the build process takes so long. It was a real annoyance to get DEB_BUILD_OPTIONS=parallel working, for a start.08:59
RhondaAnd I still fear a bit the required testing/work for creating the unversioned meta package properly, with dpkg-divert and update-alternatives and the likes.09:00
Rhondaslytherin: For the last security issues within wesnoth I had to do no less than 6 builds for the various distributions, and when I say builds I mean that, no source-only uploads in Debian.09:01
slytherin:-)09:01
* Rhonda . o O ( given that a source-only upload without a build for a security issue is a braindead thing anyway )09:01
Rhonda… s/a build/at least a local-build/09:02
=== ogra_ is now known as ogra
=== Quintasan_ is now known as Quintasan
=== ara_ is now known as ara
=== echidnaman is now known as JontheEchidna
DeeJay1dholbach: I think I managed to fsck up on samarium - https://code.edge.launchpad.net/~deejay1/+recipe/daily/+build/60 it seems to be running 3 hours now14:47
dholbachDeeJay1: can you ask in #launchpad - they know what has to be done14:48
DeeJay1dholbach: will do15:06
AnAntHello, is something missing in 588736 ?15:42
AnAntLP #58873615:43
ubottuLaunchpad bug 588736 in mutt (Ubuntu) "Candidate release mutt 1.5.20-8ubuntu1" [Undecided,Confirmed] https://launchpad.net/bugs/58873615:43
MTecknologyThere's an init.d file in debian/ in this package. I want to add an additional init.d script - i'm kind of lost because I don't see where this init.d file gets installed15:48
AnAntwhich package ?15:49
MTecknologynginx15:50
tumbleweedMTecknology: dh_installinit normally installs them for you15:50
micahgAnAnt: bug title: https://wiki.ubuntu.com/UbuntuDevelopment/Merging?action=show&redirect=MOTU%2FPackages%2FMerging#File%20a%20merge%20bug15:50
MTecknologytumbleweed: the file is init.d - how can I add another file?15:51
AnAntMTecknology: why add another init ?15:51
AnAntMTecknology: for the -dbg package ?15:51
MTecknologyAnAnt: I've been using a completely different init script for starting php processes that doesn't really fit into the purpose of nginx init script - i have no use for it if I don't install nginx so i figured this would be a decent place to put it - i've had others ask me for the script and i figure this is a way to distribute it too15:53
tumbleweedMTecknology: put it into examples?15:54
MTecknologytumbleweed: I want it to wind up executable in /etc/init.d/15:55
tumbleweedMTecknology: what about the nginx users who don't use php?15:55
AnAntMTecknology: well,  dh_installinit  manpage would help you then15:55
MTecknologytumbleweed: they won't have a reason to grab my version of the packace15:55
MTecknologypackage*15:56
tumbleweedMTecknology: oh, ok then. yes what AnAnt said.15:56
MTecknologyoh...15:57
MTecknologydebian/nginx.init and debian/php-fcgi.init <- add those and the magic dh will work?15:57
AnAntMTecknology: you will have to name the init.d file as package.<name>.init, then you will need to pass --name=<name> to dh_installinit in debian/rules file15:58
MTecknologythanks :)15:59
MTecknologyAnAnt: the man page makes it sounds like I can't pass --name= twice in one line, the dh_prep part makes it sound like i need to pass dh_install_init twice - is that right?16:00
AnAntmaybe you can run dh_installinit several times16:01
MTecknologyTHANKS A LOT :)16:02
MTecknologysorry- bumped caps16:03
AnAntno problem16:03
* tumbleweed disables capslock. it's unecessary16:04
MTecknologytumbleweed: .. that's an amazing idea16:04
tumbleweedsome oldschool sun-people remap it to ctrl16:05
MTecknologytumbleweed: I fixed it :D16:11
MTecknologytumbleweed: took the key off the board16:11
shadeslayer_tumbleweed: quick question,can i put the current year in debian/copyright if upstream doesnt ship a year for the copyright stuff?17:51
shadeslayer_or can i leave the year...17:52
MTecknologydarn.. when you spell something wrong the package doesn't build18:17
MTecknologycomputer magic should cover that - it should do what i want instead of what i tell it to :P18:18
shadeslayer_hi is this rules file ( specifically the part about the get-orig-source ) ok ? : http://pastebin.com/b9pFKvy719:00
=== Amto_res is now known as Amto_res`OFF
gesershadeslayer_: do I see it correctly that you only repack it to remove the debian directory?19:03
gesershadeslayer_: have you thought about using v3 source format? that way you could use the upstream tar.bz2 as is (v3 gives you "You don't have to repack the upstream tarball to strip the debian directory." for free)19:05
shadeslayer_geser: yes,upstream ships a debian/ folder19:05
shadeslayer_geser: uh... im using the new source format ... the one with debian/source/format19:07
shadeslayerso no need to use the get-orig-source part?19:09
maxbYou can use source format 1.0 with an explicit debian/source/format - that doesn't tell us anything :-)19:09
shadeslayermaxb: so what do i have to do for fomat v3 ?19:10
maxbTo enable use of it? Have a debian/source/format that contains "3.0 (quilt)" or "3.0 (native)"19:13
shadeslayermaxb: thats what i have :P19:17
maxbRight, the point was just that "the one with debian/source/format" doesn't actually say anything19:17
gesershadeslayer: no need for get-orig-source in this case (see point 4 in http://wiki.debian.org/Projects/DebSrc3.0)19:21
NorthernLightsHello all19:24
geserHi19:25
gubatronGood day, who can I talk to to include a package in the official Ubuntu repository? I'm a member of the FrostWire Development team and we've finished gathering all the requirements asked from us on launchpad.net https://bugs.launchpad.net/ubuntu/+bug/94011/comments/2719:47
ubottuLaunchpad bug 94011 in Ubuntu "[needs-packaging] Frostwire" [Wishlist,Confirmed]19:47
BlackZgubatron: why don't you want to get it in debian directly?19:50
gubatronBlackZ that'd be even better19:50
BlackZgubatron: well, start by reading http://mentors.debian.net/cgi-bin/welcome19:51
gubatron(I'm fairly new to the process, per your suggestion I understand that it'd make it also to ubuntu users if it got it there)19:51
gubatronthanks BlackZ19:51
BlackZgubatron: you will get it in ubuntu however19:52
gubatronBlackZ: does your last message mean we're gonna be in Ubuntu? (or only after we get in Debian)19:53
BlackZgubatron: if you will get it in debian it will be synced in ubuntu as well19:53
BlackZ(from debian)19:53
gubatron10-419:53
BlackZso I'd say after getting it in debian19:53
BlackZhm?19:53
gubatron10-4=acknowledged19:54
carstenhgubatron: do you want to maintain the software yourself or do you want that someone different takes care of the package?20:03
gubatroncarstenh: we can mantain it ourselves, we have done it so we can package everything (.deb binary and .deb sources) in one step whenever we have a new release.20:04
carstenhgubatron: how do you build the package? normaly there is a .dsc file that is being generated whilst building20:05
gubatronwe build it using dpkg20:05
gubatron(and a lot of bash and ant before the dpkg)20:06
carstenhthe bash is where?20:06
carstenh+script20:06
carstenh(i don't want a url)20:07
gubatronyeah, it's a script that copies all the sources from our codebase and all the sources from all the GPL third party libraries we need20:07
carstenhgubatron: do you run ubuntu?20:07
carstenhcurrently20:08
gubatronthen it packages everything into a .tar.gz and then we create a file structure that represents how it all will be uncompressed once isntalled. Yes I run ubuntu (and debian)20:08
gubatronright now, ubuntu20:08
carstenhgood, please run apt-get build-dep pal as root (might require sudo before apt-get)20:08
carstenhthen apt-get install devscripts20:09
carstenh(i try to show you how rebuilding a package should work since you are doing it wrong)20:10
carstenhand tell me when these commands have finished20:10
gubatronI get E: Unable to find a source package for frostwire-src-4.20.6.noarch.deb (so I must be doing it wrong), will read about the devscripts20:11
carstenhwhy don't you run the commands I told you?20:12
gubatronfetching (thought I had to replace pal > mypackage), sorry20:12
carstenhdon't think ;)20:13
gubatronlol20:13
gubatronk done20:13
carstenhnow run as normal user (without sudo): apt-get source pal20:13
gubatrondone20:14
carstenhoh, wait20:14
carstenhwrong command, at least I should think ...20:14
carstenhsudo apt-get build-dep hnb20:15
carstenhand then as user: dget http://ftp.de.debian.org/debian/pool/main/h/hnb/hnb_1.9.18-7.dsc20:15
carstenhdpkg-source -x hnb_1.9.18-7.dsc20:16
carstenhcd hnb-1.9.1820:16
carstenhdpkg-buildpackage -us -uc -rfakeroot20:16
carstenhcd ..20:16
carstenhls20:17
gubatron[compiling...]20:17
gubatrondone20:17
carstenhnow you see that you have gererated a deb file for hnb20:17
gubatronhnb_1.9.18-7_amd64.deb20:17
carstenhevery package in ubuntu or debian must be buildable using these commands20:18
carstenhfind :)20:18
carstenhfine :)20:18
gubatrongot you20:18
carstenhso, your homework is: make this work for frostwire (except the apt-get build-dep part, you need to install your build dependencies by hand since the package is not yet in ubuntu)20:19
carstenhbefore this has been done nobody can review your package20:20
gubatronthank you very much, this clarifies a lot of questions we had20:20
carstenhyou can delete the downloaded pal and hnb files now20:20
carstenhgubatron: lintian is very helpful to find errors in the package, after you made this dget some/url/whatever.dsc part work and build the package locally you should run lintian -I -E --pedantic *.changes to see packaging errors and warnings20:26
carstenh(or without options to see the more major ones if the list is very long)20:26
=== jtechidna is now known as JontheEchidna
fabrice_spHow can I check what is "default-mta"? a package in Debian has been changed to replace exim4 by default-mta21:09
fabrice_spI don't find it in p.u.c21:10
carstenhfabrice_sp: which package?21:10
fabrice_spcapisuite21:11
fabrice_spI mean, the diff between Ubuntu and Debian is that Ubutnu is using default-mta21:11
carstenhexim4-daemon-light provides default-mta in debian, this is a virtual package21:12
carstenhwhen debian switches to postfix only exim4-daemon-light and postfix need to be adapted21:13
carstenhI would just sync the debian package21:13
fabrice_sphow can I check which package provides default-mta in Ubuntu?21:14
carstenhapt-cache showpkg default-mta21:14
fabrice_spthx ;-)21:14
carstenhotoh, Maintainer: Debian QA Group <packages@qa.debian.org> ...21:14
carstenhfind a sponsor and do a upload in debian? :)21:15
fabrice_spyou said sponsor?! :-)21:16
DktrKranzs-p-o-n-s-o-r is better? :)21:16
carstenhfabrice_sp: I'm not here ... but ask me tomorrow if you plan to prepare a qa-upload in debian21:17
carstenh(unless someone else is faster)21:17
fabrice_spcool :-)21:17
fabrice_sphmm, it seems that DktrKranz is interested ;-)21:18
carstenh. o O ( motu is the new debian qa )21:18
fabrice_spwell, we have a lot in common21:18
fabrice_splike trying to maintain unmaintained packages :-)21:18
DktrKranzfabrice_sp: I'm currently breaking dak with my code, so I don't think I survive this night :P21:19
fabrice_splol21:19
DktrKranzit works so far, but who knows? :)21:19
ajmitchDktrKranz: noone uses dak though, right?21:21
DktrKranzajmitch: nobody except some old-timer DDs, some mid-timer DDs and some new-timer DDs21:22
Laneyneeds moar Launchpad21:22
DktrKranzgo and tell Ganneff ;)21:23
ajmitchthen everything would be sweetness & ponies :)21:23
DktrKranzponies!21:24
* geser gives ajmitch http://loldebian.files.wordpress.com/2007/06/pony-small1.png21:39
ajmitchheh21:39
MTecknology [FAILEDTOUPLOAD]  Failed to upload  on ........23:12
MTecknologyWhat causes this?23:13
MTecknologyoh...23:15
shadeslayer_:P23:15
jpdsMTecknology: log?23:25
MTecknologyjpds: it was a newer version thing23:27
Laney22/06 23:27:58 <MTecknology> jpds: it was a newer version thing23:31
Laney>> (22/06 23:31:12) (Laney[+i]) (11:#ubuntu-motu[+Ccnz]) (211 nicks (@0 %0 +0 211))23:31
Laney>> (1=1 |#crumbs    2=2 |#php       3=3 |#short.bus 4=4 |#haskell   5=5 |#toast~ers 6=6 |#debian-uk 7=7 |#relax     8=8 |#deb~n-cli 9=9 |#agda23:31
Laney22/06 23:27:58 <MTecknology> jpds: it was a newer version thing23:31
Laney>> (22/06 23:31:12) (Laney[+i]) (11:#ubuntu-motu[+Ccnz]) (211 nicks (@0 %0 +0 211))23:31
Laney>> (1=1 |#crumbs    2=2 |#php       3=3 |#short.bus 4=4 |#haskell   5=5 |#toast~ers 6=6 |#debian-uk 7=7 |#relax     8=8 |#deb~n-cli 9=9 |#agda23:31
Laney22/06 23:27:58 <MTecknology> jpds: it was a newer version thing23:31
jpdsLaney: Righto.23:31
Laney>> (22/06 23:31:12) (Laney[+i]) (11:#ubuntu-motu[+Ccnz]) (211 nicks (@0 %0 +0 211))23:31
Laney>> (1=1 |#crumbs    2=2 |#php       3=3 |#short.bus 4=4 |#haskell   5=5 |#toast~ers 6=6 |#debian-uk 7=7 |#relax     8=8 |#deb~n-cli 9=9 |#agda23:31
Laneyargh23:31
Laneyerase that from your eyes23:31
jpdsWhat has been seen, cannot be unseen.23:31
jpdsAlthough... your first window sounds fitting.23:32
* Laney #relax-es23:32
* ajmitch sees spam23:41

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