diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 05da2a8b7b3d..97fae26c5682 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -10735,6 +10735,12 @@ githubId = 49885246; keys = [ { fingerprint = "6358 EF87 86E0 EF2F 1628 103F BAB5 F165 1C71 C9C3"; } ]; }; + ivalery111 = { + name = "Valery"; + email = "ivalery111@gmail.com"; + github = "ivalery111"; + githubId = 37245535; + }; ivan = { email = "ivan@ludios.org"; github = "ivan"; diff --git a/pkgs/by-name/so/sobjectizer/package.nix b/pkgs/by-name/so/sobjectizer/package.nix new file mode 100644 index 000000000000..e46c47baafab --- /dev/null +++ b/pkgs/by-name/so/sobjectizer/package.nix @@ -0,0 +1,60 @@ +{ + 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; + }; +})