diff options
author | Tobias Mayer <tobim@fastmail.fm> | 2024-03-08 06:45:43 +0100 |
---|---|---|
committer | Tobias Mayer <tobim@fastmail.fm> | 2024-03-08 08:40:00 +0100 |
commit | ab8f5854e7816a201134e0e32adc941c82bd0a25 (patch) | |
tree | 81a00683a0e746b8fc2d07da4f78111342210d5c /pkgs/development/libraries/aws-c-cal | |
parent | c8cd65298e567e1e604431e4544361e365410f8c (diff) |
pkgsStatic.aws-c-cal: Fix dlopen assertion
Diffstat (limited to 'pkgs/development/libraries/aws-c-cal')
-rw-r--r-- | pkgs/development/libraries/aws-c-cal/aws-c-cal-musl-compat.patch | 33 | ||||
-rw-r--r-- | pkgs/development/libraries/aws-c-cal/default.nix | 15 |
2 files changed, 43 insertions, 5 deletions
diff --git a/pkgs/development/libraries/aws-c-cal/aws-c-cal-musl-compat.patch b/pkgs/development/libraries/aws-c-cal/aws-c-cal-musl-compat.patch new file mode 100644 index 0000000000000..2cf1d4e81e0b5 --- /dev/null +++ b/pkgs/development/libraries/aws-c-cal/aws-c-cal-musl-compat.patch @@ -0,0 +1,33 @@ +From: Emil Lerch <emil@lerch.org> +Date: Wed, 28 Apr 2021 17:46:24 -0700 +Subject: [PATCH] Allow dlopen to fail on musl systems + +Now that references are forced when linking statically, the assertion is +no longer necessary. See https://github.com/awslabs/aws-c-cal/pull/54 +--- + source/unix/openssl_platform_init.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/source/unix/openssl_platform_init.c b/source/unix/openssl_platform_init.c +index 5266ecc1..99f210bd 100644 +--- a/source/unix/openssl_platform_init.c ++++ b/source/unix/openssl_platform_init.c +@@ -496,7 +502,6 @@ static enum aws_libcrypto_version s_resolve_libcrypto(void) { + /* Try to auto-resolve against what's linked in/process space */ + FLOGF("searching process and loaded modules"); + void *process = dlopen(NULL, RTLD_NOW); +- AWS_FATAL_ASSERT(process && "Unable to load symbols from process space"); + enum aws_libcrypto_version result = s_resolve_libcrypto_symbols(AWS_LIBCRYPTO_LC, process); + if (result == AWS_LIBCRYPTO_NONE) { + result = s_resolve_libcrypto_symbols(AWS_LIBCRYPTO_1_0_2, process); +@@ -504,7 +509,9 @@ static enum aws_libcrypto_version s_resolve_libcrypto(void) { + if (result == AWS_LIBCRYPTO_NONE) { + result = s_resolve_libcrypto_symbols(AWS_LIBCRYPTO_1_1_1, process); + } +- dlclose(process); ++ if (process) { ++ dlclose(process); ++ } + + if (result == AWS_LIBCRYPTO_NONE) { + FLOGF("libcrypto symbols were not statically linked, searching for shared libraries"); diff --git a/pkgs/development/libraries/aws-c-cal/default.nix b/pkgs/development/libraries/aws-c-cal/default.nix index 68c575312d494..0188c8937c90e 100644 --- a/pkgs/development/libraries/aws-c-cal/default.nix +++ b/pkgs/development/libraries/aws-c-cal/default.nix @@ -1,16 +1,21 @@ { lib, stdenv, fetchFromGitHub, cmake, aws-c-common, nix, openssl, Security }: -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { pname = "aws-c-cal"; version = "0.6.10"; src = fetchFromGitHub { owner = "awslabs"; - repo = pname; - rev = "v${version}"; - sha256 = "sha256-rzJypIf0DrKI/2Wt5vFop34dL+KYTeCfWC0RflZpiMo="; + repo = finalAttrs.pname; + rev = "v${finalAttrs.version}"; + hash = "sha256-rzJypIf0DrKI/2Wt5vFop34dL+KYTeCfWC0RflZpiMo="; }; + patches = [ + # Fix openssl adaptor code for musl based static binaries. + ./aws-c-cal-musl-compat.patch + ]; + nativeBuildInputs = [ cmake ]; buildInputs = [ aws-c-common openssl ]; @@ -32,4 +37,4 @@ stdenv.mkDerivation rec { platforms = platforms.unix; maintainers = with maintainers; [ orivej ]; }; -} +}) |