actions / setup-python

Set up your GitHub Actions workflow with a specific version of Python
MIT License
1.68k stars 539 forks source link

python <3.10 fails on macos-14 with `dyld: Library not loaded` #825

Closed mbway closed 6 months ago

mbway commented 7 months ago

Description:

When I run this pipeline:

name: MacOsTest

on:
  workflow_dispatch:

jobs:
  test:
    name: Test
    runs-on: macos-14
    steps:
      - uses: actions/setup-python@v5
        with:
          python-version: 3.9
          architecture: "x64"
      - name: print python version
        shell: bash
        run: python --version

It fails with:

##[group]Run actions/setup-python@v5
with:
  python-version: 3.9
  architecture: x64
  check-latest: false
  token: ***
  update-environment: true
  allow-prereleases: false
##[endgroup]
##[group]Installed versions
Version 3.9 was not found in the local cache
Version 3.9 is available for downloading
Download from "https://github.com/actions/python-versions/releases/download/3.9.18-5997508477/python-3.9.18-darwin-x64.tar.gz"
Extract downloaded archive
[command]/usr/bin/tar xz -C /Users/runner/work/_temp/7b7aa7f9-b410-4ff2-b594-96144647b304 -f /Users/runner/work/_temp/5160d17b-778d-4d38-8d2e-ff031e5fc513
Execute installation script
Check if Python hostedtoolcache folder exist...
Create Python 3.9.18 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]dyld[3814]: Library not loaded: /usr/local/opt/gettext/lib/libintl.8.dylib
  Referenced from: <E2FD7085-038F-3B8E-94C6-6649527BFDBE> /Users/runner/hostedtoolcache/Python/3.
##[error]9.18/x64/bin/python3.9
  Reason: tried: '/usr/local/opt/gettext/lib/libintl.8.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/usr/local/opt/gettext/lib/libintl.8.dylib' (no such file), '/usr/local/opt/gettext/lib/libintl.8.dylib' (no such file), '/usr/local/lib/libintl.8.dylib' (no such file), '/usr/lib/libintl.8.dylib' (no such file, not in dyld cache)
./setup.sh: line 52:  3814 Abort trap: 6           ./python -m ensurepip
##[error]The process '/bin/bash' failed with exit code 134

The pipeline succeeds for macos-13 or python > 3.9

Action version: v5

Platform:

Runner type:

Tools version: python 3.8, 3.9

Repro steps:
explained above

Expected behavior: the pipeline to succeed

Actual behavior: the pipeline fails

HarithaVattikuti commented 7 months ago

Hello @mbway Thank you for creating this issue. We will investigate it and get back to you as soon as we have some feedback.

jmarrec commented 6 months ago

macos-14 is an arm64 runner and you're explicitly requesting an "x64" architecture

mbway commented 6 months ago

Good point. I can't remember if it also fails without that. Either way the error message isn't very informative

aparnajyothi-y commented 6 months ago

Hello @mbway, Thank you once again for creating this issue. We have reproduced the error in our local and found that the error is due to python <3.10 versions are not added to macos-14 runner image. Please find the screenshot for reference.

image image image

Please let us know in case of any further clarifications.

mbway commented 6 months ago

ok that makes sense. So I suppose my suggestion would be that the error message for a requested version being missing should be clearer

aparnajyothi-y commented 6 months ago

Hello @mbway, Thank you for the suggestion and we will look into it in future. For now we are closing this issue as setup-python is working as implemented.

amotl commented 4 months ago

Hi. @aparnajyothi-y reported at https://github.com/actions/setup-python/issues/825#issuecomment-2012392172 (thanks!):

We have reproduced the error in our local and found that the error is due to python<3.10 versions are not added to macos-14 runner image.

macos-14 aka. macos-latest has switched to being an ARM runner, only supporting newer versions of Python. If you need to support older versions, you may want to switch to macos-13.