about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/libraries/cpp-ipfs-http-client
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/cpp-ipfs-http-client')
-rw-r--r--nixpkgs/pkgs/development/libraries/cpp-ipfs-http-client/default.nix37
-rw-r--r--nixpkgs/pkgs/development/libraries/cpp-ipfs-http-client/unvendor-nlohmann-json.patch27
2 files changed, 64 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/cpp-ipfs-http-client/default.nix b/nixpkgs/pkgs/development/libraries/cpp-ipfs-http-client/default.nix
new file mode 100644
index 000000000000..d44eed5e76f0
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/cpp-ipfs-http-client/default.nix
@@ -0,0 +1,37 @@
+{ lib, stdenv, fetchFromGitHub, curl, cmake, nlohmann_json }:
+
+stdenv.mkDerivation {
+  pname = "cpp-ipfs-http-client";
+  version = "unstable-2022-01-30";
+
+  src = fetchFromGitHub {
+    owner = "vasild";
+    repo = "cpp-ipfs-http-client";
+    rev = "3cdfa7fc6326e49fc81b3c7ca43ce83bdccef6d9";
+    sha256 = "sha256-/oyafnk4SbrvoCh90wkZXNBjknMKA6EEUoEGo/amLUo=";
+  };
+
+  patches = [ ./unvendor-nlohmann-json.patch ];
+
+  postPatch = ''
+    substituteInPlace CMakeLists.txt \
+      --replace '# Fetch "JSON for Modern C++"' "include_directories(${nlohmann_json}/include)"
+  '';
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ curl ];
+  propagatedBuildInputs = [ nlohmann_json ];
+
+  env.NIX_CFLAGS_COMPILE = toString [
+    "-Wno-error=range-loop-construct"
+    # Needed with GCC 12
+    "-Wno-error=deprecated-declarations"
+  ];
+
+  meta = with lib; {
+    description = "IPFS C++ API client library";
+    homepage = "https://github.com/vasild/cpp-ipfs-http-client";
+    license = licenses.mit;
+    platforms = [ "x86_64-linux" "x86_64-darwin" ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/libraries/cpp-ipfs-http-client/unvendor-nlohmann-json.patch b/nixpkgs/pkgs/development/libraries/cpp-ipfs-http-client/unvendor-nlohmann-json.patch
new file mode 100644
index 000000000000..e21b4e9a7a71
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/cpp-ipfs-http-client/unvendor-nlohmann-json.patch
@@ -0,0 +1,27 @@
+--- source/CMakeLists.txt
++++ source/CMakeLists.txt
+@@ -56,11 +56,6 @@ target_include_directories(${IPFS_API_LIBNAME}
+ )
+ 
+ # Fetch "JSON for Modern C++"
+-include(FetchContent)
+-message(STATUS "Fetching nlohmann/JSON")
+-# Retrieve Nlohmann JSON
+-FetchContent_Declare(json URL https://github.com/nlohmann/json/releases/download/v3.10.5/json.tar.xz)
+-FetchContent_MakeAvailable(json)
+ 
+ # libcurl requires additional libs only for static Windows builds
+ if(WIN32)
+@@ -71,12 +66,11 @@ set_target_properties(${IPFS_API_LIBNAME} PROPERTIES
+   SOVERSION ${PROJECT_VERSION_MAJOR}
+   VERSION ${PROJECT_VERSION}
+ )
+-target_link_libraries(${IPFS_API_LIBNAME} ${CURL_LIBRARIES} ${WINDOWS_CURL_LIBS} nlohmann_json::nlohmann_json)
++target_link_libraries(${IPFS_API_LIBNAME} ${CURL_LIBRARIES} ${WINDOWS_CURL_LIBS})
+ if(NOT DISABLE_INSTALL)
+   install(TARGETS ${IPFS_API_LIBNAME} DESTINATION lib)
+   install(FILES include/ipfs/client.h DESTINATION include/ipfs)
+   install(FILES include/ipfs/http/transport.h DESTINATION include/ipfs/http)
+-  install(FILES ${json_SOURCE_DIR}/include/nlohmann/json.hpp DESTINATION include/nlohmann)
+ endif()
+ # Tests, use "CTEST_OUTPUT_ON_FAILURE=1 make test" to see output from failed tests