[10:57] <tomwardill> sigh, ssl
[11:01] <ilasc> sigh, Turnip unit tests :)
[11:06] <tomwardill> at that stage of 'how did it ever work'
[11:11] <ilasc> :( same here, except I know how.... I commented out unit tests and now: "Ran 246 tests in 27.055s OK", that's how it worked :)
[11:11] <ilasc> *my* unit tests
[11:11] <tomwardill> I'm trying to work out how the dev certificate ever worked
[11:13] <ilasc> hmmm tough one to debug ..
[11:14] <cjwatson> tomwardill: I thought there was some commentary about how that was put together
[11:14] <tomwardill> cjwatson: there's a script for it
[11:14] <cjwatson> Right
[11:14] <tomwardill> I've successfully altered and used the script
[11:15] <tomwardill> but this morning, another cert generated using the script doesn't work
[11:15] <cjwatson> Peculiar
[11:16] <tomwardill> yeah
[11:16] <tomwardill> I'm sure I've done something silly somwhere
[11:25] <SpecialK|Canon> I guarantee I've done something silly somewhere
[11:25] <SpecialK|Canon> (What were we talking about?)
[11:27] <cjwatson> Incidentally, I've got the test suite to start up on Python 3.  15000 lines of diff or thereabouts, so I'll be trickling in various MPs over time
[11:27] <cjwatson> Whole hundreds of tests pass!
[11:27] <cjwatson> Let's quietly ignore the thousands that don't for now
[11:28] <ilasc> :)
[11:28] <ilasc> +1
[11:28] <SpecialK|Canon> cjwatson: niiiiice
[11:28] <cjwatson> (And I'm also going to be firmly putting this aside for a bit even though it's a fun toy, because there are a few other things I really need to get done)
[11:29] <SpecialK|Canon> can you dig^Wpush it in any useful form?
[11:29] <cjwatson> Not really yet, but certainly an aim
[11:30] <cjwatson> Well I mean I suppose I can throw the branch up on the understanding that it's all a pile of poo
[11:30] <cjwatson> https://code.launchpad.net/~cjwatson/launchpad/+git/launchpad/+ref/py3
[11:30] <SpecialK|Canon> git push origin here-be-dragons ;)
[11:30] <SpecialK|Canon> (fab, thanks :))
[11:31] <cjwatson> I will not be supporting this in any way shape or form for the moment :)
[11:31] <cjwatson> And it'll rebase freely
[11:32] <cjwatson> Oh also it relies on lazr.restful work that isn't pushed anywhere yet
[11:32] <cjwatson> That's more annoying to casually push because bzr
[11:32] <SpecialK|Canon> is there any expectation that branches are in any way supported?
[11:33] <SpecialK|Canon> er
[11:33] <SpecialK|Canon> that non-"mainline" branches etc. etc.
[11:33] <cjwatson> Well maybe not supported, but I mean "don't ask me questions about how to get it running"
[11:33] <SpecialK|Canon> right sure
[11:34] <cjwatson> My lazr.restful branch is https://code.launchpad.net/~cjwatson/lazr.restful/py3-declarations/+merge/378548 plus https://paste.ubuntu.com/p/nX9zfPPg4q/
[11:34] <cjwatson> The biggest remaining problem with lazr.restful is that it runs into cgi.FieldStorage bugs on Python 3 and I haven't worked out how to sort those out, especially since cgi.FieldStorage is going away in 3.9 or so
[11:35] <cjwatson> Makes it hard to get the test suite going properly
[11:35] <cjwatson> It's no doubt workaroundable somehow, just haven't spent the relevant time on it
[11:37] <cjwatson> Oh and also https://code.launchpad.net/~cjwatson/lp-source-dependencies/+git/lp-source-dependencies/+ref/py3 for dependencies
[11:58] <SpecialK|Canon> tomwardill: iirc you asked something about Buildbot versions a while back?
[11:59] <SpecialK|Canon> tomwardill: I know ~0 about Buildbot but I did just clock that we're running 0.8.5 and latest stable is 2.6.0
[11:59] <tomwardill> well, that's fun :)
[12:01] <SpecialK|Canon> (I know long-term we're looking at a variety of things we can/should do there, but part of me wonders about the ROI on even a small version bump?)
[12:10] <cjwatson> SpecialK|Canon: This is more a function of praseodymium still running precise than anything else
[12:11] <cjwatson> (We run distro buildbot packages, or backports of them, I forget which)
[12:11] <cjwatson> We should at least get that upgraded to xenial; praseodymium is a weird and critical system that I have roughly 0 visibility into, which is more or less why we haven't
[12:13] <SpecialK|Canon> Makes sense, thanks
[12:15] <cjwatson> SpecialK|Canon: https://portal.admin.canonical.com/C110859 for history of the last major buildbot care-and-feeding work we did
[12:16] <cjwatson> And I suppose the superseded https://portal.admin.canonical.com/C106558 too
[12:17] <cjwatson> I think precise → xenial is likely rather less rough than lucid → precise was but I've never tested it ...
[12:17] <SpecialK|Canon> I can't find sluagh and radande on https://wiki.canonical.com/Launchpad/Instances - are they pining for the fjords?
[12:19] <cjwatson> That page doesn't really list build/test infrastructure
[12:19] <SpecialK|Canon> right ok
[12:20] <cjwatson> And indeed, there's probably more upgrade complication on the worker side
[12:21] <cjwatson> Due to the pre-release implementation of ephemeral containers that they're currently using
[12:21] <cjwatson> But hopefully 0.8.12 master and 0.8.5 workers can interoperate so we could decouple that upgrade?  Not sure
[12:23] <cjwatson> I'm unlikely to be able to look at it for ... a while, but would be happy to braindump what I know on somebody else if need be
[12:24] <cjwatson> Fortunately buildbot is such that we don't need continuous availability.  If the answer ends up being hold breath, upgrade, fix up on the other side, that may be workable as long as we're reasonably confident we'll be able to put the pieces back together
[12:25] <SpecialK|Canon> Is there an enumeration of "what buildbot does for us" anywhere?
[12:27] <SpecialK|Canon> I'm wondering to what extent we can avoid "a careful upgrade from a 2012 version" and just go for "drop it and go with something different, whether that's latest-stable buildbot or a Jenkins or similar"
[12:27] <SpecialK|Canon> I'm not suggesting we do the latter lightly, or that it's without risk/cost etc.
[12:30] <cjwatson> We're not wedded to buildbot if something else works.  The main thing is making sure that test runs don't get substantially slower, since they already take a long time; our current setup does careful IIRC 24-way parallelisation spreading tests across multiple containers on beefy-for-the-time machines
[12:30] <cjwatson> I have no idea how long it would take if we just did a naive implementation on current Jenkins/scalingstack, and those would be useful numbers to have
[12:30] <SpecialK|Canon> Ah, yes, I'd forgotten that nuance, thanks
[12:31] <cjwatson> We do have some automation around buildbot runs which deal with merging {master,db-devel} into {stable,db-stable} when their corresponding test runs pass, and merging master into db-devel when tests on master pass
[12:32] <cjwatson> That would be easy enough to reinvent on top of something else if we needed to
[12:32] <cjwatson> I don't think there's really anything else worth mentioning
[12:33] <cjwatson> I'd also say that I don't know of any problems particularly attributable to the old version of buildbot at the moment (we have buildbot unreliability in various ways, but AFAIK those are all due to bugs in the LP test suite, often related to parallel testing).  Do you?
[12:34] <cjwatson> Of course keeping tools current is a worthy goal in and of itself
[12:35] <cjwatson> And there are possibly interesting things we could do with less basic tooling.  But just trying to get a sense of why you're asking
[12:36] <SpecialK|Canon> Oh sorry yes
[12:36] <SpecialK|Canon> Standard "can we make things easier/better by upgrading/removing this and what's the ROI like?@
[12:36] <SpecialK|Canon> *"
[12:37] <SpecialK|Canon> And I was reminded of buildbot now I'm on canonical-launchpad and get emails about failures
[12:40] <cjwatson> I think I fixed one of the main sources of buildbot unreliability in https://github.com/testing-cabal/txfixtures/pull/13 + https://code.launchpad.net/~cjwatson/launchpad/+git/launchpad/+merge/379456
[12:41] <SpecialK|Canon> Ah yes I saw that - nice
[12:41] <SpecialK|Canon> Just to be clear I'm not saying I think buildbot is unreliable, just that the emails prompted me to go looking at it
[12:44] <cjwatson> The remaining ones seem to be lp.services.job.tests.test_celeryjob.TestRunMissingJobs.test_run_missing_ready_does_not_return_results (e.g. http://lpbuildbot.canonical.com/builders/lp-db-devel-xenial/builds/865/steps/shell_9/logs/summary), lp.buildmaster.tests.test_interactor.TestSlave failing in various ways (e.g. ...
[12:44] <cjwatson> ... http://lpbuildbot.canonical.com/builders/lp-db-devel-xenial/builds/864/steps/shell_9/logs/summary, http://lpbuildbot.canonical.com/builders/lp-db-devel-xenial/builds/860/steps/shell_9/logs/summary), lp.testing.layers.RabbitMQLayer:setUp timing out (e.g. http://lpbuildbot.canonical.com/builders/lp-devel-xenial/builds/1052/steps/shell_9/logs/summary)
[12:45] <cjwatson> And to be fair there is one thing that is an issue with buildbot, although it was triggered by upgrading zope.testrunner; buildbot has an old version of subunit that doesn't understand the much more robust v2 protocol, so it sometimes raises exceptions when trying to parse the subunit output from builds, which is v annoying
[12:46] <cjwatson> All the remaining issues are hard to reproduce locally or I'd have fixed them already ;-)
[12:47] <cjwatson> But if any of us ever happen to run across one of them locally, and we aren't dealing with some kind of seriously urgent fire at the time, then I'd urge dropping everything else to take the opportunity to figure it out - it will pay off
[12:50] <SpecialK|Canon> Neat, cheers
[12:53] <cjwatson> I think upgrading praseodymium to xenial would let us fix the subunit thing.  Probably
[15:07] <tomwardill> gah, sigh
[15:07] <tomwardill> still had a py3 virtalenv in my turnip instance
[15:07] <tomwardill> this did not end well
[15:08] <tomwardill> or infact, start well
[15:37] <cjwatson> Would anyone be up for reviewing this small series?  https://code.launchpad.net/~cjwatson/lp-source-dependencies/+git/lp-source-dependencies/+merge/379682 https://code.launchpad.net/~cjwatson/launchpad/+git/launchpad/+merge/379683 https://code.launchpad.net/~cjwatson/launchpad/+git/launchpad/+merge/379684
[15:37] <cjwatson> I believe it should significantly improve our deployment speeds
[15:39] <cjwatson> This is sort of as discussed in the Tuesday weekly meeting a week or two ago: instead of worrying about making sure every deployment target can build wheels, arrange for a full set of wheels to be part of the deployment artifact
[15:40] <cjwatson> And entirely sidesteps the fact that pip's automatic wheel cache isn't relocatable
[15:42] <SpecialK|Canon> nice
[15:55] <cjwatson> Anyone object to me self-approving https://code.launchpad.net/~cjwatson/launchpad/+git/launchpad/+merge/379509 (six-xmlrpclib)?  It's big but basically mechanical
[15:57] <SpecialK|Canon> cjwatson: no objections - I skim-reviewed just for lightweight value
[15:58] <cjwatson> Thanks, I'll take that as sufficient and the test suite can find anything I might have missed
[15:59] <tomwardill> cjwatson: is it possible to login as someone when using 'make iharness'?
[16:00] <tomwardill> I'm getting a bunch of ForbiddenAttribute errors with pretty much everyting (including DistributionSet.getByName)
[16:01] <cjwatson> tomwardill: iharness uses execute_zcml_for_scripts, so logging in isn't usually necessary
[16:01] <tomwardill> hmm
[16:02] <cjwatson> Can I see your current code?
[16:03] <tomwardill> cjwatson: https://pastebin.canonical.com/p/7R5HG32NKK/
[16:03] <cjwatson> Oh, that's a known annoyance of iharness
[16:04] <cjwatson> If you just let the default REPL try to print things for itself then it wants to get at __dict__ of objects and the proxy tends to forbid that
[16:04] <cjwatson> But you can assign to variables, or you can do print(foo)
[16:04] <tomwardill> aha!
[16:05] <tomwardill> yep, print(ds_set.getByName('ubuntu')) works
[16:05] <tomwardill> thanks
[16:05] <cjwatson> Would be nice to work out a way to make that less irritating, but it's easy to work around once you know about it
[16:14] <cjwatson> Also https://code.launchpad.net/~cjwatson/lpjsmin/tox/+merge/379695 to start bringing another dependency into shape
[16:15] <cjwatson> And https://code.launchpad.net/~cjwatson/launchpad/+git/launchpad/+merge/379654 and https://code.launchpad.net/~cjwatson/launchpad/+git/launchpad/+merge/379657 are simple (and much shorter) import rearrangements
[16:19] <tomwardill> ooo, I've made a recipe
[16:19] <tomwardill> now to work out how to dispatch that
[16:20] <tomwardill> cjwatson: +1 to all
[16:20] <cjwatson> I haven't done the views for that yet IIRC, so that might be mildly tricky
[16:20] <tomwardill> the death of buildout makes me sad though
[16:20] <cjwatson> I suppose you can .requestBuild in harness
[16:20] <tomwardill> yeah, that's why I'm in iharness poking things
[16:20] <cjwatson> Yeah, buildout was nice in its day
[16:21] <cjwatson> Even in 2014 I was still going "OK, how the hell do I get this thing to build", though
[16:21] <cjwatson> Not sure how much that's about buildout and how much about the way our projects use(d) it
[16:22] <tomwardill> https://pypi.org/project/isotoma.recipe.django/1.2.2/
[16:22] <tomwardill> I think that was everyone's response to buildout tbh
[16:23] <cjwatson> Then https://code.launchpad.net/~cjwatson/lpjsmin/py3/+merge/379696 makes it actually work on py3
[16:23] <cjwatson> Was short enough I didn't bother trying to split it up further
[16:25] <cjwatson> Yeah, recipes were quite nice when you found/wrote one tht worked
[16:45] <tomwardill> cjwatson: if I've done requestBuild() do I need to do anythign to process that and dispatch it?
[16:45] <tomwardill> (I've got LP running via 'make run' and have buildd-manager running)
[16:49] <cjwatson> tomwardill: transaction.commit()
[16:49] <cjwatson> tomwardill: But not otherwise; check buildd-manager logs to see if it's complaining about anything, e.g. a missing base image
[16:50] <tomwardill> ah, that is feasible
[16:50]  * tomwardill locates logs
[16:52] <SpecialK|Canon> Was playing with tomwardill's lp-btw (sorry I forgot the name already)
[16:52] <tomwardill> hmm, nothing in the buildd logs, the build appears to be in the state 'NEEDSBUILD'
[16:55] <cjwatson> tomwardill: the other trick here is to make sure you have at least one virtualised buildd
[16:55] <cjwatson> or it won't ever dispatch
[16:56] <tomwardill> aha!
[16:56] <tomwardill> that might be it
[16:56] <cjwatson> you can make it be fake-virtualised via a trick I forget
[16:56] <SpecialK|Canon> what's with all the relinking stuff we do with the rocketfuel* scripts?
[16:56] <cjwatson> (i.e. so it doesn't actually try to call ppa-reset)
[16:56] <tomwardill> 2020-02-24 16:56:09+0000 [QueryProtocol,client] exceptions.TypeError: ('Could not adapt', <OCIRecipeBuild ~name16/ubuntu/+oci/test-oci-project/+recipe/test-oci-recipe/+build/1>, <InterfaceClass lp.buildmaster.interfaces.buildfarmjobbehaviour.IBuildFarmJobBehaviour>)
[16:56] <tomwardill> looks like I have a bug!
[16:57] <SpecialK|Canon> yay!
[16:57] <cjwatson> Ah yes, configure builddmaster.vm_resume_command to /bin/true or something
[16:57] <cjwatson> SpecialK|Canon: relinking?
[16:58] <cjwatson> oh that
[16:58] <cjwatson> SpecialK|Canon: it was particularly good for bzr to avoid having a bazillion copies of dependency checkouts for every branch you ever had, but it's still handy for worktrees
[16:58] <SpecialK|Canon> naively it looks like it's reimplementing virtualenvs
[16:58] <cjwatson> no
[16:59] <cjwatson> it's for sourcecode/, which is not virtualenv
[16:59] <cjwatson> it's sort of more like codetree
[16:59] <cjwatson> (in fact I have an unreviewed MP somewhere to make it use codetree ...)
[16:59] <SpecialK|Canon> I recognise that the README says not to ask about sourcecode/
[16:59] <SpecialK|Canon> but uh
[16:59] <cjwatson> but the symlink stuff is to avoid having to have lots of checkouts
[17:00] <cjwatson> https://paste.ubuntu.com/p/kKftSPNTXM/
[17:00] <cjwatson> (let's leave aside that my primary worktree links into an old bzr directory ... I should fix that)
[17:01] <SpecialK|Canon> Don't we have lots of checkouts anyway? Isn't that what rocketfuel-get does just beforehand?
[17:01] <SpecialK|Canon> right, ok
[17:01] <cjwatson> To be fair there may well be cruft in rocketfuel-get; I don't use it much
[17:02] <cjwatson> But I think the idea is that after it pulls it goes around and updates all your worktrees (née branches)
[17:02] <cjwatson> Was more necessary with bzr
[17:04] <SpecialK|Canon> Actually sorry when you say "more like codetree"
[17:04] <cjwatson> https://code.launchpad.net/~cjwatson/launchpad/+git/launchpad/+merge/373737
[17:04] <SpecialK|Canon> I thought the primary value of codetree was for cross-language / cross-visibility stuff?
[17:04] <cjwatson> the relinking stuff isn't like codetree, but sourcecode/ in general is
[17:04] <SpecialK|Canon> vs. e.g. `pip install --editable`
[17:04] <SpecialK|Canon> ah ok
[17:05] <cjwatson> Not particularly; codetree is for cheap-and-cheerful vendoring-by-checkout
[17:05] <SpecialK|Canon> I very much enjoy the number of deleted lines in that MP!
[17:05] <cjwatson> With pinned versions
[17:07] <cjwatson> See https://git.launchpad.net/launchpad/tree/utilities/sourcedeps.conf, which you'll probably notice looks awfully like a codetree input file
[17:07] <cjwatson> (I think it was originally config-manager, back in the day)
[17:08] <SpecialK|Canon> https://bazaar.launchpad.net/~codetree-maintainers/codetree/trunk/view/head:/README.md#L14 I think you're right!
[17:08] <SpecialK|Canon> Oh wait you mean sourcedeps was
[17:08] <cjwatson> Well, both
[17:09] <cjwatson> It's possible the pile of stuff in lib/devscripts/ predates config-manager being a separate thing.  I haven't bothered to go back and dig through the history
[17:09] <cjwatson> But in any case, no point maintaining all of that in-tree IMO
[17:11] <cjwatson> It is separately true that everything in sourcecode/ (now that mailman is gone) could in principle be moved into the virtualenv, and that this would be an improvement
[17:12] <cjwatson> There are some details of bzr/brz plugins that I'm not sure about
[17:12] <cjwatson> So in that sense, yes, this is reimplementing virtualenv and should die
[17:13] <cjwatson> It's just a matter of working out all the details at this point
[17:14] <SpecialK|Canon> Nodnod - I hope it's clear I'm not suggesting it's easy/straightforward! Just trying to get a clearer understanding in terms of things I'm more familiar with
[17:15] <cjwatson> Yeah
[17:15] <cjwatson> loggerhead is https://bugs.launchpad.net/loggerhead/+bug/383360 / https://bugs.launchpad.net/loggerhead-breezy/+bug/1831661
[17:15] <mup> Bug #383360: Loggerhead doesn't declare its dependencies in setup.py <easy> <loggerhead:Triaged> <loggerhead-breezy:Fix Released> <https://launchpad.net/bugs/383360>
[17:15] <mup> Bug #1831661: loggerhead can't reasonably be installed using pip due to self-import in setup.py <loggerhead-breezy:New> <https://launchpad.net/bugs/1831661>
[17:15] <cjwatson> I'm hoping old_xmlplus and pygettextpo can go away; I have a semi-tested patch to convert the latter to Babel
[17:16] <cjwatson> For the former, I think I was complaining the other day about how painful it was to parse XML DTDs in Python; that's why
[17:16] <cjwatson> Some of the others relate to work jelmer has been doing to build more previously-in-plugins functionality directly into breezy
[17:17] <cjwatson> (I'm explaining in detail here since I hope somebody will be enthusiastic about picking up some individual part of the puzzle ...)
[17:18] <SpecialK|Canon> Could you explain in detail in a LP bug / Trello card please? I'm enthusiastic but also timeslices...
[17:19] <cjwatson> https://bugs.launchpad.net/launchpad/+bugs?field.searchtext=sourcecode :)
[17:19] <SpecialK|Canon> touche ;)
[17:19]  * SpecialK|Canon needs to sort out his compose key
[17:32] <tomwardill> ooh, it tried to dispatch a build
[17:32] <tomwardill> but failed because the builder is missing some configuration
[17:50] <tomwardill> cjwatson: my buildd manager / buildd appears to have got itself stuck in 'cleaning', despite me restarting everything (I think)
[17:50] <tomwardill> oh wait
[17:50] <tomwardill> literally as I type that, it does a thing
[17:50] <tomwardill> "Scanning 10.104.9.248 failed with: builder_proxy_auth_api_admin_secret is not configured."
[17:54] <cjwatson> Right, probably in a slightly inappropriate timeout loop or similar
[17:54] <tomwardill> whereabouts should I put that configuration?
[17:55] <cjwatson> configs/$LPCONFIG/launchpad-lazr.conf
[17:57] <tomwardill> oh, it's LP side, not buildd side?
[18:01] <cjwatson> tomwardill: Yep
[18:01] <cjwatson> buildd-manager contacts the snap proxy to get a token to dispatch to the builder
[18:01] <tomwardill> aaah, right
[18:02]  * tomwardill configures, restarts everything, waits for it to wake up
[18:02] <cjwatson> It's complex to set up at the moment; if you don't have it there already then you could just unset builder_proxy_host?
[18:02] <cjwatson> But maybe you have it
[18:03] <tomwardill> aah, I don't have it, so yeah, that makes most snese
[18:03]  * tomwardill waits more