Re: Build versionless .so for Android
Matthias Kuhn <matthias@opengis.ch>
From: Matthias Kuhn <matthias@opengis.ch>
To: Peter Eisentraut <peter@eisentraut.org>
Cc: Robert Haas <robertmhaas@gmail.com>,
Michael Paquier <michael@paquier.xyz>, pgsql-hackers@lists.postgresql.org
Date: 2024-01-19T10:08:59Z
Lists: pgsql-hackers
Hi On Thu, Jan 18, 2024 at 9:27 AM Peter Eisentraut <peter@eisentraut.org> wrote: > On 14.01.24 12:37, Matthias Kuhn wrote: > > What I try to do is packaging an app with androiddeployqt which fails > > with an error: > > > > The bundled library lib/libpq.so.5 doesn't end with .so. Android only > > supports versionless libraries ending with the .so suffix. > > > > This error was introduced in response to this issue which contains hints > > about the underlying problem: > > > > https://bugreports.qt.io/plugins/servlet/mobile#issue/QTBUG-101346 > > <https://bugreports.qt.io/plugins/servlet/mobile#issue/QTBUG-101346> > > I think the scenario there is using dlopen(), possibly via Qt, possibly > via Java, so it's a very specific scenario, not necessarily indicative > of a general requirement on Android, and apparently not using build-time > linking. It's quite conceivable that this issue would also exist with > Qt on other platforms. > > I haven't experienced this issue with Qt on any other platform (and I build and run the same stack on windows, linux, macos and ios). Also the links posted earlier in this thread hint to the same limitation of Android, unrelated to Qt. > As I mentioned before, Meson has Android support. Some people there > clearly thought about it. So I suggest you try building PostgreSQL for > your Android environment using Meson and see what it produces.(*) If > the output files are the same as the autoconf/make build, then I would > think your scenario is nonstandard. If the output files are different, > then we should check that and consider changes to get them to match. > > It's of course possible that Meson is wrong, too, but then we need to > have a broader analysis, because the implicit goal is to keep the two > build systems for PostgreSQL consistent. > When trying to build with meson, including the patch which was provided by Andres Freud (thanks), I am currently stuck with the following error: Configuring pg_config_ext.h using configuration ../src/tgresql-16-685bc9fc97.clean/src/include/meson.build:12:0: ERROR: File port/android.h does not exist. Kind regards Matthias > > (*) - This means specifically that the installation trees produced by > "make install-world-bin" and "meson install" should produce exactly the > same set of files (same names in the same directories, not necessarily > the same contents). > >
Commits
-
Support shared libraries on Android (using make)
- 79b03dbb3304 17.0 landed
-
meson: Map host_system android to linux
- f4447af5b1a6 17.0 landed
-
meson: portname was set too early
- 4b4b3467ee36 17.0 landed
- 8b31b689f4db 16.2 landed