diff options
author | Harmen Stoppels <me@harmenstoppels.nl> | 2024-06-27 12:30:40 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-27 12:30:40 +0200 |
commit | 6c1fa8c30b7b73237ece81666a5797098fc998df (patch) | |
tree | 3ca39557c57996751e0f503b30de45edb14e69bd | |
parent | 09167fe8aca8309b5f5fec18d21f1814ec024b2b (diff) | |
download | spack-6c1fa8c30b7b73237ece81666a5797098fc998df.tar.gz spack-6c1fa8c30b7b73237ece81666a5797098fc998df.tar.bz2 spack-6c1fa8c30b7b73237ece81666a5797098fc998df.tar.xz spack-6c1fa8c30b7b73237ece81666a5797098fc998df.zip |
mongo-c-driver: overhaul package recipe (#44866)
-rw-r--r-- | var/spack/repos/builtin/packages/mongo-c-driver/package.py | 112 |
1 files changed, 55 insertions, 57 deletions
diff --git a/var/spack/repos/builtin/packages/mongo-c-driver/package.py b/var/spack/repos/builtin/packages/mongo-c-driver/package.py index f53ee03166..497b8da78c 100644 --- a/var/spack/repos/builtin/packages/mongo-c-driver/package.py +++ b/var/spack/repos/builtin/packages/mongo-c-driver/package.py @@ -3,19 +3,21 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.build_systems import autotools, cmake from spack.package import * -class MongoCDriver(Package): +class MongoCDriver(AutotoolsPackage, CMakePackage): """libmongoc is a client library written in C for MongoDB.""" homepage = "https://github.com/mongodb/mongo-c-driver" - url = "https://github.com/mongodb/mongo-c-driver/releases/download/1.7.0/mongo-c-driver-1.7.0.tar.gz" + url = "https://github.com/mongodb/mongo-c-driver/archive/refs/tags/1.25.0.tar.gz" maintainers("michaelkuhn") license("Apache-2.0") + version("1.27.2", sha256="a53010803e2df097a2ea756be6ece34c8f52cda2c18e6ea21115097b75f5d4bf") version("1.24.4", sha256="2f4a3e8943bfe3b8672c2053f88cf74acc8494dc98a45445f727901eee141544") version("1.23.3", sha256="c8f951d4f965d455f37ae2e10b72914736fc0f25c4ffc14afc3cbadd1a574ef6") version("1.21.0", sha256="840ff79480070f98870743fbb332e2c10dd021b6b9c952d08010efdda4d70ee4") @@ -32,7 +34,11 @@ class MongoCDriver(Package): version("1.7.0", sha256="48a0dbd44fef2124b51cf501f06be269b1a39452303b880b37473a6030c6e023") version("1.6.3", sha256="82df03de117a3ccf563b9eccfd2e5365df8f215a36dea7446d439969033ced7b") version("1.6.2", sha256="7ec27e9be4da2bf9e4b316374f8c29f816f0a0f019b984411777e9681e17f70e") - version("1.6.1", sha256="1bdfb27944c6da8e56da209a5d56efac70df1f8c4ca4498b46f75bf3f9360898") + version( + "1.6.1", + sha256="1bdfb27944c6da8e56da209a5d56efac70df1f8c4ca4498b46f75bf3f9360898", + deprecated=True, + ) variant("ssl", default=True, description="Enable SSL support.") variant("snappy", default=True, description="Enable Snappy support.") @@ -45,16 +51,32 @@ class MongoCDriver(Package): when="@1.8.1", ) - depends_on("cmake@3.1:", type="build", when="@1.10.0:") + with when("build_system=cmake"): + depends_on("cmake@3.1:", type="build") + + with when("build_system=autotools"): + depends_on("autoconf", type="build", when="@1.8.1") + depends_on("automake", type="build", when="@1.8.1") + depends_on("libtool", type="build", when="@1.8.1") + + build_system( + conditional("cmake", when="@1.10:"), + conditional("autotools", when="@:1.9"), + default="cmake", + ) - depends_on("autoconf", type="build", when="@1.8.1") - depends_on("automake", type="build", when="@1.8.1") - depends_on("libtool", type="build", when="@1.8.1") - depends_on("m4", type="build", when="@1.8.1") + def url_for_version(self, version): + if version >= Version("1.25.0"): + return f"https://github.com/mongodb/mongo-c-driver/archive/refs/tags/{version}.tar.gz" + if version >= Version("1.10.0"): + return f"https://github.com/mongodb/mongo-c-driver/releases/download/{version}/mongo-c-driver-{version}.tar.gz" + else: + return f"https://github.com/mongodb/libbson/releases/download/{version}/libbson-{version}.tar.gz" depends_on("pkgconfig", type="build") # When updating mongo-c-driver, libbson has to be kept in sync. + depends_on("libbson@1.27", when="@1.27") depends_on("libbson@1.24", when="@1.24") depends_on("libbson@1.23", when="@1.23") depends_on("libbson@1.21", when="@1.21") @@ -70,56 +92,42 @@ class MongoCDriver(Package): depends_on("zlib-api", when="+zlib") depends_on("zstd", when="+zstd") - def cmake_args(self): - spec = self.spec - - args = ["-DENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF"] - - if spec.satisfies("@1.24:"): - args.append("-DUSE_SYSTEM_LIBBSON=ON") - else: - args.append("-DENABLE_BSON=SYSTEM") + @property + def force_autoreconf(self): + # Run autoreconf due to build system patch + return self.spec.satisfies("@1.8.1") - if "+ssl" in spec: - args.append("-DENABLE_SSL=OPENSSL") - else: - args.append("-DENABLE_SSL=OFF") - if "+snappy" in spec: - args.append("-DENABLE_SNAPPY=ON") +class CMakeBuilder(cmake.CMakeBuilder): + def cmake_args(self): + args = [ + self.define("ENABLE_AUTOMATIC_INIT_AND_CLEANUP", False), + self.define("ENABLE_MONGOC", True), + self.define("MONGO_USE_CCACHE", False), + self.define("MONGO_USE_LLD", False), + self.define_from_variant("ENABLE_SNAPPY", "snappy"), + self.define_from_variant("ENABLE_ZSTD", "zstd"), + ] + + if self.spec.satisfies("@1.24:"): + args.append(self.define("USE_SYSTEM_LIBBSON", True)) else: - args.append("-DENABLE_SNAPPY=OFF") + args.append(self.define("ENABLE_BSON", "SYSTEM")) - if "+zlib" in spec: - args.append("-DENABLE_ZLIB=SYSTEM") + if self.spec.satisfies("+ssl"): + args.append(self.define("ENABLE_SSL", "OPENSSL")) else: - args.append("-DENABLE_ZLIB=OFF") + args.append(self.define("ENABLE_SSL", False)) - if "+zstd" in spec: - args.append("-DENABLE_ZSTD=ON") + if self.spec.satisfies("+zlib"): + args.append(self.define("ENABLE_ZLIB", "SYSTEM")) else: - args.append("-DENABLE_ZSTD=OFF") + args.append(self.define("ENABLE_ZLIB", False)) return args - def install(self, spec, prefix): - with working_dir("spack-build", create=True): - # We cannot simply do - # cmake('..', *std_cmake_args, *self.cmake_args()) - # because that is not Python 2 compatible. Instead, collect - # arguments into a temporary buffer first. - args = [] - args.extend(std_cmake_args) - args.extend(self.cmake_args()) - cmake("..", *args) - make() - make("install") - - @property - def force_autoreconf(self): - # Run autoreconf due to build system patch - return self.spec.satisfies("@1.8.1") +class AutotoolsBuilder(autotools.AutotoolsBuilder): def configure_args(self): spec = self.spec @@ -143,13 +151,3 @@ class MongoCDriver(Package): args.append("--with-zlib=system") return args - - @when("@:1.9") - def install(self, spec, prefix): - configure("--prefix={0}".format(prefix), *self.configure_args()) - make() - if self.run_tests: - make("check") - make("install") - if self.run_tests: - make("installcheck") |