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

Survey of Python package build environments #3

Open
3 tasks
sethmlarson opened this issue Nov 4, 2024 · 3 comments
Open
3 tasks

Survey of Python package build environments #3

sethmlarson opened this issue Nov 4, 2024 · 3 comments
Assignees

Comments

@sethmlarson
Copy link
Member

sethmlarson commented Nov 4, 2024

Many Python packages are built using hosted build systems like GitHub Actions, Travis, and AppVeyor. Some build systems use containers, like cibuildwheel and multi-build. Survey the following information:

  • Which operating systems are used?
  • Which package managers are used?
  • Do these package ecosystems have a Package URL (PURL)?
  • Do these package ecosystems publish OSV records?
  • Do these package ecosystems support querying from a filepath to a package?

Build environments to survey:

  • multibuild
  • cibuildwheel
  • quay.io/pypa images
@sethmlarson
Copy link
Member Author

Multibuild uses Travis for Linux and macOS and AppVeyor for Windows. Linux uses the quay.io/pypa manylinux images. Has a list of "libraries" that get built from source.

@sethmlarson
Copy link
Member Author

sethmlarson commented Nov 4, 2024

The quay.io/pypa manylinux/musllinux images all use CentOS/AlmaLinux/Alpine operating systems, so the package managers are either yum, dnf or apk.

Package URLs:

  • CentOS: pkg:rpm/centos/<package>@<version>
  • AlmaLinux: pkg:rpm/almalinux/<package>@<version>
  • Alpine: pkg:apk/alpine/<package>@<version>

Finding which package provides a file:

  • yum: yum whatprovides <file>
  • apk: apk info --who-provides <file>
  • dnf: dnf provides <file>

@sethmlarson sethmlarson self-assigned this Nov 4, 2024
@pitrou
Copy link

pitrou commented Nov 9, 2024

For PyArrow we use the following setups when building binary wheels:

  • for manylinux, a Docker image based on the quay.io images, which pulls C++ dependencies using vcpkg; the build itself uses CMake + setuptools
  • for macOS, a GHA setup; as above, vcpkg is used for C++ dependencies and the build uses CMake + setuptools
  • for Windows, a Docker image; and, similarly, vcpkg for C++ dependencies, then CMake + setuptools

cc @raulcd @h-vetinari

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants