Description
Description:
A cache key looks like this setup-python-Linux-python-3.11.0-beta.3-pip-60d374041db12689c3d346e149aa43744f06aa781ab1c8cbbe70e0b09b98dd70
.
It is specific to a Python version and OS type. It has to be specific to a version of an operating system too.
Justification:
PyPI provides source distributions of packages (archives with code) and built distributions (wheels). When a wheel suitable for an environment is not found on PyPI, a source distribution is usually downloaded and a wheel is built locally. The source may contain some code that needs to be compiled (C, Rust, etc.)
On Linux, a compiled wheel may depend on a specific version of a shared library. Different Ubuntu releases used on GitHub Actions may provide different versions of shared libraries. Therefore, a wheel compiled on Ubuntu 20.04 may be incompatible with Ubuntu 22.04. This makes the cache feature unusable when a workflow runs jobs on multiple Ubuntu versions or when an Ubuntu version is changed in a workflow.
https://github.com/urllib3/urllib3/runs/6817232938 is an example of a failed run.
The error is caused by a cffi wheel that was compiled and cached in Ubuntu 20.04 previously where it depended on libffi.so.7
.
Ubuntu 22.04 (that provides libffi.so.8
) restored that cache archive because it composed the same cache key, and cffi become unusable there (urllib3/urllib3#2626 (comment) provides a little bit more info.)
BTW, #188 may be a related bug report issue.
Are you willing to submit a PR?
No. Although, I guess it is a matter of changing the following lines of code to include a version of an OS in the key.
setup-python/src/cache-distributions/pip-cache.ts
Lines 60 to 61 in 813f9b1