Bull Atos Technologies

AIX Open Source Archives


New website

Welcome to the new BullFreeware website.
Amongst bug fixes, the ZIP archives are now correctly generated with the right dependencies according to your AIX version.
If you experience any unexpected issue, please warn us through the contact page or by email to bullfreeware@atos.net.


Updated CMake

Starting with version 3.14.* (better with 3.14.3), CMake now correctly handles the specific requirements of AIX, like libtool does. Thus, building an application with CMake on AIX now generates lib*.a files containing lib*.so shared objects. The -bexpall, -G, and -brtl options are no more used by default. .exp export files, with -bE/-bI, can be used now. In some complex case, that requires to change the CMake files of the application. See the readme for more explanations.


bash v4.4-4

This new release fixes an issue that was there since ages: when root, the test "test -x file" was returning true (0) even if the file has no exec rights.


Python v2 and UCS2/UCS4.

From Python v2.7.12-2 to v2.7.15-3 , we have used unicode=ucs4 instead of ucs2 . For those using Python modules, that should generate issues at execution. We are now back to unicode=ucs2 with Python v2.7.15-4.


Compatibility with IBM LPP OpenSSL

IBM has recently updated/fixed its version of the openssl.base LPP: version (1.0.2o) .

This LPP delivers the OpenSource-named shared object files libssl.so.1.0.2 & libcrypto.so.1.0.2 (32 & 64bit), which is compatible with BullFreeware RPMs.

This LPP is available from IBM page "AIX Web Download Pack Programs" .

Pick: OpenSSL "Version 1.0.2.x" and install it ("smitty install").

This will fix the cases where LIPATH cannot solve interlaced requirements of libraries existing in both AIX and /opt/freeware, where libssl.a or libcrypto.a are involved.


Compatibility about OpenSSL libs between AIX and BullFreeware

The IBM official LPP openssl.base delivers the /usr/lib/libssl.a and /usr/lib/libcrypto.a libraries, from OpenSSL project.
However, up to now, the current version 1.0.2 was still delivered in the libssl.so.1.0.0 and libcrypto.so.1.0.0 files, which have a name incompatible with what the OpenSource world, and BullFreeware, deliver: lib*.so.1.0.2 .

Starting recently, they have decided to be more compatible. They now deliver the most recent versions of OpenSSL 1.0.2 in both files lib*.so.1.0.0 and lib*.so.1.0.2 , contained in file /usr/lib/lib*.a . This way, any executable/library provided by BullFreeware which requires libssl.a or libcrypto.a is now compatible with the IBM official libcrypto and libssl files.

This IBM new version of OpenSSL can be got from (you need to have/create an "IBM ID"):


Take: OpenSSL 1.0.2 for AIX 5.3, 6.1, 7.1 & 7.2

version >= (1.0.2o)

openssl- (34745160)

They now deliver:

# ar tv /usr/lib/libcrypto.a rwxr-xr-x 0/0 3050171 Jan 7 07:55 2018 libcrypto.so rwxr-xr-x 0/0 2186744 Jan 7 07:55 2018 libcrypto.so.0.9.8 rwxr-xr-x 0/0 3050171 Jan 7 07:55 2018 libcrypto.so.1.0.0 rwxr-xr-x 0/0 3050171 Jan 7 07:53 2018 libcrypto.so.1.0.2

where libcrypto.so libcrypto.so.1.0.0 and libcrypto.so.1.0.2 all contain the same 1.0.2o version.

We deliver:

# ar tv /opt/freeware/lib/libcrypto.a rwxr-xr-x 0/0 3639477 Jan 27 09:15 2017 libcrypto.so.1.0.2> rw-r--r-- 0/0 2012251 Jan 27 09:18 2017 libcrypto.so.0.9.7 rw-r--r-- 0/0 2491620 Jan 27 09:18 2017 libcrypto.so.0.9.8 rwxr-xr-x 0/0 2920785 Jan 27 09:18 2017 libcrypto.so.1.0.0 rwxr-xr-x 0/0 3486254 Jan 27 09:18 2017 libcrypto.so.1.0.1

where libcrypto.so.1.0.2 contains the most recent version of OpenSSL libcrypto 1.0.2 series.
Other versions (0.9.7, 0.9.8, 1.0.0, 1.0.1) provide compatibility for very old executables.

Mixing libraries from BullFreeware and libraries from AIX may lead to issues, due to the strict behavior of the AIX loader.

When an executable/library built by BullFreeware and using openssl is loaded, the AIX loader searches for libssl.a(libssl.so.1.0.2).

If /usr/lib/libssl.a is find first, with older versions of IBM AIX OpenSSL openssl.base LPP, then libssl.so.1.0.2 looks missing and, since the AIX loader, once he has found libssl.a in the LIBPATH, does not continue the search in other paths of LIBPATH but stops, the launch of the executable failed.

Now, that should work better.

One can have a look at what the AIX loader will do by using the "ldd" command or the "dump -Hv executable|library". See the "PATH" column, line 0. Use -X64 for 64bit files.

A work-around for older IBM LPP openssl.base is to add the BullFreeware libssl.so.1.0.2 file, extracted from /opt/freeware/lib/libssl.a, to /usr/lib/libssl.a . Same for 64bit, and same for libcrypto.so.1.0.2 .

We still have an issue with our openssl 1.0.2 versions, which were linked with -expall, like Perzl does, which means that our libssl.a library delivers symbols like strcpy, which add some mess. This has been fixed with openssl 1.1.0 (no more use of -expall).



A version 0.19.8 of gettext package has been uploaded on BullFreeware. This version was quickly replaced by by gettext project.

However, version 0.19.8 introduced new versions of libintl.so (libintl.so.9) and of other .so files that have been abandonned by version .

However, we have already built and uploaded several packages (gnupg2, krb5, libgpg, posgresql, python, python3, glib2, gnutls, guile) that now depend on libintl.so.9, which is wrong.

I plan to upload gettext, without support of 0.19.8 and libintl.so.9 soon, and I am rebuilding the packages from the above list, with issues.

If you encounter the message: "libintl.a(libintl.so.9) is needed by ..." or "libintl.a(libintl.so.8) is needed by ...", you have reached the mess.

The solution is to put in /opt/freeware/lib/libintl.a both libintl.so.8 and libintl.so.9 and (since dependencies are done by RPM based on data in its database rather than looking at the files) you'll have to use --nodeps (only when the last error message is: libintl.a(libintl.so.8/9) is needed by ...".


cd /tmp ; mkdir -p opt/freeware/lib/ # rpm2cpio gettext-0.19.8-1.aix6.1.ppc.rpm | /opt/freeware/bin/cpio -iv opt/freeware/lib/libintl.a --> opt/freeware/lib/libintl.a # ar xv opt/freeware/lib/libintl.a libintl.so.9 x - libintl.so.9 # ar q /opt/freeware/lib/libintl.a libintl.so.9 # ar -X64 xv opt/freeware/lib/libintl.a libintl.so.9 x - libintl.so.9 # ar -X64 q /opt/freeware/lib/libintl.a libintl.so.9

So, file /opt/freeware/lib/libintl.a contains file libintl.so.9 . However RPM relies only on its information stored in its DataBasePM.

So, we still have the error message:

# rpm -i postgresql-10.1-2.aix7.2.ppc.rpm error: Failed dependencies: libintl.a(libintl.so.9) is needed by postgresql-10.1-2.ppc

You have to do:

# rpm -i --nodeps postgresql-10.1-2.aix7.2.ppc.rpm

I'm working on fixing this mess.