ff1a94e523
The nixpkgs-unstable channel's programs.sqlite was used to identify packages producing exactly one binary, and these automatically added to their package definitions wherever possible.
103 lines
2.3 KiB
Nix
103 lines
2.3 KiB
Nix
{ 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;
|
|
};
|
|
}
|