Browse code

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

Sean Dague authored on 2015/05/06 22:48:54
Showing 2 changed files
... ...
@@ -708,12 +708,6 @@ source $TOP_DIR/tools/fixup_stuff.sh
708 708
 # Pre-build some problematic wheels
709 709
 if [[ -n ${WHEELHOUSE:-} && ! -d ${WHEELHOUSE:-} ]]; then
710 710
     source $TOP_DIR/tools/build_wheels.sh
711
-
712
-    # Due to https://bugs.launchpad.net/swift/+bug/1451992 we have to import
713
-    # this package with root once so the CFFI bindings can be built. We have
714
-    # to therefore install it so we can import it.
715
-    pip_install xattr
716
-    sudo python -c "import xattr"
717 711
 fi
718 712
 
719 713
 
... ...
@@ -60,6 +60,18 @@ virtualenv $TMP_VENV_PATH
60 60
 # Install modern pip and wheel
61 61
 PIP_VIRTUAL_ENV=$TMP_VENV_PATH pip_install -U pip wheel
62 62
 
63
+# BUG: cffi has a lot of issues. It has no stable ABI, if installed
64
+# code is built with a different ABI than the one that's detected at
65
+# load time, it tries to compile on the fly for the new ABI in the
66
+# install location (which will probably be /usr and not
67
+# writable). Also cffi is often included via setup_requires by
68
+# packages, which have different install rules (allowing betas) than
69
+# pip has.
70
+#
71
+# Because of this we must pip install cffi into the venv to build
72
+# wheels.
73
+PIP_VIRTUAL_ENV=$TMP_VENV_PATH pip_install_gr cffi
74
+
63 75
 # ``VENV_PACKAGES`` is a list of packages we want to pre-install
64 76
 VENV_PACKAGE_FILE=$FILES/venv-requirements.txt
65 77
 if [[ -r $VENV_PACKAGE_FILE ]]; then