From cf6a324afa3277915aaf355d4a37d3a8b20ff436 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Ketelaars?= Date: Sat, 23 Nov 2024 07:48:26 +0100 Subject: [PATCH] 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. --- Vagrantfile | 1 + docs/man/borg.1 | 3 +++ docs/usage/general/environment.rst.inc | 2 ++ setup.py | 14 +++++++------- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/Vagrantfile b/Vagrantfile index 7c4ce7651..eac31e5e8 100644 --- a/Vagrantfile +++ b/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 diff --git a/docs/man/borg.1 b/docs/man/borg.1 index 4d235eae7..5d2d922b8 100644 --- a/docs/man/borg.1 +++ b/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 diff --git a/docs/usage/general/environment.rst.inc b/docs/usage/general/environment.rst.inc index d88133fa0..54be64432 100644 --- a/docs/usage/general/environment.rst.inc +++ b/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 diff --git a/setup.py b/setup.py index 2d4346927..b25191d73 100644 --- a/setup.py +++ b/setup.py @@ -132,23 +132,23 @@ def lib_ext_kwargs(pc, prefix_env_var, lib_name, lib_pkg_name, pc_version, lib_s 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(