summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHarmen Stoppels <me@harmenstoppels.nl>2024-06-27 12:30:40 +0200
committerGitHub <noreply@github.com>2024-06-27 12:30:40 +0200
commit6c1fa8c30b7b73237ece81666a5797098fc998df (patch)
tree3ca39557c57996751e0f503b30de45edb14e69bd
parent09167fe8aca8309b5f5fec18d21f1814ec024b2b (diff)
downloadspack-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.py112
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")