Xenial seems to have a LD_LIBRARY_PATH problem with Rust builds

Trusty is far too old an Ubuntu for the testing I need, I really need Bionic or later to get the versions of Ubuntu packages I need – I do not want to get into Docker unless absolutely necessary. However Xenial is what there is, albeit not yet formally available, so I am working round not having all the packages I need – at least it is GTK 3.18 which is an important version of GTK for my tests.

I have a Rust codebase (https://github.com/Me-TV/Me-TV). The build and tests run worked fine on the Trusty albeit with the wrong version of GTK (3.10 instead of 3.18). If I simply add “dist: xenial” to the .travis.yml file and do nothing else, the build fails unable to find one of the shared objects. Things worked fine in Trusty but not in Xenial. I am guessing that there is a difference in the pkg-config files or processing since the problem is clearly a shared object search path one.

When I added a suitable “export LD_LIBRARY_PATH=…” entry in the .travis.yml file the Xenial build works fine.

The three changesets:

show I think the Trusty works, Xenial fails, Xenial works with explicit LD_LIBRARY_PATH sequence with minimal changes.

I’m reviewing this issue, and I am a little perplexed as to how this worked in Trusty. Adding to LD_LIBRARY_PATH a directory expanded from a downloaded archive seems like the user’s responsibility. Maybe pkgconfig is performing some magic.