Yeah, the basic demos will be fine - they've got the RPATH linked in, and don't link against anything that links against the Mir libs. And since Mesa uses dlopen() that's also OK. So my concern is moot (at least until we have a demo that links against something that links against Mir ☺). We really do need something like this, though. When we build using cross-compile-chroot.sh all our tests are linked against the libraries in the chroot. For example, the ldd output of libmirserver.so: (utopic-armhf)root@RedTail:/home/chris/Canonical/Mir/mir/private-library-loading/build-android-arm# ldd lib/libmirserver.so /usr/lib/libeatmydata/libeatmydata.so (0xf5fcf000) libmirclient.so.8 => /home/chris/Canonical/Mir/mir/private-library-loading/partial-armhf-chroot/usr/lib/arm-linux-gnueabihf/libmirclient.so.8 (0xf5f8e000) libmirplatform.so.2 => not found libmircommon.so.2 => not found libglog.so.0 => /home/chris/Canonical/Mir/mir/private-library-loading/partial-armhf-chroot/usr/lib/arm-linux-gnueabihf/libglog.so.0 (0xf5f55000) libgflags.so.2 => /home/chris/Canonical/Mir/mir/private-library-loading/partial-armhf-chroot/usr/lib/arm-linux-gnueabihf/libgflags.so.2 (0xf5f2e000) libEGL.so.1 => not found libGLESv2.so.2 => not found libdl.so.2 => /lib/arm-linux-gnueabihf/libdl.so.2 (0xf5f1a000) libprotobuf.so.8 => /home/chris/Canonical/Mir/mir/private-library-loading/partial-armhf-chroot/usr/lib/arm-linux-gnueabihf/libprotobuf.so.8 (0xf5e68000) libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0xf5e45000) libboost_system.so.1.55.0 => /home/chris/Canonical/Mir/mir/private-library-loading/partial-armhf-chroot/usr/lib/arm-linux-gnueabihf/libboost_system.so.1.55.0 (0xf5e32000) libboost_program_options.so.1.55.0 => /home/chris/Canonical/Mir/mir/private-library-loading/partial-armhf-chroot/usr/lib/arm-linux-gnueabihf/libboost_program_options.so.1.55.0 (0xf5dd5000) libstdc++.so.6 => /home/chris/Canonical/Mir/mir/private-library-loading/partial-armhf-chroot/usr/lib/arm-linux-gnueabihf/libstdc++.so.6 (0xf5d1b000) libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0xf5ca7000) libgcc_s.so.1 => /home/chris/Canonical/Mir/mir/private-library-loading/partial-armhf-chroot/lib/arm-linux-gnueabihf/libgcc_s.so.1 (0xf5c7d000) libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0xf5b8e000) /lib/ld-linux-armhf.so.3 (0xf6fd7000) libmircommon.so.1 => /home/chris/Canonical/Mir/mir/private-library-loading/partial-armhf-chroot/usr/lib/arm-linux-gnueabihf/libmircommon.so.1 (0xf5b23000) libz.so.1 => /home/chris/Canonical/Mir/mir/private-library-loading/partial-armhf-chroot/lib/arm-linux-gnueabihf/libz.so.1 (0xf5b08000) libxkbcommon.so.0 => /home/chris/Canonical/Mir/mir/private-library-loading/partial-armhf-chroot/usr/lib/arm-linux-gnueabihf/libxkbcommon.so.0 (0xf5acc000) libudev.so.1 => /home/chris/Canonical/Mir/mir/private-library-loading/partial-armhf-chroot/lib/arm-linux-gnueabihf/libudev.so.1 (0xf5ab0000) libselinux.so.1 => /home/chris/Canonical/Mir/mir/private-library-loading/partial-armhf-chroot/lib/arm-linux-gnueabihf/libselinux.so.1 (0xf5a91000) librt.so.1 => /lib/arm-linux-gnueabihf/librt.so.1 (0xf5a7b000) libpcre.so.3 => /home/chris/Canonical/Mir/mir/private-library-loading/partial-armhf-chroot/lib/arm-linux-gnueabihf/libpcre.so.3 (0xf5a20000) The system libraries aren't a problem, but it's linking against the old Mir libraries as well, rather than those we want to test.