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

before-script-linux argument could be documented better #319

Open
dimaqq opened this issue Feb 21, 2025 · 2 comments
Open

before-script-linux argument could be documented better #319

dimaqq opened this issue Feb 21, 2025 · 2 comments

Comments

@dimaqq
Copy link

dimaqq commented Feb 21, 2025

As far as I can tell, that is the way to inject extra (system) build dependencies into the container where the python extension is built.

In my case, I'm using prost, which needs protoc at build time.

It would also help to describe the environment for the script, for example, unzip is not installed by default.

@lmmx
Copy link

lmmx commented Feb 25, 2025

it's a Docker image, you can find the docker image for the arch and then pull it to try the build locally. Maybe submit a PR with the docs you would have liked to see?

The default container mapping is here, I used it to look up what the ones I was targettingwere going to build on:

x64: {
'x86_64-unknown-linux-gnu': {
auto: 'quay.io/pypa/manylinux2014_x86_64:latest',
'2010': 'quay.io/pypa/manylinux2010_x86_64:latest',
'2_12': 'quay.io/pypa/manylinux2010_x86_64:latest',
'2014': 'quay.io/pypa/manylinux2014_x86_64:latest',
'2_17': 'quay.io/pypa/manylinux2014_x86_64:latest',
'2_24': 'quay.io/pypa/manylinux_2_24_x86_64:latest',
'2_28': 'quay.io/pypa/manylinux_2_28_x86_64:latest',
'2_34': 'quay.io/pypa/manylinux_2_34_x86_64:latest'
},
'x86_64-unknown-linux-musl': {
auto: 'ghcr.io/rust-cross/rust-musl-cross:x86_64-musl',
musllinux_1_1: 'ghcr.io/rust-cross/rust-musl-cross:x86_64-musl',
musllinux_1_2: 'ghcr.io/rust-cross/rust-musl-cross:x86_64-musl'
},
'i686-unknown-linux-gnu': {
auto: 'quay.io/pypa/manylinux2014_i686:latest',
'2010': 'quay.io/pypa/manylinux2010_i686:latest',
'2_12': 'quay.io/pypa/manylinux2010_i686:latest',
'2014': 'quay.io/pypa/manylinux2014_i686:latest',
'2_17': 'quay.io/pypa/manylinux2014_i686:latest',
'2_24': 'quay.io/pypa/manylinux_2_24_i686:latest'
},
'i686-unknown-linux-musl': {
auto: 'ghcr.io/rust-cross/rust-musl-cross:i686-musl',
musllinux_1_1: 'ghcr.io/rust-cross/rust-musl-cross:i686-musl',
musllinux_1_2: 'ghcr.io/rust-cross/rust-musl-cross:i686-musl'
},
'aarch64-unknown-linux-gnu': {
auto: 'ghcr.io/rust-cross/manylinux2014-cross:aarch64',
'2014': 'ghcr.io/rust-cross/manylinux2014-cross:aarch64',
'2_17': 'ghcr.io/rust-cross/manylinux2014-cross:aarch64',
'2_24': 'messense/manylinux_2_24-cross:aarch64',
'2_28': 'ghcr.io/rust-cross/manylinux_2_28-cross:aarch64'
},
'aarch64-unknown-linux-musl': {
auto: 'ghcr.io/rust-cross/rust-musl-cross:aarch64-musl',
musllinux_1_1: 'ghcr.io/rust-cross/rust-musl-cross:aarch64-musl',
musllinux_1_2: 'ghcr.io/rust-cross/rust-musl-cross:aarch64-musl'
},
'arm-unknown-linux-musleabihf': {
auto: 'ghcr.io/rust-cross/rust-musl-cross:arm-musleabihf',
musllinux_1_1: 'ghcr.io/rust-cross/rust-musl-cross:arm-musleabihf',
musllinux_1_2: 'ghcr.io/rust-cross/rust-musl-cross:arm-musleabihf'
},
'armv7-unknown-linux-gnueabihf': {
auto: 'ghcr.io/rust-cross/manylinux2014-cross:armv7',
'2014': 'ghcr.io/rust-cross/manylinux2014-cross:armv7',
'2_17': 'ghcr.io/rust-cross/manylinux2014-cross:armv7',
'2_24': 'messense/manylinux_2_24-cross:armv7',
'2_28': 'ghcr.io/rust-cross/manylinux_2_28-cross:armv7'
},
'armv7-unknown-linux-musleabihf': {
auto: 'ghcr.io/rust-cross/rust-musl-cross:armv7-musleabihf',
musllinux_1_1: 'ghcr.io/rust-cross/rust-musl-cross:armv7-musleabihf',
musllinux_1_2: 'ghcr.io/rust-cross/rust-musl-cross:armv7-musleabihf'
},
'powerpc64-unknown-linux-gnu': {
auto: 'ghcr.io/rust-cross/manylinux2014-cross:ppc64',
'2014': 'ghcr.io/rust-cross/manylinux2014-cross:ppc64',
'2_17': 'ghcr.io/rust-cross/manylinux2014-cross:ppc64'
},
'powerpc64le-unknown-linux-gnu': {
auto: 'ghcr.io/rust-cross/manylinux2014-cross:ppc64le',
'2014': 'ghcr.io/rust-cross/manylinux2014-cross:ppc64le',
'2_17': 'ghcr.io/rust-cross/manylinux2014-cross:ppc64le',
'2_24': 'messense/manylinux_2_24-cross:ppc64le',
'2_28': 'ghcr.io/rust-cross/manylinux_2_28-cross:ppc64le'
},
'powerpc64le-unknown-linux-musl': {
auto: 'ghcr.io/rust-cross/rust-musl-cross:powerpc64le-musl',
musllinux_1_1: 'ghcr.io/rust-cross/rust-musl-cross:powerpc64le-musl',
musllinux_1_2: 'ghcr.io/rust-cross/rust-musl-cross:powerpc64le-musl'
},
's390x-unknown-linux-gnu': {
auto: 'ghcr.io/rust-cross/manylinux2014-cross:s390x',
'2014': 'ghcr.io/rust-cross/manylinux2014-cross:s390x',
'2_17': 'ghcr.io/rust-cross/manylinux2014-cross:s390x',
'2_24': 'messense/manylinux_2_24-cross:s390x',
'2_28': 'ghcr.io/rust-cross/manylinux_2_28-cross:s390x'
}
},
arm64: {
'x86_64-unknown-linux-gnu': {
auto: 'ghcr.io/rust-cross/manylinux2014-cross:x86_64',
'2014': 'ghcr.io/rust-cross/manylinux2014-cross:x86_64',
'2_17': 'ghcr.io/rust-cross/manylinux2014-cross:x86_64',
'2_28': 'ghcr.io/rust-cross/manylinux_2_28-cross:x86_64'
},
'x86_64-unknown-linux-musl': {
auto: 'ghcr.io/rust-cross/rust-musl-cross:x86_64-musl',
musllinux_1_1: 'ghcr.io/rust-cross/rust-musl-cross:x86_64-musl',
musllinux_1_2: 'ghcr.io/rust-cross/rust-musl-cross:x86_64-musl'
},
'i686-unknown-linux-gnu': {
auto: 'ghcr.io/rust-cross/manylinux2014-cross:i686',
'2014': 'ghcr.io/rust-cross/manylinux2014-cross:i686',
'2_17': 'ghcr.io/rust-cross/manylinux2014-cross:i686'
},
'i686-unknown-linux-musl': {
auto: 'ghcr.io/rust-cross/rust-musl-cross:i686-musl',
musllinux_1_1: 'ghcr.io/rust-cross/rust-musl-cross:i686-musl',
musllinux_1_2: 'ghcr.io/rust-cross/rust-musl-cross:i686-musl'
},
'aarch64-unknown-linux-gnu': {
auto: 'quay.io/pypa/manylinux2014_aarch64:latest',
'2014': 'quay.io/pypa/manylinux2014_aarch64:latest',
'2_17': 'quay.io/pypa/manylinux2014_aarch64:latest',
'2_28': 'quay.io/pypa/manylinux_2_28_aarch64:latest',
'2_34': 'quay.io/pypa/manylinux_2_34_aarch64:latest'
},
'aarch64-unknown-linux-musl': {
auto: 'ghcr.io/rust-cross/rust-musl-cross:aarch64-musl',
musllinux_1_1: 'ghcr.io/rust-cross/rust-musl-cross:aarch64-musl',
musllinux_1_2: 'ghcr.io/rust-cross/rust-musl-cross:aarch64-musl'
},
'arm-unknown-linux-musleabihf': {
auto: 'ghcr.io/rust-cross/rust-musl-cross:arm-musleabihf',
musllinux_1_1: 'ghcr.io/rust-cross/rust-musl-cross:arm-musleabihf',
musllinux_1_2: 'ghcr.io/rust-cross/rust-musl-cross:arm-musleabihf'
},
'armv7-unknown-linux-gnueabihf': {
auto: 'ghcr.io/rust-cross/manylinux2014-cross:armv7',
'2014': 'ghcr.io/rust-cross/manylinux2014-cross:armv7',
'2_17': 'ghcr.io/rust-cross/manylinux2014-cross:armv7',
'2_28': 'ghcr.io/rust-cross/manylinux_2_28-cross:armv7'
},
'armv7-unknown-linux-musleabihf': {
auto: 'ghcr.io/rust-cross/rust-musl-cross:armv7-musleabihf',
musllinux_1_1: 'ghcr.io/rust-cross/rust-musl-cross:armv7-musleabihf',
musllinux_1_2: 'ghcr.io/rust-cross/rust-musl-cross:armv7-musleabihf'
},
'powerpc64-unknown-linux-gnu': {
auto: 'ghcr.io/rust-cross/manylinux2014-cross:ppc64',
'2014': 'ghcr.io/rust-cross/manylinux2014-cross:ppc64',
'2_17': 'ghcr.io/rust-cross/manylinux2014-cross:ppc64'
},
'powerpc64le-unknown-linux-gnu': {
auto: 'ghcr.io/rust-cross/manylinux2014-cross:ppc64le',
'2014': 'ghcr.io/rust-cross/manylinux2014-cross:ppc64le',
'2_17': 'ghcr.io/rust-cross/manylinux2014-cross:ppc64le',
'2_28': 'ghcr.io/rust-cross/manylinux_2_28-cross:ppc64le'
},
'powerpc64le-unknown-linux-musl': {
auto: 'ghcr.io/rust-cross/rust-musl-cross:powerpc64le-musl',
musllinux_1_1: 'ghcr.io/rust-cross/rust-musl-cross:powerpc64le-musl',
musllinux_1_2: 'ghcr.io/rust-cross/rust-musl-cross:powerpc64le-musl'
},
's390x-unknown-linux-gnu': {
auto: 'ghcr.io/rust-cross/manylinux2014-cross:s390x',
'2014': 'ghcr.io/rust-cross/manylinux2014-cross:s390x',
'2_17': 'ghcr.io/rust-cross/manylinux2014-cross:s390x',
'2_28': 'ghcr.io/rust-cross/manylinux_2_28-cross:s390x'
}
}
}

In fairness the README does try to show this in the table to look up Docker images (maybe a proper docs site would be a good idea I don't know).

@dimaqq
Copy link
Author

dimaqq commented Mar 6, 2025

Here's my use

https://github.com/dimaqq/otlp-proto/blob/960e8cc18ec87da5dba0ab0e5d00bc65a0751e9c/.github/workflows/ci.yaml#L115-L124

and

https://github.com/dimaqq/otlp-proto/blob/960e8cc18ec87da5dba0ab0e5d00bc65a0751e9c/.github/workflows/ci.yaml#L158-L165

A few notes

Some of the base images are based on CentOS and others on Debian, thus a single script to cover all of them requires trying different ways to install the required packages.

Most bases are 64-bit (native or cross-compiling), but a single base is i686.

Aside

I suppose an alternative is to cook up a set of custom Docker images, and maybe that's a better alternative for a project that requires many additional tools or dependencies.

That would be a moving target though, albeit very slowly moving target.

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