Common Linux Single-Build InstallationΒΆ

The default Linux package contains libraries built to be maximally-compatible with Linux-based systems. It is built specifically to take advantage of the Linux cross-version compatibility guarantees in such a way that the Python package will run on many common Linux platforms.

This distribution is built on the oldest version of Linux supported by OpenEye. This means that the libraries will only depend on older Linux system functions (e.g. libc). Since Linux guarantees forwards compatibility, the distribution will work across many modern Linux systems.

The distribution is built using a later g++ compiler toolchain. This allows us to take advantage of optimizations and language features available in later g++ compiler versions (we’re not tied to the g++ from the oldest Linux OS). This does create a new dependency on later versions of C++ runtime libraries (libstdc++.so, libgcc_s.so, libgomp.so), however this is only a potential issue on RedHat 6.

For a PIP installation on RedHat6, the default behavior is to install a package built against an older gcc version. This version is maximally compatible with a default RedHat6 system.

One can control the behavior of the pip meta-package installer using the OE_PIP_ARCH environment variable before executing the pip install command. One can set the OE_PIP_ARCH value to the exact desired distribution or to the special value old, which will always download a version built exactly on the current platform, if available. On Linux the single-build distributions include the string linux-x64 in the name, so a pip list can be used to identify whether a single-build or platform-specific distribution has been installed.

Note

In previous toolkits, OE_ARCH was used by the installer for both Python packages and applications. This caused confusion since the platform names could be different for the applications and the Python packages on a platform. Now OE_ARCH is used exclusively by the applications and OE_PIP_ARCH is used exclusively by the Python toolkits.

On RedHat6, if there is a runtime libstdc++ issue, it will typically result in a runtime error message containing either GLIBCXX or CXXABI, as in the following example:

/usr/lib/x86_64-linux-gnu/libstdc++.so.6: version 'GLIBCXX_3.4.19'
not found (required by python)

By default, the PIP installation on RedHat6 will install a version of the python toolkits built using an older gcc compiler so this issue will not arise. Within a conda environment, one can install the libstdcxx-ng conda package, available from the main anaconda channel, to install a later set of g++ runtimes in the current conda environment.