diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 8e77ec4ff31..b253d66e45e 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -6316,6 +6316,12 @@ githubId = 119460; name = "Perry Barnoy"; }; + pjjw = { + email = "peter@shortbus.org"; + github = "pjjw"; + githubId = 638; + name = "Peter Woodman"; + }; pjones = { email = "pjones@devalot.com"; github = "pjones"; diff --git a/nixos/tests/mongodb.nix b/nixos/tests/mongodb.nix index a637ec4bfc0..453fb569e8c 100644 --- a/nixos/tests/mongodb.nix +++ b/nixos/tests/mongodb.nix @@ -15,7 +15,7 @@ import ./make-test-python.nix ({ pkgs, ... }: node.wait_for_open_port(27017) assert "hello" in node.succeed( - "mongo ${testQuery}" + "${pkg}/bin/mongo ${testQuery}" ) node.execute( @@ -36,6 +36,7 @@ import ./make-test-python.nix ({ pkgs, ... }: mongodb-3_4 mongodb-3_6 mongodb-4_0 + mongodb-4_2 ]; }; }; @@ -46,6 +47,7 @@ import ./make-test-python.nix ({ pkgs, ... }: + runMongoDBTest pkgs.mongodb-3_4 + runMongoDBTest pkgs.mongodb-3_6 + runMongoDBTest pkgs.mongodb-4_0 + + runMongoDBTest pkgs.mongodb-4_2 + '' node.shutdown() ''; diff --git a/pkgs/development/python-modules/cheetah3/default.nix b/pkgs/development/python-modules/cheetah3/default.nix new file mode 100644 index 00000000000..1c133917cb2 --- /dev/null +++ b/pkgs/development/python-modules/cheetah3/default.nix @@ -0,0 +1,20 @@ +{ lib, buildPythonPackage, fetchPypi, stdenv }: + +buildPythonPackage rec { + pname = "Cheetah3"; + version = "3.2.5"; + + src = fetchPypi { + inherit pname version; + sha256 = "ececc9ca7c58b9a86ce71eb95594c4619949e2a058d2a1af74c7ae8222515eb1"; + }; + + doCheck = false; # Circular dependency + + meta = { + homepage = "http://www.cheetahtemplate.org/"; + description = "A template engine and code generation tool"; + license = lib.licenses.mit; + maintainers = with stdenv.lib.maintainers; [ pjjw ]; + }; +} diff --git a/pkgs/servers/nosql/mongodb/asio-no-experimental-string-view-4-2.patch b/pkgs/servers/nosql/mongodb/asio-no-experimental-string-view-4-2.patch new file mode 100644 index 00000000000..3720dd9ba31 --- /dev/null +++ b/pkgs/servers/nosql/mongodb/asio-no-experimental-string-view-4-2.patch @@ -0,0 +1,22 @@ +--- a/src/third_party/asio-master/asio/include/asio/detail/config.hpp ++++ b/src/third_party/asio-master/asio/include/asio/detail/config.hpp +@@ -831,20 +831,8 @@ + # endif // (__cplusplus >= 201402) + # endif // (_LIBCPP_VERSION < 7000) + # else // defined(ASIO_HAS_CLANG_LIBCXX) +-# if (__cplusplus >= 201402) +-# if __has_include() +-# define ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW 1 +-# endif // __has_include() +-# endif // (__cplusplus >= 201402) + # endif // // defined(ASIO_HAS_CLANG_LIBCXX) + # endif // defined(__clang__) +-# if defined(__GNUC__) +-# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 9)) || (__GNUC__ > 4) +-# if (__cplusplus >= 201402) +-# define ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW 1 +-# endif // (__cplusplus >= 201402) +-# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 9)) || (__GNUC__ > 4) +-# endif // defined(__GNUC__) + # endif // !defined(ASIO_DISABLE_STD_EXPERIMENTAL_STRING_VIEW) + #endif // !defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW) \ No newline at end of file diff --git a/pkgs/servers/nosql/mongodb/forget-build-dependencies-4-2.patch b/pkgs/servers/nosql/mongodb/forget-build-dependencies-4-2.patch new file mode 100644 index 00000000000..6d65238f22a --- /dev/null +++ b/pkgs/servers/nosql/mongodb/forget-build-dependencies-4-2.patch @@ -0,0 +1,36 @@ +# MongoDB keeps track of its build parameters, which tricks nix into +# keeping dependencies to build inputs in the final output. +# We remove the build flags from buildInfo data. +--- a/site_scons/mongo/generators.py ++++ b/site_scons/mongo/generators.py +@@ -33,30 +33,12 @@ def default_buildinfo_environment_data(): + True, + False, + ), +- ( +- 'ccflags', +- '$CCFLAGS', +- True, +- False, +- ), + ( + 'cxx', + '$CXX_VERSION', + True, + False, + ), +- ( +- 'cxxflags', +- '$CXXFLAGS', +- True, +- False, +- ), +- ( +- 'linkflags', +- '$LINKFLAGS', +- True, +- False, +- ), + ( + 'target_arch', + '$TARGET_ARCH', \ No newline at end of file diff --git a/pkgs/servers/nosql/mongodb/forget-build-dependencies.patch b/pkgs/servers/nosql/mongodb/forget-build-dependencies.patch index 897618cceb1..37b4c259f2a 100644 --- a/pkgs/servers/nosql/mongodb/forget-build-dependencies.patch +++ b/pkgs/servers/nosql/mongodb/forget-build-dependencies.patch @@ -1,3 +1,6 @@ +# MongoDB keeps track of its build parameters, which tricks nix into +# keeping dependencies to build inputs in the final output. +# We remove the build flags from buildInfo data. --- a/site_scons/mongo/generators.py +++ b/site_scons/mongo/generators.py @@ -18,10 +18,7 @@ def default_buildinfo_environment_data(): diff --git a/pkgs/servers/nosql/mongodb/mongodb.nix b/pkgs/servers/nosql/mongodb/mongodb.nix index 2c058edbcca..9bf856e11b4 100644 --- a/pkgs/servers/nosql/mongodb/mongodb.nix +++ b/pkgs/servers/nosql/mongodb/mongodb.nix @@ -1,5 +1,5 @@ { stdenv, fetchurl, scons, boost, gperftools, pcre-cpp, snappy, zlib, libyamlcpp -, sasl, openssl, libpcap, python27, curl, Security, CoreFoundation, cctools }: +, sasl, openssl, libpcap, python27, python38, curl, Security, CoreFoundation, cctools }: # Note: # The command line tools are written in Go as part of a different package (mongodb-tools) @@ -11,6 +11,17 @@ with stdenv.lib; }@args: let + variants = if versionAtLeast version "4.2" + then { python = python38.withPackages (ps: with ps; [ pyyaml cheetah3 psutil setuptools ]); + scons = scons; + mozjsVersion = "60"; + mozjsReplace = "defined(HAVE___SINCOS)"; + } + else { python = python27.withPackages (ps: with ps; [ pyyaml typing cheetah ]); + scons = scons.py2; + mozjsVersion = "45"; + mozjsReplace = "defined(HAVE_SINCOS)"; + }; python = python27.withPackages (ps: with ps; [ pyyaml typing cheetah ]); system-libraries = [ "boost" @@ -34,7 +45,7 @@ in stdenv.mkDerivation rec { inherit sha256; }; - nativeBuildInputs = [ scons.py2 ]; + nativeBuildInputs = [ variants.scons ]; buildInputs = [ boost curl @@ -43,7 +54,7 @@ in stdenv.mkDerivation rec { libyamlcpp openssl pcre-cpp - python + variants.python sasl snappy zlib @@ -59,7 +70,7 @@ in stdenv.mkDerivation rec { substituteInPlace SConstruct \ --replace "env = Environment(" "env = Environment(ENV = os.environ," '' + stdenv.lib.optionalString stdenv.isDarwin '' - substituteInPlace src/third_party/mozjs-45/extract/js/src/jsmath.cpp --replace 'defined(HAVE_SINCOS)' 0 + substituteInPlace src/third_party/mozjs-${variants.mozjsVersion}/extract/js/src/jsmath.cpp --replace '${variants.mozjsReplace}' 0 substituteInPlace src/third_party/s2/s1angle.cc --replace drem remainder substituteInPlace src/third_party/s2/s1interval.cc --replace drem remainder diff --git a/pkgs/servers/nosql/mongodb/v4_2.nix b/pkgs/servers/nosql/mongodb/v4_2.nix new file mode 100644 index 00000000000..3ebe69daca1 --- /dev/null +++ b/pkgs/servers/nosql/mongodb/v4_2.nix @@ -0,0 +1,17 @@ +{ stdenv, callPackage, lib, sasl, boost, Security, CoreFoundation, cctools }: + +let + buildMongoDB = callPackage ./mongodb.nix { + inherit sasl; + inherit boost; + inherit Security; + inherit CoreFoundation; + inherit cctools; + }; +in buildMongoDB { + version = "4.2.8"; + sha256 = "13yvhi1258skdni00bh6ph609whqsmhiimhyqy1gs2liwdvh5278"; + patches = + [ ./forget-build-dependencies-4-2.patch ] + ++ stdenv.lib.optionals stdenv.isDarwin [ ./asio-no-experimental-string-view-4-2.patch ]; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 9f3a54eeba4..9a99c462817 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -16257,6 +16257,13 @@ in inherit (darwin.apple_sdk.frameworks) CoreFoundation Security; }; + mongodb-4_2 = callPackage ../servers/nosql/mongodb/v4_2.nix { + sasl = cyrus_sasl; + boost = boost169; + inherit (darwin) cctools; + inherit (darwin.apple_sdk.frameworks) CoreFoundation Security; + }; + nginx-sso = callPackage ../servers/nginx-sso { }; percona-server56 = callPackage ../servers/sql/percona/5.6.x.nix { }; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index ebf2585bfff..0a58a85d0ec 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -2301,6 +2301,8 @@ in { cheetah = callPackage ../development/python-modules/cheetah { }; + cheetah3 = callPackage ../development/python-modules/cheetah3 { }; + cherrypy = if isPy3k then callPackage ../development/python-modules/cherrypy { } else