Open-source Languages & Tools for z/OS

 View Only

 CEE3501S The module /u/tech905/.ffi/v_P.so was not found. - and many others with miniconda

Tom Longfellow's profile image
Tom Longfellow posted 01-04-2022 15:03
I tried miniconda back in October and have been forced into looking at it again
Install went clean - using public server (I hope - no way to confirm)

conda list shows me packages from condaserver.rocketsoftware.com/apu/repo

Trying to create an environment --- everything goes sount with lots of not found message for the .so files
like 
CEE3501S The module /u/tech905/.ffi/v_P.so was not found.

the .ffi related messages happen for a lot of conda functions and the conda list shows a url that i think requires a login 
How the heck to I get this to work?

The instructions are not helpful at all -  just saying 'confirm the installation directory and channel'    
I do not even know where these are stored or what they are supposed to look like.   Rather than give working examples or a cookbook they wave their hands and refer me to general conda documentation that does not know z/OS from a hole in the ground

This is INSANE
Tatiana Balaburkina's profile image
ROCKETEER Tatiana Balaburkina
Hi Tom,
We are sorry to hear that you didn't find Miniconda installation experience satisfying. The issue you mentioned about missing .ffi folder was discussed and explained several times on this forum.
Here is the explanation:
It's related to how FFI (foreign function interface) works in Python on z/OS. Internally, Python uses libffi to perform the actual work of making FFI calls. For every such call, libffi loads a DLL (an .so file) corresponding to the signature of the function being called. Libffi itself is bundled with a number of pre-built DLLs, located in the lib/ffi subdirectory of the package. This directory, however, is only 'plugged in' when the environment is activated, or, alternatively, when FFI_LIB is set up manually.
If there's no FFI_LIB, libffi cannot 'see' the built-in signatures, and any FFI call presents it a 'new', unknown signature. In such situations, it builds the corresponding DLL on-the-fly and places it into the directory $HOME/.ffi - this is like a personal cache of new FFI DLLs. DLLs are built using XLC, which means you need to be able to run it. If XLC fails for whatever reason, it will result in CEE3501S like Greg was seeing.
When you start conda in OMVS, it's easy to hit this because OMVS storage is limited by TSO region, which is often too small. XLC requires quite a lot of storage, and with a small TSO region, CEE3501S will be all you'll get.

As a workaround, you can set environmental variable FFI_LIB to $CONDA_PREFIX/lib/ffi.

Our team is working on documentation improvements for all our ported portfolio. It will also include a troubleshooting page.
In a few weeks it will be possible to install ported tools via SMP/e without Miniconda. This option as well as individual assistance with installation process will be available for customers with support contract for Rocket Open AppDev for Z 
Tom Longfellow's profile image
Tom Longfellow
Thanks for the kind response.
My searches of the forum failed to find any .ffi  threads that I could relate to my problem.   I did see several threads talking about install problems.
Several references to 'sorry, its a problem with how z/OS Python works'   and 'try this'.

While your team is updating documentation, why not have them try to complete an install for themselves.  Or better yet, have a knowledgeable z/OS person try it.  The errors I have been having would have exposed themselves very quickly.   After all, as you said, this has been discussed in several threads.   Adequate testing on a real z/OS system might have avoided some of those threads and the frustrated users behind them.   If you are writing Open Source for z/OS, it might be nice to actually try to run it under z/OS for practice.

I will try to set the environment variable as you suggested, but the project has been delayed because of this and other customization issues.
Tatiana Balaburkina's profile image
ROCKETEER Tatiana Balaburkina
Tom, I want to ensure you that the software that we release pass all QA verification steps, including installation testing. The main criteria for QA metrics is the feedback from customers with support contract, and none of them reported an installation issue.
Please, check the documentation:
To install Miniconda on z/OS, complete the following steps: 
1. Login to your z/OS system using ssh client (e.g. PuTTy) and change directory to the path where you saved Miniconda installation files. ...
Could you confirm that you have read documentation and call conda commands from USS and not from OMVS?
Tom Longfellow's profile image
Tom Longfellow
I do tend to switch back and forth between OMVS and USS.   I have gone back to my original downloaded miniconda file and reinstalled to a new directory.  Using only Putty and USS.

I don't see any of my original .ffi messages.   I am still afraid to pull the trigger on an environment create  because I have not seen how to direct the installed packages to a specific path.   I want to install the packages to a known directory that I can include in my PATH statement or have some procedure that would install the symbolic links to the installed packages.   

I ran one install and it said it was successful, but I have no idea where the code went.

Any clue on where I should look?  or how I can direct it where I want to go?
Tatiana Balaburkina's profile image
ROCKETEER Tatiana Balaburkina
Tom,
We are glad to hear that installation completed without error when it was done according to documentation. By default all environments will be created and packages will be installed into Miniconda installation directory that you chose on the first step of installation.

If you would like to specify another location and do additional experiments with environments, it is possible and conda documentation helps with that.
In case of any issues caused by undefined use cases and not related to z/OS we recommend reaching out to conda community.

Rocket team can also help to adapt Ported tools to specific requirements of your environment within our support offer.

Best regards,
Tatiana