Commit 2c503c36 authored by Valery Ivanov's avatar Valery Ivanov
Browse files

sobjectizer: init at 5.8.4

parent 45087aab
Loading
Loading
Loading
Loading
+60 −0
Original line number Diff line number Diff line
{
  pkgs,
  lib,
  stdenv,
  fetchFromGitHub,
  fetchpatch,
  cmake,
  withStatic ? stdenv.hostPlatform.isStatic,
  withShared ? !withStatic,
  buildExamples ? false,
}:

# Ensure build examples with static library.
assert buildExamples -> withStatic;

stdenv.mkDerivation (finalAttrs: {
  pname = "sobjectizer";
  version = "5.8.4";

  src = fetchFromGitHub {
    owner = "Stiffstream";
    repo = "sobjectizer";
    tag = "v.${finalAttrs.version}";
    hash = "sha256-tIqWgd6TppHfqZk3XHzhG0t+Nn8BQCTP81UD7ls67UE=";
  };

  patches = [
    (fetchpatch {
      name = "tests-do-not-require-static-library.patch";
      url = "https://github.com/Stiffstream/sobjectizer/commit/10eb34c65ccdaa4fea62d0c4354b83104256370d.patch";
      hash = "sha256-a2g6jDGDC/y8cmbAD0KtVQKhVS5ZAjKtMhbAUyoQIvg=";
    })
  ];

  nativeBuildInputs = [ cmake ];

  cmakeDir = "../dev";

  cmakeFlags = [
    (lib.cmakeBool "SOBJECTIZER_BUILD_STATIC" withStatic)
    (lib.cmakeBool "SOBJECTIZER_BUILD_SHARED" withShared)
    (lib.cmakeBool "BUILD_EXAMPLES" (buildExamples && withStatic))
    (lib.cmakeBool "BUILD_TESTS" (finalAttrs.doCheck && withShared))
  ];

  # The tests require the shared library thanks to the patch.
  doCheck = withShared;

  # Receive semi-automated updates.
  passthru.updateScript = pkgs.nix-update-script { };

  meta = {
    homepage = "https://github.com/Stiffstream/sobjectizer/tree/master";
    changelog = "https://github.com/Stiffstream/sobjectizer/releases/tag/v.${finalAttrs.version}";
    description = "Implementation of Actor, Publish-Subscribe, and CSP models in one rather small C++ framework";
    license = lib.licenses.bsd3;
    maintainers = [ lib.maintainers.ivalery111 ];
    platforms = lib.platforms.all;
  };
})