123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739 |
- ;;; GNU Guix --- Functional package management for GNU
- ;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
- ;;; Copyright © 2015, 2017 Ricardo Wurmus <rekado@elephly.net>
- ;;; Copyright © 2017 Muriithi Frederick Muriuki <fredmanglis@gmail.com>
- ;;; Copyright © 2017 Oleg Pykhalov <go.wigust@gmail.com>
- ;;;
- ;;; This file is part of GNU Guix.
- ;;;
- ;;; GNU Guix is free software; you can redistribute it and/or modify it
- ;;; under the terms of the GNU General Public License as published by
- ;;; the Free Software Foundation; either version 3 of the License, or (at
- ;;; your option) any later version.
- ;;;
- ;;; GNU Guix is distributed in the hope that it will be useful, but
- ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
- ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- ;;; GNU General Public License for more details.
- ;;;
- ;;; You should have received a copy of the GNU General Public License
- ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
- (define-module (gnu packages package-management)
- #:use-module (guix packages)
- #:use-module (guix download)
- #:use-module (guix git-download)
- #:use-module (guix gexp)
- #:use-module (guix utils)
- #:use-module (guix build-system gnu)
- #:use-module (guix build-system python)
- #:use-module (guix build-system emacs)
- #:use-module ((guix licenses) #:select (gpl2+ gpl3+ lgpl2.1+ asl2.0 bsd-3))
- #:use-module (gnu packages)
- #:use-module (gnu packages guile)
- #:use-module (gnu packages file)
- #:use-module (gnu packages backup)
- #:use-module (gnu packages compression)
- #:use-module (gnu packages gnupg)
- #:use-module (gnu packages databases)
- #:use-module (gnu packages graphviz)
- #:use-module (gnu packages pkg-config)
- #:use-module (gnu packages autotools)
- #:use-module (gnu packages gettext)
- #:use-module (gnu packages texinfo)
- #:use-module (gnu packages nettle)
- #:use-module (gnu packages perl)
- #:use-module (gnu packages curl)
- #:use-module (gnu packages web)
- #:use-module (gnu packages man)
- #:use-module (gnu packages bdw-gc)
- #:use-module (gnu packages patchutils)
- #:use-module (gnu packages python)
- #:use-module (gnu packages popt)
- #:use-module (gnu packages gnuzilla)
- #:use-module (gnu packages cpio)
- #:use-module (gnu packages tls)
- #:use-module (gnu packages ssh)
- #:use-module (gnu packages vim)
- #:use-module (gnu packages serialization)
- #:use-module (srfi srfi-1)
- #:use-module (ice-9 match))
- (define (boot-guile-uri arch)
- "Return the URI for the bootstrap Guile tarball for ARCH."
- (cond ((string=? "armhf" arch)
- (string-append "http://alpha.gnu.org/gnu/guix/bootstrap/"
- arch "-linux"
- "/20150101/guile-2.0.11.tar.xz"))
- ((string=? "aarch64" arch)
- (string-append "http://alpha.gnu.org/gnu/guix/bootstrap/"
- arch "-linux/20170217/guile-2.0.14.tar.xz"))
- (else
- (string-append "http://alpha.gnu.org/gnu/guix/bootstrap/"
- arch "-linux"
- "/20131110/guile-2.0.9.tar.xz"))))
- (define-public guix
- ;; Latest version of Guix, which may or may not correspond to a release.
- ;; Note: the 'update-guix-package.scm' script expects this definition to
- ;; start precisely like this.
- (let ((version "0.13.0")
- (commit "8b920d707ed07a3251227f77526cf875d86a4417")
- (revision 7))
- (package
- (name "guix")
- (version (if (zero? revision)
- version
- (string-append version "-"
- (number->string revision)
- "." (string-take commit 7))))
- (source (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://git.savannah.gnu.org/r/guix.git")
- (commit commit)))
- (sha256
- (base32
- "15phwcadkw44mr4hnv1dxzzw9an6x7sbdfzwy4iciqw6y2wckncd"))
- (file-name (string-append "guix-" version "-checkout"))))
- (build-system gnu-build-system)
- (arguments
- `(#:configure-flags (list
- "--localstatedir=/var"
- "--sysconfdir=/etc"
- (string-append "--with-bash-completion-dir="
- (assoc-ref %outputs "out")
- "/etc/bash_completion.d")
- (string-append "--with-libgcrypt-prefix="
- (assoc-ref %build-inputs
- "libgcrypt"))
- ;; Set 'DOT_USER_PROGRAM' to the empty string so
- ;; we don't keep a reference to Graphviz, whose
- ;; closure is pretty big (too big for the GuixSD
- ;; installation image.)
- "ac_cv_path_DOT_USER_PROGRAM=dot"
- ;; To avoid problems with the length of shebangs,
- ;; choose a fixed-width and short directory name
- ;; for tests.
- "ac_cv_guix_test_root=/tmp/guix-tests")
- #:parallel-tests? #f ;work around <http://bugs.gnu.org/21097>
- #:modules ((guix build gnu-build-system)
- (guix build utils)
- (srfi srfi-26)
- (ice-9 popen)
- (ice-9 rdelim))
- #:phases (modify-phases %standard-phases
- (add-after 'unpack 'bootstrap
- (lambda _
- ;; Make sure 'msgmerge' can modify the PO files.
- (for-each (lambda (po)
- (chmod po #o666))
- (find-files "." "\\.po$"))
- (zero? (system* "sh" "bootstrap"))))
- (add-before
- 'configure 'copy-bootstrap-guile
- (lambda* (#:key system inputs #:allow-other-keys)
- (define (boot-guile-version arch)
- (cond ((string=? "armhf" arch) "2.0.11")
- ((string=? "aarch64" arch) "2.0.14")
- (else "2.0.9")))
- (define (copy arch)
- (let ((guile (assoc-ref inputs
- (string-append "boot-guile/"
- arch)))
- (target (string-append "gnu/packages/bootstrap/"
- arch "-linux/"
- "/guile-"
- (boot-guile-version arch)
- ".tar.xz")))
- (mkdir-p (dirname target)) ;XXX: eventually unneeded
- (copy-file guile target)))
- (copy "i686")
- (copy "x86_64")
- (copy "mips64el")
- (copy "armhf")
- (copy "aarch64")
- #t))
- (add-after
- 'unpack 'disable-container-tests
- ;; XXX FIXME: These tests fail within the build container.
- (lambda _
- (substitute* "tests/syscalls.scm"
- (("^\\(test-(assert|equal) \"(clone|setns|pivot-root)\"" all)
- (string-append "(test-skip 1)\n" all)))
- (substitute* "tests/containers.scm"
- (("^\\(test-(assert|equal)" all)
- (string-append "(test-skip 1)\n" all)))
- (when (file-exists? "tests/guix-environment-container.sh")
- (substitute* "tests/guix-environment-container.sh"
- (("guix environment --version")
- "exit 77\n")))
- #t))
- (add-before 'check 'set-SHELL
- (lambda _
- ;; 'guix environment' tests rely on 'SHELL' having a
- ;; correct value, so set it.
- (setenv "SHELL" (which "sh"))
- #t))
- (add-after 'install 'wrap-program
- (lambda* (#:key inputs outputs #:allow-other-keys)
- ;; Make sure the 'guix' command finds GnuTLS and
- ;; Guile-JSON automatically.
- (let* ((out (assoc-ref outputs "out"))
- (guile (assoc-ref inputs "guile"))
- (json (assoc-ref inputs "guile-json"))
- (git (assoc-ref inputs "guile-git"))
- (ssh (assoc-ref inputs "guile-ssh"))
- (gnutls (assoc-ref inputs "gnutls"))
- (deps (list json gnutls git ssh))
- (effective
- (read-line
- (open-pipe* OPEN_READ
- (string-append guile "/bin/guile")
- "-c" "(display (effective-version))")))
- (path (string-join
- (map (cut string-append <>
- "/share/guile/site/"
- effective)
- deps)
- ":"))
- (gopath (string-join
- (map (cut string-append <>
- "/lib/guile/" effective
- "/site-ccache")
- deps)
- ":")))
- (wrap-program (string-append out "/bin/guix")
- `("GUILE_LOAD_PATH" ":" prefix (,path))
- `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,gopath)))
- #t))))))
- (native-inputs `(("pkg-config" ,pkg-config)
- ;; XXX: Keep the development inputs here even though
- ;; they're unnecessary, just so that 'guix environment
- ;; guix' always contains them.
- ("autoconf" ,(autoconf-wrapper))
- ("automake" ,automake)
- ("gettext" ,gettext-minimal)
- ("texinfo" ,texinfo)
- ("graphviz" ,graphviz)
- ("help2man" ,help2man)))
- (inputs
- (let ((boot-guile (lambda (arch hash)
- (origin
- (method url-fetch)
- (uri (boot-guile-uri arch))
- (sha256 hash)))))
- `(("bzip2" ,bzip2)
- ("gzip" ,gzip)
- ("zlib" ,zlib) ;for 'guix publish'
- ("sqlite" ,sqlite)
- ("libgcrypt" ,libgcrypt)
- ("guile" ,guile-2.2)
- ("boot-guile/i686"
- ,(boot-guile "i686"
- (base32
- "0im800m30abgh7msh331pcbjvb4n02smz5cfzf1srv0kpx3csmxp")))
- ("boot-guile/x86_64"
- ,(boot-guile "x86_64"
- (base32
- "1w2p5zyrglzzniqgvyn1b55vprfzhgk8vzbzkkbdgl5248si0yq3")))
- ("boot-guile/mips64el"
- ,(boot-guile "mips64el"
- (base32
- "0fzp93lvi0hn54acc0fpvhc7bvl0yc853k62l958cihk03q80ilr")))
- ("boot-guile/armhf"
- ,(boot-guile "armhf"
- (base32
- "1mi3brl7l58aww34rawhvja84xc7l1b4hmwdmc36fp9q9mfx0lg5")))
- ("boot-guile/aarch64"
- ,(boot-guile "aarch64"
- (base32
- "1giy2aprjmn5fp9c4s9r125fljw4wv6ixy5739i5bffw4jgr0f9r"))))))
- (propagated-inputs
- `(("gnutls" ,gnutls)
- ("guile-json" ,guile-json)
- ("guile-ssh" ,guile-ssh)
- ("guile-git" ,guile-git)))
- (home-page "https://www.gnu.org/software/guix/")
- (synopsis "Functional package manager for installed software packages and versions")
- (description
- "GNU Guix is a functional package manager for the GNU system, and is
- also a distribution thereof. It includes a virtual machine image. Besides
- the usual package management features, it also supports transactional
- upgrades and roll-backs, per-user profiles, and much more. It is based on
- the Nix package manager.")
- (license gpl3+)
- (properties '((ftp-server . "alpha.gnu.org"))))))
- ;; Alias for backward compatibility.
- (define-public guix-devel guix)
- (define-public guile2.0-guix
- (package
- (inherit guix)
- (name "guile2.0-guix")
- (inputs
- `(("guile" ,guile-2.0)
- ,@(alist-delete "guile" (package-inputs guix))))
- (propagated-inputs
- `(("gnutls" ,gnutls/guile-2.0)
- ("guile-json" ,guile2.0-json)
- ("guile-ssh" ,guile2.0-ssh)
- ("guile-git" ,guile2.0-git)))))
- (define (source-file? file stat)
- "Return true if FILE is likely a source file, false if it is a typical
- generated file."
- (define (wrong-extension? file)
- (or (string-suffix? "~" file)
- (member (file-extension file)
- '("o" "a" "lo" "so" "go"))))
- (match (basename file)
- ((or ".git" "autom4te.cache" "configure" "Makefile" "Makefile.in" ".libs")
- #f)
- ((? wrong-extension?)
- #f)
- (_
- #t)))
- (define-public current-guix
- (let* ((repository-root (canonicalize-path
- (string-append (current-source-directory)
- "/../..")))
- (select? (delay (or (git-predicate repository-root)
- source-file?))))
- (lambda ()
- "Return a package representing Guix built from the current source tree.
- This works by adding the current source tree to the store (after filtering it
- out) and returning a package that uses that as its 'source'."
- (package
- (inherit guix)
- (version (string-append (package-version guix) "+"))
- (source (local-file repository-root "guix-current"
- #:recursive? #t
- #:select? (force select?)))))))
- ;;;
- ;;; Other tools.
- ;;;
- (define-public nix
- (package
- (name "nix")
- (version "1.11.9")
- (source (origin
- (method url-fetch)
- (uri (string-append "http://nixos.org/releases/nix/nix-"
- version "/nix-" version ".tar.xz"))
- (sha256
- (base32
- "1qg7qrfr60dysmyfg3ijgani71l23p1kqadhjs8kz11pgwkkx50f"))))
- (build-system gnu-build-system)
- ;; XXX: Should we pass '--with-store-dir=/gnu/store'? But then we'd also
- ;; need '--localstatedir=/var'. But then! The thing would use /var/nix
- ;; instead of /var/guix. So in the end, we do nothing special.
- (arguments
- '(#:configure-flags
- ;; Set the prefixes of Perl libraries to avoid propagation.
- (let ((perl-libdir (lambda (p)
- (string-append
- (assoc-ref %build-inputs p)
- "/lib/perl5/site_perl"))))
- (list (string-append "--with-dbi="
- (perl-libdir "perl-dbi"))
- (string-append "--with-dbd-sqlite="
- (perl-libdir "perl-dbd-sqlite"))
- (string-append "--with-www-curl="
- (perl-libdir "perl-www-curl"))))))
- (native-inputs `(("perl" ,perl)
- ("pkg-config" ,pkg-config)))
- (inputs `(("curl" ,curl)
- ("openssl" ,openssl)
- ("libgc" ,libgc)
- ("sqlite" ,sqlite)
- ("bzip2" ,bzip2)
- ("perl-www-curl" ,perl-www-curl)
- ("perl-dbi" ,perl-dbi)
- ("perl-dbd-sqlite" ,perl-dbd-sqlite)))
- (home-page "http://nixos.org/nix/")
- (synopsis "The Nix package manager")
- (description
- "Nix is a purely functional package manager. This means that it treats
- packages like values in purely functional programming languages such as
- Haskell—they are built by functions that don't have side-effects, and they
- never change after they have been built. Nix stores packages in the Nix
- store, usually the directory /nix/store, where each package has its own unique
- sub-directory.")
- (license lgpl2.1+)))
- (define-public emacs-nix-mode
- (package
- (inherit nix)
- (name "emacs-nix-mode")
- (build-system emacs-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'chdir-elisp
- ;; Elisp directory is not in root of the source.
- (lambda _
- (chdir "misc/emacs"))))))
- (synopsis "Emacs major mode for editing Nix expressions")
- (description "@code{nixos-mode} provides an Emacs major mode for editing
- Nix expressions. It supports syntax highlighting, indenting and refilling of
- comments.")))
- (define-public stow
- (package
- (name "stow")
- (version "2.2.2")
- (source (origin
- (method url-fetch)
- (uri (string-append "mirror://gnu/stow/stow-"
- version ".tar.gz"))
- (sha256
- (base32
- "1pvky9fayms4r6fhns8jd0vavszd7d979w62vfd5n88v614pdxz2"))))
- (build-system gnu-build-system)
- (inputs
- `(("perl" ,perl)))
- (native-inputs
- `(("perl-test-simple" ,perl-test-simple)
- ("perl-test-output" ,perl-test-output)
- ("perl-capture-tiny" ,perl-capture-tiny)
- ("perl-io-stringy" ,perl-io-stringy)))
- (home-page "https://www.gnu.org/software/stow/")
- (synopsis "Managing installed software packages")
- (description
- "GNU Stow is a symlink manager. It generates symlinks to directories
- of data and makes them appear to be merged into the same directory. It is
- typically used for managing software packages installed from source, by
- letting you install them apart in distinct directories and then create
- symlinks to the files in a common directory such as /usr/local.")
- (license gpl2+)))
- (define-public rpm
- (package
- (name "rpm")
- (version "4.13.0.1")
- (source (origin
- (method url-fetch)
- (uri (string-append "http://ftp.rpm.org/releases/rpm-"
- (version-major+minor version) ".x/rpm-"
- version ".tar.bz2"))
- (sha256
- (base32
- "03cvbwbfrhm0fa02j7828k1qp05hf2m0fradwcf2nqhrsjkppz17"))))
- (build-system gnu-build-system)
- (arguments
- '(#:configure-flags '("--with-external-db" ;use the system's bdb
- "--enable-python"
- "--without-lua")
- #:phases (modify-phases %standard-phases
- (add-before 'configure 'set-nspr-search-path
- (lambda* (#:key inputs #:allow-other-keys)
- ;; nspr.pc contains the right -I flag pointing to
- ;; 'include/nspr', but unfortunately 'configure' doesn't
- ;; use 'pkg-config'. Thus, augment CPATH.
- ;; Likewise for NSS.
- (let ((nspr (assoc-ref inputs "nspr"))
- (nss (assoc-ref inputs "nss")))
- (setenv "CPATH"
- (string-append (getenv "C_INCLUDE_PATH") ":"
- nspr "/include/nspr:"
- nss "/include/nss"))
- (setenv "LIBRARY_PATH"
- (string-append (getenv "LIBRARY_PATH") ":"
- nss "/lib/nss"))
- #t)))
- (add-after 'install 'fix-rpm-symlinks
- (lambda* (#:key outputs #:allow-other-keys)
- ;; 'make install' gets these symlinks wrong. Fix them.
- (let* ((out (assoc-ref outputs "out"))
- (bin (string-append out "/bin")))
- (with-directory-excursion bin
- (for-each (lambda (file)
- (delete-file file)
- (symlink "rpm" file))
- '("rpmquery" "rpmverify"))
- #t)))))))
- (native-inputs
- `(("pkg-config" ,pkg-config)))
- (inputs
- `(("python" ,python-2)
- ("xz" ,xz)
- ("bdb" ,bdb)
- ("popt" ,popt)
- ("nss" ,nss)
- ("nspr" ,nspr)
- ("libarchive" ,libarchive)
- ("nettle" ,nettle) ;XXX: actually a dependency of libarchive
- ("file" ,file)
- ("bzip2" ,bzip2)
- ("zlib" ,zlib)
- ("cpio" ,cpio)))
- (home-page "http://www.rpm.org/")
- (synopsis "The RPM Package Manager")
- (description
- "The RPM Package Manager (RPM) is a command-line driven package
- management system capable of installing, uninstalling, verifying, querying,
- and updating computer software packages. Each software package consists of an
- archive of files along with information about the package like its version, a
- description. There is also a library permitting developers to manage such
- transactions from C or Python.")
- ;; The whole is GPLv2+; librpm itself is dual-licensed LGPLv2+ | GPLv2+.
- (license gpl2+)))
- (define-public diffoscope
- (package
- (name "diffoscope")
- (version "81")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri name version))
- (sha256
- (base32
- "093lxy6zj69i19fxdkj3jnai3b1ajqbksyqcvy8wqj3plaaxjna5"))))
- (build-system python-build-system)
- (arguments
- `(#:phases (modify-phases %standard-phases
- (add-before 'unpack 'n (lambda _ #t))
- ;; setup.py mistakenly requires python-magic from PyPi, even
- ;; though the Python bindings of `file` are sufficient.
- ;; https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=815844
- (add-after 'unpack 'dependency-on-python-magic
- (lambda _
- (substitute* "setup.py"
- (("'python-magic',") ""))))
- (add-after 'unpack 'embed-tool-references
- (lambda* (#:key inputs #:allow-other-keys)
- (substitute* "diffoscope/comparators/utils/compare.py"
- (("\\['xxd',")
- (string-append "['" (which "xxd") "',")))
- (substitute* "diffoscope/comparators/elf.py"
- (("@tool_required\\('readelf'\\)") "")
- (("\\['readelf',")
- (string-append "['" (which "readelf") "',")))
- #t)))))
- (inputs `(("rpm" ,rpm) ;for rpm-python
- ("python-file" ,python-file)
- ("python-debian" ,python-debian)
- ("python-libarchive-c" ,python-libarchive-c)
- ("python-tlsh" ,python-tlsh)
- ("colordiff" ,colordiff)
- ("xxd" ,xxd)
- ;; Below are modules used for tests.
- ("python-pytest" ,python-pytest)
- ("python-chardet" ,python-chardet)))
- (home-page "https://diffoscope.org/")
- (synopsis "Compare files, archives, and directories in depth")
- (description
- "Diffoscope tries to get to the bottom of what makes files or directories
- different. It recursively unpacks archives of many kinds and transforms
- various binary formats into more human readable forms to compare them. It can
- compare two tarballs, ISO images, or PDFs just as easily.")
- (license gpl3+)))
- (define-public python-anaconda-client
- (package
- (name "python-anaconda-client")
- (version "1.6.3")
- (source
- (origin
- (method url-fetch)
- (uri (string-append "https://github.com/Anaconda-Platform/"
- "anaconda-client/archive/" version ".tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
- (sha256
- (base32
- "1wv4wi6k5jz7rlwfgvgfdizv77x3cr1wa2aj0k1595g7fbhkjhz2"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-pyyaml" ,python-pyyaml)
- ("python-requests" ,python-requests)
- ("python-clyent" ,python-clyent)))
- (native-inputs
- `(("python-pytz" ,python-pytz)
- ("python-dateutil" ,python-dateutil)
- ("python-mock" ,python-mock)
- ("python-coverage" ,python-coverage)
- ("python-pillow" ,python-pillow)))
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- ;; This is needed for some tests.
- (add-before 'check 'set-up-home
- (lambda* _ (setenv "HOME" "/tmp") #t))
- (add-before 'check 'remove-network-tests
- (lambda* _
- ;; Remove tests requiring a network connection
- (let ((network-tests '("tests/test_upload.py"
- "tests/test_authorizations.py"
- "tests/test_login.py"
- "tests/test_whoami.py"
- "utils/notebook/tests/test_data_uri.py"
- "utils/notebook/tests/test_base.py"
- "utils/notebook/tests/test_downloader.py"
- "inspect_package/tests/test_conda.py")))
- (with-directory-excursion "binstar_client"
- (for-each delete-file network-tests)))
- #t)))))
- (home-page "https://github.com/Anaconda-Platform/anaconda-client")
- (synopsis "Anaconda Cloud command line client library")
- (description
- "Anaconda Cloud command line client library provides an interface to
- Anaconda Cloud. Anaconda Cloud is useful for sharing packages, notebooks and
- environments.")
- (license bsd-3)))
- (define-public python2-anaconda-client
- (package-with-python2 python-anaconda-client))
- (define-public python-conda
- (package
- (name "python-conda")
- (version "4.3.16")
- (source
- (origin
- (method url-fetch)
- (uri (string-append "https://github.com/conda/conda/archive/"
- version ".tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
- (sha256
- (base32
- "1jq8hyrc5npb5sf4vw6s6by4602yj8f79vzpbwdfgpkn02nfk1dv"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (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")
- #t))))
- (replace 'check
- (lambda _
- (setenv "HOME" "/tmp")
- (zero? (system* "py.test")))))))
- (native-inputs
- `(("python-ruamel.yaml" ,python-ruamel.yaml)
- ("python-requests" ,python-requests)
- ("python-pycosat" ,python-pycosat)
- ("python-pytest" ,python-pytest)
- ("python-responses" ,python-responses)
- ("python-pyyaml" ,python-pyyaml)
- ("python-anaconda-client" ,python-anaconda-client)))
- (home-page "https://github.com/conda/conda")
- (synopsis "Cross-platform, OS-agnostic, system-level binary package manager")
- (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.
- This package provides Conda as a library.")
- (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
- (zero? (system* "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"
- ((@@ (guix build python-build-system)
- get-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)
- (zero? (system* "python" "utils/setup-testing.py" "install"
- (string-append "--prefix=" out))))))))))
- (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.")))
|