diff options
39 files changed, 1429 insertions, 512 deletions
diff --git a/doc/guix.texi b/doc/guix.texi index bd9d896c78..b0bb61c9c1 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -3292,8 +3292,10 @@ $ guix build emacs --dry-run @end example @noindent -This indicates that substitutes from @code{@value{SUBSTITUTE-SERVER}} are usable and -will be downloaded, when possible, for future builds. +The text changed from ``The following derivations would be built'' to +``112.3 MB would be downloaded''. This indicates that substitutes from +@code{@value{SUBSTITUTE-SERVER}} are usable and will be downloaded, when +possible, for future builds. @cindex substitutes, how to disable The substitute mechanism can be disabled globally by running @@ -4158,7 +4160,7 @@ say, on another machine, by providing a channel specification in (channel (name 'my-personal-packages) (url "https://example.org/personal-packages.git") - (branch "dd3df5e2c8818760a8fc0bd699e55d3b69fef2bb"))) + (commit "dd3df5e2c8818760a8fc0bd699e55d3b69fef2bb"))) @end lisp The @command{guix describe --format=channels} command can even generate this @@ -5057,12 +5059,21 @@ Alternatively, you can produce a pack in the Docker image format using the following command: @example -guix pack -f docker guile emacs geiser +guix pack -f docker -S /bin=bin guile guile-readline @end example @noindent The result is a tarball that can be passed to the @command{docker load} -command. See the +command, followed by @code{docker run}: + +@example +docker load < @var{file} +docker run -ti guile-guile-readline /bin/guile +@end example + +@noindent +where @var{file} is the image returned by @var{guix pack}, and +@code{guile-guile-readline} is its ``image tag''. See the @uref{https://docs.docker.com/engine/reference/commandline/load/, Docker documentation} for more information. diff --git a/gnu/local.mk b/gnu/local.mk index 125118bc55..eba3e92171 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -502,6 +502,7 @@ GNU_SYSTEM_MODULES = \ %D%/packages/tor.scm \ %D%/packages/tv.scm \ %D%/packages/uml.scm \ + %D%/packages/unicode.scm \ %D%/packages/unrtf.scm \ %D%/packages/upnp.scm \ %D%/packages/usb-modeswitch.scm \ @@ -1349,6 +1350,7 @@ dist_patch_DATA = \ %D%/packages/patches/python-unittest2-remove-argparse.patch \ %D%/packages/patches/python-waitress-fix-tests.patch \ %D%/packages/patches/qemu-glibc-2.27.patch \ + %D%/packages/patches/qemu-CVE-2020-1711.patch \ %D%/packages/patches/qemu-CVE-2020-7039.patch \ %D%/packages/patches/qemu-CVE-2020-7211.patch \ %D%/packages/patches/qemu-fix-documentation-build-failure.patch \ diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index a5f224f99e..bc39122c1d 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -444,8 +444,30 @@ ArrayVec and ArrayString.") "This package provides a simple interface for querying atty.") (license license:expat))) +(define-public rust-autocfg-1.0 + (package + (name "rust-autocfg") + (version "1.0.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "autocfg" version)) + (file-name + (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "17cv6pwb4q08s0ynpr4n8hv5299hcmhdgvdchzixfpw8y5qcgapq")))) + (build-system cargo-build-system) + (home-page "https://github.com/cuviper/autocfg") + (synopsis + "Automatic cfg for Rust compiler features") + (description + "Automatic cfg for Rust compiler features.") + (license (list license:asl2.0 license:expat)))) + (define-public rust-autocfg-0.1 (package + (inherit rust-autocfg-1.0) (name "rust-autocfg") (version "0.1.7") (source @@ -456,16 +478,7 @@ ArrayVec and ArrayString.") (sha256 (base32 "1chwgimpx5z7xbag7krr9d8asxfqbh683qhgl9kn3hxk2l0djj8x")))) - (build-system cargo-build-system) - (arguments '(#:skip-build? #t)) - (home-page "https://github.com/cuviper/autocfg") - (synopsis "Automatic cfg for Rust compiler features") - (description "Rust library for build scripts to automatically configure -code based on compiler support. Code snippets are dynamically tested to see -if the @code{rustc} will accept them, rather than hard-coding specific version -support.") - (license (list license:asl2.0 - license:expat)))) + (arguments '(#:skip-build? #t)))) (define-public rust-backtrace-0.3 (package @@ -5167,6 +5180,29 @@ immutable interval tree.") (license (list license:asl2.0 license:expat)))) +(define-public rust-iso8601-0.1 + (package + (name "rust-iso8601") + (version "0.1.1") + (source + (origin + (method url-fetch) + (uri (crate-uri "iso8601" version)) + (file-name + (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0xy48qyfmirslaj4dy6n4g8b564jap3cjiql35fmj5vgii7ldp0i")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-clippy" ,rust-clippy-0.0) + ("rust-nom" ,rust-nom-1.2)))) + (home-page "https://github.com/badboy/iso8601") + (synopsis "Parsing ISO8601 dates using nom") + (description "Parsing ISO8601 dates using nom.") + (license license:expat))) + (define-public rust-itertools-0.8 (package (name "rust-itertools") @@ -5700,6 +5736,45 @@ allows loading dynamic libraries (also known as shared libraries) as well as use functions and static variables these libraries contain.") (license license:isc))) +(define-public rust-libm-0.2 + (package + (name "rust-libm") + (version "0.2.1") + (source + (origin + (method url-fetch) + (uri (crate-uri "libm" version)) + (file-name + (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0akh56sh51adhagmk9l84dyrlz60gv8ri05xhr13i1b18czkpmy7")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-rand" ,rust-rand-0.6)) + #:cargo-development-inputs + (("rust-no-panic" ,rust-no-panic-0.1)))) + (home-page "https://github.com/rust-lang/libm") + (synopsis "Libm in pure Rust") + (description "This package provides an implementation of libm in pure Rust.") + (license (list license:expat license:asl2.0)))) + +(define-public rust-libm-0.1 + (package + (inherit rust-libm-0.2) + (name "rust-libm") + (version "0.1.4") + (source + (origin + (method url-fetch) + (uri (crate-uri "libm" version)) + (file-name + (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "16pc0gx4gkg0q2s1ssq8268brn14j8344623vwhadmivc4lsmivz")))))) + (define-public rust-libssh2-sys-0.2 (package (name "rust-libssh2-sys") @@ -5745,6 +5820,28 @@ functions and static variables these libraries contain.") (license (list license:asl2.0 license:expat)))) +(define-public rust-locale-0.2 + (package + (name "rust-locale") + (version "0.2.2") + (source + (origin + (method url-fetch) + (uri (crate-uri "locale" version)) + (file-name + (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1z87wc7z6889x1pqlrwjw8f1crshzi15q5m102lqs8y0m69f9nsz")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs (("rust-libc" ,rust-libc-0.2)))) + (home-page "https://github.com/rust-locale/rust-locale") + (synopsis "Library for basic localisation") + (description + "This package provides a library for basic localisation.") + (license license:expat))) + (define-public rust-lock-api-0.3 (package (name "rust-lock-api") @@ -6681,6 +6778,34 @@ release (fork of debug_unreachable)") "Rust friendly bindings to *nix APIs.") (license license:expat))) +(define-public rust-no-panic-0.1 + (package + (name "rust-no-panic") + (version "0.1.12") + (source + (origin + (method url-fetch) + (uri (crate-uri "no-panic" version)) + (file-name + (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0xan5v9ac1aklinc8aw16raq36pb4idjrl502np8gy32gfs6s751")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-proc-macro2" ,rust-proc-macro2-1.0) + ("rust-quote" ,rust-quote-1.0) + ("rust-syn" ,rust-syn-1.0)) + #:cargo-development-inputs + (("rust-tempfile" ,rust-tempfile-3.1)))) + (home-page "https://github.com/dtolnay/no-panic") + (synopsis "Prove a function can't ever panic") + (description + "This package provides a rust attribute macro to require that the compiler +prove a function can't ever panic.") + (license (list license:expat license:asl2.0)))) + (define-public rust-nodrop-0.1 (package (name "rust-nodrop") @@ -6760,6 +6885,24 @@ implementation (which is unstable / requires nightly).") combinators library.") (license license:expat))) +(define-public rust-nom-1.2 + (package + (inherit rust-nom-4.2) + (name "rust-nom") + (version "1.2.4") + (source + (origin + (method url-fetch) + (uri (crate-uri "nom" version)) + (file-name + (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1kjh42w67z1hh1dw3jrilgqrf54jk2xcvhw4rcdm4wclzmbc5f55")))) + (arguments + ;; This is an ancient version and all inputs are optional. + `(#:skip-build? #t)))) + (define-public rust-num-complex-0.2 (package (name "rust-num-complex") @@ -6862,7 +7005,7 @@ combinators library.") (define-public rust-num-traits-0.2 (package (name "rust-num-traits") - (version "0.2.8") + (version "0.2.11") (source (origin (method url-fetch) @@ -6871,13 +7014,15 @@ combinators library.") (string-append name "-" version ".crate")) (sha256 (base32 - "0clvrm34rrqc8p6gq5ps5fcgws3kgq5knh7nlqxf2ayarwks9abb")))) + "15khrlm1bra50nd48ijl1vln13m9xg4fxzghf28jp16ic5zf8ay6")))) (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-autocfg" ,rust-autocfg-1.0) + ("rust-libm" ,rust-libm-0.2)))) (home-page "https://github.com/rust-num/num-traits") (synopsis "Numeric traits for generic mathematics") (description "Numeric traits for generic mathematics.") - (properties '((hidden? . #t))) - ;; Dual licensed. (license (list license:asl2.0 license:expat)))) @@ -6894,7 +7039,9 @@ combinators library.") (sha256 (base32 "0c9whknf2dm74a3cqirafy6gj83a76gl56g4v3g19k6lkwz13rcj")))) - (build-system cargo-build-system))) + (arguments + `(#:cargo-inputs + (("rust-num-traits" , rust-num-traits-0.2)))))) (define-public rust-numtoa-0.1 (package @@ -7253,6 +7400,29 @@ normally prevent moving a type that has been borrowed from.") (description "Portable Packed SIMD vectors.") (license (list license:asl2.0 license:expat)))) +(define-public rust-pad-0.1 + (package + (name "rust-pad") + (version "0.1.6") + (source + (origin + (method url-fetch) + (uri (crate-uri "pad" version)) + (file-name + (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1qy0r26r52gp034fv252mmg0s599a55h9nr4xswy04hvky49pbfj")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-unicode-width" ,rust-unicode-width-0.1)))) + (home-page "https://github.com/ogham/rust-pad") + (synopsis "Library for padding strings at runtime") + (description + "This package provides a library for padding strings at runtime.") + (license license:expat))) + (define-public rust-parking-lot-0.9 (package (name "rust-parking-lot") diff --git a/gnu/packages/education.scm b/gnu/packages/education.scm index b0297e9075..3ae1ec2192 100644 --- a/gnu/packages/education.scm +++ b/gnu/packages/education.scm @@ -5,6 +5,7 @@ ;;; Copyright © 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018, 2019, 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr> +;;; Copyright © 2020 Robert Smith <robertsmith@posteo.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -24,6 +25,7 @@ (define-module (gnu packages education) #:use-module (ice-9 regex) #:use-module (gnu packages) + #:use-module (gnu packages audio) #:use-module (gnu packages base) #:use-module (gnu packages bash) #:use-module (gnu packages compression) @@ -40,14 +42,18 @@ #:use-module (gnu packages javascript) #:use-module (gnu packages kde) #:use-module (gnu packages kde-frameworks) ; extra-cmake-modules + #:use-module (gnu packages mp3) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) + #:use-module (gnu packages python-web) + #:use-module (gnu packages python-xyz) #:use-module (gnu packages qt) #:use-module (gnu packages sdl) #:use-module (gnu packages sqlite) #:use-module (gnu packages texinfo) #:use-module (gnu packages tls) + #:use-module (gnu packages video) #:use-module (gnu packages xorg) #:use-module (gnu packages xml) #:use-module ((guix licenses) #:prefix license:) @@ -126,7 +132,7 @@ of categories with some of the activities available in that category. (define-public gcompris-qt (package (name "gcompris-qt") - (version "0.96") + (version "0.97") (source (origin (method url-fetch) @@ -134,11 +140,16 @@ of categories with some of the activities available in that category. "https://gcompris.net/download/qt/src/gcompris-qt-" version ".tar.xz")) (sha256 - (base32 "06483il59l46ny2w771sg45dgzjwv1ph7vidzzbj0wb8wbk2rg52")))) + (base32 "0hl3a1jjnrpnbqkpx3rl3fl86yfv503lh48djb888hplvr4nf747")))) (build-system cmake-build-system) (arguments `(#:phases (modify-phases %standard-phases + (add-after 'unpack 'disable-failing-test + (lambda _ + (substitute* "tests/core/CMakeLists.txt" + (("DownloadManagerTest\\.cpp") "#")) + #t)) (add-before 'check 'start-xorg-server (lambda* (#:key inputs #:allow-other-keys) ;; The test suite requires a running X server. @@ -167,6 +178,7 @@ of categories with some of the activities available in that category. (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) ("gettext" ,gettext-minimal) + ("kdoctools" ,kdoctools) ("perl" ,perl) ("qttools" ,qttools) ("xorg-server" ,xorg-server-for-tests))) @@ -715,6 +727,103 @@ languages and keyboard layouts, and typing statistics are used to dynamically adjust the level of difficulty.") (license license:gpl2))) +(define-public anki + (package + (name "anki") + ;; Later versions have dependencies on npm packages not yet in Guix. + (version "2.1.16") + (source + (origin + (method url-fetch) + (uri (string-append "https://apps.ankiweb.net/downloads/archive/anki-" + version "-source.tgz")) + (sha256 + (base32 "1gfr51rnllkyzli73p4r51h5ypzfa3m7lic3m3rzpywmqwrxs07k")))) + (build-system gnu-build-system) + (arguments + `(#:make-flags (list (string-append "PREFIX=" %output)) + #:tests? #f ;no check target + #:modules ((guix build gnu-build-system) + (guix build utils) + (ice-9 match)) + #:phases + (modify-phases %standard-phases + (delete 'configure) ;no configure script + (add-after 'install 'wrap + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((bin (string-append (assoc-ref outputs "out") "/bin")) + ;; List of paths to the site-packages directories of Python + ;; library inputs. + (site-packages + (map (lambda (pyinput) + (string-append + (cdr pyinput) + "/lib/python" + ;; Calculate the python version to avoid breaking + ;; with future 3.X releases. + ,(version-major+minor + (package-version python-wrapper)) + "/site-packages")) + (filter (match-lambda + ((label . _) + (string-prefix? "python-" label))) + inputs))) + (qtwebengineprocess + (string-append (assoc-ref inputs "qtwebengine") + "/lib/qt5/libexec/QtWebEngineProcess"))) + ;; The program fails to find the QtWebEngineProcess program, so + ;; we set QTWEBENGINEPROCESS_PATH to help it. PYTHONPATH is + ;; wrapped to avoid declaring Python libraries as propagated + ;; inputs. + (for-each (lambda (program) + (wrap-program program + `("QTWEBENGINEPROCESS_PATH" = + (,qtwebengineprocess)) + `("PYTHONPATH" = ,site-packages))) + (find-files bin "."))) + #t))))) + (native-inputs + `(("xdg-utils" ,xdg-utils))) + (inputs + `(("lame" ,lame) + ("mpv" ,mpv) + ("python" ,python-wrapper) + ("python-beautifulsoup4" ,python-beautifulsoup4) + ("python-decorator" ,python-decorator) + ("python-distro" ,python-distro) + ("python-jsonschema" ,python-jsonschema) + ("python-markdown" ,python-markdown) + ("python-pyaudio" ,python-pyaudio) + ;; `python-pyqtwebengine' must precede `python-pyqt' in PYTHONPATH. + ("python-pyqtwebengine" ,python-pyqtwebengine) + ("python-pyqt" ,python-pyqt) + ("python-requests" ,python-requests) + ("python-send2trash" ,python-send2trash) + ("python-sip" ,python-sip) + ;; `qtwebengine' is included in `pyqtwebengine', included here for easy + ;; wrapping. + ("qtwebengine" ,qtwebengine))) + (home-page "https://apps.ankiweb.net/") + (synopsis "Powerful, intelligent flash cards") + (description "Anki is a program which makes remembering things +easy. Because it's a lot more efficient than traditional study +methods, you can either greatly decrease your time spent studying, or +greatly increase the amount you learn. + +Anyone who needs to remember things in their daily life can benefit +from Anki. Since it is content-agnostic and supports images, audio, +videos and scientific markup (via LaTeX), the possibilities are +endless. For example: +@itemize +@item Learning a language +@item Studying for medical and law exams +@item Memorizing people's names and faces +@item Brushing up on geography +@item Mastering long poems +@item Even practicing guitar chords! +@end itemize") + (license license:agpl3+))) + (define-public t4k-common (package (name "t4k-common") diff --git a/gnu/packages/elf.scm b/gnu/packages/elf.scm index 75caa54296..5fa66210db 100644 --- a/gnu/packages/elf.scm +++ b/gnu/packages/elf.scm @@ -6,6 +6,7 @@ ;;; Copyright © 2017 Leo Famulari <leo@famulari.name> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2020 Mark Wielaard <mark@klomp.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -54,9 +55,10 @@ (build-system gnu-build-system) ;; Separate programs because that's usually not what elfutils users want, - ;; and because they duplicate what Binutils provides. + ;; and because they duplicate what Binutils provides (but are named + ;; differently, using the eu- prefix and can be installed in parallel). (outputs '("out" ; libelf.so, elfutils/*.h, etc. - "bin")) ; ld, nm, objdump, etc. + "bin")) ; eu-nm, eu-objdump, etc. (arguments ;; Programs don't have libelf.so in their RUNPATH and libraries don't @@ -84,11 +86,21 @@ (native-inputs `(("m4" ,m4))) (inputs `(("zlib" ,zlib))) (home-page "https://sourceware.org/elfutils/") - (synopsis "Linker and ELF manipulation tools") + (synopsis "Collection of utilities and libraries to handle ELF files and +DWARF data") (description - "This package provides command-line tools to manipulate binaries in the -Executable and Linkable Format (@dfn{ELF}). This includes @command{ld}, -@command{ar}, @command{objdump}, @command{addr2line}, and more.") + "Elfutils is a collection of utilities and libraries to read, create and +modify Executable and Linkable Format (@dfn{ELF}) binary files, find and +handle Debugging With Arbitrary Record Formats (@dfn{DWARF}) debug data, +symbols, thread state and stacktraces for processes and core files on +GNU/Linux. Elfutils includes @file{libelf} for manipulating ELF files, +@file{libdw} for inspecting DWARF data and process state and utilities like +@command{eu-stack} (to show backtraces), @command{eu-nm} (for listing symbols +from object files), @command{eu-size} (for listing the section sizes of an +object or archive file), @command{eu-strip} (for discarding symbols), +@command{eu-readelf} (to see the raw ELF file structures), +@command{eu-elflint} (to check for well-formed ELF files), +@command{eu-elfcompress} (to compress or decompress ELF sections), and more.") ;; Libraries are dual-licensed LGPLv3.0+ | GPLv2, and programs are GPLv3+. (license lgpl3+))) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 9936127a18..2efb4c220c 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -6942,29 +6942,26 @@ Dust.js, React/JSX, Angularjs, ejs, etc.") (license license:gpl3+))) (define-public emacs-wgrep - ;; Tag is missing, so we use the commit directly. - ;; https://github.com/mhayashi1120/Emacs-wgrep/issues/64 - (let ((commit "379afd89ebd76f63842c8589127d66096a8bb595")) - (package - (name "emacs-wgrep") - (version "2.3.1") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/mhayashi1120/Emacs-wgrep") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0v1qx8z1xj9qzirlycbihnkpwcklyi3a0j8lil78pmdpixdbgh47")))) - (build-system emacs-build-system) - (home-page "https://github.com/mhayashi1120/Emacs-wgrep") - (synopsis "Edit a grep buffer and apply those changes to the files") - (description - "Emacs wgrep allows you to edit a grep buffer and apply those changes + (package + (name "emacs-wgrep") + (version "2.3.2") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/mhayashi1120/Emacs-wgrep") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "00cwqzb94jlq4mwgv8z7r3mn0a6mhq95z6j189kacq9g4473zh8d")))) + (build-system emacs-build-system) + (home-page "https://github.com/mhayashi1120/Emacs-wgrep") + (synopsis "Edit a grep buffer and apply those changes to the files") + (description + "Emacs wgrep allows you to edit a grep buffer and apply those changes to the file buffer. Several backends are supported beside the classic grep: ack, ag, helm and pt.") - (license license:gpl3+)))) + (license license:gpl3+))) (define-public emacs-helm (package @@ -8577,35 +8574,35 @@ been adapted to work with mu4e.") (define-public emacs-yasnippet (package (name "emacs-yasnippet") - (version "0.13.0") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/joaotavora/yasnippet.git") - (commit version))) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "0fkkplycrw8f8r30hjjxl1wm7p2irq2ipzzc1g7cc52abaal796p")) - (modules '((guix build utils))) - (snippet - '(begin - ;; YASnippet expects a "snippets" subdirectory in the same - ;; directory as yasnippet.el, but we don't install it - ;; because it's a git submodule pointing to an external - ;; repository. Adjust `yas-snippet-dirs' to prevent - ;; warnings about a missing directory. - (substitute* "yasnippet.el" - (("^ +'yas-installed-snippets-dir\\)\\)\n") - "))\n")) - #t)))) + (version "0.14.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/joaotavora/yasnippet.git") + (commit version))) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0via9dzw8m5lzymg1h78xkwjssh39zr3g6ccyamlf1rjzjsyxknv")) + (modules '((guix build utils))) + (snippet + '(begin + ;; YASnippet expects a "snippets" subdirectory in the same + ;; directory as yasnippet.el, but we don't install it because it's + ;; a git submodule pointing to an external repository. Adjust + ;; `yas-snippet-dirs' to prevent warnings about a missing + ;; directory. + (substitute* "yasnippet.el" + (("^ +'yas-installed-snippets-dir\\)\\)\n") + "))\n")) + #t)))) (build-system emacs-build-system) (arguments `(#:tests? #t #:test-command '("emacs" "--batch" "-l" "yasnippet-tests.el" "-f" "ert-run-tests-batch-and-exit") - ;; FIXME: one failing test + ;; FIXME: one failing test. #:phases (modify-phases %standard-phases (add-before 'check 'make-tests-writable @@ -8615,11 +8612,10 @@ been adapted to work with mu4e.") (add-before 'check 'delete-rebinding-test (lambda _ (emacs-batch-edit-file "yasnippet-tests.el" - `(progn (progn (goto-char (point-min)) - (re-search-forward - "ert-deftest test-rebindings") - (beginning-of-line) - (kill-sexp)) + `(progn (goto-char (point-min)) + (re-search-forward "ert-deftest test-rebindings") + (beginning-of-line) + (kill-sexp) (basic-save-buffer))) #t))))) (home-page "https://github.com/joaotavora/yasnippet") @@ -8630,50 +8626,40 @@ abbreviation and automatically expand it into function templates.") (license license:gpl3+))) (define-public emacs-yasnippet-snippets - (let ((commit "885050d34737e2fb36a3e7759d60c09347bd4ce0") - (revision "1")) - (package - (name "emacs-yasnippet-snippets") - (version (string-append "1-" revision "." (string-take commit 8))) - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/AndreaCrotti/yasnippet-snippets") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1m935zgglw0iakzrixld5rcjz3wnj84f8wy2mvc3pggjri9l0qr9")))) - (build-system trivial-build-system) - (arguments - `(#:modules ((ice-9 ftw) - (ice-9 regex) - (guix build utils)) - #:builder - (begin - (use-modules (ice-9 ftw) - (ice-9 regex) - (guix build utils)) - (with-directory-excursion (assoc-ref %build-inputs "source") - (for-each (lambda (dir) - (copy-recursively - dir - (string-append %output - "/share/emacs/yasnippet-snippets/" - dir))) - (scandir "." (lambda (fname) - (and (string-match "-mode$" fname) - (directory-exists? fname)))))) - #t))) - (home-page "https://github.com/AndreaCrotti/yasnippet-snippets") - (synopsis "Collection of YASnippet snippets for many languages") - (description - "Provides Andrea Crotti's collection of YASnippet snippets. After installation, + (package + (name "emacs-yasnippet-snippets") + (version "0.20") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/AndreaCrotti/yasnippet-snippets") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "095w7cdmfwmmr6426mbq15n0a5izgbmv9408m9yh1pqz5x3v3vsx")))) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils)) + (let* ((source (assoc-ref %build-inputs "source")) + (out (assoc-ref %outputs "out")) + (snippet-dir + (string-append out "/share/emacs/yasnippet-snippets/"))) + (with-directory-excursion source + (mkdir-p snippet-dir) + (copy-recursively "snippets" snippet-dir))) + #t))) + (home-page "https://github.com/AndreaCrotti/yasnippet-snippets") + (synopsis "Collection of YASnippet snippets for many languages") + (description + "Provides Andrea Crotti's collection of YASnippet snippets. After installation, the snippets will be in \"~/.guix-profile/share/emacs/yasnippet-snippets/\". To make YASnippet aware of these snippets, add the above directory to @code{yas-snippet-dirs}.") - (license license:expat)))) + (license license:gpl3+))) (define-public emacs-helm-c-yasnippet (let ((commit "65ca732b510bfc31636708aebcfe4d2d845b59b0") diff --git a/gnu/packages/ftp.scm b/gnu/packages/ftp.scm index b2ab13d951..58d817853b 100644 --- a/gnu/packages/ftp.scm +++ b/gnu/packages/ftp.scm @@ -46,7 +46,7 @@ (define-public lftp (package (name "lftp") - (version "4.8.4") + (version "4.9.1") (source (origin (method url-fetch) ;; See https://lftp.tech/get.html for mirrors. @@ -58,7 +58,7 @@ "ftp/lftp/lftp-" version ".tar.xz"))) (sha256 (base32 - "0qks22357xv9y6ripmf5j2n5svh8j5z0yniphfk89sjwkqg2gg2f")))) + "0jq2g8h1bx06ya9fsja748vwb2qrca4wsfrgi3fmaa8hznpgqsar")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index c05503cabb..b502cd0ec4 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -4033,7 +4033,7 @@ throwing people around in pseudo-randomly generated buildings.") (define-public hyperrogue (package (name "hyperrogue") - (version "11.2d") + (version "11.2q") ;; When updating this package, be sure to update the "hyperrogue-data" ;; origin in native-inputs. (source (origin @@ -4044,7 +4044,7 @@ throwing people around in pseudo-randomly generated buildings.") "-src.tgz")) (sha256 (base32 - "1b532s94zv1jsni7bvh848m42arxcclsr0x3n7c689iamwqzrxmn")))) + "1w4khi2limxhgiq7xnz0rc9nzbk86bhbyzrcd5hdghnhsviaiggq")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; no check target @@ -4122,7 +4122,7 @@ throwing people around in pseudo-randomly generated buildings.") "-win.zip")) (sha256 (base32 - "0vq4l1xaqpjj3hmxn1vn2b3bbkn1hrag42ck9f30blinv347bwhf")))) + "1k81zrbq5gmrccjac1i5c6v8j2iilfg2vwrnm8snjmmcnh5z1fgj")))) ("unzip" ,unzip))) (inputs `(("font-dejavu" ,font-dejavu) diff --git a/gnu/packages/gnome-xyz.scm b/gnu/packages/gnome-xyz.scm index 0fc721b7d3..7f375fefc5 100644 --- a/gnu/packages/gnome-xyz.scm +++ b/gnu/packages/gnome-xyz.scm @@ -114,6 +114,40 @@ which haven't been updated for some years. The new app icons are ported from the Obsidian icon theme.") (license license:gpl3))) +(define-public gnome-shell-extension-appindicator + (package + (name "gnome-shell-extension-appindicator") + (version "30") + (source (origin + (method git-fetch) + (uri (git-reference + (url + "https://github.com/ubuntu/gnome-shell-extension-appindicator.git") + (commit (string-append "v" version)))) + (sha256 + (base32 + "1fjhx23jqwv3d0smwhnjvc35gqhwk9p5f96ic22pfax653cn5vh8")) + (file-name (git-file-name name version)))) + (build-system trivial-build-system) + (arguments + '(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils)) + (let* ((source (assoc-ref %build-inputs "source")) + (install-dir (string-append (assoc-ref %outputs "out") + "/share/gnome-shell/extensions" + "/appindicatorsupport@rgcjonas.gmail.com"))) + (mkdir-p install-dir) + (copy-recursively source install-dir) + #t)))) + (synopsis "Adds KStatusNotifierItem support to GNOME Shell") + (description "This extension integrates Ubuntu AppIndicators +and KStatusNotifierItems (KDE's successor of the systray) into +GNOME Shell.") + (home-page "https://github.com/ubuntu/gnome-shell-extension-appindicator/") + (license license:gpl2+))) + (define-public gnome-shell-extension-dash-to-dock (package (name "gnome-shell-extension-dash-to-dock") diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 2f6029fba5..5b658c90dc 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -2178,6 +2178,10 @@ from forcing GEXP-PROMISE." #+(canonical-package tar))) (invoke "tar" "xvf" #+upstream-source) (with-directory-excursion (string-append "librsvg-" #$version) + ;; The following crate(s) are needed in addition to the ones replaced: + (begin + (invoke + "tar" "xvf" #+(package-source rust-autocfg-0.1) "-C" "vendor")) (for-each (lambda (crate) (delete-file-recursively (string-append "vendor/" (car crate))) @@ -2187,7 +2191,7 @@ from forcing GEXP-PROMISE." ("approx" . #+(package-source rust-approx-0.3)) ("arrayvec" . #+(package-source rust-arrayvec-0.4)) ("atty" . #+(package-source rust-atty-0.2)) - ("autocfg" . #+(package-source rust-autocfg-0.1)) + ("autocfg" . #+(package-source rust-autocfg-1.0)) ("bitflags" . #+(package-source rust-bitflags-1)) ;; block 0.1 ("bstr" . #+(package-source rust-bstr-0.2)) @@ -2238,7 +2242,7 @@ from forcing GEXP-PROMISE." ("language-tags" . #+(package-source rust-language-tags-0.2)) ("lazy_static" . #+(package-source rust-lazy-static-1.3)) ("libc" . #+(package-source rust-libc-0.2)) -;; libm 0.1 + ("libm" . #+(package-source rust-libm-0.1)) ;; locale_config 0.3 ("log" . #+(package-source rust-log-0.4)) ("mac" . #+(package-source rust-mac-0.1)) diff --git a/gnu/packages/gpodder.scm b/gnu/packages/gpodder.scm index 040793b4f6..8e7c961929 100644 --- a/gnu/packages/gpodder.scm +++ b/gnu/packages/gpodder.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com> +;;; Copyright © 2019, 2020 Pierre Langlois <pierre.langlois@gmx.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -37,7 +37,7 @@ (define-public gpodder (package (name "gpodder") - (version "3.10.11") + (version "3.10.13") (source (origin (method git-fetch) @@ -46,7 +46,7 @@ (commit version))) (sha256 (base32 - "15f5z3cnch9lpzbz73l4wjykv9n74y8djz5db53la2ql4ihaxfz9")) + "1h542syaxsx1hslfzlk3fx1nbp190zjw35kigw7a1kx1jwvfwapg")) (file-name (git-file-name name version)))) (build-system python-build-system) (native-inputs diff --git a/gnu/packages/ham-radio.scm b/gnu/packages/ham-radio.scm index 6b3f68cd7d..376191af54 100644 --- a/gnu/packages/ham-radio.scm +++ b/gnu/packages/ham-radio.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2017, 2018, 2019 Arun Isaac <arunisaac@systemreboot.net> -;;; Copyright © 2019 Evan Straw <evan.straw99@gmail.com> +;;; Copyright © 2019, 2020 Evan Straw <evan.straw99@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -22,6 +22,8 @@ #:use-module (guix packages) #:use-module (guix download) #:use-module (guix git-download) + #:use-module (gnu packages autotools) + #:use-module (gnu packages base) #:use-module (gnu packages gtk) #:use-module (gnu packages image) #:use-module (gnu packages libusb) @@ -29,6 +31,7 @@ #:use-module (gnu packages pulseaudio) #:use-module (gnu packages python) #:use-module (gnu packages python-xyz) + #:use-module (gnu packages sdr) #:use-module (gnu packages xml) #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) @@ -127,3 +130,49 @@ satellites, the POES NOAA weather satellite series. These transmissions are on a frequency of 137 MHz. They can be received using an inexpensive antenna and a dedicated receiver.") (license license:gpl2+))) + +(define-public redsea + (package + (name "redsea") + (version "0.18") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/windytan/redsea") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1y96g0ra2krjb2kypm8s5gdfia45yci4f36klsvyzg8d53v5cwhn")))) + (build-system gnu-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + ;; The configure.ac file does not explicitly link against libiconv + ;; except on Mac OS, causing the build to fail. This phase comments + ;; out the original AC_SUBST macro (located inside a conditional) and + ;; adds an explicit use of it underneath, so that libiconv is always + ;; linked against. + (add-after 'unpack 'patch-libiconv + (lambda _ + (substitute* "configure.ac" + (("^ +AC_SUBST") + "# AC_SUBST") + (("esac") + "esac\nAC_SUBST([ICONV], [\"-liconv\"])")) + #t))))) + (inputs + `(("libiconv" ,libiconv) + ("libsndfile" ,libsndfile) + ("liquid-dsp" ,liquid-dsp))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake))) + (home-page "https://github.com/windytan/redsea") + (synopsis "Lightweight RDS to JSON decoder") + (description "redsea is a lightweight command-line @dfn{FM Radio Data +System} (FM-RDS) decoder. Redsea can be used with any RTL-SDR USB radio stick +with the rtl_fm tool, or any other @dfn{software-defined radio} (SDR) via +csdr, for example. It can also decode raw ASCII bitstream, the hex format +used by RDS Spy, and audio files containing @dfn{multiplex} signals (MPX).") + (license license:expat))) diff --git a/gnu/packages/haskell-apps.scm b/gnu/packages/haskell-apps.scm index 5b5b20cd65..767f0c7f99 100644 --- a/gnu/packages/haskell-apps.scm +++ b/gnu/packages/haskell-apps.scm @@ -270,14 +270,14 @@ unique algebra of patches called @url{http://darcs.net/Theory,Patchtheory}. (define-public git-annex (package (name "git-annex") - (version "7.20191230") + (version "7.20200202.7") (source (origin (method url-fetch) (uri (string-append "https://hackage.haskell.org/package/" "git-annex/git-annex-" version ".tar.gz")) (sha256 - (base32 "1xsd4vhiv3zkcqjh2pxhbkjx75hcalcc9bpdlfc27wzxsxyrwz12")))) + (base32 "1dj1ss7kp82wa0ybilhl88q6w49rj70qh61k2q8qfyx4ghliiigh")))) (build-system haskell-build-system) (arguments `(#:configure-flags diff --git a/gnu/packages/ibus.scm b/gnu/packages/ibus.scm index 512a1ff9ec..c0766c06bd 100644 --- a/gnu/packages/ibus.scm +++ b/gnu/packages/ibus.scm @@ -53,6 +53,7 @@ #:use-module (gnu packages serialization) #:use-module (gnu packages sqlite) #:use-module (gnu packages textutils) + #:use-module (gnu packages unicode) #:use-module (gnu packages xorg)) (define-public ibus @@ -70,19 +71,22 @@ (build-system glib-or-gtk-build-system) (arguments `(#:tests? #f ; tests fail because there's no connection to dbus - #:configure-flags `("--disable-emoji-dict" ; cannot find emoji.json path - "--enable-python-library" - ,(string-append "--with-ucd-dir=" - (getcwd) "/ucd") - "--enable-wayland") + #:parallel-build? #f ; race condition discovered with emoji support + #:configure-flags (list "--enable-python-library" + (string-append + "--with-unicode-emoji-dir=" + (assoc-ref %build-inputs "unicode-emoji") + "/share/unicode/emoji") + (string-append + "--with-emoji-annotation-dir=" + (assoc-ref %build-inputs "unicode-cldr-common") + "/share/unicode/cldr/common/annotations") + (string-append "--with-ucd-dir=" + (assoc-ref %build-inputs "ucd") + "/share/ucd") + "--enable-wayland") #:phases (modify-phases %standard-phases - (add-after 'unpack 'prepare-ucd-dir - (lambda* (#:key inputs #:allow-other-keys) - (mkdir-p "../ucd") - (symlink (assoc-ref inputs "unicode-blocks") "../ucd/Blocks.txt") - (symlink (assoc-ref inputs "unicode-nameslist") "../ucd/NamesList.txt") - #t)) (add-after 'unpack 'patch-python-target-directories (lambda* (#:key outputs #:allow-other-keys) (let ((root (string-append (assoc-ref outputs "out") @@ -149,20 +153,9 @@ (native-inputs `(("glib" ,glib "bin") ; for glib-genmarshal ("gobject-introspection" ,gobject-introspection) ; for g-ir-compiler - - ;; XXX TODO: Move Unicode data to its own (versioned) package. - ("unicode-nameslist" - ,(origin - (method url-fetch) - (uri "https://www.unicode.org/Public/12.0.0/ucd/NamesList.txt") - (sha256 - (base32 "0vsq8gx7hws8mvxy3nlglpwxw7ky57q0fs09d7w9xgb2ylk7fz61")))) - ("unicode-blocks" - ,(origin - (method url-fetch) - (uri "https://www.unicode.org/Public/12.0.0/ucd/Blocks.txt") - (sha256 - (base32 "041sk54v6rjzb23b9x7yjdwzdp2wc7gvfz7ybavgg4gbh51wm8x1")))) + ("ucd" ,ucd) + ("unicode-emoji" ,unicode-emoji) + ("unicode-cldr-common" ,unicode-cldr-common) ("vala" ,vala) ("pkg-config" ,pkg-config))) (native-search-paths diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm index 93474dbdbf..7dd3b69ad4 100644 --- a/gnu/packages/libreoffice.scm +++ b/gnu/packages/libreoffice.scm @@ -362,14 +362,14 @@ AbiWord documents.") (define-public libcdr (package (name "libcdr") - (version "0.1.5") + (version "0.1.6") (source (origin (method url-fetch) (uri (string-append "https://dev-www.libreoffice.org/src/" name "/" name "-" version ".tar.xz")) (sha256 (base32 - "0j1skr11jwvafn0l6p37v3i4lqc8wcn489g8f7c4mqwbk94mrkka")))) + "0qgqlw6i25zfq1gf7f6r5hrhawlrgh92sg238kjpf2839aq01k81")))) (build-system gnu-build-system) (native-inputs `(("cppunit" ,cppunit) diff --git a/gnu/packages/libusb.scm b/gnu/packages/libusb.scm index abf11400e3..f41ed6b9bc 100644 --- a/gnu/packages/libusb.scm +++ b/gnu/packages/libusb.scm @@ -455,24 +455,26 @@ over USB.") (define-public libmtp (package (name "libmtp") - (version "1.1.16") + (version "1.1.17") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/libmtp/libmtp/" version "/libmtp-" version ".tar.gz")) (sha256 (base32 - "185vh9bds6dcy00ycggg69g4v7m3api40zv8vrcfb3fk3vfzjs2v")))) + "1p3r38nvdip40ab1h4scj3mzfjkx6kd14szjqyw9r6wz5pslr8zq")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) + (inputs + `(("libgcrypt" ,libgcrypt))) (propagated-inputs ;; libmtp.pc refers to all these. - `(("libgcrypt" ,libgcrypt) - ("libusb" ,libusb))) + `(("libusb" ,libusb))) (arguments `(#:configure-flags - (list (string-append "--with-udev=" + (list "--disable-static" + (string-append "--with-udev=" (assoc-ref %outputs "out") "/lib/udev")))) (home-page "http://libmtp.sourceforge.net/") diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm index 920837abae..b97ad806ea 100644 --- a/gnu/packages/lisp-xyz.scm +++ b/gnu/packages/lisp-xyz.scm @@ -16,6 +16,7 @@ ;;; Copyright © 2019 Jesse Gildersleve <jessejohngildersleve@protonmail.com> ;;; Copyright © 2019, 2020 Guillaume Le Vaillant <glv@posteo.net> ;;; Copyright © 2019 Brett Gilio <brettg@gnu.org> +;;; Copyright © 2020 Konrad Hinsen <konrad.hinsen@fastmail.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -166,29 +167,27 @@ interactive development model in mind.") (sbcl-package->ecl-package sbcl-fiveam)) (define-public sbcl-bordeaux-threads - (let ((commit "5dce49fbc829f4d136a734f5ef4f5d599660984f") - (revision "1")) - (package - (name "sbcl-bordeaux-threads") - (version (git-version "0.8.6" revision commit)) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/sionescu/bordeaux-threads.git") - (commit commit))) - (sha256 - (base32 "1gkh9rz7zw57n3110ikcf4835950wr4hgp8l79id5ai6nd86x7wv")) - (file-name - (git-file-name "bordeaux-threads" version)))) - (inputs `(("alexandria" ,sbcl-alexandria))) - (native-inputs `(("fiveam" ,sbcl-fiveam))) - (build-system asdf-build-system/sbcl) - (synopsis "Portable shared-state concurrency library for Common Lisp") - (description "BORDEAUX-THREADS is a proposed standard for a minimal + (package + (name "sbcl-bordeaux-threads") + (version "0.8.7") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/sionescu/bordeaux-threads.git") + (commit (string-append "v" version)))) + (sha256 + (base32 "1whpfmyxp2fsw6viqj45fqgsifgr534c575bfh5vaqw5m84b6alp")) + (file-name + (git-file-name "bordeaux-threads" version)))) + (inputs `(("alexandria" ,sbcl-alexandria))) + (native-inputs `(("fiveam" ,sbcl-fiveam))) + (build-system asdf-build-system/sbcl) + (synopsis "Portable shared-state concurrency library for Common Lisp") + (description "BORDEAUX-THREADS is a proposed standard for a minimal MP/Threading interface. It is similar to the CLIM-SYS threading and lock support.") - (home-page "https://common-lisp.net/project/bordeaux-threads/") - (license license:x11)))) + (home-page "https://common-lisp.net/project/bordeaux-threads/") + (license license:x11))) (define-public cl-bordeaux-threads (sbcl-package->cl-source-package sbcl-bordeaux-threads)) @@ -267,7 +266,7 @@ logical continuation of Stefil. It focuses on interactive debugging.") (define-public sbcl-flexi-streams (package (name "sbcl-flexi-streams") - (version "1.0.16") + (version "1.0.18") (source (origin (method git-fetch) @@ -276,7 +275,7 @@ logical continuation of Stefil. It focuses on interactive debugging.") (commit (string-append "v" version)))) (file-name (git-file-name "flexi-streams" version)) (sha256 - (base32 "0gvykjlmja060zqq6nn6aqxlshh6r6ijahmmgf20q0d839rwpgxc")))) + (base32 "0bjv7fd2acknidc5dyi3h85pn10krxv5jyxs1xg8jya2rlfv7f1j")))) (build-system asdf-build-system/sbcl) (arguments `(#:phases @@ -304,7 +303,7 @@ streams which are similar to string streams.") (define-public sbcl-cl-ppcre (package (name "sbcl-cl-ppcre") - (version "2.0.11") + (version "2.1.1") (source (origin (method git-fetch) @@ -313,7 +312,7 @@ streams which are similar to string streams.") (commit (string-append "v" version)))) (file-name (git-file-name "cl-ppcre" version)) (sha256 - (base32 "0q3iany07vgqm144lw6pj0af2d3vsikpbkwcxr30fci3kzsq4f49")))) + (base32 "0dwvr29diqzcg5n6jvbk2rnd90i05l7n828hhw99khmqd0kz7xsi")))) (build-system asdf-build-system/sbcl) (native-inputs `(("flexi-streams" ,sbcl-flexi-streams))) (synopsis "Portable regular expression library for Common Lisp") @@ -330,32 +329,30 @@ compatible with ANSI-compliant Common Lisp implementations.") (sbcl-package->ecl-package sbcl-cl-ppcre)) (define sbcl-cl-unicode-base - (let ((revision "1") - (commit "9fcd06fba1ddc9e66aed2f2d6c32dc9b764f03ea")) - (package - (name "sbcl-cl-unicode-base") - (version (string-append "0.1.5-" revision "." (string-take commit 7))) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/edicl/cl-unicode.git") - (commit commit))) - (file-name (string-append "cl-unicode-" version "-checkout")) - (sha256 - (base32 - "1jicprb5b3bv57dy1kg03572gxkcaqdjhak00426s76g0plmx5ki")))) - (build-system asdf-build-system/sbcl) - (arguments - '(#:asd-file "cl-unicode.asd" - #:asd-system-name "cl-unicode/base")) - (inputs - `(("cl-ppcre" ,sbcl-cl-ppcre))) - (home-page "http://weitz.de/cl-unicode/") - (synopsis "Portable Unicode library for Common Lisp") - (description "CL-UNICODE is a portable Unicode library Common Lisp, which + (package + (name "sbcl-cl-unicode-base") + (version "0.1.6") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/edicl/cl-unicode.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0ykx2s9lqfl74p1px0ik3l2izd1fc9jd1b4ra68s5x34rvjy0hza")))) + (build-system asdf-build-system/sbcl) + (arguments + '(#:asd-file "cl-unicode.asd" + #:asd-system-name "cl-unicode/base")) + (inputs + `(("cl-ppcre" ,sbcl-cl-ppcre))) + (home-page "http://weitz.de/cl-unicode/") + (synopsis "Portable Unicode library for Common Lisp") + (description "CL-UNICODE is a portable Unicode library Common Lisp, which is compatible with perl. It is pretty fast, thread-safe, and compatible with ANSI-compliant Common Lisp implementations.") - (license license:bsd-2)))) + (license license:bsd-2))) (define-public sbcl-cl-unicode (package @@ -629,6 +626,9 @@ from other CLXes around the net.") `(("sbcl-cl-ppcre" ,sbcl-cl-ppcre) ("sbcl-cl-unicode" ,sbcl-cl-unicode))))) +(define-public ecl-cl-ppcre-unicode + (sbcl-package->ecl-package sbcl-cl-ppcre-unicode)) + ;; The slynk that users expect to install includes all of slynk's contrib ;; modules. Therefore, we build the base module and all contribs first; then ;; we expose the union of these as `sbcl-slynk'. The following variable @@ -1417,7 +1417,7 @@ In addition to regular Packrat / Parsing Grammar / TDPL features ESRAP supports: (define-public sbcl-split-sequence (package (name "sbcl-split-sequence") - (version "1.4.1") + (version "2.0.0") (source (origin (method git-fetch) @@ -1426,13 +1426,11 @@ In addition to regular Packrat / Parsing Grammar / TDPL features ESRAP supports: (commit (string-append "v" version)))) (sha256 (base32 - "0c3zp6b7fmmp93sfhq112ind4zkld49ycw68z409xpnz3gc0wpf0")) + "0jcpnx21hkfwqj5fvp7kc6pn1qcz9hk7g2s5x8h0349x1j2irln0")) (file-name (git-file-name "split-sequence" version)))) (build-system asdf-build-system/sbcl) - (arguments - ;; TODO: Tests seem to be broken. - ;; https://github.com/sharplispers/split-sequence/issues/8 - `(#:tests? #f)) + (native-inputs + `(("fiveam" ,sbcl-fiveam))) (synopsis "Member of the Common Lisp Utilities family of programs") (description "Splits sequence into a list of subsequences delimited by objects @@ -1570,7 +1568,7 @@ with @command{colorize} support.")))) (define-public sbcl-cl-fad (package (name "sbcl-cl-fad") - (version "0.7.5") + (version "0.7.6") (source (origin (method git-fetch) @@ -1579,7 +1577,7 @@ with @command{colorize} support.")))) (commit (string-append "v" version)))) (sha256 (base32 - "1l1qmk9z57q84bz5r04sxsksggsnd7dgkxlybzh9imz6ma7sm52m")) + "1gc8i82v6gks7g0lnm54r4prk2mklidv2flm5fvbr0a7rsys0vpa")) (file-name (string-append "cl-fad" version "-checkout")))) (build-system asdf-build-system/sbcl) (inputs @@ -1821,8 +1819,11 @@ processes that doesn't run under Emacs. Lisp processes created by ("cl-fad" ,sbcl-cl-fad) ("ironclad" ,sbcl-ironclad) ("named-readtables" ,sbcl-named-readtables) - ("pythonic-string-reader" ,sbcl-pythonic-string-reader) - ("swank" ,cl-slime-swank))) + ("pythonic-string-reader" ,sbcl-pythonic-string-reader))) + (propagated-inputs + ;; Packages having mgl-pax as input complain that it can't find + ;; swank if we put it in inputs, so let's put it in propageted-inputs. + `(("swank" ,cl-slime-swank))) (synopsis "Exploratory programming environment and documentation generator") (description "PAX provides an extremely poor man's Explorable Programming @@ -2473,7 +2474,7 @@ non-consing thread safe queues and fibonacci priority queues.") (define sbcl-cffi-bootstrap (package (name "sbcl-cffi-bootstrap") - (version "0.19.0") + (version "0.21.0") (source (origin (method git-fetch) @@ -2482,7 +2483,7 @@ non-consing thread safe queues and fibonacci priority queues.") (commit (string-append "v" version)))) (file-name (git-file-name "cffi-bootstrap" version)) (sha256 - (base32 "09sfgc6r7ihmbkwfpvkq5fxc7h45cabpvgbvs47i5cvnmv3k72xy")))) + (base32 "1qalargz9bhp850qv60ffwpdqi4xirzar4l3g6qcg8yc6xqf2cjk")))) (build-system asdf-build-system/sbcl) (inputs `(("libffi" ,libffi) @@ -3177,44 +3178,43 @@ Lisp (from GBBopen project).") (define-public ecl-portable-threada (sbcl-package->ecl-package sbcl-portable-threads)) -(define-public sbcl-usocket-boot0 +(define sbcl-usocket-boot0 ;; usocket's test rely on usocket-server which depends on usocket itself. ;; We break this cyclic dependency with -boot0 that packages usocket. - (let ((commit "86e7efbfe50101931edf4b67cdcfa7e221ecfde9")) - (package - (name "sbcl-usocket-boot0") - (version (git-version "0.7.1" "1" commit)) - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/usocket/usocket/") - (commit commit))) - (file-name (git-file-name "usocket" version)) - (sha256 - (base32 - "1lk6ipakrib7kdgzw44hrgmls9akp5pz4h35yynw0k5zwmmq6374")))) - (build-system asdf-build-system/sbcl) - (inputs - `(("split-sequence" ,sbcl-split-sequence))) - (arguments - `(#:tests? #f - #:asd-system-name "usocket")) - (home-page "https://common-lisp.net/project/usocket/") - (synopsis "Universal socket library for Common Lisp (server side)") - (description - "This library strives to provide a portable TCP/IP and UDP/IP socket + (package + (name "sbcl-usocket-boot0") + (version "0.8.3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/usocket/usocket/") + (commit (string-append "v" version)))) + (file-name (git-file-name "usocket" version)) + (sha256 + (base32 + "0x746wr2324l6bn7skqzgkzcbj5kd0zp2ck0c8rldrw0rzabg826")))) + (build-system asdf-build-system/sbcl) + (inputs + `(("split-sequence" ,sbcl-split-sequence))) + (arguments + `(#:tests? #f + #:asd-system-name "usocket")) + (home-page "https://common-lisp.net/project/usocket/") + (synopsis "Universal socket library for Common Lisp (server side)") + (description + "This library strives to provide a portable TCP/IP and UDP/IP socket interface for as many Common Lisp implementations as possible, while keeping the abstraction and portability layer as thin as possible.") - (license license:expat)))) + (license license:expat))) (define-public sbcl-usocket-server (package (inherit sbcl-usocket-boot0) (name "sbcl-usocket-server") (inputs - `(("usocket" ,sbcl-usocket-boot0) - ("portable-threads" ,sbcl-portable-threads))) + `(("bordeaux-threads" ,sbcl-bordeaux-threads) + ("usocket" ,sbcl-usocket-boot0))) (arguments '(#:asd-system-name "usocket-server")) (synopsis "Universal socket library for Common Lisp (server side)"))) @@ -3240,7 +3240,7 @@ the abstraction and portability layer as thin as possible.") (define-public cl-usocket (sbcl-package->cl-source-package sbcl-usocket)) -(define-public ecl-socket +(define-public ecl-usocket (sbcl-package->ecl-package sbcl-usocket)) (define-public sbcl-s-xml @@ -3663,45 +3663,45 @@ the format used by the popular compression tool bzip2.") (sbcl-package->cl-source-package sbcl-chipz)) (define-public sbcl-drakma - (let ((version "2.0.4") - (commit "7647c0ae842ff2058624e53979c7f297760c97a7") - (revision "1")) - (package - (name "sbcl-drakma") - (version (git-version version revision commit)) - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/edicl/drakma.git") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1c4i9wakhj5pxfyyykxshdmv3180sbkrx6fcyynikmc0jd0rh84r")))) - (build-system asdf-build-system/sbcl) - (inputs - `(("sbcl-puri" ,sbcl-puri) - ("sbcl-cl-base64" ,sbcl-cl-base64) - ("sbcl-chunga" ,sbcl-chunga) - ("sbcl-flexi-streams" ,sbcl-flexi-streams) - ("sbcl-cl-ppcre" ,sbcl-cl-ppcre) - ("sbcl-chipz" ,sbcl-chipz) - ("sbcl-usocket" ,sbcl-usocket) - ("sbcl-cl+ssl" ,sbcl-cl+ssl))) - (native-inputs - `(("sbcl-fiveam" ,sbcl-fiveam))) - (home-page "https://edicl.github.io/drakma/") - (synopsis "HTTP client written in Common Lisp") - (description - "Drakma is a full-featured HTTP client implemented in Common Lisp. It + (package + (name "sbcl-drakma") + (version "2.0.7") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/edicl/drakma.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1441idnyif9xzx3ln1p3fg36k2v9h4wasjqrzc8y52j61420qpci")))) + (build-system asdf-build-system/sbcl) + (inputs + `(("sbcl-puri" ,sbcl-puri) + ("sbcl-cl-base64" ,sbcl-cl-base64) + ("sbcl-chunga" ,sbcl-chunga) + ("sbcl-flexi-streams" ,sbcl-flexi-streams) + ("sbcl-cl-ppcre" ,sbcl-cl-ppcre) + ("sbcl-chipz" ,sbcl-chipz) + ("sbcl-usocket" ,sbcl-usocket) + ("sbcl-cl+ssl" ,sbcl-cl+ssl))) + (native-inputs + `(("sbcl-fiveam" ,sbcl-fiveam))) + (home-page "https://edicl.github.io/drakma/") + (synopsis "HTTP client written in Common Lisp") + (description + "Drakma is a full-featured HTTP client implemented in Common Lisp. It knows how to handle HTTP/1.1 chunking, persistent connections, re-usable sockets, SSL, continuable uploads, file uploads, cookies, and more.") - (license license:bsd-2)))) + (license license:bsd-2))) (define-public cl-drakma (sbcl-package->cl-source-package sbcl-drakma)) +(define-public ecl-drakma + (sbcl-package->ecl-package sbcl-drakma)) + (define-public sbcl-hunchentoot (package (name "sbcl-hunchentoot") @@ -4102,36 +4102,37 @@ Lisp.") (sbcl-package->cl-source-package sbcl-fast-http)) (define-public sbcl-static-vectors - (let ((commit "0681eac1f49370cde03e64b077251e8abf47d702") - (revision "1")) - (package - (name "sbcl-static-vectors") - (version (git-version "1.8.3" revision commit)) - (source - (origin + (package + (name "sbcl-static-vectors") + (version "1.8.4") + (source + (origin (method git-fetch) (uri (git-reference (url "https://github.com/sionescu/static-vectors.git") - (commit commit))) + (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "138nlsq14hv8785ycjm6jw3i6ablhq8vcwys7q09y80arcgrg6r3")))) - (native-inputs - `(("sbcl-fiveam" ,sbcl-fiveam))) - (inputs - `(("sbcl-cffi-grovel" ,sbcl-cffi-grovel) - ("sbcl-cffi" ,sbcl-cffi))) - (build-system asdf-build-system/sbcl) - (home-page "http://common-lisp.net/projects/iolib/") - (synopsis "Allocate SIMPLE-ARRAYs in static memory") - (description - "With @code{static-vectors}, you can create vectors allocated in static + (base32 "0qvf9z6bhwhm8n45fjwkm7j8dcb58szfvndky65cyn4lpdval7m1")))) + (native-inputs + `(("sbcl-fiveam" ,sbcl-fiveam))) + (inputs + `(("sbcl-cffi-grovel" ,sbcl-cffi-grovel) + ("sbcl-cffi" ,sbcl-cffi))) + (build-system asdf-build-system/sbcl) + (home-page "http://common-lisp.net/projects/iolib/") + (synopsis "Allocate SIMPLE-ARRAYs in static memory") + (description + "With @code{static-vectors}, you can create vectors allocated in static memory.") - (license license:expat)))) + (license license:expat))) (define-public cl-static-vectors (sbcl-package->cl-source-package sbcl-static-vectors)) +(define-public ecl-static-vectors + (sbcl-package->ecl-package sbcl-static-vectors)) + (define-public sbcl-marshal (let ((commit "eff1b15f2b0af2f26f71ad6a4dd5c4beab9299ec") (revision "1")) @@ -5222,7 +5223,7 @@ decoding routines for IDNA, the International Domain Names in Applications.") (package (name "sbcl-swap-bytes") (build-system asdf-build-system/sbcl) - (version "1.1") + (version "1.2") (home-page "https://github.com/sionescu/swap-bytes") (source (origin @@ -5233,14 +5234,11 @@ decoding routines for IDNA, the International Domain Names in Applications.") (file-name (git-file-name name version)) (sha256 (base32 - "1qysbv0jngdfkv53y874qjhcxc4qi8ixaqq6j8bzxh5z0931wv55")))) + "1hw1v1lw26rifyznpnj1csphha9jgzwpiic16ni3pvs6hcsni9rz")))) (inputs `(("trivial-features" ,sbcl-trivial-features))) (native-inputs `(("fiveam" ,sbcl-fiveam))) - (arguments - ;; TODO: Tests fail, why? - `(#:tests? #f)) (synopsis "Efficient endianness conversion for Common Lisp") (description "This Common Lisp library provides optimized byte-swapping primitives. The library can change endianness of unsigned integers of length @@ -6874,8 +6872,8 @@ compression/decompression using bindings to the lzlib C library.") (sbcl-package->ecl-package sbcl-lzlib)) (define-public sbcl-chanl - (let ((commit "2362b57550c2c9238cc882d03553aaa1040b7340") - (revision "0")) + (let ((commit "56e90a126c78b39bb621a01585e8d3b985238e8c") + (revision "1")) (package (name "sbcl-chanl") (version (git-version "0.4.1" revision commit)) @@ -6888,7 +6886,7 @@ compression/decompression using bindings to the lzlib C library.") (file-name (git-file-name name version)) (sha256 (base32 - "0ag3wz7yrqwp0s5069wwda98z3rrqd25spg8sa8rdqghj084w28w")))) + "0b1cf6c12qx5cy1fw2z42jgh566rp3l8nv5qf0qqc569s7bgmrh4")))) (build-system asdf-build-system/sbcl) (native-inputs `(("fiveam" ,sbcl-fiveam))) @@ -6906,26 +6904,7 @@ threads.") (sbcl-package->cl-source-package sbcl-chanl)) (define-public ecl-chanl - (let ((base (sbcl-package->ecl-package sbcl-chanl))) - (package - (inherit base) - (arguments - (substitute-keyword-arguments (package-arguments base) - ;; The CHANL.ACTORS package uses the :ARGUMENTS option of - ;; DEFINE-METHOD-COMBINATION, which is not implemented in ECL yet - ;; (see https://gitlab.com/embeddable-common-lisp/ecl/issues/305). - ;; So let's disable it for now, as it allows compiling the library - ;; and using the rest of it. - ((#:phases phases '%standard-phases) - `(modify-phases ,phases - (add-after 'unpack 'disable-chanl-actors - (lambda _ - (substitute* "chanl.asd" - (("\\(:file \"actors\"\\)") "")) - #t)))) - ;; Disable the tests for now, as the SEND-SEQUENCE test seems to - ;; never end. - ((#:tests? _ #f) #f)))))) + (sbcl-package->ecl-package sbcl-chanl)) (define-public sbcl-cl-store (let ((commit "c787337a16ea8cf8a06227f35933a4ec774746b3") @@ -7435,7 +7414,7 @@ interactive development.") ("metabang-bind" ,sbcl-metabang-bind) ("named-readtables" ,sbcl-named-readtables))) (arguments - '(#:test-asd-file "graph.test.asd")) + '(#:test-asd-file "graph-test.asd")) (synopsis "Graph data structure and algorithms for Common Lisp") (description "The GRAPH Common Lisp library provides a data structures to represent @@ -7460,7 +7439,7 @@ path, maximum flow, minimum spanning tree, etc.).") ("named-readtables" ,sbcl-named-readtables))) (arguments (substitute-keyword-arguments (package-arguments sbcl-graph) - ((#:asd-file _ "") "graph.dot.asd") + ((#:asd-file _ "") "graph-dot.asd") ((#:asd-system-name _ #f) "graph-dot"))) (synopsis "Serialize graphs to and from DOT format"))) @@ -7477,7 +7456,7 @@ path, maximum flow, minimum spanning tree, etc.).") ("yason" ,sbcl-yason))) (arguments (substitute-keyword-arguments (package-arguments sbcl-graph) - ((#:asd-file _ "") "graph.json.asd") + ((#:asd-file _ "") "graph-json.asd") ((#:asd-system-name _ #f) "graph-json"))) (synopsis "Serialize graphs to and from JSON format"))) @@ -10043,3 +10022,183 @@ ones.") (define-public ecl-nodgui (sbcl-package->ecl-package sbcl-nodgui)) + +(define-public sbcl-salza2 + (package + (name "sbcl-salza2") + (version "2.0.9") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/xach/salza2.git") + (commit (string-append "release-" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0p38rj4gq7j5k807php7hrz7l2zyyfshv8i9yms7i8lkgg3433ki")))) + (build-system asdf-build-system/sbcl) + (synopsis "Common Lisp library for zlib, deflate and gzip compression") + (description + "Salza2 is a Common Lisp library for creating compressed data in the zlib, +deflate, or gzip data formats, described in RFC 1950, RFC 1951, and RFC 1952, +respectively.") + (home-page "https://www.xach.com/lisp/salza2/") + (license license:bsd-2))) + +(define-public cl-salza2 + (sbcl-package->cl-source-package sbcl-salza2)) + +(define-public ecl-salza2 + (sbcl-package->ecl-package sbcl-salza2)) + +(define-public sbcl-png-read + (let ((commit "ec29f38a689972b9f1373f13bbbcd6b05deada88") + (revision "1")) + (package + (name "sbcl-png-read") + (version (git-version "0.3.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Ramarren/png-read.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0vyczbcwskrygrf1hgrsnk0jil8skmvf1kiaalw5jps4fjrfdkw0")))) + (build-system asdf-build-system/sbcl) + (inputs + `(("babel" ,sbcl-babel) + ("chipz" ,sbcl-chipz) + ("iterate" ,sbcl-iterate))) + (synopsis "PNG decoder for Common Lisp") + (description "This is a Common Lisp library for reading PNG images.") + (home-page "https://github.com/Ramarren/png-read") + (license license:bsd-3)))) + +(define-public cl-png-read + (sbcl-package->cl-source-package sbcl-png-read)) + +(define-public ecl-png-read + (sbcl-package->ecl-package sbcl-png-read)) + +(define-public sbcl-zpng + (package + (name "sbcl-zpng") + (version "1.2.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/xach/zpng.git") + (commit (string-append "release-" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0b3ag3jhl3z7kdls3ahdsdxsfhhw5qrizk769984f4wkxhb69rcm")))) + (build-system asdf-build-system/sbcl) + (inputs + `(("salza2" ,sbcl-salza2))) + (synopsis "PNG encoder for Common Lisp") + (description "This is a Common Lisp library for creating PNG images.") + (home-page "https://www.xach.com/lisp/zpng/") + (license license:bsd-2))) + +(define-public cl-zpng + (sbcl-package->cl-source-package sbcl-zpng)) + +(define-public ecl-zpng + (sbcl-package->ecl-package sbcl-zpng)) + +(define-public sbcl-cl-qrencode + (package + (name "sbcl-cl-qrencode") + (version "0.1.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/jnjcc/cl-qrencode.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1l5k131dchbf6cj8a8xqa731790p01p3qa1kdy2wa9dawy3ymkxr")))) + (build-system asdf-build-system/sbcl) + (native-inputs + `(("lisp-unit" ,sbcl-lisp-unit))) + (inputs + `(("zpng" ,sbcl-zpng))) + (synopsis "QR code encoder for Common Lisp") + (description + "This Common Lisp library provides function to make QR codes and to save +them as PNG files.") + (home-page "https://github.com/jnjcc/cl-qrencode") + (license license:gpl2+))) + +(define-public cl-qrencode + (sbcl-package->cl-source-package sbcl-cl-qrencode)) + +(define-public ecl-cl-qrencode + (sbcl-package->ecl-package sbcl-cl-qrencode)) + +(define-public sbcl-hdf5-cffi + (let ((commit "5b5c88f191e470e4fe96b462334e3ce0806eed5c") + (revision "1")) + (package + (name "sbcl-hdf5-cffi") + (version (git-version "1.8.18" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/hdfgroup/hdf5-cffi.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0vda3075423xz83qky998lpac5b04dwfv7bwgh9jq8cs5v0zrxjf")))) + (build-system asdf-build-system/sbcl) + (synopsis "Common Lisp bindings for the HDF5 library") + (description + "@code{hdf5-cffi} is a CFFI wrapper for the HDF5 library.") + (home-page "https://github.com/hdfgroup/hdf5-cffi") + (license (license:non-copyleft + (string-append "https://github.com/HDFGroup/hdf5-cffi/raw/" + commit + "/LICENSE"))) + (inputs + `(("cffi" ,sbcl-cffi) + ("cffi-grovel" ,sbcl-cffi-grovel) + ("hdf5" ,hdf5-1.10))) + (native-inputs + `(("fiveam" ,sbcl-fiveam))) + (arguments + `(#:asd-system-name "hdf5-cffi" + #:asd-file "hdf5-cffi.asd" + #:test-asd-file "hdf5-cffi.test.asd" + ;; Tests depend on hdf5-cffi.examples.asd in addition to hdf5-cffi.asd, + ;; I don't know if there is a way to tell asdf-build-system to load + ;; an additional system first, so tests are disabled. + #:tests? #f + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-paths + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "src/library.lisp" + (("libhdf5.so") + (string-append + (assoc-ref inputs "hdf5") + "/lib/libhdf5.so"))))) + (add-after 'unpack 'fix-dependencies + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "hdf5-cffi.asd" + ((":depends-on \\(:cffi\\)") + ":depends-on (:cffi :cffi-grovel)")) + (substitute* "hdf5-cffi.test.asd" + ((":depends-on \\(:cffi :hdf5-cffi") + ":depends-on (:cffi :cffi-grovel :hdf5-cffi")))))))))) + +(define-public cl-hdf5-cffi + (sbcl-package->cl-source-package sbcl-hdf5-cffi)) + +(define-public ecl-hdf5-cffi + (sbcl-package->ecl-package sbcl-hdf5-cffi)) diff --git a/gnu/packages/lxqt.scm b/gnu/packages/lxqt.scm index 12c92e52d1..a440491633 100644 --- a/gnu/packages/lxqt.scm +++ b/gnu/packages/lxqt.scm @@ -8,6 +8,7 @@ ;;; Copyright © 2018, 2019 Meiyo Peng <meiyo@riseup.net> ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2019, 2020 Reza Alizadeh Majd <r.majd@pantherx.org> +;;; Copyright © 2020 Fakhri Sajadi <f.sajadi@pantherx.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -379,6 +380,7 @@ the operating system LXQt is running on.") ("qtx11extras" ,qtx11extras) ("solid" ,solid) ("xf86-input-libinput" ,xf86-input-libinput) + ("xkeyboard-config" ,xkeyboard-config) ("zlib" ,zlib))) (native-inputs `(("pkg-config" ,pkg-config) @@ -394,6 +396,14 @@ the operating system LXQt is running on.") (("DESTINATION \"\\$\\{LXQT_ETC_XDG_DIR\\}") "DESTINATION \"etc/xdg")) #t)) + (add-after 'unpack 'set-xkeyboard-config-file-name + (lambda* (#:key inputs #:allow-other-keys) + ;; Set the file name to xkeyboard-config. + (let ((xkb (assoc-ref inputs "xkeyboard-config"))) + (substitute* "lxqt-config-input/keyboardlayoutconfig.h" + (("/usr/share/X11/xkb/rules/base.lst") + (string-append xkb "/share/X11/xkb/rules/base.lst"))) + #t))) (add-after 'unpack 'patch-translations-dir (lambda* (#:key outputs #:allow-other-keys) (substitute* '("lxqt-config-file-associations/CMakeLists.txt" diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index 0538342977..67aa079024 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -397,9 +397,11 @@ aliasing facilities to work just as they would on normal mail.") `(("cyrus-sasl" ,cyrus-sasl) ("gdbm" ,gdbm) ("gpgme" ,gpgme) + ("libidn2" ,libidn2) ("ncurses" ,ncurses) ("openssl" ,openssl) - ("perl" ,perl))) + ("perl" ,perl) + ("sqlite" ,sqlite))) (arguments `(#:configure-flags '("--enable-smtp" "--enable-imap" @@ -407,8 +409,11 @@ aliasing facilities to work just as they would on normal mail.") "--enable-gpgme" "--enable-hcache" ; for header caching "--enable-sidebar" + "--enable-autocrypt" "--with-ssl" "--with-sasl" + "--with-sqlite3" ; required for Autocrypt + "--with-idn2" ; recommended for Autocrypt ;; so that mutt does not check whether the path ;; exists, which it does not in the chroot "--with-mailpath=/var/mail"))) diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm index e378e9880b..3ef04d7202 100644 --- a/gnu/packages/music.scm +++ b/gnu/packages/music.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014, 2019 Eric Bavier <bavier@member.fsf.org> -;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org> ;;; Copyright © 2016 Al McElrath <hello@yrns.org> ;;; Copyright © 2016, 2017, 2019 Efraim Flashner <efraim@flashner.co.il> @@ -2213,7 +2213,7 @@ capabilities, custom envelopes, effects, etc.") (define-public yoshimi (package (name "yoshimi") - (version "1.6.1") + (version "1.7.0.1") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/yoshimi/" @@ -2221,7 +2221,7 @@ capabilities, custom envelopes, effects, etc.") "/yoshimi-" version ".tar.bz2")) (sha256 (base32 - "1shnz429zgl0b4y5bpb61frk1747jwqfahq4hx44c972580zghzh")))) + "1pkqrrr51vlxh96vy0c0rf5ijjvymys4brsw9rv1bdp1bb8izw6c")))) (build-system cmake-build-system) (arguments `(#:tests? #f ; there are no tests @@ -5142,7 +5142,7 @@ and as an LV2 plugin.") (define-public zrythm (package (name "zrythm") - (version "0.7.345") + (version "0.7.474") (source (origin (method url-fetch) @@ -5150,13 +5150,21 @@ and as an LV2 plugin.") version ".tar.xz")) (sha256 (base32 - "1csiwq38a1ckx23lairfpl7qjkz71wsa7a9vsxl3k58f9ybibiil")))) + "0qq9v8y27zhamcb7nq7pl76874ws8x8cxhp5r685b8binvl9p0az")))) (build-system meson-build-system) (arguments `(#:glib-or-gtk? #t #:configure-flags `("-Denable_tests=true" "-Dmanpage=true" - "-Dinstall_dseg_font=false" "-Denable_ffmpeg=true"))) + "-Dinstall_dseg_font=false" "-Denable_ffmpeg=true") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-xdg-open + (lambda _ + (substitute* "src/utils/io.c" + (("OPEN_DIR_CMD") + (string-append "\"" (which "xdg-open") "\""))) + #t))))) (inputs `(("alsa-lib" ,alsa-lib) ("jack" ,jack-1) diff --git a/gnu/packages/patches/qemu-CVE-2020-1711.patch b/gnu/packages/patches/qemu-CVE-2020-1711.patch new file mode 100644 index 0000000000..32d04f61dd --- /dev/null +++ b/gnu/packages/patches/qemu-CVE-2020-1711.patch @@ -0,0 +1,69 @@ +Fix CVE-2020-1711: + +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-1711 + +Patch copied from upstream source repository: + +https://git.qemu.org/?p=qemu.git;a=commitdiff;h=693fd2acdf14dd86c0bf852610f1c2cca80a74dc + +From 693fd2acdf14dd86c0bf852610f1c2cca80a74dc Mon Sep 17 00:00:00 2001 +From: Felipe Franciosi <felipe@nutanix.com> +Date: Thu, 23 Jan 2020 12:44:59 +0000 +Subject: [PATCH] iscsi: Cap block count from GET LBA STATUS (CVE-2020-1711) + +When querying an iSCSI server for the provisioning status of blocks (via +GET LBA STATUS), Qemu only validates that the response descriptor zero's +LBA matches the one requested. Given the SCSI spec allows servers to +respond with the status of blocks beyond the end of the LUN, Qemu may +have its heap corrupted by clearing/setting too many bits at the end of +its allocmap for the LUN. + +A malicious guest in control of the iSCSI server could carefully program +Qemu's heap (by selectively setting the bitmap) and then smash it. + +This limits the number of bits that iscsi_co_block_status() will try to +update in the allocmap so it can't overflow the bitmap. + +Fixes: CVE-2020-1711 +Cc: qemu-stable@nongnu.org +Signed-off-by: Felipe Franciosi <felipe@nutanix.com> +Signed-off-by: Peter Turschmid <peter.turschm@nutanix.com> +Signed-off-by: Raphael Norwitz <raphael.norwitz@nutanix.com> +Signed-off-by: Kevin Wolf <kwolf@redhat.com> +--- + block/iscsi.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/block/iscsi.c b/block/iscsi.c +index 2aea7e3f13..cbd57294ab 100644 +--- a/block/iscsi.c ++++ b/block/iscsi.c +@@ -701,7 +701,7 @@ static int coroutine_fn iscsi_co_block_status(BlockDriverState *bs, + struct scsi_get_lba_status *lbas = NULL; + struct scsi_lba_status_descriptor *lbasd = NULL; + struct IscsiTask iTask; +- uint64_t lba; ++ uint64_t lba, max_bytes; + int ret; + + iscsi_co_init_iscsitask(iscsilun, &iTask); +@@ -721,6 +721,7 @@ static int coroutine_fn iscsi_co_block_status(BlockDriverState *bs, + } + + lba = offset / iscsilun->block_size; ++ max_bytes = (iscsilun->num_blocks - lba) * iscsilun->block_size; + + qemu_mutex_lock(&iscsilun->mutex); + retry: +@@ -764,7 +765,7 @@ retry: + goto out_unlock; + } + +- *pnum = (int64_t) lbasd->num_blocks * iscsilun->block_size; ++ *pnum = MIN((int64_t) lbasd->num_blocks * iscsilun->block_size, max_bytes); + + if (lbasd->provisioning == SCSI_PROVISIONING_TYPE_DEALLOCATED || + lbasd->provisioning == SCSI_PROVISIONING_TYPE_ANCHORED) { +-- +2.25.0 + diff --git a/gnu/packages/patches/sbcl-graph-asdf-definitions.patch b/gnu/packages/patches/sbcl-graph-asdf-definitions.patch index a528ccfcc6..ec17949675 100644 --- a/gnu/packages/patches/sbcl-graph-asdf-definitions.patch +++ b/gnu/packages/patches/sbcl-graph-asdf-definitions.patch @@ -24,11 +24,11 @@ index 193b6e3..56afc8f 100644 -(register-system-packages "femlisp-matlisp" '(:fl.matlisp)) + cl-heap) + :components ((:file "graph"))) -diff --git a/graph.dot.asd b/graph.dot.asd +diff --git a/graph-dot.asd b/graph-dot.asd new file mode 100644 index 0000000..12aec7e --- /dev/null -+++ b/graph.dot.asd ++++ b/graph-dot.asd @@ -0,0 +1,8 @@ +(defsystem :graph-dot + :depends-on (alexandria @@ -38,11 +38,11 @@ index 0000000..12aec7e + cl-ppcre + graph) + :components ((:file "dot"))) -diff --git a/graph.json.asd b/graph.json.asd +diff --git a/graph-json.asd b/graph-json.asd new file mode 100644 index 0000000..e7d091f --- /dev/null -+++ b/graph.json.asd ++++ b/graph-json.asd @@ -0,0 +1,8 @@ +(defsystem :graph-json + :depends-on (alexandria @@ -52,11 +52,11 @@ index 0000000..e7d091f + yason + graph) + :components ((:file "json"))) -diff --git a/graph.test.asd b/graph.test.asd +diff --git a/graph-test.asd b/graph-test.asd new file mode 100644 index 0000000..1e811e1 --- /dev/null -+++ b/graph.test.asd ++++ b/graph-test.asd @@ -0,0 +1,10 @@ +(defsystem :graph-test + :depends-on (alexandria diff --git a/gnu/packages/pulseaudio.scm b/gnu/packages/pulseaudio.scm index 5651127b38..2bbe6c5bdd 100644 --- a/gnu/packages/pulseaudio.scm +++ b/gnu/packages/pulseaudio.scm @@ -9,6 +9,7 @@ ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Pierre Langlois <pierre.langlois@gmx.com> ;;; Copyright © 2019 Alex Griffin <a@ajgrf.com> +;;; Copyright © 2020 Amin Bandali <mab@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -37,6 +38,7 @@ #:use-module (gnu packages audio) #:use-module (gnu packages autotools) #:use-module (gnu packages avahi) + #:use-module (gnu packages boost) #:use-module (gnu packages check) #:use-module (gnu packages dbm) #:use-module (gnu packages glib) @@ -365,3 +367,38 @@ install one or more of the following packages alongside pulseaudio-dlna: @item vorbis-tools - Vorbis transcoding support @end itemize") (license l:gpl3+)))) + +(define-public pamixer + (package + (name "pamixer") + (version "1.4") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/cdemoulins/pamixer.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1i14550n8paijwwnhksv5izgfqm3s5q2773bdfp6vyqybkll55f7")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; There is no test suite. + #:make-flags + (list (string-append "PREFIX=" (assoc-ref %outputs "out"))) + #:phases + (modify-phases %standard-phases + (delete 'configure) ; There's no configure phase. + (add-before 'install 'mkdir-bin + (lambda _ + (mkdir-p (string-append (assoc-ref %outputs "out") "/bin")) + #t))))) + (inputs + `(("boost" ,boost) + ("pulseaudio" ,pulseaudio))) + (home-page "https://github.com/cdemoulins/pamixer") + (synopsis "PulseAudio command line mixer") + (description + "pamixer is like amixer but for PulseAudio, allowing easy control of the +volume levels of the sinks (get, set, decrease, increase, toggle mute, etc).") + (license l:gpl3+))) diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm index 9464021d82..f9981454fb 100644 --- a/gnu/packages/python-web.scm +++ b/gnu/packages/python-web.scm @@ -31,6 +31,7 @@ ;;; Copyright © 2019 Brendan Tildesley <mail@brendan.scot> ;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com> ;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org> +;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -3494,3 +3495,81 @@ is part of the Weblate translation platform.") (description "This package provides an extended library for interacting with GitLab instances through their API.") (license license:lgpl3+))) + +(define-public python-path-and-address + (package + (name "python-path-and-address") + (version "2.0.1") + (source + (origin + ;; The source distributed on PyPI doesn't include tests. + (method git-fetch) + (uri (git-reference + (url "https://github.com/joeyespo/path-and-address") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0b0afpsaim06mv3lhbpm8fmawcraggc11jhzr6h72kdj1cqjk5h6")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key inputs outputs #:allow-other-keys) + (add-installed-pythonpath inputs outputs) + (invoke "py.test")))))) + (native-inputs + `(("python-pytest" ,python-pytest))) + (home-page "https://github.com/joeyespo/path-and-address") + (synopsis "Functions for command-line server tools used by humans") + (description "Path-and-address resolves ambiguities of command-line +interfaces, inferring which argument is the path, and which is the address.") + (license license:expat))) + +(define-public grip + ;; No release by upstream for quite some time, some bugs fixed since. See: + ;; https://github.com/joeyespo/grip/issues/304 + (let ((commit "27a4d6d87ea1d0ea7f7f120de55baabee3de73e3")) + (package + (name "grip") + (version (git-version "4.5.2" "1" commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/joeyespo/grip") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0kx5hgb3q19i4l18a4vqdq9af390xgpk88lp2ay75qi96k0dc68w")))) + (build-system python-build-system) + (propagated-inputs + `(("python-docopt" ,python-docopt) + ("python-flask" ,python-flask) + ("python-markdown" ,python-markdown) + ("python-path-and-address" ,python-path-and-address) + ("python-pygments" ,python-pygments) + ("python-requests" ,python-requests))) + (native-inputs + `(("python-pytest" ,python-pytest) + ("python-responses" ,python-responses))) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key inputs outputs #:allow-other-keys) + (add-installed-pythonpath inputs outputs) + (setenv "PATH" (string-append + (getenv "PATH") ":" + (assoc-ref %outputs "out") "/bin")) + (invoke "py.test" "-m" "not assumption")))))) + (home-page "https://github.com/joeyespo/grip") + (synopsis "Preview Markdown files using the GitHub API") + (description "Grip is a command-line server application written in Python +that uses the GitHub Markdown API to render a local Markdown file. The styles +and rendering come directly from GitHub, so you'll know exactly how it will +appear. Changes you make to the file will be instantly reflected in the browser +without requiring a page refresh.") + (license license:expat)))) diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index 31aeffa161..dcc1595446 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -3079,14 +3079,14 @@ Server (PLS).") (define-public python-language-server (package (name "python-language-server") - (version "0.31.6") + (version "0.31.7") (source (origin (method url-fetch) (uri (pypi-uri "python-language-server" version)) (sha256 (base32 - "0cqrffd5272p2hifa35rf1h1g6dss741jmjkwa43jninifmbz0df")))) + "0f8rljff4h2ay9m2n9ang7axai37nzd39zd7m6c90rci5wh8cmxh")))) (build-system python-build-system) (propagated-inputs `(("python-pluggy" ,python-pluggy) @@ -10432,13 +10432,13 @@ Wikipedia code samples at (define-public python-cleo (package (name "python-cleo") - (version "0.6.8") + (version "0.7.6") (source (origin (method url-fetch) (uri (pypi-uri "cleo" version)) (sha256 (base32 - "06zp695hq835rkaq6irr1ds1dp2qfzyf32v60vxpd8rcnxv319l5")))) + "02dlc0rn43zgvw0s5v4j80bca9n1jfpwy3r78gn9qjgk0qj39kwr")))) (build-system python-build-system) (native-inputs `( ;; For testing @@ -10447,6 +10447,7 @@ Wikipedia code samples at ("python-pytest" ,python-pytest))) (propagated-inputs `(("python-backpack" ,python-backpack) + ("python-clikit" ,python-clikit) ("python-pastel" ,python-pastel) ("python-pylev" ,python-pylev))) (home-page "https://github.com/sdispater/cleo") @@ -10462,14 +10463,14 @@ docstring and colored output.") (define-public python-tomlkit (package (name "python-tomlkit") - (version "0.5.7") + (version "0.5.8") (source (origin (method url-fetch) (uri (pypi-uri "tomlkit" version)) (sha256 (base32 - "18820ga5z3if1w8dvykxrfm000akracq01ic402xrbljgbn5grn4")))) + "0sf2a4q61kf344hjbw8kb6za1hlccl89j9lzqw0l2zpddp0hrh9j")))) (build-system python-build-system) (native-inputs `(("python-pytest" ,python-pytest))) @@ -10529,14 +10530,14 @@ more, possibly remote, memcached servers.") (define-public python-clikit (package (name "python-clikit") - (version "0.2.4") + (version "0.4.1") (source (origin (method url-fetch) (uri (pypi-uri "clikit" version)) (sha256 (base32 - "0dc8czib5f4j9px1ivcpqnmivnx2zjpc0xb00ldrhsqylks7r06n")))) + "10gab65pq0jdf589n33sj2513pxal2lisl4xwf1ijysdjxmpdr4a")))) (build-system python-build-system) (propagated-inputs `(("python-pastel" ,python-pastel) diff --git a/gnu/packages/samba.scm b/gnu/packages/samba.scm index d0db693e30..4eef7de5d7 100644 --- a/gnu/packages/samba.scm +++ b/gnu/packages/samba.scm @@ -4,7 +4,7 @@ ;;; Copyright © 2016, 2017, 2019 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@openmailbox.org> ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be> -;;; Copyright © 2017, 2018 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2017, 2018, 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com> @@ -423,26 +423,16 @@ key-value pair databases and a real LDAP database.") (define-public ppp (package (name "ppp") - (version "2.4.7") + (version "2.4.8") (source (origin - (method url-fetch) - (uri (string-append "https://www.samba.org/ftp/ppp/ppp-" - version ".tar.gz")) - (patches - (list (origin - ;; Use OpenSSL for cryptography instead of the obsolete glibc - ;; crypto functions that were removed in glibc 2.28. - (method url-fetch) - (uri (string-append "https://github.com/paulusmack/ppp/commit/" - "3c7b86229f7bd2600d74db14b1fe5b3896be3875" - ".patch")) - (file-name "ppp-use-openssl-crypto.patch") - (sha256 - (base32 - "0qlbi247lx3injpy8a1gcij9yilik0vfaibkpvdp88k3sa1rs69z"))))) + (method git-fetch) + (uri (git-reference + (url "https://github.com/paulusmack/ppp") + (commit (string-append "ppp-" version)))) + (file-name (git-file-name name version)) (sha256 (base32 - "0c7vrjxl52pdwi4ckrvfjr08b31lfpgwf3pp0cqy76a77vfs7q02")))) + "1i88m79h6g3fzsb4yw3k8bq1grsx3hsyawm7id2vcaab0gfqzjjv")))) (build-system gnu-build-system) (arguments '(#:tests? #f ; no check target diff --git a/gnu/packages/sdr.scm b/gnu/packages/sdr.scm index f6c9050503..563a9b3887 100644 --- a/gnu/packages/sdr.scm +++ b/gnu/packages/sdr.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2019 Christopher Howard <christopher@librehacker.com> +;;; Copyright © 2019, 2020 Evan Straw <evan.straw99@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -19,11 +20,9 @@ (define-module (gnu packages sdr) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) - #:use-module (guix utils) #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix build-system gnu) - #:use-module (gnu packages) #:use-module (gnu packages algebra) #:use-module (gnu packages autotools)) diff --git a/gnu/packages/stb.scm b/gnu/packages/stb.scm index 5444347644..9cb2ae10b6 100644 --- a/gnu/packages/stb.scm +++ b/gnu/packages/stb.scm @@ -101,3 +101,14 @@ decoding from file or memory. A variety of formats are supported.")) "stb-image-write" "1.13" "stb-image-write is a small library for writing image files to the C@tie{}@code{stdio} interface.")) + +(define-public stb-sprintf + (make-stb-header-package + "stb-sprintf" "1.06" + "stb-sprintf implements fast @code{sprintf}, @code{snprintf} for C/C++.")) + +(define-public stb-truetype + (make-stb-header-package + "stb-truetype" "1.22" + "stb-truetype is a library for parsing, decoding, and rasterizing +characters from TrueType fonts.")) diff --git a/gnu/packages/tor.scm b/gnu/packages/tor.scm index 19d4d670c6..d0b8dd6af4 100644 --- a/gnu/packages/tor.scm +++ b/gnu/packages/tor.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org> -;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2016, 2017, 2018, 2020 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016, 2017 ng0 <ng0@n0.is> ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017, 2018, 2019 Eric Bavier <bavier@member.fsf.org> @@ -50,14 +50,14 @@ (define-public tor (package (name "tor") - (version "0.4.2.5") + (version "0.4.2.6") (source (origin (method url-fetch) (uri (string-append "https://dist.torproject.org/tor-" version ".tar.gz")) (sha256 (base32 - "1hnqg6psf7shcmlvfk44mkpaz7v66mify3cnx7mzl23q5s37anad")))) + "1i766s211nrbjvwvkd2375mjsbbc28yrg46564rbx6w46cj10005")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) diff --git a/gnu/packages/unicode.scm b/gnu/packages/unicode.scm new file mode 100644 index 0000000000..3b34096fe5 --- /dev/null +++ b/gnu/packages/unicode.scm @@ -0,0 +1,149 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2020 Leo Prikler <leo.prikler@student.tugraz.at> +;;; +;;; 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 unicode) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix utils) + #:use-module (guix build-system trivial)) + +(define-public ucd + (package + (name "ucd") + (version "12.0.0") + (source + (origin + (method url-fetch/zipbomb) + (uri (string-append "https://www.unicode.org/Public/zipped/" version + "/UCD.zip")) + (sha256 + (base32 + "1ighy39cjkmqnv1797wrxjz76mv1fdw7zp5j04q55bkwxsdkvrmh")))) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils)) + #:builder + (let ((out (string-append %output "/share/ucd"))) + (use-modules (guix build utils)) + (mkdir-p out) + (copy-recursively (assoc-ref %build-inputs "source") out) + #t))) + (home-page "https://www.unicode.org") + (synopsis "Unicode Character Database") + (description + "The @dfn{Unicode Character Database} (UCD) consists of a number of data +files listing Unicode character properties and related data. It also includes +test data for conformance to several important Unicode algorithms.") + (license unicode))) + +(define (unicode-emoji-file name version hash) + (origin + (method url-fetch) + (uri (string-append "https://www.unicode.org/Public/emoji/" + version + "/emoji-" name ".txt")) + (sha256 (base32 hash)))) + +(define-public unicode-emoji + (package + (name "unicode-emoji") + (version "12.0") + (source #f) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils)) + #:builder + (let ((out (string-append %output "/share/unicode/emoji"))) + (use-modules (guix build utils)) + (mkdir-p out) + (for-each + (lambda (input) + (copy-file + (cdr input) + (string-append out "/" + (substring (car input) 8) ; strip "unicode-" + ".txt"))) + %build-inputs) + #t))) + (inputs + `(("unicode-emoji-data" + ,(unicode-emoji-file + "data" version + "03sf7h1d6kb9m5s02lif88jsi5kjszpkfvcymaqxj8ds70ar9pgv")) + ("unicode-emoji-sequences" + ,(unicode-emoji-file + "sequences" version + "1hghki2rn3n7m4lwpwi2a5wrsf2nij4bxga9ldabx4g0g2k23svs")) + ("unicode-emoji-test" + ,(unicode-emoji-file + "test" version + "1dqd0fh999mh6naj816ni113m9dimfy3ih9nffjq2lrv9mmlgdck")) + ("unicode-emoji-variation-sequences" + ,(unicode-emoji-file + "variation-sequences" version + "1cccwx5bl79w4c19vi5dhjqxrph92s8hihp9y8s2cqvdzmgbln7a")) + ("unicode-emoji-zwj-sequences" + ,(unicode-emoji-file + "zwj-sequences" version + "1l791nbijmmhwa7kmvfn8gp26ban512l6mgqpz1mnbq3xm19181n")))) + (home-page "https://www.unicode.org") + (synopsis "Unicode Emoji data") + (description + "This package includes data files listing characters and sequences, that +Unicode emoji supporting fonts or keyboards should support according to the +Unicode Technological Standard #51.") + (license unicode))) + +(define-public unicode-cldr-common + (package + (name "unicode-cldr-common") + (version "36.0") + (source + (origin + (method url-fetch/zipbomb) + (uri (string-append "https://unicode.org/Public/cldr/" + (version-major version) + "/cldr-common-" version ".zip")) + (sha256 + (base32 + "0hxsc3j5zb32hmiaj0r3ajchmklx6zng6zlh1ca6s9plq5b9w9q7")))) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils)) + #:builder + (let ((out (string-append %output "/share/unicode/cldr/common"))) + (use-modules (guix build utils)) + (mkdir-p out) + (copy-recursively (string-append (assoc-ref %build-inputs "source") + "/common") + out) + #t))) + (home-page "https://www.unicode.org") + (synopsis "Locale data repository") + (description + "The Unicode Common Locale Data Repository (CLDR) is a large repository +of locale data, including among others + +@itemize +@item patterns for formatting and parsing, +@item name translations, +@item and various informations on languages, scripts and country-specific + conventions. +@end itemize\n") + (license unicode))) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 19e6ccb182..843b4e37a2 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -36,6 +36,7 @@ ;;; Copyright © 2019 Arne Babenhauserheide <arne_bab@web.de> ;;; Copyright © 2019 Riku Viitanen <riku.viitanen@protonmail.com> ;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com> +;;; Copyright © 2020 Josh Holland <josh@inv.alid.pw> ;;; ;;; This file is part of GNU Guix. ;;; @@ -2182,14 +2183,14 @@ and custom quantization matrices.") (define-public streamlink (package (name "streamlink") - (version "1.3.0") + (version "1.3.1") (source (origin (method url-fetch) (uri (pypi-uri "streamlink" version)) (sha256 (base32 - "0593ffjpz82jrljnzxfafkcmcqad3r1ijjan0hm04xjcnxc9cr00")))) + "0cnlg3ra3g6dml4xfy9ysy9b4qwyn458fadd8ac44cfwi3v4gq6y")))) (build-system python-build-system) (home-page "https://github.com/streamlink/streamlink") (native-inputs diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm index b7e4dfe0c4..3670b396a5 100644 --- a/gnu/packages/virtualization.scm +++ b/gnu/packages/virtualization.scm @@ -115,7 +115,8 @@ (method url-fetch) (uri (string-append "https://download.qemu.org/qemu-" version ".tar.xz")) - (patches (search-patches "qemu-CVE-2020-7039.patch" + (patches (search-patches "qemu-CVE-2020-1711.patch" + "qemu-CVE-2020-7039.patch" "qemu-CVE-2020-7211.patch" "qemu-fix-documentation-build-failure.patch")) (sha256 diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm index 0c18191cc7..1610561aec 100644 --- a/gnu/packages/web-browsers.scm +++ b/gnu/packages/web-browsers.scm @@ -276,7 +276,7 @@ access.") (define-public qutebrowser (package (name "qutebrowser") - (version "1.9.0") + (version "1.10.0") (source (origin (method url-fetch) @@ -285,7 +285,7 @@ access.") "qutebrowser-" version ".tar.gz")) (sha256 (base32 - "1y0yq1qfr6g1s7kf3w2crd0b025dv2dfknhlz3v0001ns3rgwj17")))) + "1prvd3cysmcjfybn0dmr3ih0bl6lm5ml9i7wd09fn8hb7047mkby")))) (build-system python-build-system) (native-inputs `(("python-attrs" ,python-attrs))) ; for tests diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 15b5dedd16..54c2885a26 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -1,16 +1,16 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2013 Aljosha Papsch <misc@rpapsch.de> -;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2018 Raoul Jean Pierre Bonnal <ilpuccio.febo@gmail.com> ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com> -;;; Copyright © 2015, 2016, 2017, 2018, 2019 Eric Bavier <bavier@member.fsf.org> +;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Eric Bavier <bavier@posteo.net> ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr> ;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com> ;;; Copyright © 2016 Jelle Licht <jlicht@fsfe.org> -;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Rene Saavedra <rennes@openmailbox.org> ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com> ;;; Copyright © 2016 Clément Lassieur <clement@lassieur.org> @@ -4612,7 +4612,7 @@ tools they trust (e.g. wget).") (source (origin (method url-fetch) - (uri (string-append "http://download.netsurf-browser.org/libs/releases/" + (uri (string-append "https://download.netsurf-browser.org/libs/releases/" "buildsystem-" version ".tar.gz")) (sha256 (base32 @@ -4625,7 +4625,7 @@ tools they trust (e.g. wget).") #:phases (modify-phases %standard-phases (delete 'configure) (delete 'build)))) - (home-page "http://www.netsurf-browser.org") + (home-page "https://www.netsurf-browser.org") (synopsis "Build system for the Netsurf project") (description "This package provides the shared build system for Netsurf project @@ -4651,7 +4651,7 @@ libraries.") (source (origin (method url-fetch) - (uri (string-append "http://download.netsurf-browser.org/libs/releases/" + (uri (string-append "https://download.netsurf-browser.org/libs/releases/" name "-" version "-src.tar.gz")) (sha256 (base32 @@ -4662,7 +4662,7 @@ libraries.") ("pkg-config" ,pkg-config) ("perl" ,perl))) ;for test harness (arguments netsurf-buildsystem-arguments) - (home-page "http://www.netsurf-browser.org/projects/libparserutils/") + (home-page "https://www.netsurf-browser.org/projects/libparserutils/") (synopsis "Parser building library") (description "LibParserUtils is a library for building efficient parsers, written in @@ -4676,7 +4676,7 @@ C. It is developed as part of the NetSurf project.") (source (origin (method url-fetch) - (uri (string-append "http://download.netsurf-browser.org/libs/releases/" + (uri (string-append "https://download.netsurf-browser.org/libs/releases/" "libhubbub-" version "-src.tar.gz")) (sha256 (base32 @@ -4692,7 +4692,7 @@ C. It is developed as part of the NetSurf project.") (propagated-inputs `(("libparserutils" ,libparserutils))) ;for libhubbub.pc (arguments netsurf-buildsystem-arguments) - (home-page "http://www.netsurf-browser.org/projects/hubbub/") + (home-page "https://www.netsurf-browser.org/projects/hubbub/") (synopsis "HTML5 compliant parsing library") (description "Hubbub is an HTML5 compliant parsing library, written in C, which can @@ -4782,7 +4782,7 @@ commenting.") (source (origin (method url-fetch) - (uri (string-append "http://download.netsurf-browser.org/libs/releases/" + (uri (string-append "https://download.netsurf-browser.org/libs/releases/" "libwapcaplet-" version "-src.tar.gz")) (sha256 (base32 @@ -4793,7 +4793,7 @@ commenting.") ("pkg-config" ,pkg-config) ("check" ,check))) ;for tests (arguments netsurf-buildsystem-arguments) - (home-page "http://www.netsurf-browser.org/projects/libwapcaplet/") + (home-page "https://www.netsurf-browser.org/projects/libwapcaplet/") (synopsis "String internment library") (description "LibWapcaplet provides a reference counted string internment system @@ -4808,7 +4808,7 @@ developed as part of the Netsurf project.") (source (origin (method url-fetch) - (uri (string-append "http://download.netsurf-browser.org/libs/releases/" + (uri (string-append "https://download.netsurf-browser.org/libs/releases/" "libcss-" version "-src.tar.gz")) (sha256 (base32 @@ -4822,7 +4822,7 @@ developed as part of the Netsurf project.") `(("libparserutils" ,libparserutils) ("libwapcaplet" ,libwapcaplet))) (arguments netsurf-buildsystem-arguments) - (home-page "http://www.netsurf-browser.org/projects/libcss/") + (home-page "https://www.netsurf-browser.org/projects/libcss/") (synopsis "CSS parser and selection library") (description "LibCSS is a CSS (Cascading Style Sheet) parser and selection engine, @@ -4836,7 +4836,7 @@ written in C. It is developed as part of the NetSurf project.") (source (origin (method url-fetch) - (uri (string-append "http://download.netsurf-browser.org/libs/releases/" + (uri (string-append "https://download.netsurf-browser.org/libs/releases/" "libdom-" version "-src.tar.gz")) (sha256 (base32 @@ -4858,7 +4858,7 @@ written in C. It is developed as part of the NetSurf project.") (arguments `(#:tests? #f ;TODO: re-enable. tests take a looong time. ,@netsurf-buildsystem-arguments)) - (home-page "http://www.netsurf-browser.org/projects/libdom/") + (home-page "https://www.netsurf-browser.org/projects/libdom/") (synopsis "Implementation of the W3C DOM") (description "LibDOM is an implementation of the W3C DOM, written in C. It is @@ -4872,7 +4872,7 @@ developed as part of the NetSurf project.") (source (origin (method url-fetch) - (uri (string-append "http://download.netsurf-browser.org/libs/releases/" + (uri (string-append "https://download.netsurf-browser.org/libs/releases/" name "-" version "-src.tar.gz")) (sha256 (base32 @@ -4887,7 +4887,7 @@ developed as part of the NetSurf project.") (propagated-inputs `(("libdom" ,libdom))) ;for libsvgtiny.pc (arguments netsurf-buildsystem-arguments) - (home-page "http://www.netsurf-browser.org/projects/libsvgtiny/") + (home-page "https://www.netsurf-browser.org/projects/libsvgtiny/") (synopsis "Library for parsing SVG files") (description "Libsvgtiny takes some SVG as input and returns a list of paths and texts @@ -4903,7 +4903,7 @@ project.") (source (origin (method url-fetch) - (uri (string-append "http://download.netsurf-browser.org/libs/releases/" + (uri (string-append "https://download.netsurf-browser.org/libs/releases/" name "-" version "-src.tar.gz")) (sha256 (base32 @@ -4912,7 +4912,7 @@ project.") (native-inputs `(("netsurf-buildsystem" ,netsurf-buildsystem))) (arguments netsurf-buildsystem-arguments) - (home-page "http://www.netsurf-browser.org/projects/libnsbmp/") + (home-page "https://www.netsurf-browser.org/projects/libnsbmp/") (synopsis "Decoding library for BMP and ICO files") (description "Libnsbmp is a decoding library for BMP and ICO image file formats, @@ -4926,7 +4926,7 @@ written in C. It is developed as part of the NetSurf project.") (source (origin (method url-fetch) - (uri (string-append "http://download.netsurf-browser.org/libs/releases/" + (uri (string-append "https://download.netsurf-browser.org/libs/releases/" name "-" version "-src.tar.gz")) (sha256 (base32 @@ -4935,7 +4935,7 @@ written in C. It is developed as part of the NetSurf project.") (native-inputs `(("netsurf-buildsystem" ,netsurf-buildsystem))) (arguments netsurf-buildsystem-arguments) - (home-page "http://www.netsurf-browser.org/projects/libnsgif/") + (home-page "https://www.netsurf-browser.org/projects/libnsgif/") (synopsis "Decoding library for GIF files") (description "Libnsgif is a decoding library for the GIF image file format, written in @@ -4949,7 +4949,7 @@ C. It is developed as part of the NetSurf project.") (source (origin (method url-fetch) - (uri (string-append "http://download.netsurf-browser.org/libs/releases/" + (uri (string-append "https://download.netsurf-browser.org/libs/releases/" "libnslog-" version "-src.tar.gz")) (sha256 (base32 @@ -4962,7 +4962,7 @@ C. It is developed as part of the NetSurf project.") ("bison" ,bison) ("flex" ,flex))) (arguments netsurf-buildsystem-arguments) - (home-page "http://www.netsurf-browser.org/") + (home-page "https://www.netsurf-browser.org/") (synopsis "Logging library") (description "Libnslog provides a category-based logging library which supports @@ -4977,7 +4977,7 @@ client applications. It is developed as part of the NetSurf project.") (source (origin (method url-fetch) - (uri (string-append "http://download.netsurf-browser.org/libs/releases/" + (uri (string-append "https://download.netsurf-browser.org/libs/releases/" name "-" version "-src.tar.gz")) (sha256 (base32 @@ -4986,7 +4986,7 @@ client applications. It is developed as part of the NetSurf project.") (native-inputs `(("netsurf-buildsystem" ,netsurf-buildsystem))) (arguments netsurf-buildsystem-arguments) - (home-page "http://www.netsurf-browser.org/") + (home-page "https://www.netsurf-browser.org/") (synopsis "Utility library for NetSurf") (description "Libnsutils provides a small number of useful utility routines. It is @@ -5000,7 +5000,7 @@ developed as part of the NetSurf project.") (source (origin (method url-fetch) - (uri (string-append "http://download.netsurf-browser.org/libs/releases/" + (uri (string-append "https://download.netsurf-browser.org/libs/releases/" "libnspsl-" version "-src.tar.gz")) (sha256 (base32 @@ -5009,7 +5009,7 @@ developed as part of the NetSurf project.") (native-inputs `(("netsurf-buildsystem" ,netsurf-buildsystem))) (arguments netsurf-buildsystem-arguments) - (home-page "http://www.netsurf-browser.org/") + (home-page "https://www.netsurf-browser.org/") (synopsis "Library to generate a static Public Suffix List") (description "Libnspsl is a library to generate a static code representation of the @@ -5023,7 +5023,7 @@ Public Suffix List. It is developed as part of the NetSurf project.") (source (origin (method url-fetch) - (uri (string-append "http://download.netsurf-browser.org/libs/releases/" + (uri (string-append "https://download.netsurf-browser.org/libs/releases/" "nsgenbind-" version "-src.tar.gz")) (sha256 (base32 @@ -5037,7 +5037,7 @@ Public Suffix List. It is developed as part of the NetSurf project.") (substitute-keyword-arguments netsurf-buildsystem-arguments ((#:make-flags flags) `(delete "COMPONENT_TYPE=lib-shared" ,flags)))) - (home-page "http://www.netsurf-browser.org/") + (home-page "https://www.netsurf-browser.org/") (synopsis "Generate JavaScript to DOM bindings") (description "@code{nsgenbind} is a tool to generate JavaScript to DOM bindings from @@ -5051,7 +5051,7 @@ w3c webidl files and a binding configuration file.") (source (origin (method url-fetch) - (uri (string-append "http://download.netsurf-browser.org/netsurf/" + (uri (string-append "https://download.netsurf-browser.org/netsurf/" "releases/source/netsurf-" version "-src.tar.gz")) (sha256 (base32 @@ -5072,7 +5072,7 @@ w3c webidl files and a binding configuration file.") ("xxd" ,xxd))) (inputs `(("curl" ,curl) - ("gtk+" ,gtk+-2) + ("gtk+" ,gtk+) ("openssl" ,openssl) ("utf8proc" ,utf8proc) ("libpng" ,libpng) @@ -5088,6 +5088,7 @@ w3c webidl files and a binding configuration file.") ("miscfiles" ,miscfiles))) (arguments `(#:make-flags `("CC=gcc" "BUILD_CC=gcc" + "TARGET=gtk3" ,(string-append "PREFIX=" %output) ,(string-append "NSSHARED=" (assoc-ref %build-inputs @@ -5120,12 +5121,19 @@ w3c webidl files and a binding configuration file.") ;; Leave the DOCTYPE header as is. (display (read-line in 'concat) out) (sxml->xml - (let rec ((sxml (xml->sxml in))) + (let rec ((sxml (xml->sxml in + #:default-entity-handler + (lambda (port name) + (string-append "<ENTITY>" + (symbol->string name) + "</ENTITY>"))))) ;; We'd like to use sxml-match here, but it can't ;; match against generic tag symbols... (match sxml (`(div (@ (class "links")) . ,rest) '()) + (`(ENTITY ,ent) + `(*ENTITY* ,ent)) ((x ...) (map rec x)) (x x))) @@ -5152,7 +5160,7 @@ w3c webidl files and a binding configuration file.") (install-file "docs/netsurf-gtk.1" (string-append out "/share/man/man1/")) #t)))))) - (home-page "http://www.netsurf-browser.org") + (home-page "https://www.netsurf-browser.org") (synopsis "Web browser") (description "NetSurf is a lightweight web browser that has its own layout and @@ -5357,13 +5365,13 @@ deployments.") (package (name "varnish") (home-page "https://varnish-cache.org/") - (version "6.3.1") + (version "6.3.2") (source (origin (method url-fetch) (uri (string-append home-page "_downloads/varnish-" version ".tgz")) (sha256 (base32 - "0xa14pd68zpi5hxcax3arl14rcmh5d1cdwa8gv4l5f23mmynr8ni")))) + "1f5ahzdh3am6fij5jhiybv3knwl11rhc5r3ig1ybzw55ai7788q8")))) (build-system gnu-build-system) (arguments `(#:configure-flags (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib") @@ -6843,14 +6851,13 @@ features include: "0s7b5whqsmfa57prbgl66ym551kg6ly0z14h5dgrlx4lqm70y2yw")))) (build-system trivial-build-system) (arguments - `(#:modules ((guix build utils) - (srfi srfi-1) - (srfi srfi-26)) + `(#:modules ((guix build utils)) #:builder (begin (use-modules (guix build utils) (srfi srfi-1) (srfi srfi-26)) + (let ((source (assoc-ref %build-inputs "source")) (php-dir (string-append %output "/share/web/" ,name "/"))) ;; The cache directory must not be in the store, but in a writable diff --git a/guix/import/gem.scm b/guix/import/gem.scm index 0bf9ff2552..bd5d5b3569 100644 --- a/guix/import/gem.scm +++ b/guix/import/gem.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2015 David Thompson <davet@gnu.org> ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com> ;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com> +;;; Copyright © 2020 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -20,28 +21,68 @@ (define-module (guix import gem) #:use-module (ice-9 match) - #:use-module (ice-9 pretty-print) #:use-module (srfi srfi-1) - #:use-module (rnrs bytevectors) - #:use-module (json) - #:use-module (web uri) + #:use-module (guix json) #:use-module ((guix download) #:prefix download:) #:use-module (guix import utils) #:use-module (guix import json) #:use-module (guix packages) #:use-module (guix upstream) #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix base16) #:use-module (guix base32) - #:use-module (guix build-system ruby) + #:use-module ((guix build-system ruby) #:select (rubygems-uri)) #:export (gem->guix-package %gem-updater gem-recursive-import)) +;; Gems as defined by the API at <https://rubygems.org/api/v1/gems>. +(define-json-mapping <gem> make-gem gem? + json->gem + (name gem-name) ;string + (platform gem-platform) ;string + (version gem-version) ;string + (authors gem-authors) ;string + (licenses gem-licenses "licenses" ;list of strings + (lambda (licenses) + ;; This is sometimes #nil (the JSON 'null' value). Arrange + ;; to always return a list. + (cond ((not licenses) '()) + ((vector? licenses) (vector->list licenses)) + (else '())))) + (info gem-info) + (sha256 gem-sha256 "sha" ;bytevector + base16-string->bytevector) + (home-page gem-home-page "homepage_uri") ;string + (dependencies gem-dependencies "dependencies" ;<gem-dependencies> + json->gem-dependencies)) + +(define-json-mapping <gem-dependencies> make-gem-dependencies + gem-dependencies? + json->gem-dependencies + (development gem-dependencies-development ;list of <gem-dependency> + "development" + json->gem-dependency-list) + (runtime gem-dependencies-runtime ;list of <gem-dependency> + "runtime" + json->gem-dependency-list)) + +(define (json->gem-dependency-list vector) + (if vector + (map json->gem-dependency (vector->list vector)) + '())) + +(define-json-mapping <gem-dependency> make-gem-dependency gem-dependency? + json->gem-dependency + (name gem-dependency-name) ;string + (requirements gem-dependency-requirements)) ;string + + (define (rubygems-fetch name) - "Return an alist representation of the RubyGems metadata for the package NAME, -or #f on failure." - (json-fetch - (string-append "https://rubygems.org/api/v1/gems/" name ".json"))) + "Return a <gem> record for the package NAME, or #f on failure." + (and=> (json-fetch + (string-append "https://rubygems.org/api/v1/gems/" name ".json")) + json->gem)) (define (ruby-package-name name) "Given the NAME of a package on RubyGems, return a Guix-compliant name for @@ -50,41 +91,6 @@ the package." (snake-case name) (string-append "ruby-" (snake-case name)))) -(define (hex-string->bytevector str) - "Convert the hexadecimal encoded string STR to a bytevector." - (define hex-char->int - (match-lambda - (#\0 0) - (#\1 1) - (#\2 2) - (#\3 3) - (#\4 4) - (#\5 5) - (#\6 6) - (#\7 7) - (#\8 8) - (#\9 9) - (#\a 10) - (#\b 11) - (#\c 12) - (#\d 13) - (#\e 14) - (#\f 15))) - - (define (read-byte i) - (let ((j (* 2 i))) - (+ (hex-char->int (string-ref str (1+ j))) - (* (hex-char->int (string-ref str j)) 16)))) - - (let* ((len (/ (string-length str) 2)) - (bv (make-bytevector len))) - (let loop ((i 0)) - (if (= i len) - bv - (begin - (bytevector-u8-set! bv i (read-byte i)) - (loop (1+ i))))))) - (define (make-gem-sexp name version hash home-page synopsis description dependencies licenses) "Return the `package' s-expression for a Ruby package with the given NAME, @@ -97,8 +103,7 @@ VERSION, HASH, HOME-PAGE, DESCRIPTION, DEPENDENCIES, and LICENSES." (uri (rubygems-uri ,name version)) (sha256 (base32 - ,(bytevector->nix-base32-string - (hex-string->bytevector hash)))))) + ,(bytevector->nix-base32-string hash))))) (build-system ruby-build-system) ,@(if (null? dependencies) '() @@ -120,31 +125,25 @@ VERSION, HASH, HOME-PAGE, DESCRIPTION, DEPENDENCIES, and LICENSES." (define* (gem->guix-package package-name #:optional (repo 'rubygems) version) "Fetch the metadata for PACKAGE-NAME from rubygems.org, and return the `package' s-expression corresponding to that package, or #f on failure." - (let ((package (rubygems-fetch package-name))) - (and package - (let* ((name (assoc-ref package "name")) - (version (assoc-ref package "version")) - (hash (assoc-ref package "sha")) - (synopsis (assoc-ref package "info")) ; nothing better to use - (description (beautify-description - (assoc-ref package "info"))) - (home-page (assoc-ref package "homepage_uri")) - (dependencies-names (map (lambda (dep) (assoc-ref dep "name")) - (vector->list - (assoc-ref* package - "dependencies" - "runtime")))) - (dependencies (map (lambda (dep) - (if (string=? dep "bundler") - "bundler" ; special case, no prefix - (ruby-package-name dep))) - dependencies-names)) - (licenses (map string->license - (vector->list - (assoc-ref package "licenses"))))) - (values (make-gem-sexp name version hash home-page synopsis - description dependencies licenses) - dependencies-names))))) + (let ((gem (rubygems-fetch package-name))) + (if gem + (let* ((dependencies-names (map gem-dependency-name + (gem-dependencies-runtime + (gem-dependencies gem)))) + (dependencies (map (lambda (dep) + (if (string=? dep "bundler") + "bundler" ; special case, no prefix + (ruby-package-name dep))) + dependencies-names)) + (licenses (map string->license (gem-licenses gem)))) + (values (make-gem-sexp (gem-name gem) (gem-version gem) + (gem-sha256 gem) (gem-home-page gem) + (gem-info gem) + (beautify-description (gem-info gem)) + dependencies + licenses) + dependencies-names)) + (values #f '())))) (define (guix-package->gem-name package) "Given a PACKAGE built from rubygems.org, return the name of the @@ -185,9 +184,9 @@ package on RubyGems." (define (latest-release package) "Return an <upstream-source> for the latest release of PACKAGE." (let* ((gem-name (guix-package->gem-name package)) - (metadata (rubygems-fetch gem-name)) - (version (assoc-ref metadata "version")) - (url (rubygems-uri gem-name version))) + (gem (rubygems-fetch gem-name)) + (version (gem-version gem)) + (url (rubygems-uri gem-name version))) (upstream-source (package (package-name package)) (version version) diff --git a/guix/import/pypi.scm b/guix/import/pypi.scm index 354cae9c4c..6897f42be3 100644 --- a/guix/import/pypi.scm +++ b/guix/import/pypi.scm @@ -5,6 +5,7 @@ ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -363,7 +364,11 @@ VERSION, SOURCE-URL, HOME-PAGE, SYNOPSIS, DESCRIPTION, and LICENSE." (receive (guix-dependencies upstream-dependencies) (compute-inputs source-url wheel-url temp) (match guix-dependencies - ((required-inputs test-inputs) + ((required-inputs native-inputs) + (when (string-suffix? ".zip" source-url) + (set! native-inputs (cons + '("unzip" ,unzip) + native-inputs))) (values `(package (name ,(python->package-name name)) @@ -371,20 +376,29 @@ VERSION, SOURCE-URL, HOME-PAGE, SYNOPSIS, DESCRIPTION, and LICENSE." (source (origin (method url-fetch) - ;; PyPI URL are case sensitive, but sometimes a project - ;; named using mixed case has a URL using lower case, so - ;; we must work around this inconsistency. For actual - ;; examples, compare the URLs of the "Deprecated" and - ;; "uWSGI" PyPI packages. - (uri ,(if (string-contains source-url name) - `(pypi-uri ,name version) - `(pypi-uri ,(string-downcase name) version))) + (uri (pypi-uri + ;; PyPI URL are case sensitive, but sometimes + ;; a project named using mixed case has a URL + ;; using lower case, so we must work around this + ;; inconsistency. For actual examples, compare + ;; the URLs of the "Deprecated" and "uWSGI" PyPI + ;; packages. + ,(if (string-contains source-url name) + name + (string-downcase name)) + version + ;; Some packages have been released as `.zip` + ;; instead of the more common `.tar.gz`. For + ;; example, see "path-and-address". + ,@(if (string-suffix? ".zip" source-url) + '(".zip") + '()))) (sha256 (base32 ,(guix-hash-url temp))))) (build-system python-build-system) ,@(maybe-inputs required-inputs 'propagated-inputs) - ,@(maybe-inputs test-inputs 'native-inputs) + ,@(maybe-inputs native-inputs 'native-inputs) (home-page ,home-page) (synopsis ,synopsis) (description ,description) diff --git a/guix/licenses.scm b/guix/licenses.scm index a44a5bac0d..9153c3ccae 100644 --- a/guix/licenses.scm +++ b/guix/licenses.scm @@ -85,6 +85,7 @@ silofl1.1 sleepycat tcl/tk + unicode unlicense vim w3c @@ -584,6 +585,11 @@ at URI, which may be a file:// URI pointing the package's tree." "http://directory.fsf.org/wiki/License:Vim7.2" "http://www.gnu.org/licenses/license-list.html#Vim")) +(define unicode + (license "Unicode" + "https://directory.fsf.org/wiki/License:Unicode" + "http://www.gnu.org/licenses/license-list.html#Unicode")) + (define unlicense (license "Unlicense" "https://unlicense.org/" diff --git a/tests/gem.scm b/tests/gem.scm index 5158238d18..455fc15189 100644 --- a/tests/gem.scm +++ b/tests/gem.scm @@ -55,7 +55,7 @@ { \"name\": \"bundler\" }, ] }, - \"licenses\": [\"MIT\", \"Apache 2.0\"] + \"licenses\": null }") (define test-bundler-json @@ -138,7 +138,7 @@ ('synopsis "Another cool gem") ('description "Another cool gem") ('home-page "https://example.com") - ('license ('list 'license:expat 'license:asl2.0))) + ('license #f)) ;no licensing info ('package ('name "ruby-bundler") ('version "1.14.2") diff --git a/tests/graph.scm b/tests/graph.scm index b7732ec709..402847102f 100644 --- a/tests/graph.scm +++ b/tests/graph.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -195,7 +195,7 @@ edges." (let-values (((dune bap ocaml-base) (values (specification->package "dune") (specification->package "bap") - (specification->package "ocaml-base"))) + (specification->package "ocaml4.07-base"))) ((backend nodes+edges) (make-recording-backend))) (run-with-store %store (export-graph (list dune) 'port |