[12:01] <BradB> You didn't mark it resolved. I'll mark it resolved now.
[12:01] <lifeless> BradB: didn'[t know it existed.
[12:01] <lifeless> :)
[12:01] <BradB> heh
[12:01] <dilys> Malone bug #82 fixed for product The Launchpad: Possible initZopeless transaction issues
[12:01] <dilys> https://dogfood.ubuntu.com/malone/bugs/82
[12:06] <BradB> lifeless: btw, when do we get Zope 3 upgraded?
[12:10] <lifeless> BradB: dunno. I'm waiting on the distro team right now to get svn support back.
[12:12] <BradB> ok
[12:24] <BradB> kiko: after i add a bug, do i want to be returned to the bug listing, or do i want to land on the page to edit the bug i've just added? i'm not sure if the common case is to report a bug and add a bunch of extra info about it, or rather to report a bug and get on with your day while other people (e.g. maintainers) figure out if there's a CVE ref#, ext url's, etc. to add
[12:24] <kiko> there are both use cases
[12:25] <BradB> for me, i think it's been that normally i just report a bug and get on with my day, rather than start adding a bunch of other crap right away
[12:25] <BradB> and, in fact, i've done the occassional rapid-fire bug reporting
[12:25] <kiko> it often happens both ways
[12:25] <kiko> sometimes I'll forget
[12:25] <kiko> and then add a comment
[12:27] <kiko> sometimes I don't want to add an initial comment that is too long
[12:27] <kiko> sometimes I just want to file 10 friggin bugs and go watch a movie
[12:28] <kiko> you need to cater for both use cases (and others, of course)
[12:29] <BradB> I think I know what should be done: either the user should be taken to the last page of bug results after they report a bug (so they can see the one they just added and click and edit it more) or the bug listing sorting should be sane and go newest to oldest, which would achieve the same goal but in a different way.
[12:30] <BradB> I'm betting that the common case is /not/ to do a bunch of editing on a bug after it's been added, but I guess time will tell.
[12:44] <kiko> you can cater both if you present the buglist with a short message box at the top with a link to the bug
[12:44] <kiko> [ Bug _XXXX_ filed ] 
[12:44] <kiko> this would also fix one of the 9x bugs I reported
[12:45] <BradB> but if the bug listing is shown newest to oldest, they already have a link to their bug right at the top of the listing. is it worth creating another link above that?
[12:48] <BradB> I followed up last week to that bug you reported, btw.
[12:48] <BradB> The user already does get an email
[12:53] <kiko> BradB, dude, the bug # filed needs to be *prominent* on the page
[12:53] <kiko> not in the list
[12:53] <kiko> posting a bug number and pasting it somewhere is *the* use case to cater for :)
[12:54] <BradB> kiko: Where does Bugzilla put it? I don't recall offhand.
[12:54] <BradB> Malone puts it in the subject line of the email the user receives.
[12:54] <kiko> a bit fat box saying Bug XXX filed 
[12:54] <kiko> email is nice
[12:54] <kiko> but you want it in the web UI, definitely
[12:55] <BradB> ok
[12:57] <kiko> BradB, I'll give you a good usability test of malone in barcelona, you'll owe me ice cream later.
[12:59] <BradB> heh
[01:00] <BradB> i'm a make-this-usable-for-human-beings nazi as it is, but more feedback from others is always good, particularly bugzilla maintainers :)
[01:04] <kiko> I'm a human being too
[01:04] <kiko> perhaps the most human of all bugzilla maintainers :)
[01:06] <BradB> hah
[01:16] <kiko> pompkin
[03:49] <dilys> Merge to rocketfuel@canonical.com/launchpad--devel--0: Full text indexing, database schema patches (patch-909)
[03:54] <stub> hur fucking ray
[03:55] <stub> Now to work out wtf the pagetest I had to disable works fine locally but not on chinstrap :-(
[04:27] <dilys> New Malone bug #106: "Disabled Malone pagetest", submitted by Stuart Bishop
[04:27] <dilys> https://dogfood.ubuntu.com/malone/bugs/106
[04:45] <dilys> Merge to rocketfuel@canonical.com/launchpad--devel--0: Turn on Celso's doctest patch for dogfooding (patch-910)
[07:57] <spiv> lifeless: Sender not authorised to commit to package rocketfuel@canonical.com/sqlobject--test--0.6
[07:57] <spiv> lifeless: (when I try to get pqm to merge changes from me)
[09:22] <dilys> New Malone bug #107: "Unable to view bug 70", submitted by Andrew Bennetts
[09:22] <dilys> https://dogfood.ubuntu.com/malone/bugs/107
[09:33] <lifeless> spiv: fixing now
[09:34] <lifeless> spiv: done
[09:41] <dilys> Merge to rocketfuel@canonical.com/sqlobject--test--0.6: Add a limited SELECT DISTINCT to SQLObject (patch-5)
[09:44] <spiv> lifeless: Ta
[09:46] <stub> Ooh... might fix that __del__ crap that is bugging us. Tomorrow ;)
[09:51] <lifeless> yay
[09:55] <dilys> New Malone bug #108: "Duplicate bugs in bug listing", submitted by Andrew Bennetts
[09:55] <dilys> https://dogfood.ubuntu.com/malone/bugs/108
[10:12] <daf> hmm, what's the easiest way to display a date in a nicely formatted way in a page template?
[10:12] <daf> the default stringification seems to be along the lines of "2004-11-15 16:04:49.157656"
[10:14] <stub> Steve made a helper and announced it on launchpad@ just recently - tal:mydate/fmt:i_forget
[10:15] <stub> Where i_forget is defined in the FormatAPI class in tales.py
[10:15] <daf> oh
[10:16] <daf> that's just what I want
[10:16] <daf> well, I think minute-resolution would be marginally preferable to second-resolution, but that's minor
[10:18] <stub> I think it is still open for discussion
[10:19] <daf> well, I think the API is probably stable
[10:19] <daf> the exact formats it uses can probably changed in the future
[10:24] <daf> hi Jane!
[10:45] <Kinnison> Morning
[10:48] <Kinnison> stub: ping?
[10:49] <stub> Kinnison: pong
[10:49] <Kinnison> daf: You're up unreasonably early. What's up?
[10:49] <Kinnison> stub: When's the next dogfood update?
[10:49] <stub> Tomorrow
[10:49] <daf> Kinnison: s/early/late/
[10:49] <stub> About 16 hours time
[10:50] <stub> I will do more frequent updates for beer though
[10:50] <Kinnison> stub: I see
[10:56] <SteveA> hi spiv
[10:57] <SteveA> hi daf
[10:57] <sabdfl> mornin' steve
[10:57] <SteveA> (hi everyone else!  but, I particularly want to talk with spiv and daf)
[10:57] <daf> hi Steve
[10:57] <spiv> Hi Steve :)
[10:58] <SteveA> spiv: how's the work on shipit going?
[10:58] <SteveA> daf: are you on a morning or an evening at the moment?
[10:58] <sabdfl> daf, stub, i don't think stevea's date formatter work is ready for prime time, it didn't work for me on datetimecol's
[10:58] <daf> sabdfl: hmm, it worked beautifully for me
[10:59] <daf> SteveA: on an evening
[10:59] <sabdfl> SteveA: did you commit a fix or two to that?
[10:59] <stub> sabdfl: datetimecols return mxDateTime objects, which would not be hard to cope with
[10:59] <SteveA> I haven't committed a fix to make it handle "None"/NULL yet
[10:59] <sabdfl> ah, right, that was the issue
[10:59] <daf> ah, ok, I don't think I have a code path that tickles that
[11:00] <SteveA> I need to do a bit of bazzing, then I'll commit that fix
[11:00] <daf> SteveA: we missed you yesterday
[11:00] <SteveA> daf: traveling back from england.  took a bit longer than I expected.
[11:01] <daf> SteveA: oh, problems with flights?
[11:03] <SteveA> more with trains.
[11:03] <SteveA> can we talk about rosetta a bit?
[11:04] <daf> certainly
[11:05] <dilys> Merge to rocketfuel@canonical.com/launchpad--devel--0: fix PO file autovification, 'Last Change' feature (patch-911)
[11:05] <lifeless> SteveA: btw, I fixed that initzopeless thing
[11:05] <SteveA> can I upload a pot file to a temporary place on the system, for it to be imported a bit later?
[11:05] <SteveA> lifeless: what did you do?
[11:05] <SteveA> make it "reentrant" ?
[11:05] <lifeless> no, joined the new transaction to the connection data adapter
[11:06] <SteveA> ok
[11:06] <SteveA> thanks
[11:06] <daf> SteveA: I need to workrave -- can we talk in ten minutes or so?
[11:06] <SteveA> yes
[11:06] <SteveA> spiv: still around?
[11:22] <daf> SteveA: it's nearly working -- we stumbled on some some unicode-related problems yesterday
[11:23] <SteveA> what are the problems?
[11:23] <SteveA> and, have you worked out how to make a test-case for them?
[11:24] <daf> the PO parser was written to only parse string objects
[11:24] <daf> and it broke when it was passed unicode objects
[11:24] <daf> we have identified the causes of the problems
[11:24] <daf> I have asked Carlos to write a test case
[11:24] <SteveA> so... it should be passed a string object
[11:25] <SteveA> it shouldn't be passed a unicode object, because that doesn't make a whole lot of sense
[11:26] <daf> hmm, I was wondering about that
[11:26] <SteveA> let me try to explain
[11:27] <SteveA> we have two kinds of data: string data and bytes data
[11:27] <SteveA> when string data comes in, we always convert it into unicode objects
[11:27] <SteveA> when bytes data comes in, we always leave it as bytes
[11:28] <SteveA> ok so far?
[11:28] <SteveA> a jpeg is bytes
[11:28] <daf> yes
[11:28] <SteveA> text entered into a form is "text" so, strings to become unicode objects
[11:28] <SteveA> you'd never try to represent a jpeg as a unicode object
[11:29] <SteveA> in python, this gets rather confusing.  this is a "wart" in python
[11:29] <daf> why is it a wart?
[11:29] <SteveA> because the "str" type is commonly used for both "encoded string" data and for "bytes data"
[11:30] <SteveA> but, when it is used for "encoded string" data, it does not know what encoding was used
[11:30] <SteveA> it is lossy
[11:30] <SteveA> so, if you have a str object, is it string or is it bytes ?
[11:30] <SteveA> text or data?
[11:30] <daf> you can't know for certain
[11:30] <Kinnison> The same wart exists in Lua
[11:30] <SteveA> you can't know.  so you need to make sure your program treats "str as encoded string" specially
[11:31] <SteveA> and always passes around the encoding with it
[11:31] <SteveA> Kinnison: that's interesting.  Are they going to fix it?
[11:31] <SteveA> so, back to po files
[11:31] <Kinnison> SteveA: Given there's currently no encoding support in native Lua I doubt it
[11:31] <SteveA> your po file is data
[11:32] <SteveA> the parser wants data
[11:32] <SteveA> and it gives you back, um... I can't remember actually.  maybe you can tell me?
[11:32] <daf> it gives you message objects
[11:32] <SteveA> ok, so they include unicode strings
[11:32] <daf> yes
[11:32] <SteveA> okay
[11:32] <SteveA> so, data in, unicode out
[11:33] <SteveA> and, the po file tells you what encoding it is in
[11:33] <daf> yes
[11:33] <SteveA> so, that's easy
[11:33] <daf> which presents an interesting challenge
[11:33] <SteveA> with all the above in mind, what is the unicode problem?
[11:33] <daf> since you have to start parsing the PO file before you know what encoding it's in
[11:34] <SteveA> but, that's all the po parser's job
[11:34] <daf> yes
[11:34] <SteveA> and that's done
[11:34] <daf> yes
[11:34] <SteveA> so, tell me about the current unicode problem, bearing the above in mind
[11:35] <daf> bearing the about in mind, I think the problem is that the database is returning Unicode objects for the raw PO file
[11:35] <daf> s/about/above/
[11:36] <SteveA> ok, that sounds about right
[11:36] <SteveA> what type is the column?
[11:36] <dilys> Merge to rocketfuel@canonical.com/launchpad--devel--0: Make fmt:date handle None properly. (patch-912)
[11:36] <SteveA> thanks dilys
[11:36] <daf> text
[11:36] <daf> which is wrong
[11:36] <SteveA> okay
[11:37] <SteveA> what should it be?  BINARY i suppose
[11:37] <daf> or bytes
[11:37] <daf> I can't remember the name
[11:37] <SteveA> so, you know what to do now.
[11:39] <SteveA> spiv spiv spiv
[11:39] <SteveA> calling spiv
[11:39] <SteveA> come in, number spiv
[11:41] <SteveA> daf: I guess it goes: 1. produce database change on your machine.  2. check it works.  3. update code (if needed) 4. ask for DBA patch on mailing list.
[11:41] <SteveA> daf: did I miss anything?
[11:43] <daf> SteveA: the fact that I'm thinking of going to bed? :)
[11:44] <SteveA> before you go, please write a note to the launchpad mailing list about all this.  that gives carlos and stub a head-start when they turn up today.
[11:44] <daf> ah, ok
[11:44] <SteveA> thanks
[11:44] <daf> I was already composing an email to Carlos about it
[11:44] <daf> should I send it to the mailing list instead?
[11:46] <daf> well, sent to Carlos, CCing you
[11:46] <daf> did you get the email I sent on Sunday night?
[11:47] <SteveA> not yet.  I still need to catch up on some mail.
[11:47] <SteveA> the list is good, because
[11:47] <SteveA> 1. the issue is one that may affect others working on these web apps
[11:47] <SteveA> 2. the DBAs need to know about it
[11:48] <daf> points taken
[11:54] <SteveA> daf: can we have a meeting about rosetta either later today or tomorrow?
[11:54] <Kinnison> Morning cprov 
[11:54] <cprov> Kinnison: morning 
[11:56] <daf> SteveA: yes
[11:57] <daf> SteveA: I think later today it still possible
[11:57] <daf> SteveA: but if it doesn't happen, let's plan for earlyish tomorrow
[11:57] <Kinnison> SteveA: launchpad meeting tomorrow yes?
[11:58] <SteveA> daf: I want us to set a time, check with carlos, and then we all know what we're doing.
[11:59] <SteveA> Kinnison: yep.  I'll send a mail in a bit.
[12:00] <SteveA> hi carlos.  daf and I are just talking about when the three of us can meet up to talk about rosetta.
[12:00] <carlos> hi
[12:01] <carlos> just tell me when it's ok for you
[12:01] <Kinnison> SteveA: any chance we can start a bit earlier than 12.30 (say 12.15) because I may have to leave at 13.15 to collect my partner (they moved his days in ely to tue/wed from mon/tue)
[12:01] <carlos> daf: around?
[12:01] <daf> SteveA: would 2000 UTC tonight be too late for you?
[12:02] <daf> carlos: yes
[12:02] <SteveA> Kinnison: fine with me, and I'm sure fine with the .au folks.
[12:02] <SteveA> BradB / daf: can we have a launchpad meeting tomorrow at 12:00 or 12:15 UTC?
[12:02] <carlos> daf: which problem are you talking about exactly?
[12:02] <carlos> daf: the one related to adding unicode support to the parser?
[12:02] <SteveA> daf: that would be fine with me.  We must be on time, though.
[12:03] <carlos> daf: it's ok for me also
[12:03] <SteveA> carlos: you should read the chat daf and I had about this.
[12:03] <carlos> ok
[12:04] <daf> SteveA: no objections
[12:04] <SteveA> it was just 30 mins or so ago
[12:04] <daf> carlos: I'm happy to try and explain further if the situation isn't clear
[12:05] <daf> SteveA: (in regards to tomorrow's meeting)
[12:05] <daf> SteveA: and yes, I will set an alarm for tonight's
[12:05] <carlos> daf: it's not yet in the log, will wait
[12:06] <daf> hmm
[12:06] <SteveA> let's let daf get some sleep.  carlos and I can chat about it here.
[12:06] <daf> perhaps the log bot isn't here
[12:06] <SteveA> it is important that both of you understand the issue.
[12:06] <carlos> daf: it has a delay
[12:06] <daf> oh
[12:06] <SteveA> carlos: I can mail you the logs if needed.
[12:06] <carlos> don't worry
[12:06] <SteveA> daf: great, thanks.
[12:06] <carlos> I can wait
[12:06] <carlos> daf: go to sleep!
[12:06] <carlos> :-P
[12:07] <daf> carlos: well, I'd like you to get up to speed on this quickly, so we can fix the problem quickly
[12:07] <carlos> so we have a meeting tonight at 20:00UTC and tomorrow at usual time?
[12:07] <SteveA> Kinnison: let's say the meeting will be at 12:00 UTC.  If brad needs to be a bit late, then that's okay.
[12:07] <SteveA> carlos: a bit earlier tomorrow
[12:07] <Kinnison> SteveA: okay; cool. Thanks dude.
[12:07] <SteveA> daf: good night!
[12:08] <Kinnison> SteveA: it can be later if I'm able to be first to report and we don't get bogged down in TAL or whatever it was last week which confused the fook out of me
[12:08] <daf> carlos: yes
[12:08] <carlos> daf: don't worry, Steve will help me with it. Makes sense what you said in your mail
[12:08] <SteveA> carlos: do you have jabber running?
[12:08] <daf> ok, buenas noches
[12:08] <carlos> SteveA: yes
[12:08] <carlos> daf: buenas noches
[12:08] <SteveA> what's the id ?
[12:08] <carlos> carlos@pemas.net
[12:09] <carlos> hmm, anything went wrong, I don't see you after accepting the request :-?
[12:10] <SteveA> the request is one-way.  but, you can make the same request in the opposite direction.
[12:10] <SteveA> sometimes the apps get confused.  maybe you need to restart your jabber client?
[12:14] <carlos> SteveA: usualy, the first request adds also the contact into my list
[12:15] <carlos> SteveA, daf: Will look into it today, I agree with the proposed change
[12:16] <SteveA> ok, great
[12:16] <SteveA> ping me if you have any doubts
[12:16] <SteveA> or any questions ;-)
[12:17] <carlos> :-)
[12:17] <carlos> the only question is about the sqlobject to use
[12:17] <carlos> if it's a binary field, could I use a StringCol?
[12:18] <carlos> (the sqlobject _type_ to use)
[12:18] <SteveA> I don't know what sqlobject offers for bytes data
[12:18] <SteveA> maybe BradB or spiv knows?
[12:18] <carlos> ok
[12:18] <SteveA> or we can look it up
[12:19] <carlos> will search the documentation
[12:20] <SteveA> http://sqlobject.org/docs/FAQ.html#binary-values
[12:20] <SteveA> it suggests you store it base64 encoded
[12:21] <SteveA> which would work okay, and avoid changing the database again
[12:21] <carlos> ok
[12:21] <Kinnison> it is sat idle
[12:22] <Kinnison> :-(
[12:23] <SteveA> that's happened to me before.  but, I changed the check_on_merge script to use threaded IO, which fixed it
[12:25] <Kinnison> Hmm, has this been undone?
[12:26] <SteveA> nope
[12:26] <SteveA> still there
[12:26] <SteveA> can you see what is blocking?
[12:26] <SteveA> ctrl+c and stare at the TB? 
[12:26] <Kinnison>   843 ?        S      0:00 postgres: dsilvers launchpad_ftest [local]  idle in transaction
[12:26] <Kinnison>   867 ?        S      0:00 postgres: dsilvers launchpad_ftest [local]  idle
[12:26] <Kinnison> those are the two postgres processes I can see
[12:26] <Kinnison> I just did ^C and it hasn't stopped yet
[12:27] <Kinnison> dsilvers@petitemort:~/dev-canonical/launchpad/launchpad/database/schema$ strace -p 32751
[12:27] <Kinnison> Process 32751 attached - interrupt to quit
[12:27] <Kinnison> futex(0x8b0bd28, FUTEX_WAIT, 0, NULL
[12:27] <Kinnison> this smells like a futex issue
[12:28] <Kinnison> I shall dist-upgrade and try again
[12:28] <SteveA> right
[12:28] <SteveA> you on hoary or warty or something else?
[12:28] <Kinnison> warty
[12:30] <SteveA> nothing's upgraded for me for ages on warty.
[12:30] <SteveA> I wonder if my sources.list is correct
[12:30] <Kinnison> Do you not have security in your list?
[12:30] <carlos> SteveA: you need the security and updates line
[12:31] <carlos> deb http://archive.ubuntu.com/ubuntu warty main restricted universe multiverse
[12:31] <carlos> deb-src http://archive.ubuntu.com/ubuntu warty main restricted universe multiverse
[12:31] <carlos> deb http://archive.ubuntu.com/ubuntu warty-security main restricted
[12:31] <carlos> deb-src http://archive.ubuntu.com/ubuntu warty-security main restricted
[12:32] <carlos> hmm, and I don't have the updates line.. (for things like the calendar :-P)
[12:33] <kiko> good morning
[12:33] <kiko> how is everybody?
[12:33] <SteveA> what's "restricted" ?
[12:33] <SteveA> hi kiko
[12:33] <kiko> restricted is a bit like "non-free" I believe
[12:33] <carlos> SteveA: binary drivers
[12:33] <SteveA> oh, okay
[12:34] <carlos> kiko: I think that's multiverse
[12:34] <elmo> it's non-free software that's critical for machine support, i.e. gfx, wifi etc. drivers
[12:34] <lifeless> elmo, can you do something for me ?
[12:34] <kiko> well, binary drivers are non-free as well :)
[12:34] <SteveA> not sure I need any of that
[12:34] <carlos> kiko: good point
[12:34] <carlos> :-D
[12:34] <lifeless> much easier to do this interactively ...
[12:34] <elmo> kiko: yes, but he's still right, multiverse is our equivalent of non-free
[12:35] <elmo> lifeless?
[12:35] <lifeless> on auckland, in the arch archives, delete all the category directories for all the imports.
[12:35] <kiko> carlos is always right, no news there
[12:35] <lifeless> i.e.
[12:36] <lifeless> in xorg@arch.ubuntu.com there is a top level dir of
[12:36] <lifeless> \=meta-indo
[12:36] <lifeless> bah 
[12:36] <carlos> I hate public administration 
[12:36] <Kinnison> mmmm meta-indo
[12:36] <lifeless> \=meta-info
[12:36] <lifeless> and a .archive-version file
[12:36] <lifeless> and N other dirs, one for each pjrect in the archive.
[12:36] <lifeless> I need to nuke those other dirs
[12:37] <lifeless> and I need you to echo "Bazaar archive format 1 0" to all the .archive-version files.... but that step will happen later today, after we release.
[12:37] <carlos> stevea: I think you will also want deb http://archive.ubuntu.com/ubuntu warty-updates main restricted universe multiverse
[12:38] <elmo> lifeless: you mean the .listing file?
[12:39] <lifeless> elmo: .listing is irrelevant
[12:39] <lifeless> look at xfs@arch.ubuntu.com instead, will make more sense
[12:40] <lifeless> acl attr xfsdump xfsprogs should go byby.
[12:40] <elmo> oh, ok
[12:40] <lifeless> =meta-info should stay
[12:40] <elmo> lifeless: umm, you sure about this?  'cos if I do it, I'm going to rm them...
[12:40] <lifeless> yeah, I have copies.
[12:41] <lifeless> auckland
[12:41] <lifeless> is a public copy only.
[12:41] <lifeless> just do -not- do it on galapagos.
[12:42] <elmo> find www/* -maxdepth 1 ! -name \=meta-info -type d -mindepth 1  | xargs rm -fr
[12:42] <elmo> ^-- running
[12:43] <lifeless> yup, cool
[12:44] <sabdfl> spiv: do we have distinct support yet?
[01:07] <Kinnison> Okay, it failed :-(
[01:07] <Kinnison> ProgrammingError: ERROR:  database "launchpad_ftest" is being accessed by other users
[01:07] <Kinnison> Considering this is a totally fresh boot, I find that hard to believe
[01:08] <Kinnison> Or rather, it has to be a bug in the test suite
[01:08] <elmo> Kinnison: are you using an SMP kernel?
[01:08] <Kinnison> No
[01:09] <elmo> oh, well, we had this problem on mawson, for a while, fwiw.  it kind of went away on it's own
[01:09] <Kinnison> Feh :-(
[01:09] <Kinnison> thanks dude
[01:09] <elmo> I think at the time, I downgraded to a UP kernel, but we appear to be back on SMP now
[01:09] <Kinnison> There also appears to be proper failures
[01:09] <elmo> you might try running postgres without NPTL
[01:09] <Kinnison> There appear to be real ftest failures in my scrollbuffer
[01:09] <elmo> lifeless: done
[01:10] <elmo> lifeless: I assume I should do what it says to the stuff in 'deleteme' ?
[01:13] <lifeless> yes
[01:13] <lifeless> thanks
[01:17] <Kinnison> well, a re-run gives the same issues :-(
[01:17] <Kinnison> that has put a dampner on my ability to run make-check before pqm merging :-(
[01:18] <SteveA> try recompiling everything?
[01:19] <elmo> Kinnison: the same futex issues?  if so, try without NPTL, you should be able to just LD_ASSUME_KERNEL the postgres server
[01:20] <Kinnison> elmo: not the futex issue. no
[01:20] <Kinnison> elmo: the futex issue went away with the upgrade
[01:21] <elmo> oh, ok
[01:21] <lifeless> oh? thats interesting.
[01:21] <lifeless> we've had terrible futex issues with buildbot/importd
[01:24] <Kinnison> SteveA: a make clean && make check still fails
[01:24] <SteveA> how odd
[01:25] <SteveA> is it pagetests that fail?
[01:25] <Kinnison> yeah
[01:25] <Kinnison> it appears in part to be complaining about the full text search stuff
[01:26] <Kinnison> but I followed stub's instructions from his mail
[01:46] <Kinnison> For someone who knows more about these things than me: https://chinstrap.warthogs.hbd.com/~dsilvers/clean-and-check.log
[01:47] <Kinnison> ProgrammingError: ERROR:  could not find tsearch config by locale
[01:47] <Kinnison> that one appears to be the most relevant
[01:55] <SteveA> what do you have for this: SELECT * from pg_ts_cfg;
[01:57] <Kinnison> launchpad_dev=# SELECT * from pg_ts_cfg;
[01:57] <Kinnison>      ts_name     | prs_name |    locale
[01:57] <Kinnison> -----------------+----------+--------------
[01:57] <Kinnison>  default         | default  | C
[01:57] <Kinnison>  default_russian | default  | ru_RU.KOI8-R
[01:57] <Kinnison>  simple          | default  |
[01:57] <Kinnison> (3 rows)
[01:57] <SteveA> and, what is your machine's locale?
[01:57] <SteveA> locale -a perhaps
[01:58] <Kinnison> dsilvers@petitemort:~$ locale -a
[01:58] <Kinnison> C
[01:58] <Kinnison> POSIX
[01:58] <Kinnison> en_GB
[01:58] <Kinnison> en_GB.iso88591
[01:58] <Kinnison> en_GB.utf8
[01:58] <SteveA> I have $ locale -a
[01:58] <SteveA> C
[01:58] <SteveA> POSIX
[01:58] <SteveA> en_US
[01:58] <SteveA> en_US.iso88591
[01:58] <Kinnison> dsilvers@petitemort:~$ locale
[01:58] <Kinnison> LANG=en_GB.UTF-8
[01:58] <Kinnison> ...
[01:58] <Kinnison> is that is issue?
[01:58] <SteveA> quite likely
[01:59] <Kinnison> blergh
[01:59] <Kinnison> that locale works for everything else
[02:00] <SteveA> INSERT INTO pg_ts_cfg (ts_name, prs_name, locale) VALUES ('default_english', 'default', 'en_GB');
[02:01] <SteveA> anyhow, I think it might be better to have a standard locale for running this stuff, as we should have a development environment that is as close to the servers as is possible.
[02:03] <Kinnison> the LANG=C option failed. I'll try your insert now
[02:04] <SteveA> there might be more to do than just that insert
[02:04] <SteveA> http://www.sai.msu.su/~megera/postgres/gist/tsearch/V2/docs/tsearch-V2-intro.html
[02:05] <SteveA> look at the section "TSEARCH2 CONFIGURATION"
[02:09] <Kinnison> ergh!
[02:09] <Kinnison> that's way complex
[02:10] <SteveA> yeah.  maybe wait until stub is around?
[02:10] <Kinnison> hmm
[02:10] <SteveA> actually
[02:10] <SteveA> I expect you need to set the locale the postgres process is running in
[02:10] <SteveA> not the locale you run make check in
[02:11] <SteveA> maybe there's a way to override that in the postgres configuration
[02:11] <Kinnison> Perhaps
[02:12] <Kinnison> nup, that stops postgres from starting
[02:49] <Kinnison> back
[03:09] <elmo> has anyone been running anything on mawson recently?
[03:09] <elmo> particularly between 12:45 and 1:00
[03:09] <elmo> does gina make any outgoing connections?
[03:10] <Kinnison> Not that I know of
[03:30] <dilys> Merge to thelove@canonical.com/bazaar--devo--1.0: remove libneon, use the system libneon headers (patch-67)
[03:31] <dilys> Merge to 	thelove@canonical.com/package-framework--devo--1.1: merge in final package-framework fix for make test (patch-2)
[03:32] <elmo> meh, never mind.  wrong machine.  I own.
[03:52] <kiko> yo stb
[03:54] <salgado> yo kiko!
[03:58] <dilys> Merge to thelove@canonical.com/bazaar--devo--1.0: merge baz archive format support (patch-68)
[04:01] <dilys> Merge to thelove@canonical.com/bazaar-debian--debian--1.0: release 1.0 (patch-6)
[04:28] <dilys> Merge to thelove@canonical.com/bazaar--devo--1.0: archive mirror fix for tla archives (patch-69)
[04:37] <SteveA> spiv: ?
[04:43] <SteveA> sabdfl: can we talk about utility functions briefly?
[04:43] <bob2> is python-docutils a non-python.org project?
[04:44] <bob2> ie different "project" in the LP sense?
[04:44] <bob2> SteveA: he's semi-afk atm
[04:44] <SteveA> oh, okay.  I'll catch up with him later
[04:45] <SteveA> I'm popping out for some food, but taking the laptop along.
[04:45] <SteveA> (in a few minutes)
[04:57] (carlos/#launchpad) SteveA: the base64 thing works
[04:58] (SteveA/#launchpad) carlos: does that mean I can upload a potfile and have it imported now?
[04:58] (carlos/#launchpad) yes
[04:58] (SteveA/#launchpad) wahey!
[04:58] (SteveA/#launchpad) and I can translate it
[04:58] (BradB/#launchpad) carlos: so you don't need to change anything about the way you're currently solving the problem then?
[04:58] (carlos/#launchpad) we need to improve the exception handling but the code is there already
[04:58] (SteveA/#launchpad) and get a po fle back
[04:58] (carlos/#launchpad) yes, the missing part I should add is the po import that needs a language selector
[04:59] [sivang(~sivang@80.179.93.130.forward.012.net.il)]  hi!
[04:59] (SteveA/#launchpad) um... daf was working on that days ago
[04:59] (carlos/#launchpad) but that should be trivial now that the pot import works
[04:59] (SteveA/#launchpad) what happened to it?
[04:59] (carlos/#launchpad) BradB: right
[04:59] (carlos/#launchpad) SteveA: I'm using its patchset
[04:59] (carlos/#launchpad)  /s/its/his/
[04:59] (SteveA/#launchpad) ok, so you need to integrate daf's patch
[05:00] (carlos/#launchpad) it's already integrated but it lacks the language selector (it's just a combo box so it's easy)
[05:01] (BradB/#launchpad) Actually, I found a thread on sqlobject discuss and that's all Ian suggested too (base64 encoding :)
[05:01] (SteveA/#launchpad) ok, we'll stick with doing it that way
[05:01] (SteveA/#launchpad) and maybe write a custom col type in the future
[05:03] (carlos/#launchpad) ok
[05:04] (SteveA/#launchpad) we should also talk about the mechanics of automatically importing stuff from the "queue" later.
[05:04] (SteveA/#launchpad) (especially with larger files)
[05:06] <BradB> cprov: btw, are we going to have something checked in today that works for difflib, etc.? Maybe you'll have to talk to SteveA about where to put what.
[05:07] <BradB> stub was bitten again too, by the looks of bug #106
[05:10] <SteveA> stub wrote a message to the list: Celso's pagetest improvements
[05:10] <carlos> SteveA: as soon as it's ready, we could look at it
[05:10] <SteveA> """I've switched on Celso's pagetest update. If it causes trouble for any
[05:10] <SteveA> reason, just comment out the monkey_patch_doctest() line in test.py.
[05:10] <SteveA> I suspect it may need tweaking, but it would be good to dogfood it to
[05:10] <SteveA> see how it goes.
[05:10] <SteveA> """
[05:11] <carlos> SteveA: but it's really easy to do it if we have a procedure defined to execute scripts because the current interface only needs the user to click a button so the import is done
[05:12] <BradB> Ah, didn't get that far along in my email yet.
[05:19] <cprov> BradB: I hope, it was already solved ...
[05:36] <Kinnison> cprov: how's the permissions coming? Ready to do more lucille stuff?
[05:48] <BradB> is postgresql-contrib available only in universe or something?
[05:48] <lifeless> baz 1.0 is out . ROCK.
[05:48] <Kinnison> lifeless: coo. debs built?
[05:49] <cprov> Kinnison: I'm ready
[05:51] <lifeless> Kinnison: bazaar.canonical.com
[05:52] <Kinnison> lifeless: excerrent
[05:53] <Kinnison> bazaar archives are still compatible with tla yes?
[05:54] <sabdfl> Kinnison: baz can read tla, mirror and merge between them, but tla will barf on a bazaar archive
[05:54] <Kinnison> oh
[05:54] <Kinnison> can bazaar still create tla compatible archives?
[05:55] <BradB> What did you guys do to install postgresql-contrib? I'd rather avoid universe if possible, but I'm getting the hint that it might only exist in there.
[05:55] <Kinnison> IIRC it is in universe
[05:55] <elmo> BradB: it does, just add universe to your sources.list temporarily, install it, remove it agani
[05:55] <elmo> again too
[05:56] <lifeless> Kinnison: make-archive --tla
[05:57] <Kinnison> lifeless: okay; ta
[05:58] <lifeless> but honestly, switch your friends to baz.
[05:59] <Kinnison> arch-pqm and viewarch are happy with baz?
[06:00] <BradB> woo, database make output rocks now
[06:00] <Kinnison> the pqm on chinstrap is using baz now?
[06:02] <salgado> what can be causing this kind of errors when running "cd database/schema ; make": 
[06:02] <salgado> psql:../sampledata/current.sql:10: ERROR:  plpython: function "valid_name" failed
[06:02] <salgado> DETAIL:  exceptions.NameError: global name 'True' is not defined
[06:03] <Kinnison> python2.1 ?!
[06:06] <BradB> heh!
[06:06] <salgado> no, i'm running 2.3
[06:06] <lifeless> Kinnison: arch-pqm will use baz if its called tla. likewise viewarch
[06:06] <Kinnison> lifeless: and none of the UI they use has changed?
[06:06] <lifeless> well, pqm needs to be taught that tag == branch
[06:06] <lifeless> chinstrap has a hacked tla that supports baz archivges, so it will read from them happily.
[06:07] <Kinnison> right
[06:07] <BradB> salgado: The odds look fairly high that your pgsql was compiled with a pre-2.2 version of Python.
[06:07] <BradB> salgado: are you running Ubuntu?
[06:08] <salgado> BradB, you're right. our postgresql is a backport running on a woody box.
[06:09] <salgado> it probably was compiled with python2.1, the default in woody(I guess)
[06:16] <Kinnison> What's the SQLObject magic for a foreign key collection thingy?
[06:18] <BradB> Kinnison: A MultipleJoin, you mean?
[06:23] <Kinnison> possibly I do
[06:23] <Kinnison> I'll explain what I want when you return
[06:48] <dilys> Merge to thelove@canonical.com/bazaar--devo--1.1: merge 1.0 release improvements (patch-1)
[06:56] <kiko> BradB, salgado and I have a problem with some stub-sql in trusted.sql -- know anything about this
[06:59] <BradB> kiko: Depends on what problem you're having. :)
[07:00] <kiko> our webserver's pgsql runs python2.1, and it dislikes True, False (of course)
[07:02] <BradB> kiko: What did you want to know?
[07:02] <kiko> who changed that, and when, and if I can hack around it?
[07:02] <kiko> and also
[07:03] <kiko> (salgado, paste traceback in)
[07:03] <salgado> psql:../sampledata/current.sql:10: ERROR:  plpython: function "valid_name" failed
[07:03] <salgado> DETAIL:  exceptions.NameError: global name 'True' is not defined
[07:03] <BradB> stub presumably. How much effort would take to run something newer than 2.1 on your webserver's pgsql?
[07:04] <kiko> it's a problem -- we're running a backport
[07:04] <kiko> but that's not all
[07:04] <kiko> (salgado, paste the other traceback)
[07:04] <BradB> I think it's reasonable for these scripts to assume at /least/ 2.2 (if not 2.3.x)
[07:04] <kiko> elmo_away, this concerns you as well, btw
[07:05] <salgado>   File "fti.py", line 13, in ?
[07:05] <salgado>     from canonical.lp import dbname, dbhost
[07:05] <salgado>   File "/home/salgado/devel/launchpad/lib/canonical/lp/__init__.py", line 9, in ?
[07:05] <salgado>     from zope.i18n import MessageIDFactory
[07:05] <salgado> ImportError: No module named i18n
[07:05] <elmo_away> kiko: hmm?
[07:05] <kiko> elmo_away, it appears that launchpad now requires zope on the database server machine as well?
[07:05] <SteveA> that's interesting.
[07:05] <SteveA> maybe it just needs zope.i18n
[07:05] <kiko> I mean, it might not concern you, it might "interest" you. :)
[07:06] <SteveA> or maybe we could make do with just standard i18n for stuff that is supposed to be on the database server machine
[07:06] <BradB> salgado: try importing zope.i18n on the command line.
[07:06] <SteveA> I mean, I doubt we'd want to internationalize that kind of server-side stuff anyway 
[07:09] <BradB> kiko: I think the best solution, even if not entirely simple, is for you guys to upgrade your pgsql to a newer Python. supporting a 2.5 year old python version is not something i'd think we'd want to prioritize.
[07:09] <kiko> BradB, dude, it's a database server, not a desktop box
[07:09] <BradB> kiko: particularly when everything else will probably soon(ish) require Python 2.4.
[07:10] <kiko> I don't disagree for application code, but for database code?
[07:10] <BradB> kiko: you'll want to develop in an environ that mimicks as closely as possible the deployment scenario. 2.1 is far from that.
[07:11] <kiko> you're hardly being helpful
[07:11] <kiko> this is a box the whole office uses; upgrading is not a trivial task
[07:12] <kiko> I don't believe we should be forced to upgrade because someone wants to use True and False instead of 1 and 0 for the very small and simple code that runs in the database server
[07:12] <kiko> and I don't believe we should need to have zope.i18n installed on it either, though I'm willing to be more flexible on that point
[07:12] <kiko> does this make sense?
[07:14] <kiko> salgado, what exactly requires zope.i18n?
[07:14] <BradB> kiko: I think stub has big plans for plpython (i.e. wants to use it fairly extensively over the long haul.) Maybe he has a better idea; maybe he's willing to leave out two major releases worth of features when he's writing plpython code.
[07:15] <salgado> kiko, "make" on database/schema imports from canonical.lp, and it imports zope.i18n and zope.interface
[07:15] <kiko> indeed
[07:16] <kiko> why does make import canonical.lp?
[07:16] <salgado> dbname, hostname
[07:16] <kiko> oy
[07:16] <kiko> hmmm
[07:16] <kiko> could that be avoided?
[07:17] <BradB> I've had a bug filed on that one for a long while. :) Noone's bothered to fix it yet.
[07:17] <salgado> dbname = os.environ.get('LP_DBNAME', 'launchpad_ftest') -> maybe this should go somewhere else?
[07:17] <BradB> (i.e. making the db configurable in exactly one place)
[07:18] <kiko> salgado, yes, how about moving that around
[07:19] <BradB> kiko: keep in mind also (I'm saying this without knowing exactly how stub intends to use plpython), that if you don't upgrade your Python, we can't use sqlobject in any of those functions.
[07:19] <SteveA> BradB: spiv was tasked to get these things into launchpad.conf while I was away on vacation.  He got too caught up with shipit, and didn't do that.
[07:19] <SteveA> so, the make stuff shouldn't be using canonical.lp, but should be using zconfigure to read in launchpad.conf
[07:19] <kiko> BradB, sqlobject? inside the database?
[07:20] <salgado> kiko, looks good to me. 
[07:20] <BradB> kiko: I'm also saying that without knowing if or how restrictive plpython is about Python code, but if it allowed, I could certainly imagine cases where I'd want to use sqlobject.
[07:20] <kiko> CRACK
[07:20] <BradB> kiko: and well, <insert module that depends on > 2.2 here> as well.
[07:21] <BradB> >= 2.2 in any case
[07:22] <SteveA> lifeless: can someone make pqm send the full output, not just the last 20 lines, in pqm failure messages?
[07:23] <lifeless> SteveA: it does if you ask for it.
[07:24] <lifeless> but the emails can get very big, and most sensible build systems fail in that space.
[07:25] <SteveA> I'd like a 300 line limit instead of a 20 line limit
[07:27] <lifeless> why not just have your submit script send debug every time? I can mail you a copy to do that easily.
[07:29] <SteveA> I guess you meant something different than what I understood by "it does it you ask for it"
[07:29] <SteveA> please send me what I need to know, and I'll alter my script
[07:52] <lifeless> you need to send debug as a line in your signed content.
[07:53] <lifeless> i.e echo -e 'debug\nstar-merge...  in your submit script.
[07:54] <SteveA> ok
[07:56] <lulu> night all :o)
[08:01] <dilys> Bug 1953 resolved: Turn on ZODB for Launchpad
[08:01] <dilys> https://bugzilla.warthogs.hbd.com/bugzilla/show_bug.cgi?id=1953
[08:01] <dilys> Bug 2034 resolved: allow 'count' method of SelectResults in SQLOS
[08:01] <dilys> https://bugzilla.warthogs.hbd.com/bugzilla/show_bug.cgi?id=2034
[08:03] <dilys> Merge to rocketfuel@canonical.com/launchpad--devel--0: Some code review of database/product.py (patch-913)
[08:04] <BradB> lifeless: eh
[08:04] <dilys> Bug 2098 resolved: improve Launchpad debugging modes
[08:04] <dilys> https://bugzilla.warthogs.hbd.com/bugzilla/show_bug.cgi?id=2098
[08:04] <BradB> bradb@oxygen:~/launchpad $ tla star-merge $rocketfuel
[08:04] <BradB> arch_archive_connect: attempt to connect to incompatible archive
[08:04] <BradB>   archive: rocketfuel@canonical.com
[08:04] <BradB> Was that intentional?
[08:05] <BradB> i mean, i know we should be using baz and all, but... :)
[08:05] <lifeless> BradB: oh yeah, run baz :)
[08:05] <BradB> lifeless: A link to where we can read about getting, installing and using it would be particularly useful.
[08:06] <SteveA> who knows about the code in database/product.py ?
[08:06] <SteveA> there are two methods in there that need some attention.  one clearly doesn't work as advertised.  the other needs a better docstring.
[08:07] <SteveA> the method fullname(), lines 91 to 109 doesn't do what it says it does.  It should have a test, and then it should be fixed.
[08:08] <BradB> SteveA: fullname was mentioned in a checkin message by stub. It's what he's using to show the product name in the bug listing, but it does some silly magic (which it sort of has to, unfortunately, to avoid showing products called "ubuntu ubuntu")
[08:08] <SteveA> the method bugsummary(), lines 248 to 273.  I'd like to see an addition to its docstring showing what the typical output of the method is.  That is, what a typical dictionary that it outputs will look like.
[08:08] <SteveA> BradB: it plainly doesn't work.
[08:09] <SteveA>         prod = self.name
[08:09] <SteveA>         proj = self.name
[08:09] <SteveA>         if prod == proj:
[08:09] <SteveA>             return prod
[08:09] <SteveA>         else:
[08:09] <SteveA>             return '%s %s' % (proj, prod)
[08:09] <BradB> SteveA: yeah, that's the silly magic i was talking about :)
[08:09] <SteveA> but, it says "prod = self.name"
[08:09] <SteveA> and it says "proj = self.name"
[08:09] <BradB> fair point :)
[08:09] <SteveA> so, `prod == proj` is always true
[08:10] <SteveA> what it does looks reasonable to me
[08:10] <SteveA> I mean, what it is supposed to do
[08:10] <BradB> such is the hazard of code with no tests :)
[08:11] <lifeless> BradB: deb http://bazaar.canonical.com/releases/1.0/debs ./
[08:13] <BradB> lifeless: do i need to do anything to my current working tree to Make It Work?
[08:19] <dilys> New Malone bug #109: "Fix fullname() database/product.py, with test", submitted by Steve Alexander
[08:19] <dilys> https://dogfood.ubuntu.com/malone/bugs/109
[08:19] <SteveA> when I add a bug, the next screen doesn't tell me "added as bug number 109"
[08:23] <dilys> New Malone bug #110: "Better docstring for bugsummary()", submitted by Steve Alexander
[08:23] <dilys> https://dogfood.ubuntu.com/malone/bugs/110
[08:23] <BradB> SteveA: there's a bug filed on that already
[08:25] <SteveA> ok.  would you mark it as a dupe?
[08:26] <BradB> SteveA: I meant on what you said about "the next screen doesn't tell me..."
[08:26] <SteveA> oh, right
[08:26] <SteveA> cool
[08:28] <BradB> Has baz made my life easier by collapsing tla tree-lint, tla changes and tla star-merge into one command? If so, what's command is that?
[08:28] <BradB> I know somebody's already scripted this, but I was hoping that got folded into the tool.
[09:00] <SteveA> daf, carlos: hi
[09:00] <carlos> SteveA: hi
[09:01] <daf> hi
[09:01] <SteveA> have you seen bill and ted's excellent adventure?
[09:01] <SteveA> it is a film?
[09:01] <SteveA> it is a film.
[09:02] <daf> yes
[09:02] <SteveA> carlos: ?
[09:03] <carlos> yes
[09:03] <SteveA> in the film, bill and ted inadvertantly found an advanced future civilization that is guided by the principle "Be excellent to each other."
[09:04] <SteveA> we have all turned up on time for this meeting, as we agreed earlier today.  So, we have been excellent to each other in a small way.
[09:04] <carlos> i mean, I didn't saw it, but I'm here :-P
[09:05] <SteveA> thanks guys.
[09:05] <SteveA> anyway, on with the meeting
[09:05] <daf> :)
[09:05] <SteveA> carlos has been making our po and pot data fit into the database using base64 encoding
[09:05] <carlos> and it's working now with po and pot files
[09:05] <carlos> :-)
[09:06] <carlos> but the UI is ugly
[09:06] <daf> ah, I see
[09:06] <SteveA> ok.  let's see if we have the essentials of rosetta done, and what we need to do next.
[09:06] <daf> was there a problem with storing the binary data directly?
[09:06] <SteveA> I'll ask some questions, and I'd like both of you to give me a simple answer of "yes" "no" or "it isn't as simple as that"
[09:07] <SteveA> we'll see if everyone agrees about these things.  okay?
[09:07] <carlos> ok
[09:07] <SteveA> the problem with storing the binary data directly is that sqlobject doesn't really support it well
[09:08] <SteveA> and, seeing as it is binary data, and we won't need to search it or anything like that, base64 encoding is okay
[09:08] <daf> agreed
[09:09] <SteveA> okay, here we go:  Let's assume that the very latest code is on dogfood.  I have a pot file for one of the products that is in dogfood.
[09:09] <SteveA> Can I log in, go to a form, and upload it?
[09:09] <carlos> yes
[09:09] <SteveA> I have a po file for one of the products.  can I upload that?
[09:10] <carlos> yes but you will need a pot file imported or you will not be able to translate it
[09:11] <SteveA> okay.
[09:11] <SteveA> if I have a pot file and a po file, do I import them one at a time?
[09:11] <carlos> not yet
[09:11] <daf> what will happen if you try and import a PO file before a POT file, I wonder?
[09:11] <carlos> hmmm
[09:11] <carlos> sorry, I misunderstood it.
[09:12] <carlos> yes you need to import one by one
[09:12] <carlos> daf: nothing
[09:12] <carlos> I mean, nothing wrong
[09:12] <carlos> it should be imported
[09:13] <carlos> but rosetta will show 0 strings to translate until you import a pot file
[09:13] <carlos> if it fails, is a bug
[09:13] <daf> right, yes, makes sense
[09:13] <daf> SteveA: I think the answer to your question is yes, you import them one at a time
[09:14] <SteveA> okay.
[09:14] <SteveA> it is a common thing to want to import a pot file and several po files?
[09:14] <SteveA> I would think that it is.
[09:14] <SteveA> if I'm importing an existing application.
[09:14] <daf> agreed
[09:14] <carlos> right
[09:15] <SteveA> I'm just looking at what is in zope3
[09:19] <SteveA> how can I do a 'find' command that will find pot and po files?
[09:19] <daf> find -name '*.po' -o -name '*.pot'
[09:19] <SteveA> hmm, need to exclude .svn directories too
[09:19] <SteveA> here's what I'm thinking: the output looks like this
[09:19] <SteveA> ./en/LC_MESSAGES/zope.po
[09:19] <SteveA> ./ru/LC_MESSAGES/zope.po
[09:19] <SteveA> ./pt_BR/LC_MESSAGES/zope.po
[09:19] <SteveA> ./fr/LC_MESSAGES/zope.po
[09:19] <SteveA> ./es/LC_MESSAGES/zope.po
[09:19] <SteveA> ./de/LC_MESSAGES/zope.po
[09:19] <SteveA> ./it/LC_MESSAGES/zope.po
[09:19] <SteveA> ./zope.pot
[09:19] <SteveA> 
[09:20] <SteveA> if I stick that into a .tar or .zip file, and upload it, would rosetta be able to do the right thing, and queue the pot and po files for import?
[09:20] <SteveA> is this a common layout?
[09:20] <daf> SteveA: that layout is uncommon
[09:20] <SteveA> okay.  no point writing code just to handle this then.
[09:20] <carlos> SteveA: no, the common is a directory with a .pot and lots of .po files
[09:21] <daf> (in fact, it's the first time I've seen it :))
[09:21] <carlos> daf: I think php does the same
[09:21] <daf> ok
[09:21] <SteveA> anyway, we probably need a way to easily upload a bunch of po and a pot file all at once.
[09:22] <daf> absolutely
[09:22] <SteveA> enough talking of the upload.  let's talk about importing.
[09:22] <SteveA> can I go to a page and see the "queue" of things waiting to be imported?
[09:22] <carlos> yes
[09:23] <SteveA> does it show me who uploaded them?
[09:23] <carlos> yes
[09:23] <SteveA> and what product and language they are?
[09:23] <carlos> yes
[09:23] <SteveA> that's great.
[09:23] <carlos> and the date
[09:23] <carlos> of the import
[09:23] <daf> carlos: good work :)
[09:23] <carlos> daf: thanks
[09:23] <SteveA> we need to talk about how to do a script that can be run from crontab or as a long-running process, to import things.
[09:24] <carlos> SteveA: the only problem I see with it is the "double import"
[09:24] <daf> such a script would in theory be very simple
[09:24] <carlos> outside that problem, it should be easy
[09:25] <SteveA> would it be possible to have a script that does as follows:
[09:25] <SteveA> 1. go to http://..../+upload-next
[09:25] <dilys> Merge to rocketfuel@canonical.com/launchpad--devel--0: change bug # wording to clarify where the 'missing bugs' are, to close bug #97 (patch-914)
[09:26] <SteveA> 2. response is immediate (using something called request.response.write()) and gives the id that will be uploaded
[09:26] <SteveA> 3. a bit later, the script goes to http://..../+upload-next?last=$ID
[09:27] <SteveA> 4. the server looks to see if $ID has finished importing (darn, I meant "import" not "upload" earlier), and if so, starts the next import and writes out its id
[09:27] <SteveA> 4. (continued) if not, it gives an error
[09:27] <SteveA> 5. the script waits a bit, and tries again
[09:27] <carlos> hmmm
[09:27] <SteveA> does the database schema support this?
[09:27] <daf> which part does the importing? the server or the script?
[09:27] <carlos> how do we handle that life cycle?
[09:28] <SteveA> the server does the importing.
[09:28] <carlos> I thought that launchpad objects die after the request...
[09:28] <SteveA> of course, we could have a script that just does the importing
[09:28] <SteveA> that might be simpler
[09:28] <SteveA> make it a long-running script
[09:28] <SteveA> that does a new transaction for each import
[09:28] <daf> a daemon?
[09:29] <SteveA> carlos: launchpad objects do that.  however, there is a way to write data out to the client (browser for example) before the request is finished with being processed
[09:29] <SteveA> daf: like a deamon, yes
[09:29] <SteveA> but, I'd suggest just a script that doesn't exit
[09:29] <daf> I think having the imports done by the server would be easier to implement
[09:30] <SteveA> I'm thinking that actually a script would be simpler
[09:30] <carlos> SteveA: I know that, but I don't see how will controll launchpad if the import is running or not
[09:30] <SteveA> how about this instead:
[09:30] <carlos> if we use a field in the database and the script dies for any reason we could get a lock
[09:30] <daf> SteveA: let's DTSTTW
[09:30] <carlos> daf: acro DTSTTW
[09:31] <carlos> ;-)
[09:31] <SteveA> carlos: I don't understand what you mean.  If the script dies, then the connection to the database is broken, so the locks are broken.
[09:31] <SteveA> what would you guys like to do?
[09:31] <daf> Do The Simplest Thing That Works
[09:31] <SteveA> I think that's going to be a script
[09:31] <daf> which does the import?
[09:32] <dilys> Malone bug #97 fixed for package malone: Bug count is bogus?
[09:32] <dilys> https://dogfood.ubuntu.com/malone/bugs/97
[09:32] <SteveA> that says: while True: import next if there is one else wait a few minutes.
[09:32] <daf> or tells the server to do the import?
[09:32] <carlos> SteveA: the problem is that I don't see how the launchpad server could do it without executing a thread outside the web server
[09:32] <SteveA> carlos: I can explain how to do that.  however, I think a script is simpler.
[09:32] <dilys> Malone bug #99 fixed for package malone: double-spacing in bug comments?
[09:32] <dilys> https://dogfood.ubuntu.com/malone/bugs/99
[09:32] <carlos> ok
[09:33] <carlos> SteveA: will ask in Matar (if I remember it :-P)
[09:33] <daf> SteveA: which are you proposing?
[09:33] <SteveA> script
[09:33] <SteveA> long-running script
[09:33] <SteveA> while True:
[09:33] <SteveA>     if anything_to_import():
[09:33] <SteveA>         import it()
[09:33] <carlos> it's ok for me
[09:33] <SteveA>     else:
[09:33] <SteveA>         sleep(1 minute)
[09:33] <daf> ok
[09:33] <daf> how does the "import it()" work?
[09:34] <daf> it downloads the file from the server?
[09:34] <SteveA> downloads?
[09:34] <daf> and uses a zopeless transaction to import?
[09:34] <SteveA> it performs database queries
[09:34] <SteveA> yes
[09:34] <SteveA> it makes a query to get the file out of the database, base64decodes it
[09:34] <daf> no, silly me, it can get the data from the database itself
[09:34] <SteveA> processes it, and does stuff to put its parts in there
[09:35] <SteveA> write appropriate flags to remove the file from the queue
[09:35] <daf> it must import POT files before PO files
[09:35] <SteveA> and then commits a transaction
[09:35] <SteveA> that's a function of "what is the next thing to import" I guess
[09:35] <daf> yes
[09:36] <SteveA> okay.
[09:36] <SteveA> so, who will write this script?
[09:36] <carlos> I could, it's an extension of my current code
[09:37] <daf> there's the script, and there's also the /+next-upload interface
[09:37] <SteveA> ok carlos.  you write the script.
[09:37] <SteveA> I don't think you need the /+next-upload thing
[09:37] <carlos> that will be a method inside the script now, right?
[09:37] <SteveA> we already have a page that allows us to see what is uploaded and pending import
[09:38] <daf> ok
[09:38] <SteveA> next, I'd like to talk about what else rosetta needs
[09:38] <carlos> SteveA: should I remove the "import" button from that form?
[09:38] <SteveA> I'm going to be doing a demo in a week and a half
[09:38] <SteveA> and I want it to be slick!
[09:38] <SteveA> carlos: if it works, then no, don't
[09:38] <daf> carlos: which form?
[09:38] <carlos> SteveA: it will break with long files, remember it
[09:38] <SteveA> as it might be useful to get something imported in a hurry.  Do concurrent imports work?
[09:39] <SteveA> hmm, okay, yeah, remove it
[09:39] <carlos> daf: the one at http://localhost:8086/rosetta/+uploadqueue
[09:39] <SteveA> better for it not to be there, I guess
[09:39] <daf> well
[09:39] <SteveA> remove remove remove.  less is more!
[09:39] <carlos> :-)
[09:39] <daf> I was thinking it would be useful for testing
[09:39] <SteveA> run the script for testing
[09:39] <SteveA> less is more
[09:40] <SteveA> so, I have this demo.
[09:40] <daf> yes
[09:40] <SteveA> while carlos is working on this script, daf, I want you to do the same demo I'll be doing
[09:40] <SteveA> take some open source project
[09:41] <SteveA> and put it into launchpad, along with its pot / po files
[09:41] <SteveA> and translate it
[09:41] <SteveA> and get new pot and po files back out
[09:41] <SteveA> imagine you're showing a potential business client of canonical -- perhaps some african president -- this software 
[09:42] <SteveA> are you still in NY?
[09:42] <daf> yes
[09:42] <carlos> SteveA: will it be in Mataro?
[09:42] <SteveA> see if you can get mika to be an audience
[09:42] <SteveA> carlos: yes
[09:42] <carlos> wow
[09:42] <SteveA> big audience of spanish and catalan speakers
[09:43] <SteveA> this is rosetta's first big day
[09:44] <SteveA> so, daf, go through rosetta like you were demoing it.  don't fix anything yet!
[09:44] <daf> make a list of problems?
[09:44] <SteveA> make a list of things that need to be fixed or improved.
[09:44] <SteveA> yep
[09:45] <SteveA> you've got it
[09:45] <SteveA> first list, then prioritize, then fix
[09:45] <SteveA> that will help keep things focused
[09:45] <daf> right
[09:45] <SteveA> I'd like to try the same thing as you've tried.
[09:46] <SteveA> so, keep a note of your "script" 
[09:46] <SteveA> that is, what you've done, and perhaps what you'd want to point out at various points
[09:46] <SteveA> then I'll go through the same thing, and between us, we'll make things very slick
[09:46] <daf> sounds good
[09:47] <daf> (oooh! Python 2.4!)
[09:47] <SteveA> how much time to work do you have before tomorrow's meeting?
[09:48] <carlos> am I included in "you"? or are you asking daf?
[09:48] <SteveA> just daf
[09:48] <carlos> ok
[09:49] <SteveA> seeing as daf and I are collaborating on the "make rosetta slick", while you're writing the script, I want to check what I should expect when, so I can arrange when I need to work on this
[09:49] <daf> I've just woken up, so I can fit in a whole day's work before the meeting
[09:49] <daf> 8 hours or so, I suppose
[09:49] <SteveA> what can you achieve on this in a day?
[09:50] <SteveA> let's divide up the hours among the different parts of what we're doing
[09:50] <daf> I think that depends on what problems I encounter
[09:50] <daf> I can start on it right away
[09:50] <SteveA> we can make an estimate now of how things ought to go
[09:50] <daf> ok
[09:50] <SteveA> and then you'll know when you meet problems
[09:50] <SteveA> I know for my self, unless I do this kind of thing, I may not notice when I meet a problem
[09:50] <daf> I'll need to get Carlos' changes
[09:50] <SteveA> and get sucked into it
[09:50] <SteveA> carlos: have you merged your latest stuff into RF? 
[09:50] <daf> start the server
[09:51] <carlos> SteveA: doing it at this moment
[09:51] <daf> add the project/product/potemplate to the database
[09:51] <SteveA> ok
[09:51] <daf> upload the template
[09:51] <dilys> Merge to rocketfuel@canonical.com/launchpad--devel--0: linkified changelogs and initial karma-gathering framework (patch-915)
[09:51] <daf> import it
[09:51] <daf> upload some PO files
[09:51] <daf> import them
[09:51] <SteveA> daf: I'm going to go to sleep soon.  But, send me lots and lots of emails!  I like emails!
[09:51] <daf> I like emails too
[09:52] <carlos> merge request sent
[09:52] <daf> carlos: do you like emails?
[09:52] <carlos> sorry?
[09:52] <SteveA> use me as your planning whiteboard.  send me quick emails when things are going well and about what looks slick.  send me emails when you meet problems.
[09:52] <carlos> ok
[09:52] <carlos> yes
[09:52] <carlos> please
[09:52] <carlos> :-)
[09:53] <daf> great!
[09:53] <carlos> SteveA: is there any problem if I change the code as daf is doing the tests?
[09:53] <SteveA> carlos: I don't think there will be a problem.
[09:53] <carlos> ok
[09:53] <BradB> Do we have any status message facility in Launchpad? i want to set a status message, without simply passing status_message=foo in the URL.
[09:54] <carlos> that could fix some of the problems he will get
[09:54] <BradB> And, like Plone, have it displayed in the same way on all pages.
[09:54] <SteveA> how do you mean, Brad?  do you want a selection of standard status messages, and to refer to them with an id?
[09:55] <SteveA> is this to avoid people sending links to URLs like:  http://launchpad.ubuntu.com/malone/uploadfoo?message=All+your+base+are+belong+to+us
[09:55] <daf> carlos: if you're changing things I might be testing, keep me informed
[09:55] <carlos> daf: sure
[09:55] <BradB> SteveA: Possibly. I mean I want to have a "status message" that can be displayed on any given page. It might say "You are now logged in" on the login page, or "Successfully updated blah on <some date>" or "Successfully added bug # 123"
[09:55] <BradB> SteveA: Yeah, defacement-fu
[09:56] <carlos> daf: btw, you should deactivate the automatic from addition from postgresql
[09:56] <carlos> daf: btw, you should deactivate the automatic "from" addition from postgresql
[09:56] <SteveA> BradB: we have no such thing at present.  maybe you want to design such a thing, and bring the design to the launchpad meeting tomorrow?
[09:56] <SteveA> or just implement something and tell us all about it?
[09:57] <BradB> I'll try to think of a way to implement it.
[09:57] <SteveA> or, just put together the bullet-point list of requirements
[09:57] <BradB> I was thinking utility + TAL namespace, but that might have state problems...er, no it wouldn't actually.
[09:57] <daf> carlos: I think I saw warnings about that
[09:57] <SteveA> and we can see if these requirements fit with what soyuz and rosetta need
[09:57] <daf> carlos: what does that mean, exactly?
[09:58] <SteveA> but, don't be afraid of just implementing something and saying "this works for me, but it isn't ideal"
[09:58] <carlos> daf: that you forgot a clauseTables
[09:58] <SteveA> better to have something crappy that works than nothing at all!
[09:58] <BradB> I'll start documenting it now.
[09:58] <SteveA> BradB: that's cool
[09:58] <carlos> --- orig/lib/canonical/launchpad/database/pofile.py
[09:58] <carlos> +++ mod/lib/canonical/launchpad/database/pofile.py
[09:58] <carlos> @@ -869,7 +869,8 @@
[09:58] <carlos>          '''
[09:58] <carlos>          sightings = POTranslationSighting.select('''
[09:58] <carlos>              POTranslationSighting.pomsgset = POMsgSet.id AND
[09:58] <carlos> -            POMsgSet.pofile = %d''' % self.id, orderBy='-datelastactive')
[09:58] <carlos> +            POMsgSet.pofile = %d''' % self.id, orderBy='-datelastactive',
[09:58] <carlos> +            clauseTables=('POMsgSet',))
[09:58] <daf> oh!!
[09:58] <carlos> daf: if you deactivate it, launchpad will break and you could fix it
[09:59] <daf> that's what it does
[09:59] <daf> ok, did you fix this particular error?
[09:59] <carlos> yes
[09:59] <carlos> it's waiting for pqm merge
[09:59] <daf> thanks
[09:59] <carlos> np
[09:59] <carlos> SteveA: I suppose the meeting is over, right?
[10:02] <carlos> ggrr
[10:02] <SteveA> yep.  thanks rosetta team
[10:02] <carlos> daf: could you wait for it until I have dinner?
[10:02] <carlos> SteveA: thank you, see you tomorrow
[10:02] <daf> SteveA: thanks
[10:26] <dilys> Bug 2019 resolved: Investigate smart linkification in Changelog
[10:26] <dilys> https://bugzilla.warthogs.hbd.com/bugzilla/show_bug.cgi?id=2019
[10:46] <BradB> SteveA: going for the no-brain status message solution instead for now. :) surviving redirects (which is the use case here) just fried my brain.
[11:15] <carlos> did anyone changed the postgres configuration as stub suggested?
[11:15] <carlos> I broke my postgres :-(
[11:17] <daf> no, I haven't done it yet
[11:17] <daf> is it easily fixable?
[11:17] <BradB> Worked fine for me.
[11:18] <carlos> my postgres has died
[11:18] <carlos> and I'm not able to launch it again
[11:18] <carlos> carlos@frodo ~/Work/dists/launchpad/database/schema $ sudo /etc/init.d/postgresql start
[11:18] <carlos> Starting PostgreSQL database server: postmaster(FAILED)
[11:18] <carlos> ERROR: /usr/lib/postgresql/bin/postgresql-startup: command substitution: line 146: syntax error near unexpected token `)'
[11:18] <carlos> /usr/lib/postgresql/bin/postgresql-startup: command substitution: line 146: `cat $PGDATA/postmaster.pid | head -1)'
[11:19] <carlos> I'm scared...
[11:24] <kiko> lol
[11:25] <BradB> He's got a different postgresql-startup file than me
[11:26] <BradB> Anyone know the magic going on behind the scenes that brings me back to the bugs index page after I add a bug? Is that something Z3 somehow magically does? I can't find the applicable redirect anywhere.
[11:49] <cprov> lifeless: help on baz ? I'm getting INVALID SIGNATURE ON REVISION! on star-merge
[11:49] <carlos> daf: ping
[11:49] <daf> pong
[11:50] <carlos> daf: I'm having a really rare error with functional tests...
[11:50] <Kinnison> cprov: did you remove tla? If so, update your .arch-params/signing scripts to use bazaar-gpg-check instead of tla-gpg-check
[11:50] <carlos> and I'm not able to commit my changes because that
[11:50] <daf> what's the error?
[11:50] <carlos> the worst part is that it's outside my code changes...
[11:50] <carlos> all tests fail with:
[11:50] <carlos>  raise schema.ValidationError(v)
[11:50] <carlos> ZopeXMLConfigurationError: File "/home/carlos/Work/dists/launchpad/ftesting.zcml", line 9.4-9.35
[11:50] <carlos>     ZopeXMLConfigurationError: File "/home/carlos/Work/dists/launchpad/lib/canonical/configure.zcml", line 77.4-77.45
[11:50] <carlos>     ZopeXMLConfigurationError: File "/home/carlos/Work/dists/launchpad/lib/canonical/launchpad/configure.zcml", line 5.2-5.48
[11:50] <carlos>     ZopeXMLConfigurationError: File "/home/carlos/Work/dists/launchpad/lib/canonical/launchpad/zcml/configure.zcml", line 9.4-9.35
[11:51] <carlos>     ZopeXMLConfigurationError: File "/home/carlos/Work/dists/launchpad/lib/canonical/launchpad/zcml/project.zcml", line 40.4
[11:51] <carlos>     ConfigurationError: ('Invalid value for', 'class', 'Module canonical.launchpad.browser has no global ProjectView')
[11:51] <carlos> Ran 86 tests in 524.805s
[11:51] <carlos> FAILED (errors=63)
[11:51] <daf> ?!
[11:51] <carlos> I'm not able to broke so many tests at the same time...
[11:51] <carlos> daf: the file seems to be correct
[11:51] <cprov> Kinnison: fantastic .. you got it !
[11:51] <carlos> so I don't have any idea about how could I fix it
[11:51] <daf> s/broke/break/
[11:52] <carlos> daf: thanks
[11:52] <daf> if you "tla undo", do you still get the same error?
[11:52] <carlos> daf: I have my changes already in my tree
[11:53] <carlos> committed
[11:53] <daf> wooo! woo! list.sorted()
[11:53] <daf> ah, hmm
[11:53] <Kinnison> cprov: I hit that one myself last night :-)
[11:54] <daf> carlos: is there a canonical.launchpad.browser.ProjectView?
[11:54] <carlos> yes
[11:54] <cprov> Kinnison: ehe, thanks
[11:54] <carlos> the error does not makes sense ...
[11:54] <daf> >:-/
[11:55] <carlos> the terminal buffer is not big enough, need to rerun it