/srv/irclogs.ubuntu.com/2014/07/25/#ubuntu-mir.txt

=== shuduo_afk is now known as shuduo
RAOFGrr. Our plugins are really arse-backwards.03:18
dufluRAOF: We have plugins?03:51
dufluPlatform libraries?03:52
RAOFduflu: Indeed.04:02
RAOFGargh. std::shared_ptr: All the downsides of garbage collection, but without the upside that references are guaranteed to be valid :(04:03
=== chihchun_afk is now known as chihchun
RAOFOh, right.06:25
RAOFYou can't use shared_ptrs to keep dlopened libraries in scope.06:27
anpok_hum?06:30
RAOFWell, automatically.06:31
RAOFIf you try and keep the library your code is in loaded by keeping a shared ptr to it, then you'll lose.06:32
RAOFBecause when the last reference to, say, your ClientPlatformFactory goes away, ~shared_ptr() gets called, which calls your destructor, which calls the destructor of your shared_ptr<mir::SharedLibrary> which dlcloses your library.06:33
RAOFWhich is all perfectly fine as far as we go...06:33
RAOFBut ~shared_ptr doesn't end there! It then needs to clean up its own stuff.06:33
RAOFBut you've just unloaded the library containing your particular template instantiation of shared_ptr.06:34
RAOFHilarity ensues.06:34
anpok_but the shared_ptr<void*> of your library is entirely defined by the loader of that library06:35
RAOFThis is not necessarily the case.06:42
RAOFOr, rather, this is clearly not the case here.06:42
RAOFOh, hm...06:44
anpok_we need to change default visiblity to hidden?06:44
RAOFOr possibly the other way 'round.06:46
RAOFOh, but it's not using shared_ptr<void*>. It's calling shared_ptr<mir::client::ClientPlatformFactory> which *is* only defined in the dso you've just unloaded.06:46
anpok_ohhh06:50
RAOFWhich is rather annoying :)06:53
anpok_it worked becaus it was never unloaded?06:57
RAOFYes.07:15
RAOFOr, rather, we didn't bother trying to handle lifecycle, and just kept a reference around in a global.07:15
RAOFHuh. If we built the android platform with clang it'd be failing.07:55
RAOFOh, of course. If you build the android client platform on x86-64 then it is indeed loadable, and doesn't do what you want :)08:07
alf_alan_g: hmm, "libmircommon-dev:armhf (0.6.0bzr1792pkg0utopic5+autopilot0) breaks mircommon-dev and is installed"08:53
alan_galf_: quite08:54
alan_ghttps://code.launchpad.net/~afrantzis/mir/fix-mircommon-debian-replaces/+merge/228247/comments/55251808:54
alan_galf_: let me try something08:54
* alan_g looks for the dpkg command for "--no-install-recommends"08:55
alf_alan_g: perhaps breaks needs a version clause (e.g. < 0.6) to work as intended08:56
alan_galf_: no it doesn't (that worked before RAOF corrected it)08:57
alan_gHmm "Recommends is ignored by dpkg" - so that isn't it08:58
=== renato is now known as Guest59000
* alan_g updates the build scripts in the hope he knows what he's doing09:02
alan_gRats!09:15
alan_gdpkg: dependency problems prevent configuration of libmirclient-dev:armhf:09:15
alan_g libmirclient-dev:armhf depends on libmircommon-dev (= 0.6.0bzr1800pkg0utopic3688+autopilot0); however:09:15
alan_g  Package libmircommon-dev:armhf is not installed.09:15
alan_gdpkg: error processing package libmirclient-dev:armhf (--install):09:15
alan_g dependency problems - leaving unconfigured09:15
alan_gSetting up libmircommon1:armhf (0.6.0bzr1800pkg0utopic3688+autopilot0) ...09:15
alf_alan_g: hmm, https://wiki.debian.org/Renaming_a_Package seems relevant09:17
alan_gCan you add "Provided: mircommon-dev"?09:17
alf_alan_g: yes, trying that09:18
alf_alan_g: pushed09:20
* alan_g wonders if there's an easy way to co-ordinate the build and test jobs.09:21
alan_gIt is still odd how many -dev packages are installed in the test environment setup ... I wonder why they are pulled in.09:30
alan_galf_: how does setting the attribute to "default" change anything? (Surely it picks up the changed default?)10:51
alf_alan_g: "default" means public in this context :)10:53
* alan_g finds that confusing10:55
alan_gI'd prefer an approach that controls everything in the .symbols file. (But I don't know how possible it is.)10:56
alan_gcamako: FIY I'm trying out a version of the mako test runner scripts with added timestamps ... lp:~alan-griffiths/+junk/mir-medium-test-runner-for-jenkins/11:38
camakoalan_g, sounds good11:39
camakoalan_g, is there a way to start a jenkins review on demand?11:44
alan_gcamako: It is possible to edit the "Rebuild" parameters of jobs, so you might be able to fake it that way.11:46
alan_gOK I've concluded my changes to the scripts are benign so I'm pushing them11:50
alan_gLook for [timestamp] in e.g https://jenkins.qa.ubuntu.com/job/mir-mediumtests-runner-mako/2194/consoleText11:53
=== alan_g is now known as alan_g|lunch
=== alan_g|lunch is now known as alan_g
alan_galf_: Just guessing but maybe "Provides" needs "(= 0.5.0+14.10.20140724-0ubuntu1)"13:03
alf_alan_g: I think the issue is with Breaks vs Conflicts, I've changed to Conflicts to try this out.13:04
alf_alan_g: http://s-jenkins.ubuntu-ci:8080/job/mir-mediumtests-utopic-touch/1079/console13:04
alan_gSo just reverting -c 178913:06
alf_alan_g: Right, my understanding is that if we wanted to go with Breaks+Replaces, we would need to add a transitional mircommon-dev package13:10
* alan_g wonders: if that is true how did -c 1789 land?13:11
* alan_g decides to go back to looking at which symbols are^bshould be exported from each library13:12
alf_alan_g: Not sure, possibly versioned Breaks clauses are treated differently?13:13
* alan_g isn't sure anyone understands this stuff. He got wildly different answers from different "experts" none of which actually solved the problem.13:16
alf_alan_g: Was there a problem with pre r1789 (i.e. what I am trying out now)?13:18
alan_gOnly that RAOF thought it was "wrong" and had a "I swear this is right" incantation13:19
alan_ghttps://code.launchpad.net/~raof/mir/fix-unnecessary-virtual-package/+merge/227862 "This really, really is the correct packaging incantation"13:20
alf_Perhaps then, we just need to use Breaks+Replaces with (<< 0.6~), I will try that next13:21
kdubci traffic jam13:26
alan_gPerhaps13:26
alan_gkdub: https://code.launchpad.net/~afrantzis/mir/fix-mircommon-debian-replaces/+merge/228247 is the one to watch. (Once alf_ gets a working incantation)13:27
kdubah, ack13:27
alan_gkdub: is there any reason for putting Fd in libmirclient? Putting it in libmircommon seems logical to me.13:29
kdubit should be in mircommon, let me check13:30
kdubalan_g, so it is in src/shared/fd13:37
kdubI'm slightly confused about what was noticed as well :)13:38
alan_gkdub: sorry, I jumped to a conclusion but...13:38
alan_g$ nm -Co lib/libmir*.so | grep "[BT] mir::Fd" | cut --fields=1 --delimiter=: | uniq -c13:38
alan_g     10 lib/libmirserver.so13:38
alan_gI guess that should get swept up with my other fixes to libmircommon13:39
alan_g%s/alan_g/sisyphus/g13:41
kdublol13:46
alan_gkdub: in the fix-libmircommon branch it is in the right place. Sorry to have bothered you.13:53
kduboh, no problem13:53
alan_gcamako: in answer to you're earlier Q: if you're signed into jenkins (has to be over the VPN) then you can go to the http://s-jenkins.ubuntu-ci:8080/job/mir-team-mir-development-branch-ci/ and select "Build Now". After that fill in the branch, revision and MP.14:05
camakoalan_g.. sweet. (I got my VPN account so I can see it)14:07
alan_gcamako: if you're only interested in one of the individual jobs then you can go to the corresponding page and start it there14:12
alan_gYou don't get a review, but you can see the results on Jenkins14:12
camakoalan_g, yeah I'm playing with all that14:13
alan_gRemember to use your new powers for good and not clog the system14:13
=== alan_g is now known as alan_g|ea
=== alan_g|ea is now known as alan_g|tea
racarr_Morning14:41
=== alan_g|tea is now known as alan_g
=== chihchun is now known as chihchun_afk
alan_galf_: this is what I meant about not seeing the need for the MIR_API macro: https://code.launchpad.net/~alan-griffiths/mir/fix-libmirclient/+merge/22833615:48
=== dandrader is now known as dandrader|afk
=== alan_g is now known as alan_g|EOW
kdubracarr_, if I run XCursorLoader unit test on the device with "./mir_unit_tests", I get a segfault, is there an incantation to avert that?17:34
racarr_kdub: -.- weird...um17:48
racarr_kdub: Maybe you didnt copy over the tresting17:48
racarr_theme directory17:48
racarr_or the incantation I used17:48
racarr_was weird17:48
racarr_(it wont crash in the server without a theme...but maybe the test would)17:48
racarr_incantation in CMAke for setting the directory that is17:48
kdubit seems like I'm missing some files or something on the device17:49
kdubbecause CI isn't bothered by it17:49
racarr_kdub: tests/unit-tests/input/testing-cursor-theme17:50
racarr_kdub: cmake exports the location lol...so I guess17:51
racarr_actually cross compile doesnt quite work...17:51
racarr_I mean unless you put it in the same absolute path17:51
kdubah, okay17:52
kdubwell, i'll figure out a fix17:52
racarr_:) sorry about that...17:54
racarr_kdub: So I ended up going with the mg::BufferWriter interface...18:22
racarr_kdub: Do you think I should just make mga::AndroidGraphicBufferAllocator implement it to avoid sharing the gralloc_module_t18:22
racarr_not sure how much benefit there is in keeping the gralloc module confined vs18:22
racarr_welll...obviously write is kind of a weird method on the allocator...18:23
racarr_but it could be like mga::GrallocAdapter : BufferWriter, BufferAllocator18:23
kdubracarr_, yeah, we'd have to find a good name for it, and then it would be duplicated between the client code and the server code18:23
kdubso probably best to shift the client mapping code to mircommon (android has a few classes like that already), and then use that on the server side18:24
racarr_hmm18:26
racarr_the GrallocRegistrar doesn't quite translate though because register_buffer18:26
racarr_isnt needed on the server right?18:26
racarr_I mean, I guess this shared class would be more of a18:27
racarr_than something with a specific role i.e. GrallocRegistrar or BufferAllocator18:27
kdubracarr_, it is, that's like mmap18:33

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