Cibuildwheel: manylinux builds failing with cibuildwheel 1.0.0

Created on 12 Nov 2019  路  5Comments  路  Source: joerick/cibuildwheel

Seeing the following error after upgrading cibuildwheel from 0.10.2 to 1.0.0:

ERROR: running bdist_wheel
running build
running build_py
creating build
creating build/lib
creating build/lib/autopy
copying autopy/__init__.py -> build/lib/autopy
running build_ext
running build_rust
error: Can not find Rust compiler

Full stack trace: https://travis-ci.org/autopilot-rs/autopy/jobs/610426289
Commit (previous builds were passing): https://github.com/autopilot-rs/autopy/commit/244e532cfd99217aed83c952907c9d1f824d9771

Only thing I found was this thread, so I tried removing sudo: required in travis.yml (which is currently just copy-pasted from the cibuildwheel README) but it had no effect. https://github.com/PyO3/setuptools-rust/issues/54

Most helpful comment

Oddly, the version of curl on manylinux2010 was downgraded from 7.64.1 on manylinux1 to 7.19.7. Will be opening a separate issue upstream for that.

@msanders,
"This is not a bug, this is a feature"

You can check https://github.com/pypa/manylinux/pull/303 for more details. In a nutshell, CentOS 5 required curl/openssl to be rebuilt in order to connect to TLS 1.2 websites, CentOS 6 doesn't. To ease maintenance & security fixes, manylinux2010 now relies on CentOS to provide patches each time the image is rebuilt.

All 5 comments

I can see this in the log before the mentioned failure:

++ curl --proto =https --tlsv1.2 -sSf https://sh.rustup.rs -o /root/rust-installer/rustup.sh
317curl: option --proto: is unknown
318curl: try 'curl --help' or 'curl --manual' for more information
319++ sh /root/rust-installer/rustup.sh --default-toolchain=nightly-2019-10-05 -y
320/usr/bin/yum
321sh: /root/rust-installer/rustup.sh: No such file or directory

Manylinux images are now using manylinux2010 instead of manylinux1 images which might explain the difference in behavior. You can still use manylinux1 images using CIBW_MANYLINUX_X86_64_IMAGE, CIBW_MANYLINUX_I686_IMAGE options.

Agreed. Alternatively, at a guess, you could remove the --proto '=https' --tlsv1.2 from this command, since curl on the newer manylinux2010 images would be more up-to-date.

As a side note, I'd recommend adding set -o errexit to your build scripts - that'll help catch this sort of thing sooner.

It looks like this is due to this issue: https://github.com/rust-lang/rustup/issues/1794. Removing the --proto flag from the curl command indeed fixed it.

Oddly, the version of curl on manylinux2010 was downgraded from 7.64.1 on manylinux1 to 7.19.7. Will be opening a separate issue upstream for that.

Oddly, the version of curl on manylinux2010 was downgraded from 7.64.1 on manylinux1 to 7.19.7. Will be opening a separate issue upstream for that.

@msanders,
"This is not a bug, this is a feature"

You can check https://github.com/pypa/manylinux/pull/303 for more details. In a nutshell, CentOS 5 required curl/openssl to be rebuilt in order to connect to TLS 1.2 websites, CentOS 6 doesn't. To ease maintenance & security fixes, manylinux2010 now relies on CentOS to provide patches each time the image is rebuilt.

Ah I see. Thanks for the explanation.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

bluesheeptoken picture bluesheeptoken  路  5Comments

MaxHalford picture MaxHalford  路  11Comments

PerretB picture PerretB  路  3Comments

pmav99 picture pmav99  路  4Comments

YannickJadoul picture YannickJadoul  路  7Comments