From 97c4dff1583b871605964c165056074f0a502d0b Mon Sep 17 00:00:00 2001 From: Nathan Smyth Date: Fri, 31 May 2019 22:14:14 +1000 Subject: mongodb: split packages to expose 3.4, 3.6 and 4.0 --- pkgs/servers/nosql/mongodb/default.nix | 109 ------------------- .../mongodb/forget-build-dependencies-3-4.patch | 17 +++ pkgs/servers/nosql/mongodb/mongodb.nix | 120 +++++++++++++++++++++ pkgs/servers/nosql/mongodb/v3_4.nix | 12 +++ pkgs/servers/nosql/mongodb/v3_6.nix | 12 +++ pkgs/servers/nosql/mongodb/v4_0.nix | 12 +++ 6 files changed, 173 insertions(+), 109 deletions(-) delete mode 100644 pkgs/servers/nosql/mongodb/default.nix create mode 100644 pkgs/servers/nosql/mongodb/forget-build-dependencies-3-4.patch create mode 100644 pkgs/servers/nosql/mongodb/mongodb.nix create mode 100644 pkgs/servers/nosql/mongodb/v3_4.nix create mode 100644 pkgs/servers/nosql/mongodb/v3_6.nix create mode 100644 pkgs/servers/nosql/mongodb/v4_0.nix (limited to 'pkgs/servers/nosql') diff --git a/pkgs/servers/nosql/mongodb/default.nix b/pkgs/servers/nosql/mongodb/default.nix deleted file mode 100644 index 966cebc799e..00000000000 --- a/pkgs/servers/nosql/mongodb/default.nix +++ /dev/null @@ -1,109 +0,0 @@ -{ stdenv, fetchurl, fetchpatch, scons, boost, gperftools, pcre-cpp, snappy, zlib, - libyamlcpp, sasl, openssl, libpcap, wiredtiger, Security, python27, libtool, curl -}: - -# Note: -# The command line tools are written in Go as part of a different package (mongodb-tools) - -with stdenv.lib; - -let version = "4.0.4"; - python = python27.withPackages (ps: with ps; [ pyyaml typing cheetah ]); - system-libraries = [ - "pcre" - #"asio" -- XXX use package? - #"wiredtiger" - "boost" - "snappy" - "zlib" - #"valgrind" -- mongodb only requires valgrind.h, which is vendored in the source. - #"stemmer" -- not nice to package yet (no versioning, no makefile, no shared libs). - "yaml" - ] ++ optionals stdenv.isLinux [ "tcmalloc" ]; - inherit (stdenv.lib) systems subtractLists; - -in stdenv.mkDerivation { - pname = "mongodb"; - inherit version; - - src = fetchurl { - url = "https://fastdl.mongodb.org/src/mongodb-src-r${version}.tar.gz"; - sha256 = "1qycwr9f99b5cy4nf54yv2y724xis3lwd2h6iv2pfp36qnhsvfh2"; - }; - - nativeBuildInputs = [ scons ]; - buildInputs = [ - sasl boost gperftools pcre-cpp snappy - zlib libyamlcpp sasl openssl.dev openssl.out libpcap python curl - ] ++ stdenv.lib.optionals stdenv.isDarwin [ Security libtool ]; - - patches = - [ - # 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. - ./forget-build-dependencies.patch - ]; - - postPatch = '' - # fix environment variable reading - substituteInPlace SConstruct \ - --replace "env = Environment(" "env = Environment(ENV = os.environ," - '' + stdenv.lib.optionalString stdenv.isDarwin '' - - substituteInPlace src/third_party/s2/s1angle.cc --replace drem remainder - substituteInPlace src/third_party/s2/s1interval.cc --replace drem remainder - substituteInPlace src/third_party/s2/s2cap.cc --replace drem remainder - substituteInPlace src/third_party/s2/s2latlng.cc --replace drem remainder - substituteInPlace src/third_party/s2/s2latlngrect.cc --replace drem remainder - '' + stdenv.lib.optionalString stdenv.isi686 '' - - # don't fail by default on i686 - substituteInPlace src/mongo/db/storage/storage_options.h \ - --replace 'engine("wiredTiger")' 'engine("mmapv1")' - ''; - - NIX_CFLAGS_COMPILE = stdenv.lib.optionalString stdenv.cc.isClang "-Wno-unused-command-line-argument"; - - sconsFlags = [ - "--release" - "--ssl" - #"--rocksdb" # Don't have this packaged yet - "--wiredtiger=${if stdenv.is64bit then "on" else "off"}" - "--js-engine=mozjs" - "--use-sasl-client" - "--disable-warnings-as-errors" - "VARIANT_DIR=nixos" # Needed so we don't produce argument lists that are too long for gcc / ld - ] ++ map (lib: "--use-system-${lib}") system-libraries; - - preBuild = '' - sconsFlags+=" CC=$CC" - sconsFlags+=" CXX=$CXX" - '' + optionalString stdenv.isAarch64 '' - sconsFlags+=" CCFLAGS='-march=armv8-a+crc'" - ''; - - preInstall = '' - mkdir -p $out/lib - ''; - - postInstall = '' - rm $out/bin/install_compass - ''; - - prefixKey = "--prefix="; - - enableParallelBuilding = true; - - hardeningEnable = [ "pie" ]; - - meta = { - description = "A scalable, high-performance, open source NoSQL database"; - homepage = http://www.mongodb.org; - license = licenses.sspl; - broken = stdenv.hostPlatform.isAarch64; #g++ has internal compiler errors - - maintainers = with maintainers; [ bluescreen303 offline cstrahan ]; - platforms = subtractLists systems.doubles.i686 systems.doubles.unix; - }; -} diff --git a/pkgs/servers/nosql/mongodb/forget-build-dependencies-3-4.patch b/pkgs/servers/nosql/mongodb/forget-build-dependencies-3-4.patch new file mode 100644 index 00000000000..ca2c043deb2 --- /dev/null +++ b/pkgs/servers/nosql/mongodb/forget-build-dependencies-3-4.patch @@ -0,0 +1,17 @@ +--- a/site_scons/mongo_scons_utils.py ++++ b/site_scons/mongo_scons_utils.py +@@ -84,14 +84,11 @@ + def default_buildinfo_environment_data(): + return ( + ('distmod', '$MONGO_DISTMOD', True, True,), + ('distarch', '$MONGO_DISTARCH', True, True,), + ('cc', '$CC_VERSION', True, False,), +- ('ccflags', '$CCFLAGS', True, False,), + ('cxx', '$CXX_VERSION', True, False,), +- ('cxxflags', '$CXXFLAGS', True, False,), +- ('linkflags', '$LINKFLAGS', True, False,), + ('target_arch', '$TARGET_ARCH', True, True,), + ('target_os', '$TARGET_OS', True, False,), + ) + + # If you want buildInfo and --version to be relatively empty, set diff --git a/pkgs/servers/nosql/mongodb/mongodb.nix b/pkgs/servers/nosql/mongodb/mongodb.nix new file mode 100644 index 00000000000..fd4869f92aa --- /dev/null +++ b/pkgs/servers/nosql/mongodb/mongodb.nix @@ -0,0 +1,120 @@ +{ stdenv, fetchurl, fetchpatch, scons, boost, gperftools, pcre-cpp, snappy, zlib +, libyamlcpp, sasl, openssl, libpcap, wiredtiger, Security, python27, libtool +, curl }: + +# Note: +# The command line tools are written in Go as part of a different package (mongodb-tools) + +with stdenv.lib; + +{ version, sha256, patches ? [ ] }@args: + +let + python = python27.withPackages (ps: with ps; [ pyyaml typing cheetah ]); + system-libraries = [ + "pcre" + #"asio" -- XXX use package? + #"wiredtiger" + "boost" + "snappy" + "zlib" + #"valgrind" -- mongodb only requires valgrind.h, which is vendored in the source. + #"stemmer" -- not nice to package yet (no versioning, no makefile, no shared libs). + "yaml" + ] ++ optionals stdenv.isLinux [ "tcmalloc" ]; + inherit (stdenv.lib) systems subtractLists; + +in stdenv.mkDerivation rec { + inherit version; + name = "mongodb-${version}"; + + src = fetchurl { + url = "https://fastdl.mongodb.org/src/mongodb-src-r${version}.tar.gz"; + inherit sha256; + }; + + nativeBuildInputs = [ scons ]; + buildInputs = [ + sasl + boost + gperftools + pcre-cpp + snappy + zlib + libyamlcpp + sasl + openssl.dev + openssl.out + libpcap + python + curl + ] ++ stdenv.lib.optionals stdenv.isDarwin [ Security libtool ]; + + # 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. + inherit patches; + + postPatch = '' + # fix environment variable reading + substituteInPlace SConstruct \ + --replace "env = Environment(" "env = Environment(ENV = os.environ," + '' + stdenv.lib.optionalString stdenv.isDarwin '' + + substituteInPlace src/third_party/s2/s1angle.cc --replace drem remainder + substituteInPlace src/third_party/s2/s1interval.cc --replace drem remainder + substituteInPlace src/third_party/s2/s2cap.cc --replace drem remainder + substituteInPlace src/third_party/s2/s2latlng.cc --replace drem remainder + substituteInPlace src/third_party/s2/s2latlngrect.cc --replace drem remainder + '' + stdenv.lib.optionalString stdenv.isi686 '' + + # don't fail by default on i686 + substituteInPlace src/mongo/db/storage/storage_options.h \ + --replace 'engine("wiredTiger")' 'engine("mmapv1")' + ''; + + NIX_CFLAGS_COMPILE = stdenv.lib.optionalString stdenv.cc.isClang + "-Wno-unused-command-line-argument"; + + sconsFlags = [ + "--release" + "--ssl" + #"--rocksdb" # Don't have this packaged yet + "--wiredtiger=${if stdenv.is64bit then "on" else "off"}" + "--js-engine=mozjs" + "--use-sasl-client" + "--disable-warnings-as-errors" + "VARIANT_DIR=nixos" # Needed so we don't produce argument lists that are too long for gcc / ld + ] ++ map (lib: "--use-system-${lib}") system-libraries; + + preBuild = '' + sconsFlags+=" CC=$CC" + sconsFlags+=" CXX=$CXX" + '' + optionalString stdenv.isAarch64 '' + sconsFlags+=" CCFLAGS='-march=armv8-a+crc'" + ''; + + preInstall = '' + mkdir -p "$out/lib" + ''; + + postInstall = '' + rm -f "$out/bin/install_compass" || true + ''; + + prefixKey = "--prefix="; + + enableParallelBuilding = true; + + hardeningEnable = [ "pie" ]; + + meta = { + description = "A scalable, high-performance, open source NoSQL database"; + homepage = "http://www.mongodb.org"; + license = licenses.sspl; + broken = stdenv.hostPlatform.isAarch64; # g++ has internal compiler errors + + maintainers = with maintainers; [ bluescreen303 offline cstrahan ]; + platforms = subtractLists systems.doubles.i686 systems.doubles.unix; + }; +} diff --git a/pkgs/servers/nosql/mongodb/v3_4.nix b/pkgs/servers/nosql/mongodb/v3_4.nix new file mode 100644 index 00000000000..07d27545a58 --- /dev/null +++ b/pkgs/servers/nosql/mongodb/v3_4.nix @@ -0,0 +1,12 @@ +{ stdenv, callPackage, lib, sasl, boost, Security }: + +let + buildMongoDB = callPackage ./mongodb.nix { inherit sasl; inherit boost; inherit Security; }; +in + buildMongoDB { + version = "3.4.20"; + sha256 = "15avrhakbspz0q1w5n7dqzjjfkxi7md64a9axl97gfxi4ln7mhz0"; + patches = [ + ./forget-build-dependencies-3-4.patch + ]; + } diff --git a/pkgs/servers/nosql/mongodb/v3_6.nix b/pkgs/servers/nosql/mongodb/v3_6.nix new file mode 100644 index 00000000000..9000a2b5ed5 --- /dev/null +++ b/pkgs/servers/nosql/mongodb/v3_6.nix @@ -0,0 +1,12 @@ +{ stdenv, callPackage, lib, sasl, boost, Security }: + +let + buildMongoDB = callPackage ./mongodb.nix { inherit sasl; inherit boost; inherit Security; }; +in + buildMongoDB { + version = "3.6.12"; + sha256 = "1fi1ccid4rnfjg6yn3183qrhjqc8hz7jfgdpwp1dy6piw6z85n3l"; + patches = [ + ./forget-build-dependencies.patch + ]; + } diff --git a/pkgs/servers/nosql/mongodb/v4_0.nix b/pkgs/servers/nosql/mongodb/v4_0.nix new file mode 100644 index 00000000000..75e0cecc573 --- /dev/null +++ b/pkgs/servers/nosql/mongodb/v4_0.nix @@ -0,0 +1,12 @@ +{ stdenv, callPackage, lib, sasl, boost, Security }: + +let + buildMongoDB = callPackage ./mongodb.nix { inherit sasl; inherit boost; inherit Security; }; +in + buildMongoDB { + version = "4.0.9"; + sha256 = "0klm6dl1pr9wq4ghm2jjn3wzs1zpj1aabqjqjfddanxq2an7scph"; + patches = [ + ./forget-build-dependencies.patch + ]; + } -- cgit 1.4.1