asac | going for a.u.c | 00:00 |
---|---|---|
asac | hopefully there were late a2 landings | 00:00 |
asac | ok apt-get install -f fremoves two things that fix it hopefuly | 00:00 |
asac | compiz-wrapper and libmetacity0 gone | 00:01 |
asac | ccheney: ok. so hte hidden thing | 00:09 |
asac | someone said we included stuff from old compiler or toolchain for arm last cycle, what was that? | 00:09 |
asac | ccheney: ? | 00:09 |
asac | is that gone? | 00:09 |
asac | micahg: hi whats the status on tbird 3? | 00:13 |
micahg | same, still need to add the targetted bugs and test | 00:13 |
micahg | been finishing something for work | 00:14 |
asac | ok. | 00:15 |
micahg | asac: are we in a rush? | 00:15 |
asac | are you doing the package rename? | 00:15 |
micahg | yes | 00:15 |
micahg | that's done, jsut needs to be tested | 00:16 |
asac | well. i think we should get this up. if you push your branch i can finish that | 00:16 |
micahg | or rather | 00:16 |
asac | push it somewhere | 00:16 |
asac | i can review | 00:16 |
micahg | k, well, it's thunderbird | 00:16 |
micahg | not thunderbird-3.0 | 00:16 |
micahg | I migrated it in | 00:16 |
asac | so its up? | 00:16 |
micahg | not yet | 00:16 |
micahg | I'll try to finish tonight... | 00:16 |
micahg | and push up for review | 00:16 |
asac | ok. but dont refrain from pushing to the branch because its not ready | 00:17 |
asac | its ready | 00:17 |
asac | err the branch is dead otherwise | 00:17 |
micahg | k | 00:17 |
asac | https://edge.launchpad.net/~mozillateam/thunderbird/thunderbird.dev ? | 00:17 |
micahg | yep | 00:17 |
asac | hmm | 00:17 |
micahg | oh | 00:17 |
asac | thats not existing | 00:17 |
micahg | wait | 00:17 |
micahg | I think I moved it | 00:18 |
micahg | https://edge.launchpad.net/~mozillateam/thunderbird/thunderbird.head | 00:18 |
micahg | yep | 00:18 |
asac | kk | 00:18 |
micahg | ok, so I should just push up once I confirm it works? | 00:18 |
asac | yes | 00:18 |
micahg | k | 00:18 |
asac | well push now | 00:18 |
asac | i can take a look already | 00:18 |
micahg | ok | 00:18 |
asac | ;) | 00:18 |
asac | probably helps me to understand how much work it is ;) | 00:19 |
micahg | asac: pushed | 00:21 |
micahg | I still have to clean up the changelog as well | 00:22 |
asac | cleanup? generate? | 00:22 |
asac | thats ok | 00:22 |
micahg | no, stuff's in there | 00:22 |
asac | i can check the bzr commits | 00:22 |
micahg | it just needs to be cleaned | 00:22 |
micahg | asac: BTW, we have 2 langpack bugs in lucid | 00:31 |
micahg | actually one is Lucid/Karmic | 00:31 |
asac | which one is in karmic? | 00:34 |
asac | tbird langpacks? | 00:34 |
micahg | no, apparently, the FR langpack is still brokenb | 00:34 |
asac | for firefox | 00:34 |
asac | ? | 00:34 |
asac | fr? | 00:34 |
micahg | yep | 00:34 |
asac | what symptoms? | 00:34 |
micahg | same as before, entities | 00:35 |
asac | i dont know about thta | 00:36 |
asac | ;) | 00:36 |
asac | whats the bug number? | 00:36 |
asac | entities can be everything | 00:36 |
asac | but what i dont believe that fr can be badly broken. | 00:36 |
micahg | well there's at least one | 00:36 |
micahg | bug 472327 | 00:37 |
ubottu | Launchpad bug 472327 in langpack-o-matic "Firefox Language Packs not updated in final round for language-pack-ast" [Medium,Confirmed] https://launchpad.net/bugs/472327 | 00:37 |
asac | i would have received direct bugging ... | 00:37 |
micahg | idr if fr is broken in karmic | 00:37 |
asac | thats not fr ;) | 00:37 |
asac | ok | 00:37 |
asac | lucid is normal to be broken | 00:37 |
asac | we have devmode again. someone needs to fix the po2xpi transformer | 00:37 |
asac | hmm. thought ast was whitelisted | 00:38 |
micahg | someone just reported a broken fr: bug 507404, but I don't know if it's the langpack | 00:38 |
ubottu | Launchpad bug 507404 in firefox-3.5 "Firefox 3.5.7 not localized" [Undecided,New] https://launchpad.net/bugs/507404 | 00:38 |
asac | maybe a bug | 00:38 |
micahg | then there's bug 502932 | 00:38 |
ubottu | Launchpad bug 502932 in firefox-3.5 "Firefox 3 Langpacks in Lucid" [Low,Triaged] https://launchpad.net/bugs/502932 | 00:38 |
=== SuBmUnDo_ is now known as SUBMuNdO__ | ||
=== SUBMuNdO__ is now known as SuBmUNDo`OuTzZ | ||
=== SuBmUNDo`OuTzZ is now known as SUBMuNdO__ | ||
Bashar | hey all, how can i upgrade to thunderbird 3 on karmic 9.10 ? | 01:14 |
Bashar | im here https://edge.launchpad.net/~ubuntu-mozilla-daily/+archive/ppa/ but not sure how to start | 01:14 |
micahg | Bashar: that's a daily build | 01:15 |
micahg | it will install thunderbird 3.0 side by side with 2.0 | 01:15 |
micahg | there's no official upgrade yet | 01:15 |
Bashar | i'm having serious problem since i moved from 8.10 to 9.10 now my 2.0 thunderbird can't stay online for more than 5 minutes, it will segfault | 01:15 |
micahg | Bashar: try with a clean profile | 01:16 |
Bashar | i've been suffering for the past week without a solution | 01:16 |
micahg | one of your extensions might be causing it | 01:16 |
Bashar | but even on -safe-mode its segfaulting | 01:16 |
micahg | try thunderbird -ProfileManager | 01:16 |
Bashar | i have mor ethan 20GB worth of data can't start clean profile | 01:17 |
micahg | Bashar: do you have lightning installed? | 01:17 |
Bashar | yes | 01:17 |
micahg | Bashar: from ubuntu or addons.mozilla.org? | 01:18 |
Bashar | i removed tunderbird and reinstalled it without lightning same issue | 01:18 |
Bashar | from ubuntu | 01:18 |
micahg | hmmm | 01:18 |
micahg | can you file an apport bug? | 01:18 |
Bashar | it doesn;t work automatically always timeout at the end | 01:19 |
Bashar | i'm trting to upload the file i found at /var/crash/ | 01:19 |
Bashar | its taking forever to upload it | 01:19 |
micahg | ah | 01:19 |
Bashar | Sorry, there was a problem connecting to the Launchpad server. | 01:19 |
Bashar | https://bugs.launchpad.net/ubuntu/+source/thunderbird/+bug/500321 | 01:19 |
ubottu | Ubuntu bug 500321 in thunderbird "Thunderbird segfaults, gdb says "file format not recognised"" [Undecided,Invalid] | 01:19 |
micahg | you were the one who asked about glib... | 01:20 |
Bashar | yes thinking its from it | 01:20 |
Bashar | i forced version 2.22 still same issue | 01:20 |
Bashar | so it clearly not glib issue | 01:20 |
Bashar | went to 2.22 uninstalled TB, reinstalled same issue | 01:20 |
micahg | that's probably not causing it | 01:21 |
Bashar | yeah seems not | 01:21 |
micahg | I ran TB2 under karmic for more than a month with no issues | 01:21 |
Bashar | my colleague does too no issues | 01:21 |
=== SUBMuNdO__ is now known as SuBmUNDo`OuTzZ | ||
micahg | well, try a new profile to see if it crashes | 01:21 |
Bashar | the difference i did is i tried to move to TB3 then tons of issues happened (running from the profile folder) | 01:21 |
micahg | or have you tried disabling all the extensions? | 01:21 |
Bashar | so i went back to ubuntu's install using the same profile | 01:22 |
Bashar | and it seems this is what caused it | 01:22 |
Bashar | something related to v3 is saved somewhere in the file or so | 01:22 |
micahg | yeha, you shouldn't use the same profile for both | 01:23 |
sleepycoder | Anyone know how to allocate an nsAString from a plugin? I tried nsEmbedString, but it requires external symbols such as NS_StringContainerInit. I'm not sure if I need to use that and link to some lib or use something else? | 01:23 |
micahg | there are instructions on the PPA page how to add it, but you should be aware that it's dailies | 01:24 |
Bashar | i *think* i didn't because i did a copy first, but i'm assuming i did a mistake and worked on the not copied version | 01:24 |
Bashar | so if i download linux version 3 tarball from mozilla website thats stable version? better than the dailies ? | 01:24 |
micahg | well, I have the release version built in my beta PPA, but it's still called shredder | 01:25 |
Bashar | what does shredder mean? | 01:25 |
micahg | Bashar: https://launchpad.net/~micahg/+archive/mozilla-beta | 01:25 |
micahg | shredder is the codename | 01:25 |
Bashar | please excuse my experience, whats the difference between this one and the one from mozilla's tarball ? | 01:26 |
micahg | Bashar: functionally, nothing, our version uses Ubuntu's libraries where possible | 01:26 |
micahg | and is managed in the apt repository | 01:27 |
micahg | Bashar: I'll tell you how to get a gdb backtrace... | 01:28 |
Bashar | ok | 01:29 |
micahg | here's the path to the binary /usr/lib/thunderbird/thunderbird | 01:29 |
Bashar | i started newer profile and added one of my file | 01:29 |
Bashar | yes | 01:29 |
Bashar | i found it | 01:29 |
micahg | if you can attach a full gdb backtrace, that might help | 01:31 |
Bashar | what/how todo gdb backtrace | 01:32 |
micahg | https://wiki.ubuntu.com/Backtrace | 01:32 |
Bashar | its surely a profile issue | 01:45 |
Bashar | the newly created profile for my email and another account still up and running | 01:45 |
micahg | k | 01:45 |
Bashar | this is a major issue now | 01:45 |
Bashar | how d o i copy mail emails, mailboxes, passes, settings without copying the crashed thing :( | 01:46 |
micahg | it should be in the Mail profile in the profile | 01:46 |
micahg | settings idk | 01:46 |
Bashar | just Mail folder ? | 02:00 |
Bashar | nothing else ? | 02:00 |
micahg | that's where the local mail is | 02:00 |
Bashar | but smtp/pop/passwods/digital certificate/thunderbird settings, all these will be gone ? | 02:01 |
micahg | yes | 02:01 |
micahg | ImapMail also has stuff | 02:01 |
micahg | prefs.js | 02:01 |
Bashar | cant afford that | 02:01 |
Bashar | my entire business relay on email | 02:01 |
micahg | well, you can try the tb3 which makes a copy | 02:02 |
micahg | from my ppa | 02:02 |
Bashar | and create new profile and point it to the same folder ? | 02:02 |
micahg | Bashar: no, it'll do it for you | 02:02 |
micahg | you can see if it works | 02:02 |
micahg | otherwise, maybe try the upstream version since that might have been what corrupted it | 02:03 |
micahg | as in the profiles aren't necessarily compatible | 02:03 |
Bashar | whats different between urs and the daily builds ? | 02:03 |
Bashar | yours is the stable release from mozilla source ? | 02:04 |
micahg | they're both from mozilla source | 02:04 |
micahg | mine was the release version unbranded | 02:04 |
micahg | the daily changes when upstream 3.0 development branch changes | 02:04 |
micahg | Bashar: I have to go, any last questions, I'll be back in about 2 hrs or so | 02:09 |
Bashar | ill add it to apt source and install and see how it goes :) | 02:10 |
Bashar | thanks for the help | 02:10 |
micahg | np, come back if you need anything | 02:10 |
=== asac_ is now known as asac | ||
Bashar | starting Shredder gives this error: Component returned failure code: 0x80520012 (NS_ERROR_FILE_NOT_FOUND) [nsIXMLHttpRequest.send] | 02:44 |
Bashar | never mind seems worked | 03:02 |
Bashar | thanks | 03:02 |
micahg | asac: I'm test building TB3, I'll talk to you in the morning | 05:30 |
=== ripps is now known as ripps|sleep | ||
=== SuBmUNDo`OuTzZ is now known as GotchA | ||
BUGabundo_work | morning | 09:49 |
mattmac | asac: ping | 09:49 |
mattmac | sorry missed your chat yesterday | 09:49 |
mattmac | don't have logging turned on for this server | 09:49 |
* mattmac increases his scrollback size | 09:52 | |
BUGabundo_work | ehe | 09:53 |
fta | BUGabundo_work, can you block that viagra guy? | 11:24 |
BUGabundo_work | who?? | 11:25 |
fta | http://identi.ca/fta/all 3 out of the last 4 | 11:25 |
fta | can't figure out how to do that with the web interface | 11:28 |
fta | too cluttered | 11:28 |
BUGabundo_work | fta: go to his profile and press block? | 11:28 |
fta | and now, it's in french for me, but i don't understand those translations | 11:28 |
BUGabundo_work | humm | 11:29 |
BUGabundo_work | your timeline is clear! | 11:29 |
BUGabundo_work | whats wrong with it? | 11:29 |
BUGabundo_work | fta: change to english | 11:29 |
BUGabundo_work | lol | 11:29 |
BUGabundo_work | i've flagged his profile for review by admins | 11:30 |
=== BUGabundo_work is now known as BUGabundo_lunch | ||
=== gandi_ is now known as gandi | ||
=== BUGabundo_lunch is now known as BUGabundo_work | ||
=== kenvandine_ is now known as kenvandine | ||
asac | hi micahg | 14:09 |
micahg | hi | 14:09 |
micahg | so, TB didn't build | 14:09 |
asac | still same issue? | 14:09 |
micahg | no, this was my merged version | 14:09 |
asac | merged | 14:09 |
asac | ? | 14:09 |
asac | ah | 14:09 |
asac | ok | 14:09 |
micahg | I forgot the man page apparently | 14:09 |
asac | i know | 14:09 |
asac | micahg: if you have the build tree you can go in there | 14:09 |
asac | change stuff in debian/ | 14:09 |
asac | and do debuild -nc | 14:09 |
asac | to test stuff without a full rebuild | 14:10 |
asac | thats usually the right way to develop stuff in debian/ | 14:10 |
micahg | k | 14:10 |
asac | micahg: you deleted the -3.* files and then added the files without -3.0, right? | 14:11 |
micahg | if I do 2>&1 | tee on the debuild command will it give me the whole log? | 14:11 |
asac | if you had used bzr mv for that | 14:11 |
micahg | yes | 14:11 |
asac | i could have checked the diff easily | 14:11 |
micahg | or rather | 14:11 |
micahg | no | 14:11 |
asac | ? | 14:11 |
micahg | I renamed them | 14:11 |
asac | using bzr mv? | 14:11 |
micahg | no | 14:11 |
* micahg didn't know about bzr mv | 14:11 | |
asac | right. you should have used that | 14:12 |
micahg | now I know for the next merge | 14:12 |
asac | yeah. | 14:12 |
asac | i will probably redo that commit if you don thav etime | 14:12 |
asac | its much easier to review if you missed something etc. | 14:12 |
asac | but maybe i will not ;) | 14:12 |
asac | TBD | 14:12 |
micahg | I did this before you showed me about the merge stuff actually | 14:13 |
asac | ok. | 14:13 |
micahg | maybe I should go back and do it right | 14:13 |
asac | maybe i will do everything | 14:13 |
micahg | but it'll be much later | 14:13 |
asac | right | 14:13 |
asac | i tried it | 14:13 |
asac | i can do it | 14:14 |
asac | and copy your stuff | 14:14 |
asac | will take me 1h | 14:14 |
micahg | should I push the rest of the fixes | 14:14 |
asac | sure | 14:14 |
asac | whatever you have ;) | 14:15 |
BUGabundo_work | fta: asac: http://neugierig.org/software/chromium/notes/2010/01/forum-fonts.html | 14:18 |
micahg | is stacking the updates per file in the changelog ok, or filename after each change? | 14:18 |
micahg | like I have 2 updates to debian/control | 14:18 |
micahg | can I do * Update 1\r\n* Update 2\r\n - update debian/control? | 14:19 |
fta | BUGabundo_work, so what? | 14:20 |
BUGabundo_work | so nothing | 14:21 |
BUGabundo_work | just leting u know | 14:21 |
BUGabundo_work | dont kill the messenger | 14:21 |
asac | micahg: if its two different changes to the same file you can have two changelog lines | 14:27 |
asac | its fine to have more than one bullet point for one file | 14:27 |
asac | if thats the question | 14:27 |
micahg | k | 14:27 |
micahg | yes | 14:27 |
micahg | also, is debcommit in that situation ok? | 14:27 |
micahg | or do I need to show the file | 14:27 |
asac | micahg: well | 14:28 |
asac | you can have | 14:28 |
asac | * this was done | 14:28 |
asac | - update control | 14:28 |
asac | * and this was done | 14:28 |
asac | - update control | 14:28 |
asac | so no need to merge the entries | 14:29 |
asac | so debcommit should just work (TM) | 14:29 |
micahg | ah, that's what I was wondering... | 14:29 |
asac | right | 14:29 |
* micahg must have misunderstood | 14:29 | |
micahg | will uncommit :) | 14:29 |
asac | i guess most likely i mistalked ;) | 14:29 |
asac | too | 14:29 |
micahg | asac: also, is the way I did the bug closes ok? | 14:29 |
asac | not sure ;) | 14:30 |
asac | the syntax for contribution markings is a bit different though: | 14:30 |
micahg | yep | 14:30 |
micahg | I'm fixing that now | 14:30 |
asac | [ Alex Sutter <asac@ooco> ] | 14:30 |
asac | at least the whitespaces | 14:30 |
micahg | does that need a separate commit? | 14:30 |
asac | before and after name | 14:30 |
asac | micahg: i will replay with merge and stuff anyway, so just get it up somehow | 14:31 |
asac | bzr merge and mv ;) | 14:31 |
micahg | oh, I didn';'t know we need a spave before the name | 14:31 |
asac | not sure we need, but its the standard and looks ugly if not | 14:31 |
micahg | asac: was I supposed to write the man page? | 14:35 |
asac | no | 14:36 |
asac | there was a manpage, wasnt there? | 14:36 |
asac | thats in the old tbird 2 package | 14:36 |
asac | you can resurrect that | 14:36 |
* micahg wondes how he lost that... | 14:37 | |
micahg | *wonders | 14:37 |
asac | you removed all files from debian/ first | 14:37 |
asac | didnt you? | 14:37 |
micahg | no | 14:37 |
asac | was it really in tbird 3 branch? | 14:38 |
micahg | I see the file, I must not be installing it properly... | 14:38 |
asac | probably | 14:38 |
micahg | hmm | 14:38 |
micahg | the file isn't there... | 14:38 |
asac | needs to be in debian/thunderbird.docs | 14:38 |
asac | or even thunderbird.manpages | 14:39 |
micahg | yeah, it says thunderbird.1 | 14:39 |
micahg | I just can't ifnd the file | 14:39 |
asac | micahg: it wasnt in the 3.0 branch | 14:40 |
micahg | heh | 14:40 |
micahg | I found it | 14:40 |
asac | so that needs to be kept from the 2.0 branch | 14:40 |
micahg | it's generated from sgml | 14:40 |
asac | also in teh past we generated it from sgml | 14:40 |
asac | yeah | 14:40 |
asac | so it might have slipped through | 14:40 |
micahg | yep | 14:41 |
=== ripps|sleep is now known as ripps | ||
fta | crimsun, when mplayer/lucid starts, it now shows a bunch of "bt_audio_service_open: connect() failed: Connection refused (111)" what is that? bt as in bluetooth? | 16:01 |
=== yofel_ is now known as yofel | ||
mattmac | asac: sorry, your previous comment scrolled out of my buffer before I saw it | 16:29 |
mattmac | what version should I use to build Prism? | 16:29 |
asac | the one that we use? 1.9.1? | 16:30 |
asac | try that | 16:30 |
asac | if not go for 1.9.2 | 16:30 |
mattmac | no I mean which Ubuntu version | 16:31 |
mattmac | I'm building on top of 1.9.2 btw | 16:31 |
mattmac | should I build on the very latest greatest Ubuntu or are users of older versions gonna to be missing libraries or something? | 16:31 |
asac | mattmac: build on the lowest ubuntu version you want to support | 16:32 |
asac | otherwise you cannot use it in older versions | 16:32 |
asac | e.g. use hardy | 16:32 |
mattmac | ok fair enough | 16:32 |
asac | if you want it to have chance to work everywhere | 16:32 |
mattmac | thanks... hardy sounds good to me | 16:32 |
asac | also use 1.9.1 | 16:32 |
asac | otherwise it wont work on ffox 3.5 | 16:32 |
asac | only 3.6 | 16:32 |
mattmac | why's that? | 16:33 |
asac | same reason as why you need to build for hardy | 16:33 |
asac | if you biuld for xulrunner 21.9.2 it wont work on 1.9.1 | 16:33 |
mattmac | even if I ship all the libraries with it? | 16:34 |
mattmac | all the XULRunner libraries I mean | 16:34 |
mattmac | that's what I do on other platforms | 16:34 |
asac | yes | 16:35 |
asac | well no | 16:35 |
asac | you cant do that | 16:35 |
asac | you should ship a .xpi or a minimal webapp | 16:35 |
asac | if you try, maybe it works, but we cant help you on that | 16:35 |
asac | ;) | 16:35 |
mattmac | alright well I just package it like the previous release and we'll see what happens | 16:36 |
mattmac | 3.6 is supposed to be out soon anyway | 16:36 |
asac | what do you mean by: "package it" ... in .debs? | 16:37 |
mattmac | it's a bz2 file | 16:39 |
mattmac | just a zip of the binary directory | 16:39 |
asac | kk | 16:49 |
=== cyphermo1 is now known as cyphermox | ||
=== micahg1 is now known as micahg | ||
fta | crimsun, strangely, since today's upgrade, my sound regressed | 18:24 |
fta | asac, metacity? | 18:51 |
asac | i had lastlog in desktop to grab the link ;) | 19:14 |
asac | and thought we talked there | 19:14 |
asac | anyway off | 19:15 |
=== and`_ is now known as and` | ||
gnomefreak | what happened to the old file manager? it is now called PCMan File Manager 0.5.2? | 20:41 |
gnomefreak | is this something i installed or new file manager? | 20:41 |
fta | something you did, mine is still nautilus | 20:44 |
gnomefreak | fta: ok thanks | 20:45 |
gnomefreak | freenode is changing :( | 21:16 |
BUGabundo | gnomefreak: to what? | 21:19 |
gnomefreak | sevens | 21:20 |
gnomefreak | BUGabundo: http://freenode.net/seven-for-hyperion-users.html | 21:20 |
* gnomefreak needs to update my scripts soon | 21:21 | |
crimsun | fta: regressed in what sense? I know about the pacmd poll() issue. | 21:55 |
fta | crimsun, sdl is taking 100% cpu like in karmic (it was fine yesterday) and gives a much slower experience (probably due to syncs) but i hear no gliches (like in karmic) | 21:57 |
=== gnomefreak76 is now known as gnomefreak | ||
crimsun | fta: ah. | 21:58 |
crimsun | well, I need to back out one commit, so I'll roll another package tonight after chasing the pacmd bug. | 21:58 |
gnomefreak | crimsun: is there a way to enable system beep? i removed the blacklist entry and still not happening but on power down system beep works | 22:03 |
crimsun | gnomefreak: I don't know what you mean by system beep, which is unfortunately pretty ambiguous | 22:04 |
gnomefreak | crimsun: the "system beep" the beep/ping from pcskr(or something spelled like it) | 22:05 |
crimsun | as in the massive libgnome bug? | 22:07 |
gnomefreak | pcspkr | 22:07 |
crimsun | need to run now, back later | 22:07 |
gnomefreak | crimsun: not sure. the only one i found is trying to disable it | 22:07 |
* ccheney managed to get all of the easy to copy bits done, now have to determine how to copy the get_type parts | 22:17 | |
ccheney | is up to ~ 2100 lines now | 22:18 |
=== micahg1 is now known as micahg | ||
* gnomefreak forgot how entertaining bugs can be :) | 22:55 | |
BUGabundo | lol | 22:55 |
gnomefreak | its better than tv. people arguing about should be be open or closed but not arguing so much on the bug itself | 23:00 |
BUGabundo | asac: is it possible to make notify-osd work over an app in full screen? | 23:02 |
gnomefreak | BUGabundo: see bug 375272 | 23:04 |
ubottu | Launchpad bug 375272 in ubuntuone-servers "Server software is closed source" [Undecided,Won't fix] https://launchpad.net/bugs/375272 | 23:04 |
Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!