diff options
Diffstat (limited to 'gnu/packages/package-management.scm')
-rw-r--r-- | gnu/packages/package-management.scm | 344 |
1 files changed, 223 insertions, 121 deletions
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index 68a2e6e203..146020cade 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -15,6 +15,7 @@ ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org> ;;; Copyright © 2020 Jesse Gibbons <jgibbons2357+guix@gmail.com> +;;; Copyright © 2020 Martin Becze <mjbecze@riseup.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -119,8 +120,8 @@ ;; Note: the 'update-guix-package.scm' script expects this definition to ;; start precisely like this. (let ((version "1.1.0") - (commit "36a1925f21ee6787d8b80025f1b96238309f4b96") - (revision 17)) + (commit "29d3569c9c712d70466d9175474c8fd1a3262234") + (revision 21)) (package (name "guix") @@ -136,7 +137,7 @@ (commit commit))) (sha256 (base32 - "05f7w6hyl1bw58q1fph9ws17rx0zgs638mrsxwz026bwjyy2xxr0")) + "1sprs2hpi27qawscpj13v2kckagq5jhwd3bibwvz1p229m54dhg6")) (file-name (string-append "guix-" version "-checkout")))) (build-system gnu-build-system) (arguments @@ -278,6 +279,8 @@ $(prefix)/etc/init.d\n"))) (gcrypt (assoc-ref inputs "guile-gcrypt")) (json (assoc-ref inputs "guile-json")) (sqlite (assoc-ref inputs "guile-sqlite3")) + (zlib (assoc-ref inputs "guile-zlib")) + (lzlib (assoc-ref inputs "guile-lzlib")) (git (assoc-ref inputs "guile-git")) (bs (assoc-ref inputs "guile-bytestructures")) @@ -285,7 +288,7 @@ $(prefix)/etc/init.d\n"))) (gnutls (assoc-ref inputs "gnutls")) (locales (assoc-ref inputs "glibc-utf8-locales")) (deps (list gcrypt json sqlite gnutls - git bs ssh)) + git bs ssh zlib lzlib)) (effective (read-line (open-pipe* OPEN_READ @@ -325,6 +328,8 @@ $(prefix)/etc/init.d\n"))) ("guile-gcrypt" ,guile-gcrypt) ("guile-json" ,guile-json-4) ("guile-sqlite3" ,guile-sqlite3) + ("guile-zlib" ,guile-zlib) + ("guile-lzlib" ,guile-lzlib) ("guile-ssh" ,guile-ssh) ("guile-git" ,guile-git) @@ -341,9 +346,6 @@ $(prefix)/etc/init.d\n"))) (inputs `(("bzip2" ,bzip2) ("gzip" ,gzip) - ("zlib" ,zlib) ;for 'guix publish' - ("lzlib" ,lzlib) ;for 'guix publish' and 'guix substitute' - ("sqlite" ,sqlite) ("libgcrypt" ,libgcrypt) @@ -377,7 +379,9 @@ $(prefix)/etc/init.d\n"))) ("guile-json" ,guile-json-4) ("guile-sqlite3" ,guile-sqlite3) ("guile-ssh" ,guile-ssh) - ("guile-git" ,guile-git))) + ("guile-git" ,guile-git) + ("guile-zlib" ,guile-zlib) + ("guile-lzlib" ,guile-lzlib))) (home-page "https://www.gnu.org/software/guix/") (synopsis "Functional package manager for installed software packages and versions") @@ -728,10 +732,64 @@ environments.") (define-public python2-anaconda-client (package-with-python2 python-anaconda-client)) -(define-public python-conda +(define-public python-conda-package-handling + (package + (name "python-conda-package-handling") + (version "1.6.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/conda/conda-package-handling/") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0bqbs6a8jbjmbn47n5n1p529cx7pf4vgfnhqca9mflgidfb5i0jf")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'use-unmodified-libarchive + (lambda _ + (substitute* "setup.py" + (("archive_and_deps") "archive")) + #t)) + (replace 'check + (lambda* (#:key inputs outputs #:allow-other-keys) + (add-installed-pythonpath inputs outputs) + (invoke "pytest" "-vv" "tests" + "-k" + (string-append + ;; TODO: these three fail because the mocker fixture + ;; cannot be found + "not test_rename_to_trash" + " and not test_api_extract_tarball_with_libarchive_import_error" + " and not test_delete_trash" + ;; TODO: this one does not raise an exception when it + ;; should. + " and not test_secure_refusal_to_extract_abs_paths"))))))) + (propagated-inputs + `(("python-six" ,python-six) + ("python-tqdm" ,python-tqdm))) + (inputs + `(("libarchive" ,libarchive))) + (native-inputs + `(("python-cython" ,python-cython) + ("python-pytest" ,python-pytest) + ("python-pytest-cov" ,python-pytest-cov) + ("python-mock" ,python-mock))) + (home-page "https://conda.io") + (synopsis "Create and extract conda packages of various formats") + (description + "This library is an abstraction of Conda package handling and a tool for +extracting, creating, and converting between formats.") + (license license:bsd-3))) + +(define-public conda (package - (name "python-conda") - (version "4.3.16") + (name "conda") + (version "4.8.3") (source (origin (method git-fetch) @@ -741,58 +799,118 @@ environments.") (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 @@ -800,76 +918,11 @@ environments.") 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 @@ -1077,7 +1130,7 @@ for packaging and deployment of cross-compiled Windows applications.") (define-public libostree (package (name "libostree") - (version "2020.3") + (version "2020.5") (source (origin (method url-fetch) (uri (string-append @@ -1085,7 +1138,7 @@ for packaging and deployment of cross-compiled Windows applications.") (version-major+minor version) "/libostree-" version ".tar.xz")) (sha256 (base32 - "01cch4as23xspq6pck59al7x5jj60wl21g8p3iqbdxcjl1p3jxsq")))) + "1k92177hjalbdpmg45ymwwrni68vh9rs5x9zvy5fzl9lng12fgpb")))) (build-system gnu-build-system) (arguments '(#:phases @@ -1131,15 +1184,14 @@ the boot loader configuration.") (define-public flatpak (package (name "flatpak") - (version "1.8.0") + (version "1.8.1") (source (origin (method url-fetch) (uri (string-append "https://github.com/flatpak/flatpak/releases/download/" version "/flatpak-" version ".tar.xz")) (sha256 - (base32 - "0d4x79z96r60rc2gnf415da7z9x1my5hdyjdlklfiwll57jbqr23")))) + (base32 "1bcymiv0yzs05rplbyzpimb1k17s345a95y0dhw7jh56z5k4p4b6")))) ;; Wrap 'flatpak' so that GIO_EXTRA_MODULES is set, thereby allowing GIO to ;; find the TLS backend in glib-networking. @@ -1220,3 +1272,53 @@ applications") (description "Flatpak is a system for building, distributing, and running sandboxed desktop applications on GNU/Linux.") (license license:lgpl2.1+))) + +(define-public akku + (package + (name "akku") + (version "1.0.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/akkuscm/akku.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 (base32 "1dm32ws3nshnnscd7k75zswxxs1pp25y2q4k8j5ms241hz47by3c")))) + (build-system gnu-build-system) + (arguments + '(#:phases (modify-phases %standard-phases + (replace 'bootstrap + (lambda* (#:key outputs #:allow-other-keys) + (for-each patch-shebang + '("bootstrap" + ".akku/env")) + (let* ((home "/tmp") + (datadir (string-append home "/.local/share/akku/"))) + (mkdir-p datadir) + (invoke "touch" (string-append datadir "index.db")) + (setenv "HOME" home)) + (invoke "./bootstrap") + #t)) + (add-after 'install 'wrap-executables + (lambda* (#:key outputs inputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (curl (assoc-ref inputs "curl"))) + (wrap-program (string-append out "/bin/akku") + `("LD_LIBRARY_PATH" ":" prefix (,(string-append curl "/lib")))) + #t)))))) + (native-inputs + `(("which" ,which) + ("autoconf" ,autoconf) + ("automake" ,automake) + ("pkg-config" ,pkg-config))) + (inputs + `(("guile" ,guile-3.0) + ("curl" ,curl))) + (home-page "https://akkuscm.org/") + (synopsis "Language package manager for Scheme") + (description + "Akku.scm is a project-based language package manager for R6RS and R7RS Scheme. +It is mainly meant for programmers who develop portable programs or libraries in Scheme, +but could potentially work for end-users of those programs. It also has a translator +from R7RS, which allows most R7RS code to run on R6RS implementations.") + (license license:gpl3+))) |