java-smt
java-smt copied to clipboard
Properly defined platform for our native binaries
Currently it is not properly defined which versions of standard libraries we assume for the native binaries we ship, i.e., on which distributions in which versions these binaries are usable. This is bad for users and for developers.
We should decide on a set of libraries and versions that we allow as dependencies. The Python community has a similar problem for Python libraries with bundled native binaries, and has established the manylinux2010 platform. Binaries built for this platform are expected to run on almost all current Linux distributions. Thus I suggest we adopt this platform and the set of libraries and versions it defines.
After this is decided, we should create a proper way to build our binaries automatically that ensures this compatibility, e.g., by a scripts using the official manylinux2010 Docker image or a VM (would also fix #74).
We might aim towards using Ubuntu 18.04
as a basic platform for building and executing our solvers. Some users currently have Ubuntu 16.04
that has LTS until 2021. This version could also be chosen as a basic system. With the upcoming change towards Java 11
older systems (including even Ubuntu 16.04
) might also get out-of-scope.
Additionally, we might want to remove any code that was especially added for older platforms.
For example, our MathSAT5 library seems to be build for and run on Ubuntu 10.04
.
I do not expect someone to use such an old system any longer.
I would not require something as new as Ubuntu 18.04. Java 11 is easily installable on Ubuntu 16.04 with a PPA. Users will want to use JavaSMT on StarExec, which is probably even older, and this platform is an important use case.
And what benefit would we have of requiring something newer? If we have a properly defined platform (which we need anyway) than we need to build it using that platform, and it does not produce more effort if that platform is older or newer.
So why not use something like manylinux (currently available as manylinux2014)?