From 75d2492f20dc513337de3ef2d45e1d5c68c7dff8 Mon Sep 17 00:00:00 2001
From: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date: Wed, 4 May 2016 17:16:48 +0200
Subject: [PATCH] Make the aws-cpp-sdk dependency optional

---
 Makefile                              |  2 +-
 Makefile.config.in                    |  1 +
 configure.ac                          | 10 ++++++++++
 release.nix                           | 11 +++++------
 src/libstore/local.mk                 |  6 +++++-
 src/libstore/s3-binary-cache-store.cc |  6 ++++++
 6 files changed, 28 insertions(+), 8 deletions(-)

diff --git a/Makefile b/Makefile
index 52312343d..8f3688475 100644
--- a/Makefile
+++ b/Makefile
@@ -23,7 +23,7 @@ makefiles = \
   doc/manual/local.mk \
   tests/local.mk
 
-GLOBAL_CXXFLAGS += -std=c++0x -g -Wall
+GLOBAL_CXXFLAGS += -std=c++11 -g -Wall
 
 -include Makefile.config
 
diff --git a/Makefile.config.in b/Makefile.config.in
index f0de4da37..3a7892e8b 100644
--- a/Makefile.config.in
+++ b/Makefile.config.in
@@ -3,6 +3,7 @@ CC = @CC@
 CFLAGS = @CFLAGS@
 CXX = @CXX@
 CXXFLAGS = @CXXFLAGS@
+ENABLE_S3 = @ENABLE_S3@
 HAVE_SODIUM = @HAVE_SODIUM@
 LIBCURL_LIBS = @LIBCURL_LIBS@
 OPENSSL_LIBS = @OPENSSL_LIBS@
diff --git a/configure.ac b/configure.ac
index 4698c7c7c..d06842054 100644
--- a/configure.ac
+++ b/configure.ac
@@ -61,6 +61,7 @@ CFLAGS=
 CXXFLAGS=
 AC_PROG_CC
 AC_PROG_CXX
+AX_CXX_COMPILE_STDCXX_11
 
 
 # Use 64-bit file system calls so that we can support files > 2 GiB.
@@ -193,6 +194,15 @@ AC_SUBST(HAVE_SODIUM, [$have_sodium])
 PKG_CHECK_MODULES([LIBLZMA], [liblzma], [CXXFLAGS="$LIBLZMA_CFLAGS $CXXFLAGS"])
 
 
+# Look for aws-cpp-sdk-s3.
+AC_LANG_PUSH(C++)
+AC_CHECK_HEADERS([aws/s3/S3Client.h],
+  [AC_DEFINE([ENABLE_S3], [1], [Whether to enable S3 support via aws-cpp-sdk-s3.])
+  enable_s3=1], [enable_s3=])
+AC_SUBST(ENABLE_S3, [$enable_s3])
+AC_LANG_POP(C++)
+
+
 # Whether to use the Boehm garbage collector.
 AC_ARG_ENABLE(gc, AC_HELP_STRING([--enable-gc],
   [enable garbage collection in the Nix expression evaluator (requires Boehm GC) [default=no]]),
diff --git a/release.nix b/release.nix
index 6fab352b2..4803788fe 100644
--- a/release.nix
+++ b/release.nix
@@ -27,6 +27,7 @@ let
           [ curl bison flex perl libxml2 libxslt bzip2 xz
             pkgconfig sqlite libsodium
             docbook5 docbook5_xsl
+            autoconf-archive
           ] ++ lib.optional (!lib.inNixShell) git;
 
         configureFlags = ''
@@ -71,15 +72,13 @@ let
         src = tarball;
 
         buildInputs =
-          [ curl perl bzip2 xz openssl pkgconfig sqlite boehmgc
-
+          [ curl perl bzip2 xz openssl pkgconfig sqlite boehmgc ]
+          ++ lib.optional stdenv.isLinux libsodium
+          ++ lib.optional stdenv.isLinux
             (aws-sdk-cpp.override {
               apis = ["s3"];
               customMemoryManagement = false;
-            })
-
-          ]
-          ++ lib.optional stdenv.isLinux libsodium;
+            });
 
         configureFlags = ''
           --disable-init-state
diff --git a/src/libstore/local.mk b/src/libstore/local.mk
index 22b0f235e..9d5c04dca 100644
--- a/src/libstore/local.mk
+++ b/src/libstore/local.mk
@@ -8,7 +8,11 @@ libstore_SOURCES := $(wildcard $(d)/*.cc)
 
 libstore_LIBS = libutil libformat
 
-libstore_LDFLAGS = $(SQLITE3_LIBS) -lbz2 $(LIBCURL_LIBS) $(SODIUM_LIBS) -laws-cpp-sdk-s3 -laws-cpp-sdk-core -pthread
+libstore_LDFLAGS = $(SQLITE3_LIBS) -lbz2 $(LIBCURL_LIBS) $(SODIUM_LIBS) -pthread
+
+ifeq ($(ENABLE_S3), 1)
+	libstore_LDFLAGS += -laws-cpp-sdk-s3 -laws-cpp-sdk-core
+endif
 
 ifeq ($(OS), SunOS)
 	libstore_LDFLAGS += -lsocket
diff --git a/src/libstore/s3-binary-cache-store.cc b/src/libstore/s3-binary-cache-store.cc
index cffcb1bf2..e64d0eb85 100644
--- a/src/libstore/s3-binary-cache-store.cc
+++ b/src/libstore/s3-binary-cache-store.cc
@@ -1,3 +1,7 @@
+#include "config.h"
+
+#if ENABLE_S3
+
 #include "s3-binary-cache-store.hh"
 #include "nar-info.hh"
 #include "nar-info-disk-cache.hh"
@@ -251,3 +255,5 @@ static RegisterStoreImplementation regStore([](
 });
 
 }
+
+#endif
-- 
GitLab