guix_mirror_bot pushed a commit to branch master
in repository guix.

commit 9b0ef0e26dd57c4abf98fabb7e35e408bd1611fd
Author: Danny Milosavljevic <[email protected]>
AuthorDate: Sun Dec 14 15:39:19 2025 +0100

    gnu: Add libmamba.
    
    * gnu/packages/package-management.scm (libmamba): New variable.
    
    Change-Id: Ib2fc93860bff8facc4fbebdf3cf151eb216ac32c
---
 gnu/packages/package-management.scm | 93 +++++++++++++++++++++++++++++++++++++
 1 file changed, 93 insertions(+)

diff --git a/gnu/packages/package-management.scm 
b/gnu/packages/package-management.scm
index 434448c7e7..7e0079c2bc 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -1707,6 +1707,99 @@ written entirely in Python.")
      "Libsolv is a library for solving package dependencies using a SAT solver.
 It is used by the RPM package manager and the Mamba/Conda package managers.")
     (license license:bsd-3)))
+
+(define-public libmamba
+  (package
+    (name "libmamba")
+    (version "2.3.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mamba-org/mamba";)
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "10zvhm9mx4jcvkfqnzp1h1va48zfhz8wbpan1imq3b08493h53nz"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list
+      #:configure-flags
+      #~(list "-DBUILD_LIBMAMBA=ON"
+              "-DBUILD_SHARED=ON"
+              "-DBUILD_LIBMAMBA_TESTS=ON"
+              "-DBUILD_LIBMAMBAPY=OFF"
+              "-DBUILD_MICROMAMBA=OFF"
+              "-DBUILD_MAMBA_PACKAGE=OFF")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'add-find-zstd
+            (lambda* (#:key inputs #:allow-other-keys)
+              (mkdir-p "cmake/modules")
+              ;; We build zstd from Makefile rather than cmake.
+              ;; That means zstd doesn't install their zstdConfig.cmake.
+              ;; Hence, we have to create our own cmake file in mamba to have
+              ;; cmake find zstd.
+              (with-output-to-file "cmake/modules/Findzstd.cmake"
+                (lambda ()
+                  (display "
+find_path(ZSTD_INCLUDE_DIR zstd.h)
+find_library(ZSTD_LIBRARY NAMES zstd)
+
+if(ZSTD_INCLUDE_DIR AND ZSTD_LIBRARY)
+  set(zstd_FOUND TRUE)
+  if(NOT TARGET zstd::libzstd_shared)
+    add_library(zstd::libzstd_shared UNKNOWN IMPORTED)
+    set_target_properties(zstd::libzstd_shared PROPERTIES
+      IMPORTED_LOCATION \"${ZSTD_LIBRARY}\"
+      INTERFACE_INCLUDE_DIRECTORIES \"${ZSTD_INCLUDE_DIR}\")
+  endif()
+endif()
+")))))
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              (when tests?
+                ;; Create fake root prefix and home for tests
+                (let ((fake-root (string-append (getcwd) "/fake-mamba-root"))
+                      (fake-home (string-append (getcwd) "/fake-home")))
+                  (mkdir-p (string-append fake-root "/pkgs"))
+                  (mkdir-p (string-append fake-root "/envs"))
+                  (mkdir-p (string-append fake-root "/conda-meta"))
+                  (mkdir-p fake-home)
+                  (setenv "MAMBA_ROOT_PREFIX" fake-root)
+                  (setenv "HOME" fake-home))
+                (invoke "./libmamba/tests/test_libmamba"
+                        "~which" ; expects /bin, /usr/bin
+                        "~user_home_dir" ; getpwuid fails in build container
+                        "~SubdirIndexLoader" ; downloads from 
conda.anaconda.org
+                        "~Create problem graph" ; downloads from 
conda.anaconda.org
+                        "~Test create_conda_forge utility" ; downloads from 
conda.anaconda.org
+                        "~Install highest priority package" ; timestamp is 0 
in build env
+                        "~Use CA certificate from the root prefix" ; no CA 
certs in build env
+                        "~remote_yaml_file")))))))  ; downloads from 
raw.githubusercontent.com
+    (native-inputs
+     (list catch2-3 cli11 pkg-config python))
+    (inputs
+     (list curl
+           libarchive
+           libsolv
+           openssl
+           simdjson
+           `(,zstd "lib")))
+    (propagated-inputs
+     (list fmt-11
+           libexpected
+           nlohmann-json
+           reproc
+           spdlog-1.15
+           yaml-cpp))
+    (home-page "https://github.com/mamba-org/mamba";)
+    (synopsis "Fast cross-platform package manager library")
+    (description
+     "Libmamba is a C++ library that provides fast package management
+functionality.  It uses libsolv for dependency resolution and is the
+foundation for the Mamba package manager.")
+    (license license:bsd-3)))
 (define-public conan
   (package
     (name "conan")

Reply via email to