Without this, the package builds but fails when linking sometimes due to undefined references to `getcontext` and friends. Fix this using an upstream patch providing musl support, which is vendored so it can be adjusted to apply to the release.
40 lines
1.2 KiB
Nix
40 lines
1.2 KiB
Nix
{ lib
|
||
, stdenv
|
||
, fetchFromGitHub
|
||
, capnproto
|
||
, cmake }:
|
||
|
||
stdenv.mkDerivation rec {
|
||
pname = "capnproto";
|
||
version = "0.9.1";
|
||
|
||
# release tarballs are missing some ekam rules
|
||
src = fetchFromGitHub {
|
||
owner = "capnproto";
|
||
repo = "capnproto";
|
||
rev = "v${version}";
|
||
sha256 = "0cbiwkmd29abih8rjjm35dfkrkr8c6axbzq3fkryay6jyvpi42c5";
|
||
};
|
||
|
||
nativeBuildInputs = [ cmake ]
|
||
++ lib.optional (!(stdenv.hostPlatform.isCompatible stdenv.buildPlatform)) capnproto;
|
||
|
||
cmakeFlags = lib.optional (!(stdenv.hostPlatform.isCompatible stdenv.buildPlatform)) "-DEXTERNAL_CAPNP";
|
||
|
||
# Upstream 77ac9154440bcc216fda1092fd5bb51da62ae09c, modified to apply to v0.9.1. Drop on update.
|
||
patches = lib.optional stdenv.hostPlatform.isMusl ./musl-no-fibers.patch;
|
||
|
||
meta = with lib; {
|
||
homepage = "https://capnproto.org/";
|
||
description = "Cap'n Proto cerealization protocol";
|
||
longDescription = ''
|
||
Cap’n Proto is an insanely fast data interchange format and
|
||
capability-based RPC system. Think JSON, except binary. Or think Protocol
|
||
Buffers, except faster.
|
||
'';
|
||
license = licenses.mit;
|
||
platforms = platforms.all;
|
||
maintainers = with maintainers; [ cstrahan ];
|
||
};
|
||
}
|