guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

02/02: gnu: conda: Update to 4.8.3.


From: guix-commits
Subject: 02/02: gnu: conda: Update to 4.8.3.
Date: Wed, 12 Aug 2020 18:05:50 -0400 (EDT)

rekado pushed a commit to branch master
in repository guix.

commit 638ef1e81d83dfb1fdb7ecc5f3f80ee1151702d3
Author: Ricardo Wurmus <rekado@elephly.net>
AuthorDate: Thu Aug 13 00:00:54 2020 +0200

    gnu: conda: Update to 4.8.3.
    
    * gnu/packages/package-management.scm (python-conda): Define as deprecated
    alias for conda.
    (python2-conda): Remove variable.
    (conda)[arguments]: Add phases "fix-permissions",
    "correct-python-executable-name", "do-not-use-python-root-as-prefix", and
    "init"; remove phase "remove-failing-tests"; update "check" phase.
    [inputs]: Add python-wrapper.
    [native-inputs]: Move them all to...
    [propagated-inputs]: ...this field.  Add python-conda-package-handling,
    python-tqdm, and zstd.
    [description]: Remove line about Conda as a library.
---
 gnu/packages/package-management.scm | 211 ++++++++++++++++++------------------
 1 file changed, 103 insertions(+), 108 deletions(-)

diff --git a/gnu/packages/package-management.scm 
b/gnu/packages/package-management.scm
index 325007a..77c89af 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -782,10 +782,10 @@ environments.")
 extracting, creating, and converting between formats.")
     (license license:bsd-3)))
 
-(define-public python-conda
+(define-public conda
   (package
-    (name "python-conda")
-    (version "4.3.16")
+    (name "conda")
+    (version "4.8.3")
     (source
      (origin
        (method git-fetch)
@@ -795,58 +795,118 @@ extracting, creating, and converting between formats.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1qwy0awx4qf2pbk8z2b7q6wdcq7mvwpxxjhg27mbirdvs5hw7hb2"))))
+         "0iv1qzk21jsk6vdp3106xvpvl68zgfdqb3kyzpya87jhkl204l7r"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'fix-permissions
+           (lambda _
+             ;; This file is no longer writable after downloading with
+             ;; 'git-fetch'
+             (make-file-writable
+              "tests/conda_env/support/saved-env/environment.yml")
+             #t))
+         (add-after 'unpack 'correct-python-executable-name
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((python (assoc-ref inputs "python-wrapper")))
+               #;
+               (substitute* "conda/common/path.py"
+                 (("python_version or ''")
+                  "python_version or '3'"))
+               (substitute* "conda/core/initialize.py"
+                 (("python_exe = join")
+                  (format #f "python_exe = \"~a/bin/python\" #"
+                          python))))
+             #t))
+         (add-after 'unpack 'do-not-use-python-root-as-prefix
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (python (assoc-ref inputs "python-wrapper")))
+               (substitute* "tests/core/test_initialize.py"
+                 (("\"\"\"\\) % conda_prefix")
+                  (format #f "\"\"\") % \"~a\"" python))
+                 (("CONDA_PYTHON_EXE \"%s\"' % join\\(conda_prefix")
+                  (format #f "CONDA_PYTHON_EXE \"%s\"' % join(\"~a\""
+                          python))
+                 (("conda_prefix = abspath\\(sys.prefix\\)")
+                  (format #f "conda_prefix = abspath(\"~a\")" out)))
+               (substitute* "conda/base/context.py"
+                 (("os.chdir\\(sys.prefix\\)")
+                  (format #f "os.chdir(\"~a\")" out))
+                 (("sys.prefix, '.condarc'")
+                  (format #f "\"~a\", '.condarc'" out))
+                 (("return abspath\\(sys.prefix\\)")
+                  (format #f "return abspath(\"~a\")" out))
+                 (("os.path.join\\(sys.prefix, bin_dir, exe\\)")
+                  (format #f "\"~a/bin/conda\"" out))
+                 (("'CONDA_EXE', sys.executable")
+                  (format #f "'CONDA_EXE', \"~a/bin/conda\"" out))))
+             #t))
          (add-before 'build 'create-version-file
            (lambda _
              (with-output-to-file "conda/.version"
                (lambda () (display ,version)))
              #t))
-         (add-before 'check 'remove-failing-tests
-           (lambda _
-             ;; These tests require internet/network access
-             (let ((network-tests '("test_cli.py"
-                                    "test_create.py"
-                                    "test_export.py"
-                                    "test_fetch.py"
-                                    "test_history.py"
-                                    "test_info.py"
-                                    "test_install.py"
-                                    "test_priority.py"
-                                    "conda_env/test_cli.py"
-                                    "conda_env/test_create.py"
-                                    "conda_env/specs/test_notebook.py"
-                                    "conda_env/utils/test_notebooks.py"
-                                    "core/test_index.py"
-                                    "core/test_repodata.py")))
-               (with-directory-excursion "tests"
-                 (for-each delete-file network-tests)
-
-                 ;; FIXME: This test creates a file, then deletes it and tests
-                 ;; that the file was deleted.  For some reason it fails when
-                 ;; building with guix, but does not when you run it in the
-                 ;; directory left when you build with the --keep-failed
-                 ;; option
-                 (delete-file "gateways/disk/test_delete.py")
-                 ;; This file is no longer writable after downloading with 
'git-fetch'
-                 (make-file-writable 
"conda_env/support/saved-env/environment.yml")
-                 #t))))
          (replace 'check
            (lambda _
              (setenv "HOME" "/tmp")
-             (invoke "py.test"))))))
-    (native-inputs
-     `(("python-cytoolz" ,python-cytoolz)
-       ("python-ruamel.yaml" ,python-ruamel.yaml)
-       ("python-requests" ,python-requests)
+             (invoke "py.test" "-vv"
+                     "-k"
+                     (string-append
+                      "not integration"
+                      ;; This one reports a newer version of conda than
+                      ;; expected.
+                      " and not test_auto_update_conda"
+                      ;; This fails because the output directory is not a
+                      ;; Conda environment.
+                      " and not test_list"
+                      ;; This fails because we patched the default root
+                      ;; prefix.
+                      " and not test_default_target_is_root_prefix"
+                      ;; TODO: I don't understand what this failure means
+                      " and not test_PrefixData_return_value_contract"
+                      ;; TODO: same here
+                      " and not test_install_1"
+                      ;; Not sure if this is really wrong.  This fails because
+                      ;; /gnu/store/...python-conda-4.8.3/bin/python
+                      ;; is not /gnu/store/...python-wrapper-3.8.2/bin/python
+                      " and not test_make_entry_point"))))
+         (add-after 'install 'init
+           ;; This writes a whole bunch of shell initialization files to the
+           ;; prefix directory.  Many features of conda can only be used after
+           ;; running "conda init".
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (add-installed-pythonpath inputs outputs)
+             (setenv "HOME" "/tmp")
+
+             ;; "conda init" insists on using sudo, because it is hell-bent on
+             ;; modifying system files.
+             (mkdir-p "/tmp/fake-sudo")
+             (with-output-to-file "/tmp/fake-sudo/sudo"
+               (lambda () (format #t "#!~/bin/sh~%exec $@" (which "sh"))))
+             (chmod "/tmp/fake-sudo/sudo" #o700)
+             (setenv "PATH" (string-append "/tmp/fake-sudo:"
+                                           (getenv "PATH")))
+
+             (invoke (string-append (assoc-ref outputs "out")
+                                    "/bin/conda")
+                     "init"))))))
+    (inputs
+     `(("python-wrapper" ,python-wrapper)))
+    (propagated-inputs
+     `(("python-anaconda-client" ,python-anaconda-client)
+       ("python-conda-package-handling" ,python-conda-package-handling)
+       ("python-cytoolz" ,python-cytoolz)
        ("python-pycosat" ,python-pycosat)
        ("python-pytest" ,python-pytest)
-       ("python-responses" ,python-responses)
        ("python-pyyaml" ,python-pyyaml)
-       ("python-anaconda-client" ,python-anaconda-client)))
+       ("python-requests" ,python-requests)
+       ("python-responses" ,python-responses)
+       ("python-ruamel.yaml" ,python-ruamel.yaml)
+       ("python-tqdm" ,python-tqdm)
+       ;; XXX: This is dragged in by libarchive and is needed at runtime.
+       ("zstd" ,zstd)))
     (home-page "https://github.com/conda/conda";)
     (synopsis "Cross-platform, OS-agnostic, system-level binary package 
manager")
     (description
@@ -854,76 +914,11 @@ extracting, creating, and converting between formats.")
 is the package manager used by Anaconda installations, but it may be used for
 other systems as well.  Conda makes environments first-class citizens, making
 it easy to create independent environments even for C libraries.  Conda is
-written entirely in Python.
-
-This package provides Conda as a library.")
+written entirely in Python.")
     (license license:bsd-3)))
 
-(define-public python2-conda
-  (let ((base (package-with-python2
-               (strip-python2-variant python-conda))))
-    (package (inherit base)
-             (native-inputs
-              `(("python2-enum34" ,python2-enum34)
-                ,@(package-native-inputs base))))))
-
-(define-public conda
-  (package (inherit python-conda)
-    (name "conda")
-    (arguments
-     (substitute-keyword-arguments (package-arguments python-conda)
-       ((#:phases phases)
-        `(modify-phases ,phases
-           (replace 'build
-             (lambda* (#:key outputs #:allow-other-keys)
-               ;; This test fails when run before installation.
-               (delete-file "tests/test_activate.py")
-
-               ;; Fix broken defaults
-               (substitute* "conda/base/context.py"
-                 (("return sys.prefix")
-                  (string-append "return \"" (assoc-ref outputs "out") "\""))
-                 (("return (prefix_is_writable\\(self.root_prefix\\))" _ match)
-                  (string-append "return False if self.root_prefix == 
self.conda_prefix else "
-                                 match)))
-
-               ;; The util/setup-testing.py is used to build conda in
-               ;; application form, rather than the default, library form.
-               ;; With this, we are able to run commands like `conda --help`
-               ;; directly on the command line
-               (invoke "python" "utils/setup-testing.py" "build_py")))
-           (replace 'install
-             (lambda* (#:key inputs outputs #:allow-other-keys)
-               (let* ((out (assoc-ref outputs "out"))
-                      (target (string-append out "/lib/python"
-                                             (python-version
-                                              (assoc-ref inputs "python"))
-                                             "/site-packages/")))
-                 ;; The installer aborts if the target directory is not on
-                 ;; PYTHONPATH.
-                 (setenv "PYTHONPATH"
-                         (string-append target ":" (getenv "PYTHONPATH")))
-
-                 ;; And it aborts if the directory doesn't exist.
-                 (mkdir-p target)
-                 (invoke "python" "utils/setup-testing.py" "install"
-                         (string-append "--prefix=" out)))))
-           ;; The "activate" and "deactivate" scripts don't need wrapping.
-           ;; They also break when they are renamed.
-           (add-after 'wrap 'undo-wrap
-             (lambda* (#:key outputs #:allow-other-keys)
-               (with-directory-excursion (string-append (assoc-ref outputs 
"out") "/bin/")
-                 (delete-file "deactivate")
-                 (rename-file ".deactivate-real" "deactivate")
-                 (delete-file "activate")
-                 (rename-file ".activate-real" "activate")
-                 #t)))))))
-    (description
-     "Conda is a cross-platform, Python-agnostic binary package manager.  It
-is the package manager used by Anaconda installations, but it may be used for
-other systems as well.  Conda makes environments first-class citizens, making
-it easy to create independent environments even for C libraries.  Conda is
-written entirely in Python.")))
+(define-public python-conda
+  (deprecated-package "python-conda" conda))
 
 (define-public gwl
   (package



reply via email to

[Prev in Thread] Current Thread [Next in Thread]