浏览代码

borg2 - Support other OpenSSL versions on OpenBSD

`setup.py` hardcoded crypto library paths for OpenBSD, causing build
issue when OpenBSD drops specific OpenSSL version. Solution is to make
paths configurable.

Addresses #8553.
Björn Ketelaars 6 月之前
父节点
当前提交
cf6a324afa
共有 4 个文件被更改,包括 13 次插入7 次删除
  1. 1 0
      Vagrantfile
  2. 3 0
      docs/man/borg.1
  3. 2 0
      docs/usage/general/environment.rst.inc
  4. 7 7
      setup.py

+ 1 - 0
Vagrantfile

@@ -84,6 +84,7 @@ def packages_openbsd
     pkg_add openssl%3.0
     pkg_add py3-pip
     pkg_add py3-virtualenv
+    echo 'export BORG_OPENSSL_NAME=eopenssl30' >> ~vagrant/.bash_profile
   EOF
 end
 

+ 3 - 0
docs/man/borg.1

@@ -662,6 +662,9 @@ operations), see \fI\%tempfile\fP for details.
 .B Building:
 .INDENT 7.0
 .TP
+.B BORG_OPENSSL_NAME
+Defines the subdirectory name for OpenSSL (setup.py).
+.TP
 .B BORG_OPENSSL_PREFIX
 Adds given OpenSSL header file directory to the default locations (setup.py).
 .TP

+ 2 - 0
docs/usage/general/environment.rst.inc

@@ -198,6 +198,8 @@ Directories and files:
         operations), see tempfile_ for details.
 
 Building:
+    BORG_OPENSSL_NAME
+        Defines the subdirectory name for OpenSSL (setup.py).
     BORG_OPENSSL_PREFIX
         Adds given OpenSSL header file directory to the default locations (setup.py).
     BORG_LIBACL_PREFIX

+ 7 - 7
setup.py

@@ -132,23 +132,23 @@ if not on_rtd:
             f"or ensure {lib_pkg_name}.pc is in PKG_CONFIG_PATH."
         )
 
-    crypto_extra_objects = []
     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 via EVP api. Link
         # it statically to avoid conflicting with shared libcrypto from the base
         # OS pulled in via dependencies.
-        crypto_ext_lib = {"include_dirs": ["/usr/local/include/eopenssl30"]}
-        crypto_extra_objects += ["/usr/local/lib/eopenssl30/libcrypto.a"]
+        openssl_prefix = os.environ.get("BORG_OPENSSL_PREFIX", "/usr/local")
+        openssl_name = os.environ.get("BORG_OPENSSL_NAME", "eopenssl33")
+        crypto_ext_lib = dict(
+            include_dirs=[os.path.join(openssl_prefix, "include", openssl_name)],
+            extra_objects=[os.path.join(openssl_prefix, "lib", openssl_name, "libcrypto.a")],
+        )
     else:
         crypto_ext_lib = lib_ext_kwargs(pc, "BORG_OPENSSL_PREFIX", "crypto", "libcrypto", ">=1.1.1")
 
     crypto_ext_kwargs = members_appended(
-        dict(sources=[crypto_ll_source]),
-        crypto_ext_lib,
-        dict(extra_compile_args=cflags),
-        dict(extra_objects=crypto_extra_objects),
+        dict(sources=[crypto_ll_source]), crypto_ext_lib, dict(extra_compile_args=cflags)
     )
 
     compress_ext_kwargs = members_appended(