From 8a420546a6434d180d4347a9f496fdf31ea63ffd Mon Sep 17 00:00:00 2001 From: ikappaki <34983288+ikappaki@users.noreply.github.com> Date: Wed, 6 Dec 2023 12:24:59 +0000 Subject: [PATCH] fix CircleCI shared lib issue with pypy 3.9 & 3.10 (#726) Hi, can you please review patch to fix circleci tests failing for pypy 3.9 and 3.10. It fails with the following error during poetry installation: ``` Installing Poetry (1.7.1): An error occurred. Removing partial environment. Poetry installation failed. See /root/project/poetry-installer-error-s__g4uo2.log for error logs. Exited with code exit status 127 ``` I guess there was a poetry change that somehow affected the virtual environment created by poetry during its installation. It is missing the pypy shared libraries and fails the installation with the following message (as taken from the log) ``` See /root/project/poetry-installer-error-24g4cn6z.log for error logs. /root/.local/share/pypoetry/venv/bin/python3: error while loading shared libraries: libffi.so.6: cannot open shared object file: No such file or directory Traceback: File "", line 923, in main File "", line 562, in run ``` I couldn't find a mention of this issue on the Internet. I've opted to sym link the pypy shared libraries to the venv and add it to the LD_LIBRARY_PATH so they are available at runtime. Thanks Co-authored-by: ikappaki --- .circleci/config.yml | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 6d184750..f1ecf4d9 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -17,6 +17,19 @@ commands: apt-get update && apt-get install -y python3 python3-distutils curl pip install -U pip virtualenv pip install tox + + # All of a sudden, the venv generated by Poetry + # installations for pypy 3.9 and 3.10 (but not 3.8), + # located at /root/.local, lacks all the lib*.so + # dependencies from the original pypy environment. To + # address this issue, we ensure these libraries are + # explicitly accessible in the LD_LIBRARY_PATH until a + # resolution is implemented. + mkdir -p /root/.local/lib + ln -s /opt/pypy/lib/lib*.so.* /root/.local/lib + export LD_LIBRARY_PATH="/root/.local/lib:$LD_LIBRARY_PATH" + echo 'export LD_LIBRARY_PATH="/root/.local/lib:$LD_LIBRARY_PATH"' >> $BASH_ENV + curl -sSL https://install.python-poetry.org | python3 - echo 'export PATH="/root/.local/bin:$PATH"' >> $BASH_ENV - run: @@ -68,4 +81,4 @@ workflows: jobs: - test-pypy-38 - test-pypy-39 - - test-pypy-310 \ No newline at end of file + - test-pypy-310