me
/
guix
Archived
1
0
Fork 0

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.
master
Ricardo Wurmus 2020-08-13 00:00:54 +02:00
parent c9ec3c0763
commit 638ef1e81d
No known key found for this signature in database
GPG Key ID: 197A5888235FACAC
1 changed files with 103 additions and 108 deletions

View File

@ -782,10 +782,10 @@ environments.")
extracting, creating, and converting between formats.") extracting, creating, and converting between formats.")
(license license:bsd-3))) (license license:bsd-3)))
(define-public python-conda (define-public conda
(package (package
(name "python-conda") (name "conda")
(version "4.3.16") (version "4.8.3")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -795,58 +795,118 @@ extracting, creating, and converting between formats.")
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"1qwy0awx4qf2pbk8z2b7q6wdcq7mvwpxxjhg27mbirdvs5hw7hb2")))) "0iv1qzk21jsk6vdp3106xvpvl68zgfdqb3kyzpya87jhkl204l7r"))))
(build-system python-build-system) (build-system python-build-system)
(arguments (arguments
`(#:phases `(#:phases
(modify-phases %standard-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 (add-before 'build 'create-version-file
(lambda _ (lambda _
(with-output-to-file "conda/.version" (with-output-to-file "conda/.version"
(lambda () (display ,version))) (lambda () (display ,version)))
#t)) #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 (replace 'check
(lambda _ (lambda _
(setenv "HOME" "/tmp") (setenv "HOME" "/tmp")
(invoke "py.test")))))) (invoke "py.test" "-vv"
(native-inputs "-k"
`(("python-cytoolz" ,python-cytoolz) (string-append
("python-ruamel.yaml" ,python-ruamel.yaml) "not integration"
("python-requests" ,python-requests) ;; 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-pycosat" ,python-pycosat)
("python-pytest" ,python-pytest) ("python-pytest" ,python-pytest)
("python-responses" ,python-responses)
("python-pyyaml" ,python-pyyaml) ("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") (home-page "https://github.com/conda/conda")
(synopsis "Cross-platform, OS-agnostic, system-level binary package manager") (synopsis "Cross-platform, OS-agnostic, system-level binary package manager")
(description (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 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 other systems as well. Conda makes environments first-class citizens, making
it easy to create independent environments even for C libraries. Conda is it easy to create independent environments even for C libraries. Conda is
written entirely in Python. written entirely in Python.")
This package provides Conda as a library.")
(license license:bsd-3))) (license license:bsd-3)))
(define-public python2-conda (define-public python-conda
(let ((base (package-with-python2 (deprecated-package "python-conda" conda))
(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 gwl (define-public gwl
(package (package