Something went wrong. Try again.
What happens if I push all of nixpkgs
Something went wrong. Try again.
2.4 kB · 102 lines
Nix
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103{ lib, stdenv, fetchFromGitHub, fetchpatch, pkg-config, cmake, argtable, catch2, curl, doxygen, hiredis, jsoncpp, libmicrohttpd}:
stdenv.mkDerivation rec { pname = "libjson-rpc-cpp"; version = "1.3.0";
src = fetchFromGitHub { owner = "cinemast"; repo = "libjson-rpc-cpp"; sha256 = "sha256-EAakiqlfMprwLjloDekOssaB/EnAmn5njcwHGZtYs9w="; rev = "v${version}"; };
env.NIX_CFLAGS_COMPILE = "-I${catch2}/include/catch2";
patches = [ (fetchpatch { name = "int-to-MHD_Result.patch"; url = "https://patch-diff.githubusercontent.com/raw/cinemast/libjson-rpc-cpp/pull/299.patch"; sha256 = "sha256-hiey6etzbOxhMElTMX7offKbey7c2OO/UWeN03k0AaM="; }) ];
nativeBuildInputs = [ pkg-config cmake doxygen ]; buildInputs = [ argtable catch2 curl hiredis jsoncpp libmicrohttpd ];
postPatch = '' for f in cmake/FindArgtable.cmake \ src/stubgenerator/stubgenerator.cpp \ src/stubgenerator/stubgeneratorfactory.cpp do sed -i -re 's/argtable2/argtable3/g' $f done
sed -i -re 's#MATCHES "jsoncpp"#MATCHES ".*/jsoncpp/json$"#g' cmake/FindJsoncpp.cmake '';
preConfigure = '' mkdir -p Build/Install pushd Build '';
# this hack is needed because the cmake scripts # require write permission to absolute paths configurePhase = '' runHook preConfigure cmake .. -DCMAKE_INSTALL_PREFIX=$(pwd)/Install \ -DCMAKE_BUILD_TYPE=Release runHook postConfigure '';
preInstall = '' function fixRunPath { p=$(patchelf --print-rpath $1) q="$p:${lib.makeLibraryPath [ jsoncpp argtable libmicrohttpd curl ]}:$out/lib" patchelf --set-rpath $q $1 }
mkdir -p $out '';
postInstall = '' sed -i -re "s#-([LI]).*/Build/Install(.*)#-\1$out\2#g" Install/lib64/pkgconfig/*.pc for f in Install/lib64/*.so* $(find Install/bin -executable -type f); do fixRunPath $f done cp -r Install/* $out '';
installPhase = '' runHook preInstall make install runHook postInstall '';
meta = with lib; { description = "C++ framework for json-rpc (json remote procedure call)"; mainProgram = "jsonrpcstub"; homepage = "https://github.com/cinemast/libjson-rpc-cpp"; license = licenses.mit; platforms = platforms.linux; };}