Bläddra i källkod

use openssl on openbsd, fixes #6474

Thomas Waldmann 3 år sedan
förälder
incheckning
c592b20262
3 ändrade filer med 10 tillägg och 1 borttagningar
  1. 1 0
      Vagrantfile
  2. 1 1
      docs/installation.rst
  3. 8 0
      setup.py

+ 1 - 0
Vagrantfile

@@ -78,6 +78,7 @@ def packages_openbsd
     pkg_add lz4
     pkg_add zstd
     pkg_add git  # no fakeroot
+    pkg_add openssl%1.1
     pkg_add py3-pip
     pkg_add py3-virtualenv
   EOF

+ 1 - 1
docs/installation.rst

@@ -162,7 +162,7 @@ following dependencies first:
 * `Python 3`_ >= 3.9.0, plus development headers.
 * Libraries (library plus development headers):
 
-  - OpenSSL_ >= 1.1.1
+  - OpenSSL_ >= 1.1.1 (LibreSSL will not work)
   - libacl_ (which depends on libattr_)
   - liblz4_ >= 1.7.0 (r129)
   - libzstd_ >= 1.3.0

+ 8 - 0
setup.py

@@ -23,6 +23,7 @@ sys.path += [os.path.dirname(__file__)]
 import setup_docs
 
 is_win32 = sys.platform.startswith('win32')
+is_openbsd = sys.platform.startswith('openbsd')
 
 # Number of threads to use for cythonize, not used on windows
 cpu_threads = multiprocessing.cpu_count() if multiprocessing and multiprocessing.get_start_method() != 'spawn' else None
@@ -156,9 +157,15 @@ if not on_rtd:
             f"or ensure {lib_pkg_name}.pc is in PKG_CONFIG_PATH."
         )
 
+    crypto_ldflags = []
     if is_win32:
         crypto_ext_lib = lib_ext_kwargs(
             pc, 'BORG_OPENSSL_PREFIX', 'libcrypto', 'libcrypto', '>=1.1.1', lib_subdir='')
+    elif is_openbsd:
+        # use openssl (not libressl) because we need AES-OCB and CHACHA20-POLY1305 via EVP api
+        crypto_ext_lib = lib_ext_kwargs(
+            pc, 'BORG_OPENSSL_PREFIX', 'crypto', 'libecrypto11', '>=1.1.1')
+        crypto_ldflags += ['-Wl,-rpath=/usr/local/lib/eopenssl11']
     else:
         crypto_ext_lib = lib_ext_kwargs(
             pc, 'BORG_OPENSSL_PREFIX', 'crypto', 'libcrypto', '>=1.1.1')
@@ -167,6 +174,7 @@ if not on_rtd:
         dict(sources=[crypto_ll_source, crypto_helpers]),
         crypto_ext_lib,
         dict(extra_compile_args=cflags),
+        dict(extra_link_args=crypto_ldflags),
     )
 
     compress_ext_kwargs = members_appended(