nixpkgs/pkgs/development/libraries/aws-sdk-cpp/default.nix
Artturin 4a39830331 aws-sdk-cpp: 1.9.294 -> 1.11.37
The following warning should be looked in to

```
CMake Warning at CMakeLists.txt:9 (message):
  In 1.11 releases, we are releasing experimental alternative building
  mode.By setting -DLEGACY_MODE=OFF you can test our advances in modern CMake
  building and provide early feedback.  The legacy support is set by default
  in 1.11, when you complete build updating scripts please update the build
  flags as mentioned in README.md and set -DLEGACY_BUILD=OFF.  The legacy
  support will be removed at 1.12.0 release.
```

Co-authored-by: Tobias Mayer <tobim@fastmail.fm>
2023-04-10 19:03:41 +03:00

116 lines
3.6 KiB
Nix

{ lib
, stdenv
, fetchFromGitHub
, cmake
, curl
, openssl
, zlib
, aws-crt-cpp
, CoreAudio
, AudioToolbox
, # Allow building a limited set of APIs, e.g. ["s3" "ec2"].
apis ? ["*"]
, # Whether to enable AWS' custom memory management.
customMemoryManagement ? true
}:
let
host_os = if stdenv.hostPlatform.isDarwin then "APPLE"
else if stdenv.hostPlatform.isAndroid then "ANDROID"
else if stdenv.hostPlatform.isWindows then "WINDOWS"
else if stdenv.hostPlatform.isLinux then "LINUX"
else throw "Unknown host OS";
in
stdenv.mkDerivation rec {
pname = "aws-sdk-cpp";
version = "1.11.37";
src = fetchFromGitHub {
owner = "aws";
repo = "aws-sdk-cpp";
rev = version;
sha256 = "sha256-C1PdLNagoIMk9/AAV2Pp7kWcspasJtN9Tx679FnEprc=";
};
patches = [
./cmake-dirs.patch
];
postPatch = ''
# Avoid blanket -Werror to evade build failures on less
# tested compilers.
substituteInPlace cmake/compiler_settings.cmake \
--replace '"-Werror"' ' '
# Flaky on Hydra
rm tests/aws-cpp-sdk-core-tests/aws/auth/AWSCredentialsProviderTest.cpp
# Includes aws-c-auth private headers, so only works with submodule build
rm tests/aws-cpp-sdk-core-tests/aws/auth/AWSAuthSignerTest.cpp
# TestRandomURLMultiThreaded fails
rm tests/aws-cpp-sdk-core-tests/http/HttpClientTest.cpp
'' + lib.optionalString stdenv.isi686 ''
# EPSILON is exceeded
rm tests/aws-cpp-sdk-core-tests/aws/client/AdaptiveRetryStrategyTest.cpp
'';
# FIXME: might be nice to put different APIs in different outputs
# (e.g. libaws-cpp-sdk-s3.so in output "s3").
outputs = [ "out" "dev" ];
nativeBuildInputs = [ cmake curl ];
buildInputs = [
curl openssl zlib
] ++ lib.optionals (stdenv.isDarwin &&
((builtins.elem "text-to-speech" apis) ||
(builtins.elem "*" apis)))
[ CoreAudio AudioToolbox ];
# propagation is needed for Security.framework to be available when linking
propagatedBuildInputs = [ aws-crt-cpp ];
# Ensure the linker is using atomic when compiling for RISC-V, otherwise fails
LDFLAGS = lib.optionalString stdenv.hostPlatform.isRiscV "-latomic";
cmakeFlags = [
"-DBUILD_DEPS=OFF"
] ++ lib.optional (!customMemoryManagement) "-DCUSTOM_MEMORY_MANAGEMENT=0"
++ lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [
"-DENABLE_TESTING=OFF"
"-DCURL_HAS_H2=1"
"-DCURL_HAS_TLS_PROXY=1"
"-DTARGET_ARCH=${host_os}"
] ++ lib.optional (apis != ["*"])
"-DBUILD_ONLY=${lib.concatStringsSep ";" apis}";
env.NIX_CFLAGS_COMPILE = toString [
# openssl 3 generates several deprecation warnings
"-Wno-error=deprecated-declarations"
];
# aws-cpp-sdk-core-tests/aws/client/AWSClientTest.cpp
# seem to have a datarace
enableParallelChecking = false;
postFixupHooks = [
# This bodge is necessary so that the file that the generated -config.cmake file
# points to an existing directory.
"mkdir -p $out/include"
];
__darwinAllowLocalNetworking = true;
# Builds in 2+h with 2 cores, and ~10m with a big-parallel builder.
requiredSystemFeatures = [ "big-parallel" ];
meta = with lib; {
description = "A C++ interface for Amazon Web Services";
homepage = "https://github.com/aws/aws-sdk-cpp";
license = licenses.asl20;
platforms = platforms.unix;
maintainers = with maintainers; [ eelco orivej ];
# building ec2 runs out of memory: cc1plus: out of memory allocating 33554372 bytes after a total of 74424320 bytes
broken = stdenv.buildPlatform.is32bit && ((builtins.elem "ec2" apis) || (builtins.elem "*" apis));
};
}