/srv/irclogs.ubuntu.com/2014/06/11/#ubuntu-devel.txt

Fudgeany truth to roumers about a Ubuntu mate remix?03:53
Fudgeroumors03:54
cjwatsonFudge: I've heard some noises about it, but it hasn't reached the point of people coming to the release team asking for official builds yet.03:58
cjwatsonI think there is some work happening on it though.03:58
Fudgethanks very much cjwatson04:07
Fudgewe were thinking of a meta package for Vinux users who love the old Gnome2 feel but personally I like Unity04:08
=== timrc is now known as timrc-afk
pittiGood morning05:21
pittiNoskcaj: are iodbc and unixodbc now installable in parallel, or did Debian's psqlodbc now drop support for iodbc?05:22
pittidoko_: I forwarded the unity-scope-click autopkgtest failure to dobey; seems the new gcc now emits a new warning which makes it FTBFS05:42
pittidoko_: that's the one that holds back the gcc-4.0 upload, FYI05:42
=== smb` is now known as smb
=== alexlist` is now known as alexlist
=== doko_ is now known as doko
cristian_cHi08:54
cristian_cI was testing a wifi guide to enable the EOL repositories08:54
cristian_capt-get update is working, but apt-get install no08:55
Laneydoko: are you aware of gcc-doc bustage?08:56
cristian_cI get many 404 not found08:56
cristian_c*s08:56
cristian_cInvestigating, I discovered that EOL repositories are not updated08:57
cristian_cI was suggested to open a bug report for these problems08:58
cristian_cCan you confirm this problem and explain how to open the report in my case?09:00
pcarrierhi! I've been frustrating by the gdb/ddeb experience on precise. coming from the el world, after a debuginfo-install I get source listings out of the box when inspecting core dumps09:00
pcarrieram I missing something to make it work?09:00
pcarrierfor example, here I'm pretty sure I installed the correct version of rsyslogd-dbgsym, yet gdb doesn't find the source:09:02
pcarrier#3  0x00000000004319a6 in qqueueEnqObj (pThis=0x23d6d80, flowCtlType=eFLOWCTL_NO_DELAY, pUsr=<optimized out>) at queue.c:240009:02
pcarrier2400 queue.c: No such file or directory.09:02
=== liska is now known as human_resource
seb128do we have a script that does "fetch all the debs from a ppa build"?09:38
darkxstseb128, as in all debs for a single package? no idea if there is a script I just do it with apt pinning10:31
seb128darkxst, I don't want to use apt, typically I just want to wget/download the debs from a build page, like https://launchpad.net/~ci-train-ppa-service/+archive/landing-019/+build/607253510:32
seb128that's for local reviewing, not for installing10:32
darkxstseb128, source or binary?10:33
shadeslayerbdmurray: none of the issues listed on http://people.canonical.com/~ubuntu-archive/phased-updates.html against kde-workspace can be found10:34
seb128hey SRU team, could anyone review unity-settings-daemon in the trusty SRU queue? it fixes an important issue with touch screen configs that the oem team would be happy to see resolved10:34
shadeslayeroh10:35
seb128darkxst, binaries, I get dget the .dsc for source, but e.g the url I just copied a > 10 debs10:35
seb128darkxst, it's a bit annoying to click on them all and click download for each10:35
=== Ursinha is now known as Ursinha-afk
darkxstseb128, pretty sure you could the urls in less than 10 lines of python, but I dont have a script10:36
=== Ursinha-afk is now known as Ursinha
seb128darkxst, right, I was just asking in case we had a standard script is some devtools collection10:36
seb128I'm going to write one myself otheriwse10:36
seb128just trying to avoid reinventing things10:36
seb128thanks for replying though ;-)10:37
mlankhorstLaney: I've reviewed my code and found some more missing unlock paths, can you try  mesa - 10.1.3-0ubuntu1+ppa1 from the canonical-x/x-staging ppa?10:37
Laneymlankhorst: okay, in a short while10:37
Laneyis this going upstream?10:37
seb128bdmurray, infinity, stgraber, arges, slangasek, ..., ^ see the unity-settings-daemon ping some lines earlier, if one of you could have a look this week that would be nice ;-)10:37
mlankhorsteventually10:37
mlankhorstneed to review it some more first10:38
=== rbasak_ is now known as rbasak
zbenjamincan anyone tell me what getprop "ro.product.cpu.abi" would return on a amd64 machine?10:40
zbenjaminwould it be also x8610:40
ogra_zbenjamin, only if you have an android running on your amd64 :)10:41
ogra_(i doubt there are amd64 android builds)10:41
zbenjaminogra_: i see, it will still be a 32bit build hmmm10:42
ogra_what are you trying to do ?10:42
zbenjaminogra_: i need to map the devices abi to the abi inside QtCreator and right now i look for a way to find out whats the correct way10:42
ogra_for the using the emulator ?10:43
ogra_(i mean, do you look for the arch of the host or of the target system ? getprop will not be available on desktops, only indsie ubuntu touch VMs or real HW)10:45
ogra_*inside10:45
zbenjaminogra_: for the target system10:50
ogra_for that using getprop should be okayish10:51
zbenjamini could use uname i guess10:51
ogra_yeah, that works for sure10:51
zbenjaminogra_: thx10:51
ogra_and will even work once we have actual x86 tablets etc10:51
* zbenjamin --> lunch10:51
ogra_(that dont use an android container)10:51
zbenjaminogra_: yeah thats what i had in mind10:52
zbenjaminbbl10:52
ogra_note that it wont return debian arches that way though10:52
ogra_phablet@ubuntu-phablet:~$ uname -m10:53
ogra_armv7l10:53
=== _salem is now known as salem_
=== MacSlow is now known as MacSlow|lunch
=== salem_ is now known as _salem
xnoxzbenjamin: uname returns the kernel, not the userspace abi. Uname can be amd64, yet userspace i386.11:44
xnoxzbenjamin: i think you want $ dpkg --print-architecture11:44
xnoxzbenjamin: but thanks to qemu-user-static for example I can execute armhf, i386 and amd64 binaries on my amd64 machine.11:45
xnoxev: errors.ubuntu.com is not showing a graph =(11:46
evxnox: we just cut over to a new database. That will return ~tomorrow.11:50
xnoxev: =( ok.11:50
=== human_resource is now known as animal_resource
=== lderan_ is now known as lderan
=== pitti_ is now known as pitti
=== rickspencer3_ is now known as rickspencer3
=== pete-woods is now known as pete-woods-lunch
zbenjaminxnox: what i need is the architecture/abi i have to use to compile apps for the device13:32
xnoxzbenjamin: at the moment we have two: armhf (all devices + emulator) and i386 (emulator)13:33
xnoxzbenjamin: adb shell dpkg --architecture, will tell you the architecture device is running.13:33
xnox--print-architecture that is13:34
cjwatsonseb128: script> citrain in phablet-tools-citrain is sort of close13:35
ogra_did that land already ?13:37
cjwatsonWell, I have it from ppa:phablet-team/tools13:37
ogra_oh, it is a separate package13:37
ogra_yeah, i thought it was supposed to be merged into phablet-tools13:38
cjwatsonit's in utopic though13:38
ogra_(it did ... but only on source level ... produces its own binary)13:38
=== olli_ is now known as olli
evmake experts: is there any way of having a match-anything rule that doesn't try to evaluate files? I'm trying to have a fallback rule that effectively passes an argument to another rule, so that I can do `make name.of.test.to.run`14:05
evand then a rule (with dependencies) gets executed, passing name.of.test.to.run as a command line argument14:05
cjwatsondoes declaring the non-file-based-target in .PHONY help?14:07
evcjwatson: nope - so perhaps I'm doing something entirely wrong here: http://paste.ubuntu.com/7628766/14:15
=== _salem is now known as salem_
ev$@ ends up being the first file in the directory, Makefile14:15
jtaylorev: have a variable with ?=14:15
jtaylore.g. TESTS ?= $(wildcard *runfiles)14:16
jtaylormake TESTS=on-ythis-file-please14:16
jtaylorlike regular make check14:16
jtaylorautomake check14:16
evyeah, I guess I could fall back to that. It just looks ugly and creates inconsistency between running ./run-tests with arguments and feeding something an env var.14:17
evbut I'm already abusing make for this14:18
jtaylorits not an env variable its a make variable14:19
evindeed14:19
mlankhorstLaney: ping? :P14:20
Laneynot yet sorry14:20
=== mbarnett` is now known as mbarnett
pitticjwatson: is there something like "click uninstall", or is that simply "sudo rm -r /opt/click.ubuntu.com/com.ubuntu.calculator/" ?14:28
pittiI found "unregister --all-users", but that's not the same14:29
=== pete-woods-lunch is now known as pete-woods
ogra_pitti, adb shell click unregister --user=phablet $PACKAGE14:30
cjwatsonpitti: unregister14:31
dokodobey, could you have a look at https://jenkins.qa.ubuntu.com/view/Utopic/view/AutoPkgTest/job/utopic-adt-unity-scope-click/lastBuild/?  not sure if pitti already told you14:31
cjwatsonDon't just do rm -r, you'll leave bits behind14:31
seb128cjwatson, thanks14:33
pitticjwatson: I tried that (with and without --all-users), it still leaves /opt/click.ubuntu.com/com.ubuntu.calculator/* behind14:34
pittithat just hides it14:34
cjwatsonpitti: in general that depends whether the app is running14:35
cjwatsonit should get GCed eventually; normally, don't worry about it14:36
pitticjwatson: ah, ok; thanks!14:36
cjwatson--all-users likely isn't what you want unless it was registered with --all-users to start with14:36
pitticjwatson: I don't know how it was registered; it's installed by default14:36
pitticjwatson: use case: for testing a local .click I wanted to ensure that no other version is installed, and then click install that one; but perhaps I don't need to do that cleanup14:38
cjwatsonyou don't14:38
cjwatsonany user-installed version will override things installed by default14:38
cjwatsonthe installed-by-default stuff will be in /usr/share/click/preinstalled/, not /opt/click.ubuntu.com/, and it is generally not possible to remove those (unless the image is writable)14:38
cjwatsonso we don't try, we just hide it14:38
cjwatsonbut anyway the structure of the database makes that sort of care unnecessary14:39
cjwatsonhttps://click.readthedocs.org/en/latest/databases.html FWIW14:39
pittihmm; apparently I managed to actually remove /opt/click.ubuntu.com/com.ubuntu.calculator/1.3.279/ (as on current image), but still have 1.3.277/ (my local install), and now can't unregister/remove the latter14:39
pitticjwatson: thanks14:40
cjwatsonlook through /opt/click.ubuntu.com/.click/, there might be a @gcinuse thing somewhere14:40
pittiah, 276 was in the image, 279 came as an app update14:40
cjwatsonin any case, it isn't supposed to matter - the version that's actually used is looked up dynamically in the .click directories14:41
cjwatsonstray versions are allowed to hang around a bit14:41
dobeydoko: yes. will have a fix in a few minutes15:00
zbenjaminxnox: thx15:15
rbasakinfinity: ping, re: juju-core powerpc ftbfs16:00
infinityrbasak: Yo.  I'm still trying to get to the bottom of it.  But, as I said yesterday, why should a utopic FTBFS be holding up trusty in any way?  We already know it builds on trusty.16:16
rbasakSorry, I must have missed your reply.16:16
rbasakI wanted Fix Released status in Utopic for an SRU to Trusty. But I guess having it in utopic-proposed is enough?16:17
infinityrbasak: Having it in proposed is enough.16:18
infinityrbasak: The point of that rule isn't that development users are more important and must get the fix first, the point is for the fix to not get lost/forgotten in the devel release.  Uploaded, or even commited to a branch that you guarantee will get uploaded, is good enough.16:18
rbasakOK, thanks. I'll work on the SRU.16:19
ogra_did we switch the compiler default to 4.9 already ?16:46
hallynxnox: hey, you're DD right?  Would you mind taking a look at http://people.canonical.com/~serge/netcf-src-0.2.4/netcf_0.2.4-1.dsc and potentially sponsoring it?16:46
hallynxnox: normally ahs3 uploads for me but he's swamped with real life16:46
xnoxhallyn: sure.16:46
hallynxnox: thanks!16:46
ricmmogra_: lemme know if I missed the reply16:47
xnoxhallyn: i need to sprint somewhere with you, to get keys cross-signed.16:48
ogra_doko, did we swithc the compiler default to 4.9 already ?16:48
* xnox hasn't seen verification failed in a long time.16:48
ricmmxnox: hey, are we using 4.9 by default in u now?16:48
ricmmor doko16:48
xnoxogra_: ricmm: i believe we use 4.9 by default from now on. Let me find out when that happened.16:50
ogra_must have been very recent16:50
xnoxogra_: it's about a month late.16:51
xnoxricmm: older compilers are still available and you can choose to use an older one.16:51
hallynxnox: are you going to be at linuxcon chicago or plumbers dusseldorf?16:52
xnoxogra_: as off 2 hours ago.16:52
ogra_hah !16:52
hallynanyway come up with a pretext i love to sprint :)16:52
ogra_ricmm, so that might be your prob :)16:52
ricmmit is indeed16:53
ricmmI just checked, the first failing build is using 4.916:53
ricmminstead of 4.816:53
ricmmboom headshot16:53
ricmmI'm never landing my stuff16:53
ogra_oh my16:53
xnoxslangasek: ^ can i go to linuxcon chicago or plubmers dusseldorf? Or have a cloud vs core stand-off sprint =)16:53
cjwatsonas he said you can Build-Depends: gcc-4.8 and set CC=gcc-4.8, or similar16:53
ogra_right16:54
xnoxricmm: build-depend on gcc-4.8 set 4.8 compiler. Or give me the build failure and maybe i can fix it for you?16:54
cjwatsonthough clearly this is technical debt16:54
slangasekxnox: ... to get keys cross-signed with hallyn?16:54
xnoxricmm: what's the build log?16:54
ogra_cjwatson, just that this needs a change of the MP and means re-testing everything again16:54
xnoxslangasek: yes.16:54
cjwatsonogra_: sure16:54
ricmmxnox: this is a tough header-based thing with dbus-cpp16:54
ricmmits not a build failure, its a runtime hashtable explosion16:54
xnoxricmm: that's fine, what's the build failure? =)16:54
ricmmso maybe an ABI break somewhere16:54
ogra_cjwatson, ricmm is only trying to land that since 4 weeks :P16:54
slangasekxnox: try to be more circumspect about your motives16:54
ogra_it was done today :)16:54
cjwatsonogra_: this isn't really a helpful line of argument ...16:54
ricmmthere is no argument, forget about it all16:55
ogra_not a line of argument at all ...16:55
xnoxricmm: i believe dbus-cpp is compiled with 4.7, maybe we need to recompile dbus-cpp with 4.916:55
ogra_just a comment16:55
ricmmI'll have this thing work 4.8 and bye bye16:55
ricmmdbus-cpp is 4.816:55
ricmmprobably will need a recompile yea16:55
ricmmI'll figure it out dont worry16:55
ricmmjust wanted to know when the change had happened16:55
ricmmto confirm16:55
ricmmthanks16:55
hallynlol.  xnox: slangasek ain't gonna go for that one :)16:57
hallynxnox: i bet we can come up with very good reasons.  systemd.vs.cgmanager.vs.lxc comes to mind16:58
hallynwhich is very much inplay at both linuxcon and plumbers, in fact16:58
cjwatsonricmm: perhaps this is simply that dbus-cpp is hardcoding 4.8 and something built on it is failing to hardcode 4.8 and was assuming that default gcc == 4.816:59
cjwatsonor something like that16:59
hallynmdeslaur: stgraber: (zul:)  if no objections i'll push http://paste.ubuntu.com/7629496/17:01
mdeslaurhallyn: fine with me17:02
hallynmdeslaur: on the topic, are you actively working on the $)(*&)%(* required for virt-manager merge, or are we all just hoping someone else does it?  :)17:02
hallyni'll try to look into it assuming you do not have time.17:02
hallynor, that's right, you were mentioning something new that may be easier to have ppl switch to?17:03
stgraberhallyn: LGTM17:03
hallynthx, pushing17:03
mdeslaurhallyn: I've done it, it's just that there are a zillion MIR bugs to file17:03
hallynmdeslaur: right, that's waht i meant17:03
mdeslaurhallyn: give me a couple of days, and I'll take a look17:03
hallynalthough,17:03
hallynvirt-manager isn't in main is it?17:03
mdeslauryeah, it is17:03
hallynegads17:04
mdeslaurright17:04
mdeslaurmight be easier to demote it :P17:04
hallynok - thanks, happy to wait :)17:04
hallynyes,17:04
mdeslauris it part of anything strategic that we ship?17:04
hallyni'm not sure anyone uses it on server anyway...17:04
hallynnot that i know of17:04
mdeslaurok, I'll look into that possibility too17:04
hallynjamespage: smoser: ^ do you know if virt-manager needs to be in main for any particular reason?17:05
hallynthe only thing rdepending on it is ubuntu-virt-mgmt :)  which sounds like a bogus metapackage17:05
hallynoh and is in universe anyway17:06
* sarnold weighs how many MIRs might be needed vs having a simple bloody tool that can show which VMs are actually running...17:06
smoserhallyn, i dont have a good reason off the top of my head17:07
hallynsarnold: simple tool like xterm -e "while :; do virsh list; sleep 5m; done"17:08
hallyn:)17:08
* sarnold hugs hallyn 17:08
hallynlol17:08
rbasakhallyn: you know about watch, right? "watch -n300 virsh list"17:20
hallyni do17:29
hallynbut what can i say i like manually looping17:30
rbasakYou like doing what? :)17:33
sarnoldthe man likes to control his own loops17:34
sarnoldhe'd have used goto except shell makes that hard :)17:34
dokoricmm, what exactly is the issue? didn't see a reply when xnox or ogra_ were asking17:35
ogra_doko, dbus-cpp is compiled against 4.7 or 4.817:35
ogra_that caused a bunch of build issues now17:35
dokoogra_, and why is this an issue?17:35
ogra_dunno ... they are working on porting it now ...17:36
xnoxdoko: no reply either.17:36
ogra_(no worries, it was just the info that the default switched that was important )17:36
xnoxricmm: can you please give us projects which need fixing?17:36
xnoxricmm: doko and I, are both from foundations team and we are ultimately responsible to get all packages fixed for 4.9.17:37
ogra_xnox, silo 00717:38
ogra_rebuilding the location-service FTBFS due to dbus-test-runner timing out17:39
ogra_xnox, doko, seems a simple rebuild of dbus-cpp fixes everything ... it was just that nobody was aware the default had changed17:40
dokoogra_, xnox: it's suspicious that a simple rebuild fixes things ...17:46
ogra_well, dbus-cpp is special :)17:46
=== Ursinha is now known as Ursinha-afk
=== Ursinha-afk is now known as Ursinha
dokodobey, thanks for the fix18:50
dobeyno problem :)18:50
=== roadmr is now known as roadmr_afk
pittijcastro: hey! so I'm trying "juju quickstart" as in your tutorial, as that looked really nice; I get http://paste.ubuntu.com/7630057/ and now it's just hanging19:15
pittijcastro: and no running wget; any idea how I can check what's going on?19:15
jcastropitti, can you ping frankban on #juju-gui? Marco and I are in the middle of another session19:15
pittijcastro: strace is just in an endless futex wait19:15
pittijcastro: sure, thanks19:15
xnoxtedg: !!!!19:38
tedg?19:38
xnoxtedg: oh, surprisingly it wasn't you this time =)19:38
xnoxtedg: indicator-datetime adding a semi-bogus recommends =)19:39
tedg?19:39
xnoxbug 130906319:39
ubottubug 1309063 in Indicator Date and Time "It's confusing to use the Incoming Call sound for Alarms" [Medium,In progress] https://launchpad.net/bugs/130906319:39
xnoxpulls in ubuntu-touch-sounds19:40
xnoxinto all instalations of indicator-datetime => everywhere19:40
tedgxnox, not sure that's a bad thing? how else would we ensure we had an alarm sound?19:41
xnoxtedg: indicator-datetime does alarms on xubuntu & unity7 ?!19:56
xnoxtedg: and it should fallback to the desktop sound theme -> thus get alarm sound from the theme19:56
xnoxnot a file on disk19:56
tedgxnox, I believe the issue there is that the mechanisms on the phone aren't theme aware.19:57
tedgxnox, And we will do alarms if someone uses that Ubuntu SDK to set them.19:57
xnoxk, cool.19:59
xnoxweird, i thought sounds came from the same themeing capability as icons.19:59
xnoxand i thought we do have that in the sdk -> well, pure qt20:00
tedgxnox, It's similar, but just a matter of programming :-)20:01
=== roadmr_afk is now known as roadmr
=== ming is now known as Guest58318
=== roaksoax_ is now known as roaksoax
=== salem_ is now known as _salem
slangasekricmm, doko: bug #1329089 filed22:36
ubottubug 1329089 in gcc-4.9 (Ubuntu) "g++-4.9 binary incompatibilties with libraries built with g++-4.8" [Critical,New] https://launchpad.net/bugs/132908922:36
slangasekricmm, doko: I think I'm going to revert the gcc-defaults change, until we have a handle on the cause of this incompatibility22:37
infinityslangasek: You'd think that if this was a fundamental ABI breakage issue, we'd have seen it in a lot of testsuite during the 4.9 rebuild tests, since most of them would have been running against 4.8-built libraries.23:08
infinityslangasek: Is it possibly that dbus-cpp itself is just doing something Very Bad?23:08
slangasekinfinity: interestingly we've turned up that at the time of the archive rebuild, several of these components were hard-coded to use a different compiler /earlier/ than 4.823:08
slangasekso it's possible that this was a 4.8-specific ABI breakage23:08
infinityslangasek: Or possible that these components are somehow crazy. :P23:09
slangasekyou don't blame the python script when the interpreter segfaults, and you don't blame the library when the ABI output by the compiler changes23:10
infinityslangasek: You do when the library does things against spec that intentionally break its ABI, but yes, point taken.23:10
dokoslangasek, so is there anybody available from the phone team who can tell what the failing test is supposed to test?23:17
slangasekdoko: ricmm might be able to; but I know this was holding up a stalled landing, so he's been busy working around it on his side and may not be in a position to discuss it right now23:18
infinityslangasek: dbus-cpp is tvoss's baby, isn't it?  Maybe he could shed some light on if it's doing something naughty with C++ that it shouldn't.23:39
slangasekinfinity: in an appropriate timezone, probably23:39
slangasekin the meantime, I've reverted the default compiler to 4.8, so we're not under time pressure23:40
infinityYou bumped the epoch instead of just mangling versions?  Fun.23:41
infinityI guess that's easier than making gcc_4.8 depend on gcc-4.923:42
infinityErr, other way around.23:42
dokowell, bumping the epoch should be a no-go23:43
infinitydoko: It's already been done.23:43
slangasekdoko: how does that follow?23:43
slangasekor rather: what would you expect to do in a revert if not an epoch?23:44
dokobecause any synced versioned deps will be meaningless in ubuntu from now on23:44
cjwatsonthe +really convention is less intrusive23:44
cjwatsonless permanently intrusive I mean23:45
dokoslangasek, just change the dependencies23:45
cjwatsondo we have time to undo the epoch with archive hackery?  that's kind of scary23:45
slangasekcjwatson: sure, but much more error-prone for a metapackage that munges the binary version numbers of each individual binary at build time23:45
infinityIt's still in proposed, we could thwack it.23:45
slangasekdoko: as the Debian maintainer, why would you not just bump the epoch in Debian too?23:46
slangasekit already has an epoch there23:46
slangasekit's not like revving the epoch would cost you anything23:46
cjwatsonI've stopped p-m so that we have time to finish this discussion23:46
slangasekcjwatson: thanks23:46
cjwatsonwill block gcc-defaults now, this was just quicker23:46
slangasekfwiw I don't like the idea of either +really, or having a mismatch between the binary package version and the compiler version it depends on; I think the epoch is least-bad here23:47
cjwatsonI don't object to the epoch if doko accepts it in Debian but I think that Ubuntu-specific epoch changes should be avoided at nearly all costs23:48
infinityslangasek: The epoch is least bad, long-term, but I assume this is only a day-or-two-long solution while we hunt the issue.23:48
infinityAnd for a couple of days, ugly version tricks seem to make more sense.  But meh.23:48
cjwatsonok, gcc-defaults blocked, p-m unstopped23:48
slangasekinfinity: again, error-prone23:48
dokoI'll look at fixing the dependencies now23:49
cjwatsonsurely only "error-prone" in gcc-defaults' own build process, and that doesn't take long to check23:49
slangasekdoko: ok, if you want to own this, I defer to you23:49
slangasekdoko: though if you wanted to just agree to revving the epoch in Debian, you could go to sleep instead ;)23:50
dokoI do not want to ... but it looks I'll have to if I do not want to bump the epoch23:50
slangasekwhy do you object to bumping the epoch?23:50

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