From dbd0f3e957e6327c736ae030d763368efb1c5254 Mon Sep 17 00:00:00 2001 From: Peter Woodman Date: Tue, 7 Jul 2020 14:53:31 -0400 Subject: [PATCH] mongodb: 4.0.12 -> 4.2.8 Not strictly an upgrade, but adds a new mongodb-4_2 target with the current mongodb from that branch. Use matching client and server versions in mongodb tests- tests were using the mongo 3.4 client to connect, and this finally doesn't work with server 4.2. Per reviewer suggestion, adding myself as cheetah3 maintainer. Additionally, reestore comments describing the purpose of the build-dependencies patch --- maintainers/maintainer-list.nix | 6 ++++ nixos/tests/mongodb.nix | 4 ++- .../python-modules/cheetah3/default.nix | 20 +++++++++++ ...asio-no-experimental-string-view-4-2.patch | 22 ++++++++++++ .../forget-build-dependencies-4-2.patch | 36 +++++++++++++++++++ .../mongodb/forget-build-dependencies.patch | 3 ++ pkgs/servers/nosql/mongodb/mongodb.nix | 19 +++++++--- pkgs/servers/nosql/mongodb/v4_2.nix | 17 +++++++++ pkgs/top-level/all-packages.nix | 7 ++++ pkgs/top-level/python-packages.nix | 2 ++ 10 files changed, 131 insertions(+), 5 deletions(-) create mode 100644 pkgs/development/python-modules/cheetah3/default.nix create mode 100644 pkgs/servers/nosql/mongodb/asio-no-experimental-string-view-4-2.patch create mode 100644 pkgs/servers/nosql/mongodb/forget-build-dependencies-4-2.patch create mode 100644 pkgs/servers/nosql/mongodb/v4_2.nix diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 8e77ec4ff314..b253d66e45e2 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 a637ec4bfc00..453fb569e8c4 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 000000000000..1c133917cb20 --- /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 000000000000..3720dd9ba319 --- /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 000000000000..6d65238f22ab --- /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 897618cceb12..37b4c259f2ac 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 2c058edbccab..9bf856e11b43 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 000000000000..3ebe69daca1b --- /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 9f3a54eeba44..9a99c4628177 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 ebf2585bfffe..0a58a85d0ecf 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