diff options
-rw-r--r-- | build-aux/build-self.scm | 1 | ||||
-rw-r--r-- | gnu/packages/algebra.scm | 4 | ||||
-rw-r--r-- | gnu/packages/aspell.scm | 9 | ||||
-rw-r--r-- | gnu/packages/emacs-xyz.scm | 24 | ||||
-rw-r--r-- | gnu/packages/gnome.scm | 9 | ||||
-rw-r--r-- | gnu/packages/lisp-xyz.scm | 87 | ||||
-rw-r--r-- | gnu/packages/nano.scm | 6 | ||||
-rw-r--r-- | gnu/packages/vim.scm | 8 | ||||
-rw-r--r-- | gnu/packages/xfce.scm | 4 | ||||
-rw-r--r-- | guix/build/download.scm | 83 | ||||
-rw-r--r-- | guix/download.scm | 19 | ||||
-rw-r--r-- | guix/scripts/perform-download.scm | 7 | ||||
-rw-r--r-- | guix/self.scm | 3 |
13 files changed, 224 insertions, 40 deletions
diff --git a/build-aux/build-self.scm b/build-aux/build-self.scm index 853a2f328f..f100ff4aae 100644 --- a/build-aux/build-self.scm +++ b/build-aux/build-self.scm @@ -250,6 +250,7 @@ interface (FFI) of Guile.") (match-lambda (('guix 'config) #f) (('guix 'channels) #f) + (('guix 'build 'download) #f) ;autoloaded by (guix download) (('guix _ ...) #t) (('gnu _ ...) #t) (_ #f))) diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm index 68af1e244e..b1e7c34daf 100644 --- a/gnu/packages/algebra.scm +++ b/gnu/packages/algebra.scm @@ -76,7 +76,7 @@ (define-public mpfrcx (package (name "mpfrcx") - (version "0.6") + (version "0.6.1") (source (origin (method url-fetch) (uri (string-append @@ -84,7 +84,7 @@ version ".tar.gz")) (sha256 (base32 - "0gz5rma9al2jrifpknqkcnd9dkf8l05jcxy3s4ghwhd4y3h5dwia")))) + "0gk2l40awp3q1lh828dhcjshcldy3b1l2v51glaq0lj1h7w34sin")))) (build-system gnu-build-system) (propagated-inputs `(("gmp" ,gmp) diff --git a/gnu/packages/aspell.scm b/gnu/packages/aspell.scm index 26c0cf4332..bc152c6ef8 100644 --- a/gnu/packages/aspell.scm +++ b/gnu/packages/aspell.scm @@ -12,6 +12,7 @@ ;;; Copyright © 2020 Jonathan Brielmaier <jonathan.brielmaier@web.de> ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net> ;;; Copyright © 2020 Noah Landis <noahlandis@posteo.net> +;;; Copyright © 2021 Sergiu Ivanov <sivanov@colimite.fr> ;;; ;;; This file is part of GNU Guix. ;;; @@ -356,6 +357,14 @@ dictionaries, including personal ones.") (base32 "137i4njvnslab6l4s291s11xijr5jsy75lbdph32f9y183lagy9m"))) +(define-public aspell-dict-ro + (aspell-dictionary "ro" "Romanian" + #:version "3.3-2" + #:prefix "aspell5-" + #:sha256 + (base32 + "0gb8j9iy1acdl11jq76idgc2lbc1rq3w04favn8cyh55d1v8phsk"))) + ;;; ;;; Hunspell packages made from the Aspell word lists. diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index ef26d19506..17a57abd66 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -424,13 +424,13 @@ when typing parentheses directly or commenting out code line by line.") (define-public emacs-project (package (name "emacs-project") - (version "0.5.4") + (version "0.6.0") (source (origin (method url-fetch) (uri (string-append "https://elpa.gnu.org/packages/project-" version ".tar")) (sha256 - (base32 "0arjvhzzcf8b80w94yvpgfdlhsjwf5jk1r7vcai5a4dg3bi9cxyb")))) + (base32 "0m0r1xgz1ffx6mi2gjz1dkgrn89sh4y5ysi0gj6p1w05bf8p0lc0")))) (build-system emacs-build-system) (propagated-inputs `(("emacs-xref" ,emacs-xref))) (home-page "http://elpa.gnu.org/packages/project.html") @@ -2307,14 +2307,14 @@ as a library for other Emacs packages.") (define-public emacs-auctex (package (name "emacs-auctex") - (version "13.0.10") + (version "13.0.11") (source (origin (method url-fetch) (uri (string-append "https://elpa.gnu.org/packages/" "auctex-" version ".tar")) (sha256 - (base32 "150b0xh71xwva7599arjapspdxyy70yyk6a5nabaq22w3dcpasb5")))) + (base32 "0sy4f1n38q58vyzw5l0f80ci3j99rb25gbwj0frl0pglfmgzl44k")))) (build-system emacs-build-system) ;; We use 'emacs' because AUCTeX requires dbus at compile time ;; ('emacs-minimal' does not provide dbus). @@ -9248,7 +9248,7 @@ and tooling.") (define-public emacs-elfeed (package (name "emacs-elfeed") - (version "3.4.0") + (version "3.4.1") (source (origin (method git-fetch) @@ -9257,7 +9257,7 @@ and tooling.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1y95410hrcp23zc84sn79bxla9xr2fqh7wwagza05iaprv7zbbw0")))) + (base32 "1ghdvfn4f9y69r59i1ga9b3ib1r8sbqg6q1v5rz3f9paagfavrd1")))) (build-system emacs-build-system) (arguments `(#:tests? #t @@ -23822,14 +23822,14 @@ well as an option for visually flashing evaluated s-expressions.") (define-public emacs-tramp (package (name "emacs-tramp") - (version "2.5.0.3") + (version "2.5.0.4") (source (origin (method url-fetch) (uri (string-append "https://elpa.gnu.org/packages/" "tramp-" version ".tar")) (sha256 - (base32 "0c77d1ihn17lzk9jb7ss346ryprnbii1zmijl6zj0kk4lm8fpfl3")))) + (base32 "0yk4ckk45gkjp24nfywz49j8pazq33m6pga3lirb5h6zc8an5z24")))) (build-system emacs-build-system) (arguments `(#:emacs ,emacs ;need D-Bus @@ -27594,14 +27594,14 @@ work on alists, hash-table and arrays. All functions are prefixed with (define-public emacs-xref (package (name "emacs-xref") - (version "1.0.4") + (version "1.1.0") (source (origin (method url-fetch) - (uri (string-append "https://elpa.gnu.org/packages/" - "xref-" version ".el")) + (uri (string-append "https://elpa.gnu.org/packages/xref-" + version ".tar")) (sha256 - (base32 "0hkm59qqlsfw3w9ws9xhpmmz30ylifmh05a00ba58zvv1kz04x1g")))) + (base32 "1s7pwk09bry4nqr4bc78a3mbwyrxagai2gpsd49x47czy2x7m3ax")))) (build-system emacs-build-system) (home-page "http://elpa.gnu.org/packages/xref.html") (synopsis "Cross-referencing commands") diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 023b347748..a572ca9aa3 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -4912,17 +4912,18 @@ libxml to ease remote use of the RESTful API.") ("gnutls" ,gnutls) ;for 'certtool' ("httpd" ,httpd))) (propagated-inputs - ;; libsoup-2.4.pc refers to all these. + ;; libsoup-2.4.pc refers to all of these (except where otherwise noted) `(("brotli" ,google-brotli) ("glib" ,glib) + ("glib-networking" ,glib-networking) ; for GIO runtime modules ("libpsl" ,libpsl) ("libxml2" ,libxml2) ("sqlite" ,sqlite) ("zlib" ,zlib))) (inputs - `(("glib-networking" ,glib-networking) - ("mit-krb5" ,mit-krb5))) - (home-page "https://live.gnome.org/LibSoup/") + `(("mit-krb5" ,mit-krb5) + ("ntlm_auth" ,samba))) ; For ntlm_auth support + (home-page "https://wiki.gnome.org/Projects/libsoup") (synopsis "GLib-based HTTP Library") (description "LibSoup is an HTTP client/server library for GNOME. It uses GObjects diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm index 1ee712e37f..57b4abf067 100644 --- a/gnu/packages/lisp-xyz.scm +++ b/gnu/packages/lisp-xyz.scm @@ -16284,3 +16284,90 @@ color spaces, which supports many color models.") (define-public cl-dufy (sbcl-package->cl-source-package sbcl-dufy)) + +(define-public sbcl-unit-test + (let ((commit "266afaf4ac091fe0e8803bac2ae72d238144e735") + (revision "1")) + (package + (name "sbcl-unit-test") + (version (git-version "0.0.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/hanshuebner/unit-test") + (commit commit))) + (file-name (git-file-name "unit-test" version)) + (sha256 + (base32 "11hpksz56iqkv7jw25p2a8r3n9dj922fyarn16d98589g6hdskj9")))) + (build-system asdf-build-system/sbcl) + (home-page "https://github.com/hanshuebner/unit-test") + (synopsis "Unit-testing framework for Common Lisp") + (description "This is a unit-testing framework for Common Lisp.") + (license license:unlicense)))) + +(define-public ecl-unit-test + (sbcl-package->ecl-package sbcl-unit-test)) + +(define-public cl-unit-test + (sbcl-package->cl-source-package sbcl-unit-test)) + +(define-public sbcl-bknr-datastore + (let ((commit "c98d44f47cc88d19ff91ca3eefbd9719a8ace022") + (revision "1")) + (package + (name "sbcl-bknr-datastore") + (version (git-version "0.0.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/hanshuebner/bknr-datastore") + (commit commit))) + (file-name (git-file-name "bknr-datastore" version)) + (sha256 + (base32 "1vi3w65fnczqvswkm381n6liqfrzjrg40y698qvj7skj28dm5vrm")))) + (build-system asdf-build-system/sbcl) + (arguments + `(#:asd-systems + '("bknr.datastore" + "bknr.impex" + "bknr.indices" + "bknr.skip-list" + "bknr.utils" + "bknr.xml") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'enter-source-directory + (lambda _ + (chdir "src") + #t))))) + (native-inputs + `(("cl-store" ,sbcl-cl-store) + ("fiveam" ,sbcl-fiveam) + ("unit-test" ,sbcl-unit-test))) + (inputs + `(("alexandria" ,sbcl-alexandria) + ("bordeaux-threads" ,sbcl-bordeaux-threads) + ("closer-mop" ,sbcl-closer-mop) + ("cl-interpol" ,sbcl-cl-interpol) + ("cl-ppcre" ,sbcl-cl-ppcre) + ("cxml" ,sbcl-cxml) + ("flexi-streams" ,sbcl-flexi-streams) + ("md5" ,sbcl-md5) + ("trivial-utf-8" ,sbcl-trivial-utf-8) + ("yason" ,sbcl-yason))) + (home-page "https://github.com/hanshuebner/bknr-datastore") + (synopsis "In-memory database for Common Lisp") + (description + "BKNR.DATASTORE is an in-memory CLOS based database with transactions +for Common Lisp.") + (license license:bsd-0)))) + +;; NOTE: (Sharlatan-20210429T191426+0100): +;; There is no port for ECL in upstream yet +;; (define-public ecl-bknr-datastore +;; (sbcl-package->ecl-package sbcl-bknr-datastore)) + +(define-public cl-bknr-datastore + (sbcl-package->cl-source-package sbcl-bknr-datastore)) diff --git a/gnu/packages/nano.scm b/gnu/packages/nano.scm index 7aa81b7533..bf506b20c2 100644 --- a/gnu/packages/nano.scm +++ b/gnu/packages/nano.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org> -;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Rene Saavedra <rennes@openmailbox.org> ;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr> ;;; @@ -30,13 +30,13 @@ (define-public nano (package (name "nano") - (version "5.6.1") + (version "5.7") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/nano/nano-" version ".tar.xz")) (sha256 - (base32 "02cbxqizbdlfwnz8dpq4fbzmdi4yk6fv0cragvpa0748w1cp03bn")))) + (base32 "1ynarilx0ca0a5h6hl5bf276cymyy8s9wr5l24vyy7f15v683cfl")))) (build-system gnu-build-system) (inputs `(("gettext" ,gettext-minimal) diff --git a/gnu/packages/vim.scm b/gnu/packages/vim.scm index 231fae9298..47ac984fc7 100644 --- a/gnu/packages/vim.scm +++ b/gnu/packages/vim.scm @@ -467,7 +467,7 @@ trouble using them, because you do not have to remember each snippet name.") (define-public vim-fugitive (package (name "vim-fugitive") - (version "3.2") + (version "3.3") (source (origin (method git-fetch) @@ -477,7 +477,7 @@ trouble using them, because you do not have to remember each snippet name.") (file-name (git-file-name name version)) (sha256 (base32 - "1jbn5jxadccmcz01j94d0i1bp74cixr0fpxxf1h0aqdf1ljk3d7n")))) + "1ybmy2dk9zsmd3kyyj40qn20gzgd16n5p77sjxp8bspx3zb7km5y")))) (build-system copy-build-system) (arguments '(#:install-plan @@ -842,7 +842,7 @@ through its msgpack-rpc API.") (define-public vim-asyncrun (package (name "vim-asyncrun") - (version "2.8.5") + (version "2.8.6") (source (origin (method git-fetch) (uri (git-reference @@ -851,7 +851,7 @@ through its msgpack-rpc API.") (file-name (git-file-name name version)) (sha256 (base32 - "0mxsmjv497h6w8dxw0zvqginlx0yvrvrx4z3jhq2x3y2dfvpcm41")))) + "11zcw0sll6qg6ha0rr6n1cw5v73azvf7ycwn9lgiwa5cj7rrqjf4")))) (build-system copy-build-system) (arguments '(#:install-plan diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm index 9655d8ccf7..0147c48630 100644 --- a/gnu/packages/xfce.scm +++ b/gnu/packages/xfce.scm @@ -758,6 +758,10 @@ allows you to shut down the computer from Xfce.") ("upower" ,upower) ;; TODO needs upower-glib ("python" ,python) ;; for xfce4-compose-mail ("xf86-input-libinput" ,xf86-input-libinput))) + (propagated-inputs + ;; Some operations, such as changing icon themes, require these schemas + ;; to be in the search path. + `(("gsettings-desktop-schemas" ,gsettings-desktop-schemas))) (home-page "https://www.xfce.org/") (synopsis "Xfce settings manager") (description diff --git a/guix/build/download.scm b/guix/build/download.scm index a22d4064ca..ce31038b05 100644 --- a/guix/build/download.scm +++ b/guix/build/download.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2021 Timothy Sample <samplet@ngyro.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -34,6 +35,8 @@ #:use-module (srfi srfi-19) #:use-module (srfi srfi-26) #:autoload (ice-9 ftw) (scandir) + #:autoload (guix base16) (bytevector->base16-string) + #:autoload (guix swh) (swh-download-directory) #:use-module (ice-9 match) #:use-module (ice-9 format) #:export (open-socket-for-uri @@ -626,10 +629,53 @@ Return a list of URIs." (else (list uri)))) +(define* (disarchive-fetch/any uris file + #:key (timeout 10) (verify-certificate? #t)) + "Fetch a Disarchive specification from any of URIS, assemble it, +and write the output to FILE." + (define (fetch-specification uris) + (any (lambda (uri) + (false-if-exception* + (let-values (((port size) (http-fetch uri + #:verify-certificate? + verify-certificate? + #:timeout timeout))) + (let ((specification (read port))) + (close-port port) + specification)))) + uris)) + + (define (resolve addresses output) + (any (match-lambda + (('swhid swhid) + (match (string-split swhid #\:) + (("swh" "1" "dir" id) + (format #t "Downloading ~a from Software Heritage...~%" file) + (false-if-exception* + (swh-download-directory id output))) + (_ #f))) + (_ #f)) + addresses)) + + (format #t "Trying to use Disarchive to assemble ~a...~%" file) + (match (and=> (resolve-module '(disarchive) #:ensure #f) + (lambda (disarchive) + (cons (module-ref disarchive '%disarchive-log-port) + (module-ref disarchive 'disarchive-assemble)))) + (#f + (format #t "could not load Disarchive~%")) + ((%disarchive-log-port . disarchive-assemble) + (match (fetch-specification uris) + (#f + (format #t "could not find its Disarchive specification~%")) + (spec (parameterize ((%disarchive-log-port (current-output-port))) + (disarchive-assemble spec file #:resolver resolve))))))) + (define* (url-fetch url file #:key (timeout 10) (verify-certificate? #t) (mirrors '()) (content-addressed-mirrors '()) + (disarchive-mirrors '()) (hashes '()) print-build-trace?) "Fetch FILE from URL; URL may be either a single string, or a list of @@ -693,6 +739,18 @@ otherwise simply ignore them." hashes)) content-addressed-mirrors)) + (define disarchive-uris + (append-map (match-lambda + ((? string? mirror) + (map (match-lambda + ((hash-algo . hash) + (string->uri + (string-append mirror + (symbol->string hash-algo) "/" + (bytevector->base16-string hash))))) + hashes))) + disarchive-mirrors)) + ;; Make this unbuffered so 'progress-report/file' works as expected. 'line ;; means '\n', not '\r', so it's not appropriate here. (setvbuf (current-output-port) 'none) @@ -705,15 +763,20 @@ otherwise simply ignore them." (or (fetch uri file) (try tail))) (() - (format (current-error-port) "failed to download ~s from ~s~%" - file url) - - ;; Remove FILE in case we made an incomplete download, for example due - ;; to ENOSPC. - (catch 'system-error - (lambda () - (delete-file file)) - (const #f)) - #f)))) + ;; If we are looking for a software archive, one last thing we + ;; can try is to use Disarchive to assemble it. + (or (disarchive-fetch/any disarchive-uris file + #:verify-certificate? verify-certificate? + #:timeout timeout) + (begin + (format (current-error-port) "failed to download ~s from ~s~%" + file url) + ;; Remove FILE in case we made an incomplete download, for + ;; example due to ENOSPC. + (catch 'system-error + (lambda () + (delete-file file)) + (const #f)) + #f)))))) ;;; download.scm ends here diff --git a/guix/download.scm b/guix/download.scm index 30f69c0325..72094e7318 100644 --- a/guix/download.scm +++ b/guix/download.scm @@ -406,12 +406,19 @@ (plain-file "content-addressed-mirrors" (object->string %content-addressed-mirrors))) +(define %disarchive-mirrors + '("https://disarchive.ngyro.com/")) + +(define %disarchive-mirror-file + (plain-file "disarchive-mirrors" (object->string %disarchive-mirrors))) + (define built-in-builders* (store-lift built-in-builders)) (define* (built-in-download file-name url #:key system hash-algo hash mirrors content-addressed-mirrors + disarchive-mirrors executable? (guile 'unused)) "Download FILE-NAME from URL using the built-in 'download' builder. When @@ -422,13 +429,16 @@ explicitly depend on Guile, GnuTLS, etc. Instead, the daemon performs the download by itself using its own dependencies." (mlet %store-monad ((mirrors (lower-object mirrors)) (content-addressed-mirrors - (lower-object content-addressed-mirrors))) + (lower-object content-addressed-mirrors)) + (disarchive-mirrors (lower-object disarchive-mirrors))) (raw-derivation file-name "builtin:download" '() #:system system #:hash-algo hash-algo #:hash hash #:recursive? executable? - #:sources (list mirrors content-addressed-mirrors) + #:sources (list mirrors + content-addressed-mirrors + disarchive-mirrors) ;; Honor the user's proxy and locale settings. #:leaked-env-vars '("http_proxy" "https_proxy" @@ -439,6 +449,7 @@ download by itself using its own dependencies." ("mirrors" . ,mirrors) ("content-addressed-mirrors" . ,content-addressed-mirrors) + ("disarchive-mirrors" . ,disarchive-mirrors) ,@(if executable? '(("executable" . "1")) '())) @@ -492,7 +503,9 @@ name in the store." #:executable? executable? #:mirrors %mirror-file #:content-addressed-mirrors - %content-addressed-mirror-file))))) + %content-addressed-mirror-file + #:disarchive-mirrors + %disarchive-mirror-file))))) (define* (url-fetch/executable url hash-algo hash #:optional name diff --git a/guix/scripts/perform-download.scm b/guix/scripts/perform-download.scm index 8d409092ba..6889bcef79 100644 --- a/guix/scripts/perform-download.scm +++ b/guix/scripts/perform-download.scm @@ -54,7 +54,8 @@ actual output is different from that when we're doing a 'bmCheck' or (output* "out") (executable "executable") (mirrors "mirrors") - (content-addressed-mirrors "content-addressed-mirrors")) + (content-addressed-mirrors "content-addressed-mirrors") + (disarchive-mirrors "disarchive-mirrors")) (unless url (leave (G_ "~a: missing URL~%") (derivation-file-name drv))) @@ -79,6 +80,10 @@ actual output is different from that when we're doing a 'bmCheck' or (lambda (port) (eval (read port) %user-module))) '()) + #:disarchive-mirrors + (if disarchive-mirrors + (call-with-input-file disarchive-mirrors read) + '()) #:hashes `((,algo . ,hash)) ;; Since DRV's output hash is known, X.509 certificate diff --git a/guix/self.scm b/guix/self.scm index 3154d180ac..7181205610 100644 --- a/guix/self.scm +++ b/guix/self.scm @@ -878,7 +878,8 @@ itself." ("guix/store/schema.sql" ,(local-file "../guix/store/schema.sql"))) - #:extensions (list guile-gcrypt) + #:extensions (list guile-gcrypt + guile-json) ;for (guix swh) #:guile-for-build guile-for-build)) (define *extra-modules* |