From 1055431497ded70c1ef766ea7e543e6c4bc4f0da Mon Sep 17 00:00:00 2001 From: Paul Kehrer Date: Sat, 29 Aug 2015 15:47:53 -0500 Subject: add support for static linking of the openssl backend on OS X --- src/_cffi_src/build_openssl.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/_cffi_src/build_openssl.py b/src/_cffi_src/build_openssl.py index 6a5bf2da..bd8cf73e 100644 --- a/src/_cffi_src/build_openssl.py +++ b/src/_cffi_src/build_openssl.py @@ -4,6 +4,7 @@ from __future__ import absolute_import, division, print_function +import os import sys from _cffi_src.utils import build_ffi_for_binding, extra_link_args @@ -11,15 +12,27 @@ from _cffi_src.utils import build_ffi_for_binding, extra_link_args def _get_openssl_libraries(platform): # OpenSSL goes by a different library name on different operating systems. - if platform != "win32": + if platform == "darwin": + return _osx_libraries( + os.environ.get("CRYPTOGRAPHY_BUILD_STATIC", None) + ) + elif platform == "win32": + return ["libeay32", "ssleay32", "advapi32", + "crypt32", "gdi32", "user32", "ws2_32"] + else: # In some circumstances, the order in which these libs are # specified on the linker command-line is significant; # libssl must come before libcrypto # (http://marc.info/?l=openssl-users&m=135361825921871) return ["ssl", "crypto"] + + +def _osx_libraries(build_static): + # For building statically we don't want to pass the -lssl or -lcrypto flags + if build_static == "1": + return [] else: - return ["libeay32", "ssleay32", "advapi32", - "crypt32", "gdi32", "user32", "ws2_32"] + return ["ssl", "crypto"] _OSX_PRE_INCLUDE = """ -- cgit v1.2.3 From 5f7d9d2f68d51fe7fd89f752484920aa5680258a Mon Sep 17 00:00:00 2001 From: Paul Kehrer Date: Sat, 29 Aug 2015 15:48:13 -0500 Subject: update travis to static link homebrew openssl (plus one dynamic job) --- .travis.yml | 14 +++++++++----- .travis/run.sh | 7 ++++++- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index c61682ed..90b2b1fb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -71,23 +71,23 @@ matrix: - language: generic os: osx osx_image: beta-xcode6.3 - env: TOXENV=py26 + env: TOXENV=py26 CRYPTOGRAPHY_BUILD_STATIC=1 - language: generic os: osx osx_image: beta-xcode6.3 - env: TOXENV=py27 + env: TOXENV=py27 CRYPTOGRAPHY_BUILD_STATIC=1 - language: generic os: osx osx_image: beta-xcode6.3 - env: TOXENV=py33 + env: TOXENV=py33 CRYPTOGRAPHY_BUILD_STATIC=1 - language: generic os: osx osx_image: beta-xcode6.3 - env: TOXENV=py34 + env: TOXENV=py34 CRYPTOGRAPHY_BUILD_STATIC=1 - language: generic os: osx osx_image: beta-xcode6.3 - env: TOXENV=pypy + env: TOXENV=pypy CRYPTOGRAPHY_BUILD_STATIC=1 - language: generic os: osx osx_image: beta-xcode6.3 @@ -112,6 +112,10 @@ matrix: os: osx osx_image: beta-xcode6.3 env: TOXENV=docs + - language: generic + os: osx + osx_image: beta-xcode6.3 + env: TOXENV=py27 install: - ./.travis/install.sh diff --git a/.travis/run.sh b/.travis/run.sh index 17358655..b519c9fc 100755 --- a/.travis/run.sh +++ b/.travis/run.sh @@ -8,7 +8,12 @@ if [[ "$(uname -s)" == "Darwin" ]]; then if [[ "${OPENSSL}" != "0.9.8" ]]; then # set our flags to use homebrew openssl export ARCHFLAGS="-arch x86_64" - export LDFLAGS="-L/usr/local/opt/openssl/lib" + # if the build is static we need different LDFLAGS + if [[ "${CRYPTOGRAPHY_BUILD_STATIC}" == "1" ]]; then + export LDFLAGS="/usr/local/opt/openssl/lib/libssl.a /usr/local/opt/openssl/lib/libcrypto.a" + else + export LDFLAGS="-L/usr/local/opt/openssl/lib" + fi export CFLAGS="-I/usr/local/opt/openssl/include" # The Travis OS X jobs are run for two versions # of OpenSSL, but we only need to run the -- cgit v1.2.3 From 2f1d5a47c155edf376fdef3b5b94667cea259653 Mon Sep 17 00:00:00 2001 From: Paul Kehrer Date: Sat, 29 Aug 2015 15:55:56 -0500 Subject: move dynamic build and add an env to make it obvious it's dynamic --- .travis.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 90b2b1fb..bd039065 100644 --- a/.travis.yml +++ b/.travis.yml @@ -88,6 +88,10 @@ matrix: os: osx osx_image: beta-xcode6.3 env: TOXENV=pypy CRYPTOGRAPHY_BUILD_STATIC=1 + - language: generic + os: osx + osx_image: beta-xcode6.3 + env: TOXENV=py27 CRYPTOGRAPHY_BUILD_STATIC=0 - language: generic os: osx osx_image: beta-xcode6.3 @@ -112,10 +116,6 @@ matrix: os: osx osx_image: beta-xcode6.3 env: TOXENV=docs - - language: generic - os: osx - osx_image: beta-xcode6.3 - env: TOXENV=py27 install: - ./.travis/install.sh -- cgit v1.2.3 From 039540a3f5fbb458987c999e507010c478dd635d Mon Sep 17 00:00:00 2001 From: Paul Kehrer Date: Sat, 29 Aug 2015 16:02:19 -0500 Subject: add some otool output to the OS X builds --- .travis/run.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.travis/run.sh b/.travis/run.sh index b519c9fc..a1788f8f 100755 --- a/.travis/run.sh +++ b/.travis/run.sh @@ -31,3 +31,7 @@ else fi source ~/.venv/bin/activate tox -- $TOX_FLAGS +# Output information about linking of the OpenSSL library on OS X +if [[ "$(uname -s)" == "Darwin" ]]; then + otool -L `find .tox -name _openssl.so` +fi -- cgit v1.2.3 From 162f30a226f2ac35ae8e9ed09911adecd0db280c Mon Sep 17 00:00:00 2001 From: Paul Kehrer Date: Sat, 29 Aug 2015 16:30:06 -0500 Subject: pypy doesn't name that shared object quite the same --- .travis/run.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis/run.sh b/.travis/run.sh index a1788f8f..c22ded22 100755 --- a/.travis/run.sh +++ b/.travis/run.sh @@ -33,5 +33,5 @@ source ~/.venv/bin/activate tox -- $TOX_FLAGS # Output information about linking of the OpenSSL library on OS X if [[ "$(uname -s)" == "Darwin" ]]; then - otool -L `find .tox -name _openssl.so` + otool -L `find .tox -name _openssl*.so` fi -- cgit v1.2.3 From 7539dcb6e424e27f6bb270571b9410bd6ad36aac Mon Sep 17 00:00:00 2001 From: Paul Kehrer Date: Sat, 29 Aug 2015 21:00:54 -0500 Subject: no need for None --- src/_cffi_src/build_openssl.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/_cffi_src/build_openssl.py b/src/_cffi_src/build_openssl.py index bd8cf73e..49d7464c 100644 --- a/src/_cffi_src/build_openssl.py +++ b/src/_cffi_src/build_openssl.py @@ -14,7 +14,7 @@ def _get_openssl_libraries(platform): # OpenSSL goes by a different library name on different operating systems. if platform == "darwin": return _osx_libraries( - os.environ.get("CRYPTOGRAPHY_BUILD_STATIC", None) + os.environ.get("CRYPTOGRAPHY_BUILD_STATIC") ) elif platform == "win32": return ["libeay32", "ssleay32", "advapi32", -- cgit v1.2.3 From 7402cf1c676ffb7ba48d6e90227bb4b1397af12d Mon Sep 17 00:00:00 2001 From: Paul Kehrer Date: Mon, 31 Aug 2015 12:34:30 -0500 Subject: rename env var to CRYPTOGRAPHY_OSX_NO_LINK_FLAGS --- .travis.yml | 12 ++++++------ .travis/run.sh | 2 +- src/_cffi_src/build_openssl.py | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.travis.yml b/.travis.yml index bd039065..f1c3567d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -71,27 +71,27 @@ matrix: - language: generic os: osx osx_image: beta-xcode6.3 - env: TOXENV=py26 CRYPTOGRAPHY_BUILD_STATIC=1 + env: TOXENV=py26 CRYPTOGRAPHY_OSX_NO_LINK_FLAGS=1 - language: generic os: osx osx_image: beta-xcode6.3 - env: TOXENV=py27 CRYPTOGRAPHY_BUILD_STATIC=1 + env: TOXENV=py27 CRYPTOGRAPHY_OSX_NO_LINK_FLAGS=1 - language: generic os: osx osx_image: beta-xcode6.3 - env: TOXENV=py33 CRYPTOGRAPHY_BUILD_STATIC=1 + env: TOXENV=py33 CRYPTOGRAPHY_OSX_NO_LINK_FLAGS=1 - language: generic os: osx osx_image: beta-xcode6.3 - env: TOXENV=py34 CRYPTOGRAPHY_BUILD_STATIC=1 + env: TOXENV=py34 CRYPTOGRAPHY_OSX_NO_LINK_FLAGS=1 - language: generic os: osx osx_image: beta-xcode6.3 - env: TOXENV=pypy CRYPTOGRAPHY_BUILD_STATIC=1 + env: TOXENV=pypy CRYPTOGRAPHY_OSX_NO_LINK_FLAGS=1 - language: generic os: osx osx_image: beta-xcode6.3 - env: TOXENV=py27 CRYPTOGRAPHY_BUILD_STATIC=0 + env: TOXENV=py27 CRYPTOGRAPHY_OSX_NO_LINK_FLAGS=0 - language: generic os: osx osx_image: beta-xcode6.3 diff --git a/.travis/run.sh b/.travis/run.sh index c22ded22..1ce8011f 100755 --- a/.travis/run.sh +++ b/.travis/run.sh @@ -9,7 +9,7 @@ if [[ "$(uname -s)" == "Darwin" ]]; then # set our flags to use homebrew openssl export ARCHFLAGS="-arch x86_64" # if the build is static we need different LDFLAGS - if [[ "${CRYPTOGRAPHY_BUILD_STATIC}" == "1" ]]; then + if [[ "${CRYPTOGRAPHY_OSX_NO_LINK_FLAGS}" == "1" ]]; then export LDFLAGS="/usr/local/opt/openssl/lib/libssl.a /usr/local/opt/openssl/lib/libcrypto.a" else export LDFLAGS="-L/usr/local/opt/openssl/lib" diff --git a/src/_cffi_src/build_openssl.py b/src/_cffi_src/build_openssl.py index 49d7464c..defa69d3 100644 --- a/src/_cffi_src/build_openssl.py +++ b/src/_cffi_src/build_openssl.py @@ -14,7 +14,7 @@ def _get_openssl_libraries(platform): # OpenSSL goes by a different library name on different operating systems. if platform == "darwin": return _osx_libraries( - os.environ.get("CRYPTOGRAPHY_BUILD_STATIC") + os.environ.get("CRYPTOGRAPHY_OSX_NO_LINK_FLAGS") ) elif platform == "win32": return ["libeay32", "ssleay32", "advapi32", -- cgit v1.2.3