asacbug 19290609:13
ubotuLaunchpad bug 192906 in firefox-3.0 "use gnome's HTML icon for pages without a favicon" [Wishlist,Triaged] https://launchpad.net/bugs/19290609:13
[reed][03:35:30AM] <[reed]> monreal: https://bugs.launchpad.net/ubuntu/+source/firefox-3.0/+bug/192906 <-- agree, disagree?09:36
[reed][03:36:05AM] <monreal> [reed]: disagree... it's not possible anyway09:36
[reed][03:36:20AM] <monreal> we cannot depend on icons from gnome icon theme09:36
ubotuLaunchpad bug 192906 in firefox-3.0 "use gnome's HTML icon for pages without a favicon" [Wishlist,Triaged]09:36
[reed]there you go09:36
asac[reed]: we can have a fallback?09:37
[reed]I don't think that's possible yet09:37
[reed]due to how stock icons work09:37
[reed]but maybe09:37
asacmaybe currenty the icon is hard coded, but why can't one use gnomestrip mechanism for it?09:38
[reed][03:37:01AM] <monreal> [reed]: but we will probably have to redo and include a similar icon09:39
[reed]yeah, so we can include it directly09:39
[reed]as part of gnomestripe09:39
[reed]just can't use a stock icon09:39
[reed]via libpr0n09:39
[reed]and moz-icon://09:39
asac[reed]: why can't we use moz-icon?09:42
asacdoes it just work for gtk stock icons?09:42
[reed]it works for gnome icons, too, but we don't require that the user have gnome installed, so we can't depend on those always being available09:43
asac[reed]: yes, but thats the case for other icons as well afaik09:43
asacin beta 2 it falled back to the winstripe theme afaict09:43
[reed]there's no fallback mechanism in place09:43
[reed]for moz-icon09:44
[reed]it will just fail09:44
asachmm ... wierd. so how does it work on kde?09:44
asaci think on kde we still see the "old" icons09:44
[reed]I don't think so09:45
[reed]I don't see how that's possible ;)09:45
asacit falls back to winstripe if gnomeui isn't installed ;)09:45
asacbut i think i should verify that again09:45
[reed]please do09:46
asacUbulette: ^^^09:55
asacdarn i have a ubuntu developer week classroom session in 6 hours or so10:06
ubotuCurrent time in Etc/UTC: February 21 2008, 10:06:40 - Next meeting: Desktop Team in 3 hours 53 minutes10:06
asaccompletely forgot10:06
[reed]what is that?10:08
asac[reed]: https://wiki.ubuntu.com/UbuntuDeveloperWeek10:09
[reed]asac: sounds easy10:13
[reed]you'll do fine10:13
asacmy problem is that i don't really know what to expect10:14
asachow many will come? will they ask questions? or should i just teach10:14
asachow to present my knowledge in a chat room :)10:14
asacUbulette: there?11:16
asacUbulette: what do you think about the xpi.mk i recently added11:16
asacto mozilla-devscripts11:16
asacUbulette: i will upload new mozilla-devscripts to mozillateam ppa (appending ~mt1) as i want it in todays ffox 2 extension packaging session12:37
asacUbulette: please veto in the next 20 minutes if you want to do a prerelease to your ppa12:37
asac(i have just committed more on top of your last fix for xpi.mk"12:37
asacUbulette: https://code.edge.launchpad.net/~mozillateam/firefox-extensions/XPI.TEMPLATE12:40
asacUbulette: ok from my side we are now ready for release of mozilla-devscripts13:51
asacwe should use the card blanche to justify this ff exception breakage13:52
asaclets wait till weekend with upload i would say13:52
asaci uploaded to my ppa now13:52
asacUbulette: i have drafted https://wiki.ubuntu.com/MozillaTeam/Firefox3Extensions/Packaging ... maybe take a look if its at least a bit comprehensible13:53
ubotuCurrent time in Etc/UTC: February 21 2008, 13:58:21 - Current meeting: Desktop Team13:58
=== asac_ is now known as asac
asacbug 43232215:13
asacdebian bug 43232215:13
ubotuDebian bug 432322 in network-manager "network-manager: package upgrade kills network connections every time" [Serious,Open] http://bugs.debian.org/43232215:13
ubotuCurrent time in Etc/UTC: February 21 2008, 15:30:41 - Next meeting: Community Council in 4 hours 29 minutes15:30
ubotuCurrent time in Etc/UTC: February 21 2008, 15:55:27 - Next meeting: Community Council in 4 hours 4 minutes15:55
jetsaredimasac: I think adding firebug and mouse gestures extensions would be great17:00
asacjetsaredim: yep ... the procedure is simple. add the extension to https://wiki.ubuntu.com/MozillaTeam/Firefox3Extensions17:01
jetsaredimis it standard procedure to contact the maintainers first before going about this17:01
asacand gather the required information. then you can adopt that extension if you want and package it like just taught17:01
asacjetsaredim: if there is an obvious good contact available, its not required17:01
asacpoint is that we want to know how to contact them ... so if they don't have an active mailing list at least verifying that they reply would be good17:02
asacfor the most popular extesnions that are frequently updated, we most likely don't need that17:02
asacjust fill in the contact you find17:02
asacjetsaredim: if you want an extension to be sponsored, please try to use the procedure https://wiki.ubuntu.com/MozillaTeam/Firefox3Extensions/Packaging17:03
asacif there are problems i am alwayshere to help!17:03
asac(well not always, but usually)17:03
asacdb-keen: phoenix24: kyleN: did you manage to finish the second practice round?17:04
asacif you manage to create a launchpad branch, just let me know, i can review it then17:04
kyleNasac. in unbuntu mobile weekly meeting, enjoyed what I saw of your talk though.17:04
asackyleN: thanks!17:05
phoenix24asac: could we target any extensions.. ranging to all those existing ?17:06
asacyes ... i would like to get 100 extensions for hardy :) ... which is of course too high a goal to reach for hardy17:07
asacbut you get the point17:07
asacbut we should definitly try to cover all most important ones17:07
asaca good start is: the top 50 projects on mozdev:17:07
asac(not all are extensions, but at least mozdev projects usually have a CVS and a license :))17:07
asacor the top list of addons.mozilla.org17:08
asacbut careful: on addons.mozilla.org its not given that the extensions have a free license17:08
phoenix24thanks a lot! looking forward to it!17:09
asacif we cannot find how things are licensed we should go on or if we consider the extension important enough ask the developers17:09
asacphoenix24: me too ;)17:09
armin76ricer :P17:10
phoenix24Can I get the Firefox3 source code from the launchpad itself ?17:20
asacphoenix24: unforatuntely not yet17:21
asacphoenix24: well the packaging code is in launchpad17:23
phoenix24ah! yes17:27
asaci will be out travelling for ~3 hours from now. maybe ask Ubulette_ if he is available(not sure) in the meantime.17:27
asache should know all about firefox-3 and xulrunner-1.9 packaging ;)17:27
* asac off for a while17:29
phoenix24later asac!17:30
=== Ubulette_ is now known as Ubulette
Ubuletteasac, got my email ?18:48
[reed]asac / Ubulette: system sqlite3 coming up today18:58
Ubulette[reed], bug id ?19:10
[reed]mozilla bug 26338119:10
ubotuMozilla bug 263381 in Storage "support --with-system-sqlite3 in storage builds" [Normal,Assigned] http://bugzilla.mozilla.org/show_bug.cgi?id=26338119:11
Ubulette[reed], you can subscribe me to those kind of bugs. don't hesitate :)19:13
armin76[reed]: why don't you like me? :P19:43
[reed]armin76: sad?19:43
[reed]well, I can cc you, too!19:43
armin76you never poke me about that cool stuff! :P19:43
Ubulettearmin76, do you package trunk ?19:43
armin76when the betas are older yes19:44
armin76or when some bug gets fixed19:44
Ubuletteoh, ok. thought you only do releases19:44
Yasumotoheya asac, just wanted to let you know that I read through the transcript of your talk, and it was really helpful19:46
YasumotoI'm going to give it a try later today, so I'll let you know how everything goes19:47
UbuletteYasumoto, great. Which extension(s) do you plan to do ?20:13
jetsaredimI'd like to work on getting the firebug extension updated20:27
jetsaredimshould I just add the entry to the FF3Extensions page?20:27
Ubuletteyes, it's a start :)20:28
jetsaredimi don't have one of those nifty @ubuntu.com email addresses, but whatever20:31
jetsaredimcan someone explain how to do the bzr push described in the tutorial?20:48
Ubulettesure. is your local bzr branch ready ?20:51
YasumotoUbulette: probably things like google reader notifier, fireftp20:51
Yasumotoa few other cool ones (I'll have to find out once I see what's in the repos already)20:51
jetsaredimUbulette: no - just doing the initial import of upstream20:52
UbuletteYasumoto, start with one, then move on. btw, if you do google reader notifier, would be nice to have it working for prism too20:53
jetsaredimUbulette: basically I think I need to set my launchpad login info somewhere so that it doesn't try to use my linux username20:54
Ubulettejetsaredim, if you've committed that initial release, it's already possible to push it.20:54
Ubulettebzr push bzr+ssh://bazaar.launchpad.net/~$LAUNCHPAD_ID/firefox-extensions/$EXTENSIONNAME.ubuntu20:54
Ubulettein my case, it would be:20:55
jetsaredimbzr push bzr+ssh://bazaar.launchpad.net/~jetsaredim/firefox-extensions/firebug.upstream20:55
Ubulettedoes it work20:55
Ubulettedo you have a launchpad account ?20:57
jetsaredimshould I change my handle to match my linux login20:57
Ubulettetry with: bzr push bzr+ssh://jetsaredim@bazaar.launchpad.net/~jetsaredim/firefox-extensions/firebug.upstream20:59
jetsaredimits thinking about it21:00
Ubulettegood. the tutorial needs to be fixed21:01
jetsaredimyou want I should fix it?21:01
jetsaredimbzr push bzr+ssh://$LAUNCHPAD_ID@bazaar.launchpad.net/~$LAUNCHPAD_ID/firefox-extensions/$EXTENSIONNAME.upstream21:01
Ubulettejust did it21:02
jetsaredimall of the other commands seem to work fine21:02
jetsaredimi had the edit lock - but you can try again now tho21:02
Ubulettewe also need to add the version of each license. that's kind of mandatory now21:04
Ubulettei'll discuss that with asac when he's back21:04
jetsaredimdo I need to wrap the long description part of the control file to 80 cols?21:08
Ubuletteand add a space after each newline21:09
Ubulette[reed], do you plan to commit the system sqlite3 patch today ?21:12
jetsaredimis there an example of a copyright file that I can take a look at?21:16
jetsaredimer debian/copyright21:16
Ubulettetake an extension already in21:17
Ubulettefor ex mozilla-noscript21:19
jetsaredimUbulette: ok - i uploaded the code with the debian dir added21:34
jetsaredimbut I seem to be having a build problem21:34
Ubulettelogs ?21:36
jetsaredimerr - lemmie dpaste21:36
jetsaredimerr you can ignore the junk at the top21:38
jetsaredimI had uncommented the MOZ_XPI_FILE in rules21:38
jetsaredimmaybe that was not a good idea21:38
jetsaredim(get a different build error with MOZ_XPI_FILE commented out)21:39
jetsaredimmaybe because the actual build of the xpi is copying the resultant xpi file to the dist directory21:42
Ubuletteis firebug.xpi built somewhere ?21:44
jetsaredimi think I need to comment that out21:44
jetsaredimcause what is happening is that the build of the xpi is copying the xpi to dist21:44
jetsaredimand the xpi is actually called firebug-1.1.0b12.zpi21:44
jetsaredimerr xpi21:44
Ubulettewell, the result is supposed to be firebug.xpi according to the makexpi script21:45
jetsaredimok - i fixed the name part21:49
jetsaredimbut still - its not finding the xpi in the dist dir21:49
Ubulettehold on, i'll try in a few minutes (i'm finishing something)21:50
jetsaredimi think i'm figuring out how to modify the build.xml ant file21:50
jetsaredimshouldn't this package be called mozilla-firefox-firebug?21:52
Ubulettewe've stopped that21:53
jetsaredimok - just going by the adblock thingie21:53
jetsaredimdo you know if its possible to sign a gpg key with more than one email address?21:53
Ubulettein debian/changelog, you need to change the package name too21:54
jetsaredimyea - just fixed that too21:54
Ubuletteand the version21:54
Ubuletteand your name/email ;)21:54
jetsaredimi just got it working except for signing it21:54
jetsaredimlemmie commit it21:56
jetsaredimok - committed21:57
jetsaredimi just have to figure out how to sign it21:57
Ubulettesign it ?21:59
Ubulettebtw, it seems you've added the svn dirs in the bzr source branch, you shouldn't22:00
jetsaredimgood call22:02
Ubuletteplease check your xpi with unzip -v *.xpi for unwanted files22:03
jetsaredim(looks good to me)22:05
jetsaredimso, now what?22:06
Ubuletterun lintian on the .changes file22:08
jetsaredimbunch of "in the future" messages22:10
Ubuletteit should be silent22:12
jetsaredimwhat about the release name in the changelog - should I just put hardy or something22:13
Ubulettehardy instead of UNRELEASED22:16
jetsaredimhow do i update that changes file so that these get cleared22:16
jetsaredimE: firebug_1.1.0b12_i386.changes: bad-distribution-in-changes-file hardy22:18
Ubuletteyour lintian doesn't know hardy ? hm, ok, doesn't matter22:20
Ubulettebtw, don't use 1.0b1222:21
Ubuletteuse 1.0~b1222:21
Ubulettebecause 1.0b12 > 1.022:21
jetsaredimum - was just using the version from upstream22:21
jetsaredimgood point22:21
Ubulettewhile 1.0~b12 < 1.022:21
Ubulettei mean use 1.1.0~b1222:22
asacjetsaredim: back22:23
jetsaredimum hi22:24
asacYasumoto: great22:24
Ubuletteasac, hi22:25
jetsaredimstill getting the same lintian errors22:25
asacUbulette: hey. read your mail22:26
asacUbulette: is the altest version ok? or do you have more suggestsions?22:26
Ubuletteasac, for sure, you need to update the README file, it's the doc :P22:27
asacjetsaredim: the distribution thing doesn't matter22:27
asacwhat version do you have?22:27
asacafaik, lintian will only complain about hardy if you don't use an ubuntu package revision.22:27
asace.g. instead of 1.0-1 use 1.0-0ubuntu122:27
asaci think that should fix the lintian error22:28
jetsaredimo ok22:28
Ubuletteoh, yeah, forgot that :P22:28
Ubulettego for 1.1.0~b12-0ubuntu122:28
jetsaredimso - i should change it to 1.1.0-b12ubuntu122:28
asacjetsaredim: use Ubulette's suggestion (if its a preview release of 1.0)22:29
asacis that a beta? or is that a release that happened after 1.1.0? like a 12th build?22:29
Ubulette1.1.0~b12-0ubuntu1  as in 1.1.0~b12 from upstream and 0ubuntu1 as debian/ubuntu revision22:29
asacUbulette: depends on what b means ;) ... haven't read the backlog22:29
jetsaredimyea got it22:29
asacif its 1.1.0 build 12 then 1.1.0+b12-0ubuntu1 would be good as well22:30
jetsaredimnot sure22:30
jetsaredimi think its beta22:30
Ubulettei assumed b = beta but i didn't check22:30
jetsaredimdamn - gotta go have dinner22:30
jetsaredimyou guys on later?22:31
asacjetsaredim: ok if its beta then use tilde22:31
asacjetsaredim: most likely ;)22:31
asacbut not sure22:31
asacUbulette: yes i need to fix README22:31
jetsaredimwait - so 1.1.0~b12-0ubuntu122:31
Ubulettesame here, i'm tired. I'll be there tomorrow22:31
asacUbulette: i just forgt22:31
asacjetsaredim: yes22:31
Ubuletteasac, is it still possible to have cairo 1.5.10 in hardy or is it too late ?22:33
asacUbulette: we will get 1.6 final in the end22:33
asacUbulette: sync with seb ... otherwise you will be unhappy again ;) ... ask him if he has other patches to apply22:34
jetsaredimok - still a bunch of those date errors from lintian, but all in all ok22:34
asacjetsaredim: you can fix the dates by running22:34
asacdch -r22:34
asacright before release22:34
asacthat will update the date to _now_22:34
jetsaredimer ok22:35
jetsaredimso those can be ignored for now?22:35
asacand will replace the changelog entry name+mail with what you have setup22:35
Ubulettethose dates come from a tar made on a different box either with a drifted clock or from a different timezome22:35
asacah ok22:35
jetsaredimok - i have to run - i'll check back later tonight or tomorrow22:35
asacunless the server is completely off you can most likely just wait a few hours to disappear22:35
Ubulettei'd say you can ignore those22:35
Ubulettejetsaredim, try the same with linda instead of lintian22:36
Ubuletteusually, you'd want to make both happy if possible22:37
asacUbulette: i scrolled up and saw that you found an error on the Packaging page22:37
Ubuletteyes, the bzr push. you forgot the user@ part22:37
Ubulettewithout it, it fails if the local login is not the same as the lp login22:38
asachave you fixed it?22:38
Ubuletteyou should also update the license part. you must specify versions now22:41
UbuletteGPL is no longer enough22:42
jetsaredimasac: linda reports no errors22:46
Ubuletteso it sounds good :)22:47
Ubuletteand does it work ?22:47
jetsaredimthat would be a good test, wouldn't it22:47
jetsaredimi gotta uninstall it from my browser22:48
jetsaredimmaybe I'll try that ppa setup so i can install it from there22:48
Ubulettejust dpkg -i the deb you've produced22:49
Ubuletteasac, you should make the addons.m.o ids real urls instead of just numbers. (in https://wiki.ubuntu.com/MozillaTeam/Firefox3Extensions)22:50
Ubulettedoing it22:53
jetsaredimUbulette: install works, but in the addons dialog the version number is listed as 1.1.0b1122:53
jetsaredimnot sure what it was before22:53
asacjetsaredim: thats ok ... the addons dialog shows a version that upstream used. mozilla has adifferent versioning scheme22:54
asacthen ubuntu. thus the difference22:54
Ubuletteinstall.rdf says 1.1.0b11 so it matches22:54
jetsaredimright - but should the ubuntu pkg match the version displayed in the addons dialog22:54
Ubulettebut it's weird IMHO22:54
jetsaredimthe version number in the build is b1222:55
jetsaredimmeaning when you build the unmodified source it names the xpi as firebug-1.1.0b1222:55
asacjetsaredim: so whats the package version (in changelog) and what is the version displayed in addons dialog?22:56
Ubuletteb12 and b1122:56
asacjetsaredim: do you have firebug installed in your profile?23:01
asacis "uninstall" button enabled in addons dialog?23:01
asacif so uninstall ;)23:01
asacotherwise you won'T see the global package. the user profile wins afaik23:01
jetsaredimi had it installed23:01
asacregarless of version order23:01
jetsaredimand uninstalled it23:01
asacso you cannot "uninstall" now?23:01
jetsaredimthen i installed the deb23:01
jetsaredimbut that didn't allow for uninstall23:01
asacand now there is still the wrong version?23:02
asacyes thats correct23:02
Ubuletteasac, that's expected, in the xpi, install.rdf says b1123:02
asacyes thats right then23:02
asacso why did you use b12 as package namein first place?23:03
Ubuletteonly debian/changelogs says it's b1223:03
asacjetsaredim: ^^^23:03
Ubuletteit looks like it's the svn tree so maybe upstream bump install.rdf at release time23:04
Ubulette(pure speculation)23:04
asacoh ... good bye ;)23:05
Ubuletteasac, could we have an extension wish list in the wiki ?23:06
asacUbulette: i thought Firefox3Extensions page should be a good start. those that don't have the ubuntu contact can be considered a wish23:06
asacwhat do you think?23:07
asaci would like wishlist people to at least dig the most important info bug23:07
asacUbulette: we could also just ask them to fill in the data on that page and file a bug against the firefox-extensions project23:08
UbuletteI'd go for the wiki23:09
asacjust wiki? bugs can be better used for discussion23:10
asacor doesn't that matter in practice?23:10
asaci mean we could ack ready packages directly in the bug and initial package upload could close that bug23:10
Ubulettewith bugs, we get emails (tons of), with wiki,nada23:11
asacdoes it make a difference?23:11
asacif you don't want emails just sort them to =most-rarely-read :)23:11
Ubulettewiki only could be easily missed23:11
asacright. and we probably want a bug anyway ... first[needs packaging] ... then [sponsoring]23:12
asacthe main idea about the wiki page for me was to have most important information compressed on one page23:13
asacwould could add another row for a tracking bug23:13
asacif you have a wish, you just add the [needs packaging] bug23:13
asacif you want to package you add a "package intent" bug that becomes a "needs sponsor" bug once you have finished your work23:14
asacno idea if thats too much overhead23:15
asacand might distract from the real task ;)23:15
asacjetsaredim: welcome back :)23:16
asacdamn netsplit23:16
jetsaredimi will have to reinstall the original package to check that the version mismatch was there originally23:17
jetsaredimok - reinstalled the original and the addons dialog says b1223:17
jetsaredimonly thing i can think of is that the source tree is not updated23:17
jetsaredimi can just patch the install.rdf file23:17
asacjetsaredim: what is the original package?23:18
jetsaredimthe other possibility is that the version being served up is different than the source tree23:18
asac(sorry, i lack some context here i guess)23:18
Ubulettemaybe i'd do rikaichan that I use a lot: http://www.polarcloud.com/rikaichan/23:21
Ubulettei like jsview too23:23
asacgo ahead we have a general ff exception for extensions :)23:24
Ubuletteweb developper too but the author still doesn't want to release his ff3 compatible code23:24
Ubulettefullerscreen is good too23:24
asacbug 19322523:24
ubotuLaunchpad bug 193225 in firefox-3.0 "FF: general exception for firefox 3 extension packages signed off by the mozillateam" [Undecided,Confirmed] https://launchpad.net/bugs/19322523:24
asacUbulette: if the license fits ... anything can go in23:25
asacif you want more exciting packages, look out for extensions with native components23:25
asacdamn thing23:27
asaclook at the last message in Bug 14404223:27
ubotuLaunchpad bug 144042 in ubufox "firefox plugin-install says "plugin installed" for non-completed installation" [Medium,Confirmed] https://launchpad.net/bugs/14404223:27
asacsince when are bugs a support medium to get answers to whatever you like ;)23:28
asaclook how he inlined my mail ;)23:29
asaclike 1 word per line. yeah!23:29
asacat least the mailer honoured the reply-to header. what an achievement23:30
asaccould be worse ;)23:30
Ubuletteoutlook effect23:30
Ubulettebtw, i've packaged tb323:30
Ubulettewell, sort of23:30
Ubuletteit builds fine in dist but make install doesn't work23:31
jetsaredimasac: re original package - firebug - www.getfirebug.com23:41
asacUbulette: in-house router was down23:46
asacjetsaredim: i don't see any b12 nor b11 on that page. where exactly?23:47
Ubulette<Ubulette> btw, i've packaged tb323:48
Ubulette<Ubulette> well, sort of23:48
Ubulette<Ubulette> it builds fine in dist but make install doesn't work23:48
asacUbulette: yeah ... i got that ;)23:48
asacmy irssi runs in front of that23:48
Ubulettethat was it23:48
asacyeah make install broken was expected23:48
asacthey will never get it right23:49
asactbird devs even less23:49
asacdoes mail/ have its own packages-static?23:49
jetsaredimasac: http://www.getfirebug.com/releases/allReleases.html23:50
asacjetsaredim: but install.rdf is b12 as well in there23:52
asacso all looks fine for me23:52
asacwhats your problem now?23:52
jetsaredimi was basing the package off the source tree23:52
jetsaredimwhich lists b1123:53
asacwhere is that?23:53
asaca "firebug source"23:53
jetsaredimi emailed the maintainer to see if he knew what the problem was23:54
asacyeah strange23:54
asacfor now stick to what is in svn i guess23:54
asacfirebug-1.1 branch?23:54
jetsaredimnah - was using trunk23:56
asacyeah ... no idea. for now keep it that way23:56
asachave you pushed things to bzr / launchpad already?23:56
jetsaredimyea pretty much23:56
jetsaredimbut still doesn't explain what i should do with the package version23:57
jetsaredimfeels kind of odd to have the package version b12 and have the install.rdf say b1123:57
asacjetsaredim: keep the one in install.rdf23:57
asaci didn't know that you have 2 different sources23:57
jetsaredimso i should change the version number in the changelog?23:57
asacif svn is b11 .. and you base your package on that, use b1123:58
asacbut remember if you don'tuse a tag you shoiuld also append a revno to the version23:58
asace.g. 1.1.0~b11+svn233323:58
asace.g. the svn revision number you used23:58
asacUbulette: what scheme do we use for svn ?23:59
asacor is it +rev2333 ?23:59

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