mborzecki | morning | 06:17 |
---|---|---|
sdhd-sascha | morning :-) | 06:28 |
zyga | good morning | 07:29 |
* zyga applies updates | 07:30 | |
mborzecki | zyga: hey | 07:48 |
zyga | :-) | 07:49 |
zyga | hey, how are you doing? | 07:49 |
mborzecki | zyga: caught a cold :/ | 07:49 |
zyga | given where we live I think it is inevitable | 07:50 |
mborzecki | zyga: but managed to build centos cloud image, since there's still no official ones yet | 07:50 |
zyga | I spent most of the weekend doing homework with kids | 07:51 |
zyga | I spent some hours on manual pages for API docs | 07:52 |
mborzecki | zyga: bet is was much fun ;) | 07:52 |
zyga | I'll try to publish my toy library next weekend | 07:52 |
mvo | hey zyga and mborzecki | 07:53 |
mvo | zyga: what is you library about? | 07:53 |
zyga | hey mvo, how are you? | 07:53 |
mborzecki | mvo: hey | 07:53 |
zyga | mvo: testing! :) | 07:53 |
zyga | mvo: libzt, robust and simple testing | 07:53 |
zyga | for C | 07:53 |
zyga | tested, documented, building in all major OSes | 07:53 |
zyga | (that's the goal) | 07:53 |
zyga | I'm maybe 60% there | 07:53 |
mborzecki | zyga: zt? libzygatest? | 07:54 |
zyga | mborzecki: over time my private libraries evolved in their naming scheme but I guess z is just z, not an acronym | 07:55 |
zyga | t is indeed for "testing" | 07:55 |
zyga | I ended up writing it after another private toy project needed more testing than I could do by just playing with it | 07:55 |
zyga | and I didn't want to depend on glib | 07:55 |
zyga | or anything that's a mess to build outside of linux | 07:55 |
zyga | anyway | 07:56 |
mvo | zyga: nice! I'm good, thanks, didn't sleep that well though :/ | 07:56 |
zyga | today is snap run --explain day :) | 07:56 |
zyga | jamie is off this week so I will focus on things that don't touch C | 07:56 |
pstolowski | morning | 08:00 |
zyga | hey pawel | 08:00 |
pstolowski | o/ | 08:00 |
zyga | gosh bugzilla is such a dinosaur | 08:02 |
zyga | trying to find snapd bugs | 08:02 |
mborzecki | pstolowski: hey | 08:03 |
zyga | is search implemented by grepping the database? | 08:03 |
mborzecki | zyga: rhbz? or suse one? | 08:03 |
zyga | suse | 08:03 |
zyga | I clicked "search" like two minutes ago | 08:04 |
zyga | ... | 08:04 |
zyga | and got 400 | 08:04 |
zyga | https://bugzilla.novell.com/buglist.cgi?query_format=specific&order=Importance&no_redirect=1&bug_status=__all__&product=&content=snapd | 08:05 |
mvo | hey pstolowski ! | 08:05 |
mborzecki | zyga: hmm maybe they structured the project differently than rhbz has | 08:05 |
mborzecki | zyga: in rhbs it's product - pick fedora or EPEL, component - pick snapd, status all open and that's it | 08:06 |
zyga | I'll search in my mail instead | 08:06 |
mborzecki | at least it's not mantis, had trouble running a trivial search in centos bug tracker | 08:06 |
zyga | brb, tea refill | 08:14 |
zyga | rainy morning | 08:14 |
mborzecki | oh, and it's possible to install snapd on centos8, but one has to enable `cr` repository as well, sice the selinux packages are part of 8.1 that's not in base os repo yet | 08:14 |
zyga | cr? | 08:14 |
mborzecki | zyga: continuous release, iow upcoming updates | 08:15 |
zyga | aha | 08:15 |
zyga | oh well :) | 08:15 |
mup | PR snapd#7979 closed: many: drop NameAndRevision, use snap.PlaceInfo instead <UC20> <Created by anonymouse64> <Merged by mvo5> <https://github.com/snapcore/snapd/pull/7979> | 08:25 |
mup | PR snapd#7978 closed: data/selinux, test/main/selinux-clean: update the test to cover more scenarios <Created by bboozzoo> <Merged by mvo5> <https://github.com/snapcore/snapd/pull/7978> | 08:31 |
mborzecki | degville: hi, i've added a note about CentOS CR repo under https://forum.snapcraft.io/t/installing-snap-on-centos/10020 can you take a look? :) | 08:33 |
mborzecki | heh, suprised one took the time to write this https://bugs.launchpad.net/ubuntu/+source/snapd/+bug/1859185/comments/3 | 08:36 |
mup | Bug #1859185: No (obvious) way to turn autorefresh off <amd64> <apport-bug> <bionic> <snapd (Ubuntu):New> <https://launchpad.net/bugs/1859185> | 08:36 |
degville | mborzecki: will do - thanks for letting me know. | 08:37 |
pstolowski | zyga: got your new mbp yet? | 08:44 |
zyga | pstolowski: no, it's still in netherlands | 09:39 |
zyga | pstolowski: and only with a shipping label :/ | 09:40 |
zyga | pstolowski: so sigh | 09:40 |
zyga | pstolowski: I don't doubt it will arrive on time but they said 14-15th | 09:40 |
zyga | probably waiting just to arrive "on time" | 09:40 |
pstolowski | mhm | 09:41 |
pedronis | Chipaca: hi, are there open problems with #7984 (just skimmed it) or are you ok with it? if not I'm happy to discuss | 09:48 |
mup | PR #7984: store, overlord/snapstate, etc: SnapAction now returns a []β¦Result <Created by chipaca> <https://github.com/snapcore/snapd/pull/7984> | 09:48 |
Chipaca | pedronis: I'm ok with it | 09:49 |
Chipaca | pedronis: it's shorter than my first attempt so that's a plus :-) | 09:49 |
pedronis | Chipaca: ok, let me know if we land in trouble further down, but let's go this way for now | 09:49 |
Chipaca | pedronis: ok, next pr should be up before noon | 09:50 |
Chipaca | stacked on this one i mean | 09:50 |
pedronis | understood | 09:50 |
pedronis | mborzecki: I did a quick pass about the changes in #7972 | 10:02 |
mup | PR #7972: overlord/snapstate, wrappers: undo of snapd on core <Remodel π> <Created by bboozzoo> <https://github.com/snapcore/snapd/pull/7972> | 10:02 |
mborzecki | pedronis: cool, thanks | 10:03 |
pstolowski | pedronis: hey, do you have a moment to talk quickly about some aspect of snap disconnect --forget? | 10:03 |
pedronis | pstolowski: can do in ~20 mins ? | 10:06 |
pstolowski | pedronis: sure | 10:06 |
zyga | brb | 10:24 |
pedronis | pstolowski: I'm available now | 10:27 |
pstolowski | pedronis: ok, coming to standup ho | 10:28 |
mup | PR snapd#7985 opened: tests: use snap remove with --purge flag in most of the spread tests <Test Robustness> <Created by stolowski> <https://github.com/snapcore/snapd/pull/7985> | 11:04 |
pstolowski | ^ pretty mechanical | 11:05 |
mvo | looks like core18 is failing right now in master, has anyone already looked? if not, I'm doing so now | 11:07 |
zyga | haven't looked, can look if you are busy | 11:07 |
pstolowski | Chipaca: ty! | 11:09 |
Chipaca | pstolowski: i was about to ask about just setting the option, but this way it's explicit so +1 | 11:10 |
mvo | zyga: thanks, should be fine | 11:12 |
pstolowski | Chipaca: yeah i was thinking about some magic, but preferred explicit | 11:12 |
mvo | pstolowski: nice PR, thanks for this | 11:17 |
pstolowski | mvo: i should have thought about it earlier! | 11:17 |
mvo | pstolowski: do we have (at least) one test left that run snap remove without purge? I assume we do, just want to double check :) | 11:19 |
pstolowski | mvo: yes, a few tests that test remove itself, snapshots test, and selinux tests (i mentioned this in the commit and PR desc) | 11:20 |
mvo | pstolowski: \o/ | 11:20 |
cachio | mvo, hey | 11:45 |
cachio | mvo, about beta release | 11:46 |
cachio | are you planning a 2.43.1 ? | 11:46 |
cachio | or it needs to be discussed? | 11:46 |
mvo | cachio: I'm not aware of 2.43 issues right now, so hopefully we don't need 2.43.1. or am I missing something? | 11:52 |
cachio | mvo, I fwd an email on friday | 11:52 |
mup | PR snapd#7985 closed: tests: use snap remove --purge flag in most of the spread tests <Simple π> <Test Robustness> <Created by stolowski> <Merged by mvo5> <https://github.com/snapcore/snapd/pull/7985> | 11:55 |
mvo | cachio: oh, missed that, yes, this sounds very much like we need 2.43.1 | 11:56 |
mvo | cachio: let me read the full bug | 11:56 |
cachio | mvo, nice, thanks | 11:56 |
mvo | cachio: thank you! | 11:57 |
Chipaca | pedronis: https://github.com/snapcore/snapd/pull/7986/commits/479e46211c3ec18c95b6634d1b33fb54acc5ff4c | 12:08 |
mup | PR snapd#7986 opened: store, o/snapstate: send default-tracks header, use RedirectChannel <Created by chipaca> <https://github.com/snapcore/snapd/pull/7986> | 12:08 |
mup | PR #7986: store, o/snapstate: send default-tracks header, use RedirectChannel <Created by chipaca> <https://github.com/snapcore/snapd/pull/7986> | 12:08 |
* Chipaca will start abbreviating overlord to π | 12:08 | |
Chipaca | alas there is no panopticon emoji | 12:09 |
Chipaca | emojus? | 12:09 |
Chipaca | emoja? | 12:09 |
* Chipaca hides | 12:09 | |
mup | PR snapd#7987 opened: snap: make `snap version` output host without extra whitespace <β Critical> <Created by mvo5> <https://github.com/snapcore/snapd/pull/7987> | 12:10 |
Chipaca | mvo: is the host-and-virt-in-version only just getting released? | 12:11 |
mvo | Chipaca: yes, part of 2.43 which is in beta right now, never made it beyond beta afaict | 12:12 |
Chipaca | mvo: use U+2620 instead of / :-p | 12:15 |
mvo | Chipaca: heh | 12:15 |
Chipaca | mvo: did you mean to target it to master? | 12:16 |
pedronis | Chipaca: mvo: we need to discuss that bit | 12:17 |
mvo | Chipaca: yes, I will backport it from there once we have a agreement | 12:17 |
mvo | pedronis: sure, should we do it right after the standup? | 12:17 |
pedronis | mvo: yes | 12:18 |
mvo | ok | 12:18 |
=== ricab is now known as ricab|lunch | ||
=== msalvatore_ is now known as msalvatore | ||
=== ricab|lunch is now known as ricab | ||
mup | PR snapd#7987 closed: snap: make `snap version` output host without extra whitespace <β Critical> <Created by mvo5> <Closed by mvo5> <https://github.com/snapcore/snapd/pull/7987> | 14:32 |
zyga | re | 14:32 |
mup | PR snapcraft#2868 opened: cli: implement progressive releases <Created by sergiusens> <https://github.com/snapcore/snapcraft/pull/2868> | 14:40 |
mup | PR snapd#7988 opened: snap: remove "host" output from `snap version` <β Critical> <Created by mvo5> <https://github.com/snapcore/snapd/pull/7988> | 14:42 |
mup | PR snapcraft#2869 opened: build providers: use multipass from stable <Created by sergiusens> <https://github.com/snapcore/snapcraft/pull/2869> | 14:49 |
Chipaca | mborzecki: wrt 596,523 hours, it's weird because nowhere do we format numbers with a comma like that | 14:52 |
Chipaca | mborzecki: that's not snapd :) | 14:52 |
Chipaca | mborzecki: in particular snapd's progress bar would've printed "68y" if it had to render that number | 14:54 |
zyga | Chipaca: libc may do that | 14:54 |
zyga | Chipaca: , is a common 1k separator | 14:54 |
Chipaca | which, sure, weird, but that's why i'm asking where that's coming from | 14:54 |
Chipaca | zyga: yes i know it may | 14:54 |
Chipaca | zyga: but we don't use libc to format how long is left for a download in snapd | 14:54 |
Chipaca | so that's why i'm asking :) | 14:55 |
mborzecki | Chipaca: hmm right | 14:56 |
pedronis | there's not much info there, wouldn't do anything unless they give more info | 14:57 |
mborzecki | Chipaca: otoh, i should probably open a PR to tweak quantity formatting in the progress bar, sub second values are the funny ones i mentioned | 15:00 |
Chipaca | mborzecki: :) | 15:00 |
Chipaca | mborzecki: there are probably bugs (tm) | 15:00 |
mborzecki | s/bugs/features/ | 15:00 |
Chipaca | mborzecki: rather, we have yet to adequately sample the probability cloud of bugs | 15:01 |
Chipaca | certainly bug(xβ) > 0 β xβ | 15:02 |
roadmr | π§ | 15:02 |
Chipaca | mborzecki: what kind of weirdness, btw? | 15:05 |
mborzecki | Chipaca: when the download is close to finishing sometimes the left time reported is in us/ns range | 15:06 |
mborzecki | Chipaca: as in right before it's finished | 15:07 |
Chipaca | mborzecki: ah, yes | 15:07 |
Chipaca | mborzecki: I've wondered what it goes on to do after finishing :) | 15:07 |
ijohnson | pedronis: mvo: is it safe to say that all the tests that are uc20 specific are given by function name `Test*20*` ? Using a similar regex I found these tests: https://pastebin.ubuntu.com/p/NHq7sB68dj/ | 15:07 |
ijohnson | do y'all think that's exhaustive or are there other packages/test suites that I need to look at as well ? | 15:07 |
pedronis | ijohnson: yes, it's reasonable, but some one have the 20 in the suite | 15:08 |
pedronis | not each test | 15:08 |
ijohnson | ah good point | 15:08 |
ijohnson | pedronis: so that adds these 3: https://pastebin.ubuntu.com/p/FNdtRsttBc/ | 15:09 |
ijohnson | is that probably all of the uc20 specific tests ? | 15:09 |
pedronis | ijohnson: seems right to me | 15:10 |
ijohnson | ack, thanks | 15:10 |
pedronis | (I'm in a meeting) | 15:11 |
cachio | mvo, this is the model I am usign https://github.com/sergiocazzolato/snapd/blob/tests-enable-nested-on-core20/tests/lib/assertions/nested-20-amd64.model.json | 15:24 |
zyga | brb | 15:24 |
mvo | cachio: thank you! I think I have an idea what might need tweaking. I am in a meeting right now but let me try to help | 15:24 |
cachio | mvo, great, thanks | 15:25 |
mvo | cachio: I think this needs "grade: dangerous" (or something) and a snaps: subsection, here is an example https://github.com/snapcore/snapd/blob/master/tests/lib/assertions/ubuntu-core-20-amd64.model | 15:26 |
cachio | mvo, nice, thanks | 15:26 |
ijohnson | mvo: pedronis: cmatsuoka: thoughts on having modeenv.Write() also return the filepath where the modeenv was written out? this will make mocking easier in tests | 15:34 |
pedronis | ijohnson: still in meeting | 15:34 |
ijohnson | oh ok | 15:34 |
Chipaca | grr jq in 14.04 doesn't like dashes in object keys | 15:41 |
pstolowski | Chipaca: use jq snap | 15:51 |
Chipaca | yeah | 15:56 |
mvo | ijohnson: sounds fine to me | 15:59 |
ijohnson | mvo: ack, I will file a quick PR for that this morning then | 15:59 |
ijohnson | thanks | 15:59 |
pedronis | ijohnson: I have another meeting, but I'm a bit unclear why you need that? it writes thing in a predictable place | 16:01 |
pedronis | no? | 16:01 |
ijohnson | pedronis: yes it's predictable, but in all these tests I have to call modeenv.Write(), then immediately do a filepath.Join(dirs.Root /*or c.tmpdir*/,dirs.SnapModeenvFile) to remove it after the tests | 16:02 |
ijohnson | pedronis: so it would be nice to just have `f, err := m.Write(); defer os.Remove(f)` | 16:02 |
* cachio lunch | 16:03 | |
pedronis | ijohnson: ok, I would prefer not to do it, because usually we don't have that style | 16:09 |
pedronis | ijohnson: you can have a test helper if needed, you can use AddCleanup in it | 16:10 |
ijohnson | pedronis: ok | 16:10 |
pedronis | ijohnson: not a lot of the tests you listed have a devicemgr around | 16:10 |
pedronis | ijohnson: are you adding write modeenv to a lof of places? | 16:11 |
pedronis | I fear I'm missing something here | 16:11 |
ijohnson | pedronis: well it's probably fine to just have the same modeenv in most tests, but other tests are not consistent about the name of the base/kernel for uc20 tests iiuc | 16:11 |
ijohnson | it's fine I guess to have a helper | 16:12 |
pedronis | ijohnson: ok, notice that we might need a higher level helper anyway at some point | 16:15 |
* zyga-laptop had dinner and need a moment to rest | 16:15 | |
zyga-laptop | code review time! | 16:15 |
ijohnson | yes perhaps | 16:15 |
roadmr | zyga's laptop had dinner? π | 16:15 |
zyga-laptop | roadmr sadly the laptop recharges while I'm not looking ;) | 16:15 |
pedronis | ijohnson: we bootloadertest.MockBootloader but it doesn't fit quite the fact that Core20 has boot state in more than one location | 16:15 |
pedronis | *we have | 16:16 |
pedronis | that one has things like SetBootBase and SetBootKernel etc | 16:16 |
pedronis | but there's mismatch with Core20 | 16:16 |
ijohnson | pedronis: yes I added a number of functions to the MockBootloader for the ExtractedRunKernelImage interface | 16:19 |
Zylop | hello, i have a lot of time for your kind reply, i get this error when installing youtube music cannot self-bind mount /run/snapd/ns: Cannot allocate memory | 16:29 |
Zylop | 5.5.0-1-MANJARO | 16:29 |
=== heather is now known as hellsworth | ||
cachio | mvo, hey | 16:33 |
Zylop | i will check if there's a new kernel beta soon | 16:34 |
Zylop | thank you | 16:34 |
cachio | mvo, using snaps as you did in the other model | 16:34 |
cachio | I get error: cannot decode model assertion "/home/gopath/src/github.com/snapcore/snapd/tests/lib/assertions/nested-20-amd64.model": assertion model: type of snap "snapd" must be one of app|base|gadget|kernel|core | 16:34 |
zyga | Zylop: hello | 16:34 |
cachio | mvo, which type we should use for snapd? | 16:34 |
zyga | Zylop: that's interesting, I've never seen an error like that before | 16:34 |
ijohnson | zyga: Zylop: I seem to remember seeing that error on the forum recently | 16:36 |
zyga | Zylop: perhaps it's some kind of new hardening or bug | 16:36 |
Zylop | or just downgrade to 5.3 | 16:36 |
Zylop | its a bug in 5.4 and 5.5 | 16:36 |
Zylop | kernel | 16:36 |
Zylop | patched in 5.5rc5 | 16:36 |
ijohnson | Zylop: zyga: see https://forum.snapcraft.io/t/on-ubuntu-18-04-3-with-5-4-5-5-kernels-snaps-are-not-launching/14662/18 | 16:36 |
Zylop | witch atm its not officially launched so im downgrading to 5.3 for while | 16:36 |
Zylop | i founf this | 16:36 |
Zylop | ah ok | 16:36 |
Zylop | ty | 16:36 |
Zylop | i see in arch forum | 16:37 |
* zyga l boks | 16:37 | |
zyga | thanks ijohnson | 16:37 |
mup | PR snapcraft#2869 closed: build providers: use multipass from stable <Created by sergiusens> <Merged by sergiusens> <https://github.com/snapcore/snapcraft/pull/2869> | 16:37 |
mup | PR snapcraft#2870 opened: snap: set PYLXD_WARNINGS to inhibit unknown LXD attribute warnings <Created by sergiusens> <https://github.com/snapcore/snapcraft/pull/2870> | 16:37 |
mup | PR snapd#7989 opened: devicestate: do not allow remodel between core20 models <Created by mvo5> <https://github.com/snapcore/snapd/pull/7989> | 16:47 |
pedronis | cachio: that means the snapd is too old | 17:02 |
pedronis | we allow type: snapd now | 17:03 |
cachio | pedronis, ah, ok, that makes sense | 17:03 |
cachio | thanks!! | 17:03 |
=== alan_g is now known as alan_g_ | ||
Zylop | working | 17:18 |
Zylop | thanks | 17:18 |
ijohnson | :-) | 17:18 |
mup | PR snapcraft#2871 opened: snaps: account for forwarded (effective) installation channels <Created by cjp256> <https://github.com/snapcore/snapcraft/pull/2871> | 17:19 |
ijohnson | pedronis: oh also I was going to ask you if we expect classic devices with the new uc20 models to have modeenv? currently my HasModeenv method just checks if the model is not ModelGradeUnset | 17:24 |
=== Spacehog is now known as Zylop | ||
ogra | is the forum down again ? | 17:35 |
ijohnson | seems like it | 17:36 |
ogra | it should really be added to status.snapcraft.io | 17:37 |
ijohnson | +1 for that | 17:37 |
cachio | pedronis, which version of snapd is needed? | 17:37 |
ijohnson | snapcraft.io/docs should be on status.snapcraft.io too | 17:37 |
cachio | i just tried with the 2.42.1 and did't work | 17:38 |
cachio | pedronis, and core 2.42.8 | 17:46 |
cachio | 2.42.5 | 17:46 |
cachio | pedronis, with 2.43 works | 17:47 |
mup | PR snapcraft#2861 closed: meta: remove Application's `prepend_command_chain` <Created by cjp256> <Merged by sergiusens> <https://github.com/snapcore/snapcraft/pull/2861> | 18:05 |
pedronis | ijohnson: we don't let you set classic and grade at the same time atm, we will need to think through what a core20 model means for classic | 18:22 |
pedronis | cachio: yes, it was in the 2.43 dev cycle | 18:25 |
ijohnson | pedronis: ack that's what I thought | 18:25 |
cachio | pedronis, yes, the image is created now | 18:25 |
cachio | pedronis, thanks for the help+ | 18:25 |
grewtin | noice | 18:38 |
mup | PR snapcraft#2866 closed: spread tests: limit adapter test to amd64 <Created by cjp256> <Merged by sergiusens> <https://github.com/snapcore/snapcraft/pull/2866> | 19:08 |
mup | PR snapcraft#2870 closed: snap: set PYLXD_WARNINGS to inhibit unknown LXD attribute warnings <Created by sergiusens> <Merged by sergiusens> <https://github.com/snapcore/snapcraft/pull/2870> | 19:08 |
cmatsuoka | zyga: could you have a quick look at https://bugs.launchpad.net/ubuntu/+source/snapd/+bug/1859160 to see if it's something you recognize? | 19:15 |
mup | Bug #1859160: Snapd fails to delete obsolete dev-loops, thus causing delay at lockscreen <snapd (Ubuntu):New> <https://launchpad.net/bugs/1859160> | 19:15 |
mup | PR snapcraft#2858 closed: add support for system-usernames <Created by cjp256> <Merged by sergiusens> <https://github.com/snapcore/snapcraft/pull/2858> | 19:23 |
mup | PR snapcraft#2872 opened: Release/3.9.5/cherry picks <Created by sergiusens> <https://github.com/snapcore/snapcraft/pull/2872> | 19:29 |
mup | PR snapcraft#2867 closed: elf: remove return parameters for ElfFile's _extract() <Created by cjp256> <Merged by sergiusens> <https://github.com/snapcore/snapcraft/pull/2867> | 20:23 |
mup | PR snapd#7990 opened: many: misc tweaks <Simple π> <Created by anonymouse64> <https://github.com/snapcore/snapd/pull/7990> | 20:40 |
mup | PR snapd#7947 closed: boot,bootloader: support new UC20 style kernel extraction <UC20> <β Blocked> <Created by anonymouse64> <Closed by anonymouse64> <https://github.com/snapcore/snapd/pull/7947> | 20:48 |
mup | PR snapd#7991 opened: boot: add HasModeenv to Device <UC20> <Created by anonymouse64> <https://github.com/snapcore/snapd/pull/7991> | 20:56 |
mup | PR snapcraft#2872 closed: Release/3.9.5/cherry picks <Created by sergiusens> <Merged by sergiusens> <https://github.com/snapcore/snapcraft/pull/2872> | 21:11 |
mup | PR snapcraft#2868 closed: cli: implement progressive releases <Created by sergiusens> <Merged by sergiusens> <https://github.com/snapcore/snapcraft/pull/2868> | 21:53 |
mup | PR snapd#7992 opened: bootloader: add ExtractedRunKernelImageBootloader interface, implement in grub <UC20> <Created by anonymouse64> <https://github.com/snapcore/snapd/pull/7992> | 22:13 |
Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!