Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unable to dynamically download and install manifests - library not found/path issue #131

Closed
3 of 7 tasks
magnetikonline opened this issue Aug 14, 2020 · 5 comments
Closed
3 of 7 tasks
Labels
bug Something isn't working

Comments

@magnetikonline
Copy link
Contributor

magnetikonline commented Aug 14, 2020

Describe the bug
A clear and concise description of what the bug is.

Which version of the action are you using?

  • v1
  • v2
  • Some other tag (such as v2.0.1 or master)

Environment

  • self-hosted
  • Linux
  • Windows
  • Mac

Our self hosted runners are using a Ubuntu 18.04 base distro image.

Python Versions
Please list all of the effected versions of Python (3.8.2, etc.)

  • 3.7.5
  • But really, any version which is not installed already to our self hosted runners.

To Reproduce
Setup workflow with the following run action:

- name: Test Setup Python
   uses: actions/setup-python@v2
   with:
      python-version: '3.7.5'

The error received is:

Create Python 3.7.5 folder
Copy Python binaries to hostedtoolcache folder
Create additional symlinks (Required for the UsePythonVersion Azure Pipelines task and the setup-python GitHub Action)
Upgrading PIP...
##[error]./python: error while loading shared libraries: libpython3.7m.so.1.0: cannot open shared object file: No such file or directory
##[error]The process '/bin/bash' failed with exit code 127

This is the same deal with other editions, during install the Python library can't be located - I'm not sure if the issue lies with the Action itself, or the packaged Python installers from https://github.com/actions/python-versions that need modification.

I have been pre-loading specific Python versions to our self hosted runner - and in those cases I've been able to set LD_LIBRARY_PATH to get installs to take - not sure if this needs to be done by default for all manifests? Example, with a Python manifest downloaded and unzipped:

export LD_LIBRARY_PATH="/home/runner/_work/_tool/Python/3.7.5/x64/lib"
bash ./setup.sh

This will successfully install.

So I wonder, is the solution to append the installed library path to LD_LIBRARY_PATH in the context of ./setup.sh to provide a hint to pip where to locate required Python libs?

E.g. here: https://github.com/actions/python-versions/blob/ca3edf54460c3581d7285dd0fba82fa7d9215b6b/installers/nix-setup-template.sh#L51

Screenshots
If applicable, add screenshots to help explain your problem.

Screen Shot 2020-08-14 at 10 40 01 pm

Additional context
Feels somewhat related to #115

@magnetikonline magnetikonline added the bug Something isn't working label Aug 14, 2020
@rmileskcl
Copy link

Also getting this issue with Python 3.7.7

"Fixed" it with the following:

    steps:

    - name: Set Python environment variable
      run: echo '::set-env name=LD_LIBRARY_PATH::/tmp/runner/work/_tool/Python/${{ matrix.python-version }}/x64/lib'

    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v2
      with:
        python-version: ${{ matrix.python-version }}

@magnetikonline
Copy link
Contributor Author

Thanks @rmileskcl - yeah that would work and you're having the identical issue - but I ideally don't want to have to bootstrap workflows to fix it.

I feel like a corrected LD_LIBRARY_PATH could be set at https://github.com/actions/python-versions/blob/ca3edf54460c3581d7285dd0fba82fa7d9215b6b/installers/nix-setup-template.sh#L51 would solve this nicely.

Sadly does mean every manifest needs to be re-generated and published.

@magnetikonline
Copy link
Contributor Author

Just to update - I've added a proposed PR fix to change how the manifest installers run/install here: actions/python-versions#49

@magnetikonline
Copy link
Contributor Author

Now fixed against: 878156f

@polm
Copy link

polm commented Nov 3, 2020

Hello, the fix mentioned here seems to cause issues with other programs in the containers. In particular I ran into the issue that cloning git repos with https urls doesn't work; see below for details.

pypa/manylinux#812

I think the original LD_LIBRARY_PATH is getting lost at some point, is there some way to avoid that?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants