Fix setting Content-Encoding in S3 uploads

Fixes https://github.com/NixOS/nix/issues/2333 and https://github.com/NixOS/nixpkgs/issues/44337.
This commit is contained in:
Eelco Dolstra 2018-08-06 17:20:23 +02:00
parent d3761f5f8b
commit 7de3e00ad9
No known key found for this signature in database
GPG key ID: 8170B4726D7198DE
2 changed files with 11 additions and 8 deletions

View file

@ -60,10 +60,15 @@ rec {
++ lib.optionals stdenv.isLinux [libseccomp utillinuxMinimal] ++ lib.optionals stdenv.isLinux [libseccomp utillinuxMinimal]
++ lib.optional (stdenv.isLinux || stdenv.isDarwin) libsodium ++ lib.optional (stdenv.isLinux || stdenv.isDarwin) libsodium
++ lib.optional (stdenv.isLinux || stdenv.isDarwin) ++ lib.optional (stdenv.isLinux || stdenv.isDarwin)
(aws-sdk-cpp.override { ((aws-sdk-cpp.override {
apis = ["s3" "transfer"]; apis = ["s3" "transfer"];
customMemoryManagement = false; customMemoryManagement = false;
}); }).overrideDerivation (args: {
patches = args.patches or [] ++ [ (fetchpatch {
url = https://github.com/edolstra/aws-sdk-cpp/commit/3e07e1f1aae41b4c8b340735ff9e8c735f0c063f.patch;
sha256 = "1pij0v449p166f9l29x7ppzk8j7g9k9mp15ilh5qxp29c7fnvxy2";
}) ];
}));
perlDeps = perlDeps =
[ perl [ perl

View file

@ -291,10 +291,6 @@ struct S3BinaryCacheStoreImpl : public S3BinaryCacheStore
transferConfig.s3Client = s3Helper.client; transferConfig.s3Client = s3Helper.client;
transferConfig.bufferSize = bufferSize; transferConfig.bufferSize = bufferSize;
if (contentEncoding != "")
transferConfig.createMultipartUploadTemplate.SetContentEncoding(
contentEncoding);
transferConfig.uploadProgressCallback = transferConfig.uploadProgressCallback =
[&](const TransferManager *transferManager, [&](const TransferManager *transferManager,
const std::shared_ptr<const TransferHandle> const std::shared_ptr<const TransferHandle>
@ -336,8 +332,10 @@ struct S3BinaryCacheStoreImpl : public S3BinaryCacheStore
auto now1 = std::chrono::steady_clock::now(); auto now1 = std::chrono::steady_clock::now();
std::shared_ptr<TransferHandle> transferHandle = std::shared_ptr<TransferHandle> transferHandle =
transferManager->UploadFile(stream, bucketName, path, mimeType, transferManager->UploadFile(
Aws::Map<Aws::String, Aws::String>()); stream, bucketName, path, mimeType,
Aws::Map<Aws::String, Aws::String>(),
nullptr, contentEncoding);
transferHandle->WaitUntilFinished(); transferHandle->WaitUntilFinished();