From 5a59ac7d43bb10a5bbc912b94edea19e1009b675 Mon Sep 17 00:00:00 2001 From: Sean Dague Date: Wed, 6 May 2015 09:48:54 -0400 Subject: [PATCH] create a more generic work around for cffi & wheels This is an attempt to fix the cffi vs. wheels bug in a more generic way by just ensuring that pip has installed cffi with a pip understood version into the venv before we try to do any builds. Related-Bug: #1451992 Change-Id: Ibc58668c53933033405b40f79b0e9ffc73a01a6f --- stack.sh | 6 ------ tools/build_wheels.sh | 12 ++++++++++++ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/stack.sh b/stack.sh index 3925bb0ccf..e5ee0dc03f 100755 --- a/stack.sh +++ b/stack.sh @@ -708,12 +708,6 @@ source $TOP_DIR/tools/fixup_stuff.sh # Pre-build some problematic wheels if [[ -n ${WHEELHOUSE:-} && ! -d ${WHEELHOUSE:-} ]]; then source $TOP_DIR/tools/build_wheels.sh - - # Due to https://bugs.launchpad.net/swift/+bug/1451992 we have to import - # this package with root once so the CFFI bindings can be built. We have - # to therefore install it so we can import it. - pip_install xattr - sudo python -c "import xattr" fi diff --git a/tools/build_wheels.sh b/tools/build_wheels.sh index c57568fa64..14c2999c8f 100755 --- a/tools/build_wheels.sh +++ b/tools/build_wheels.sh @@ -60,6 +60,18 @@ virtualenv $TMP_VENV_PATH # Install modern pip and wheel PIP_VIRTUAL_ENV=$TMP_VENV_PATH pip_install -U pip wheel +# BUG: cffi has a lot of issues. It has no stable ABI, if installed +# code is built with a different ABI than the one that's detected at +# load time, it tries to compile on the fly for the new ABI in the +# install location (which will probably be /usr and not +# writable). Also cffi is often included via setup_requires by +# packages, which have different install rules (allowing betas) than +# pip has. +# +# Because of this we must pip install cffi into the venv to build +# wheels. +PIP_VIRTUAL_ENV=$TMP_VENV_PATH pip_install_gr cffi + # ``VENV_PACKAGES`` is a list of packages we want to pre-install VENV_PACKAGE_FILE=$FILES/venv-requirements.txt if [[ -r $VENV_PACKAGE_FILE ]]; then