Build environment: Make sure Python is linkign against static Zlib
authorSergey Sharybin <sergey.vfx@gmail.com>
Tue, 28 Aug 2018 16:28:05 +0000 (18:28 +0200)
committerSergey Sharybin <sergey.vfx@gmail.com>
Tue, 28 Aug 2018 16:29:13 +0000 (18:29 +0200)
There is system-wide libz development package installed by default,
needed for some other dependencies. This patch ensures Python will
use our own self-compiled Zlib.

build_files/build_environment/cmake/python.cmake
build_files/build_environment/cmake/zlib.cmake
build_files/build_environment/patches/python_linux.diff [new file with mode: 0644]

index 0e3356e343d112985f7e99b113204a9ae82656be..9d0edd9246ed783305e21e108d6021fbb7ccc705 100644 (file)
@@ -93,13 +93,14 @@ else()
        else()
                set(PYTHON_CONFIGURE_EXTRA_ARGS "--with-openssl=${LIBDIR}/ssl")
                set(PYTHON_CONFIGURE_ENV ${CONFIGURE_ENV})
-               set(PYTHON_CFLAGS "-I${LIBDIR}/sqlite/include -I${LIBDIR}/bzip2/include -I${LIBDIR}/lzma/include")
-               set(PYTHON_LDFLAGS "-L${LIBDIR}/sqlite/lib -L${LIBDIR}/bzip2/lib -L${LIBDIR}/lzma/lib")
+               set(PYTHON_CFLAGS "-I${LIBDIR}/sqlite/include -I${LIBDIR}/bzip2/include -I${LIBDIR}/lzma/include -I${LIBDIR}/zlib/include")
+               set(PYTHON_LDFLAGS "-L${LIBDIR}/sqlite/lib -L${LIBDIR}/bzip2/lib -L${LIBDIR}/lzma/lib -L${LIBDIR}/zlib/lib")
                set(PYTHON_CONFIGURE_EXTRA_ENV
                        export CFLAGS=${PYTHON_CFLAGS} &&
                        export CPPFLAGS=${PYTHON_CFLAGS} &&
                        export LDFLAGS=${PYTHON_LDFLAGS})
                set(PYTHON_BINARY ${BUILD_DIR}/python/src/external_python/python)
+               set(PYTHON_PATCH ${PATCH_CMD} --verbose -p1 -d ${BUILD_DIR}/python/src/external_python < ${PATCH_DIR}/python_linux.diff)
        endif()
 
        ExternalProject_Add(external_python
@@ -179,5 +180,6 @@ if(UNIX AND NOT APPLE)
                external_lzma
                external_ssl
                external_sqlite
+               external_zlib
        )
 endif()
index b768293487af6e5cffb61fec97da647482141800..7bf1c45e359fa9ec507355a8d957f5039117913e 100644 (file)
@@ -46,4 +46,10 @@ else()
                        DEPENDEES install
                )
        endif()
+       if (UNIX AND NOT APPLE)
+               ExternalProject_Add_Step(external_zlib after_install
+                       COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/zlib/lib/libz.a ${LIBDIR}/zlib/lib/libz_pic.a
+                       DEPENDEES install
+               )
+       endif()
 endif()
diff --git a/build_files/build_environment/patches/python_linux.diff b/build_files/build_environment/patches/python_linux.diff
new file mode 100644 (file)
index 0000000..3c65e12
--- /dev/null
@@ -0,0 +1,29 @@
+diff --git a/setup.py.orig b/setup.py
+index a97a755..ee2bfad 100644
+--- a/setup.py.orig
++++ b/setup.py
+@@ -1422,13 +1422,13 @@ class PyBuildExt(build_ext):
+                         version = line.split()[2]
+                         break
+             if version >= version_req:
+-                if (self.compiler.find_library_file(lib_dirs, 'z')):
++                if (self.compiler.find_library_file(lib_dirs, 'z_pic')):
+                     if host_platform == "darwin":
+                         zlib_extra_link_args = ('-Wl,-search_paths_first',)
+                     else:
+                         zlib_extra_link_args = ()
+                     exts.append( Extension('zlib', ['zlibmodule.c'],
+-                                           libraries = ['z'],
++                                           libraries = ['z_pic'],
+                                            extra_link_args = zlib_extra_link_args))
+                     have_zlib = True
+                 else:
+@@ -1442,7 +1442,7 @@ class PyBuildExt(build_ext):
+         # crc32 if we have it.  Otherwise binascii uses its own.
+         if have_zlib:
+             extra_compile_args = ['-DUSE_ZLIB_CRC32']
+-            libraries = ['z']
++            libraries = ['z_pic']
+             extra_link_args = zlib_extra_link_args
+         else:
+             extra_compile_args = []