Subject: Re: bug#26136: core-updates: [email-masked] fails due to missing zlib

From: Danny Milosavljevic <[email-masked]>
Date: Sat, 18 Mar 2017 21:19:01 +0100

Hi Leo,

>The python-minimal package *should* use that libffi. I'm not sure why it's failing now.

Yeah, sorry.  I checked the package definition now and it explicitly disables the system libffi.

>Do you mean if CONFIG_SHELL is not set, so the build process can't find libffi?

Yes, a workaround for the first problem is:

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index be452f062..978aeca47 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -192,7 +192,8 @@
                                   '("Lib/subprocess.py"
                                     "Lib/popen2.py"
                                     "Lib/distutils/tests/test_spawn.py"
-                                    "Lib/test/test_subprocess.py"))
+                                    "Lib/test/test_subprocess.py"
+                                    "Modules/_ctypes/libffi/configure"))
                (("/bin/sh") (which "sh")))
 
              ;; Use zero as the timestamp in .pyc files so that builds are

The reason why that helps is because the configure script contains embedded HERE scripts with their own shebangs which patch-shebang doesn't patch.

An alternative workaround is to use this instead:

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index be452f062..04c944d84 100644
--- a/gnu/packages/python.scm12/bin/shore-updates/guix$ /gnu/store/k7029k5va68lka
+++ b/gnu/packages/python.scm
@@ -229,6 +229,8 @@
            ;; before 1980".  Work around this by setting the file times in the
            ;; source tree to sometime in early 1980.
            (lambda _
+             (setenv "CONFIG_SHELL" (which "bash"))
+
              (let ((circa-1980 (* 10 366 24 60 60)))
                (ftw "." (lambda (file stat flag)
                           (utime file circa-1980 circa-1980)

>There is also the question about zlib and the bundled pip: why is it failing now?

The above doesn't fix the pip zlib problem.  It's very strange: The value of the environment variable C_INCLUDE_PATH includes bzip2 but not zlib.  Might make python unable to find zlib.

setup.py does some strange stuff with reading the zlib.h header file manually - maybe that broke.  Then it tries to find the library file for libz.  The value of the environment variable LIBRARY_PATH doesn't contain zlib either.