diff options
author | Marius Bakke <mbakke@fastmail.com> | 2019-06-05 19:46:16 +0200 |
---|---|---|
committer | Marius Bakke <mbakke@fastmail.com> | 2019-06-05 19:46:16 +0200 |
commit | d4721ff1017b64e5242b09fd7b430665ec580524 (patch) | |
tree | 1bd9ce1a339f5b348e780e4bb7f53a4333bfce01 | |
parent | 30e12b9664d774aca3948b1fa2e0aee6af09ca40 (diff) | |
parent | c0f6eebb6d9f6ca9b62344f32ce5f82dab601d53 (diff) | |
download | guix-d4721ff1017b64e5242b09fd7b430665ec580524.tar guix-d4721ff1017b64e5242b09fd7b430665ec580524.tar.gz |
Merge branch 'master' into staging
54 files changed, 692 insertions, 1040 deletions
diff --git a/Makefile.am b/Makefile.am index ba4528ce87..80be73e4bf 100644 --- a/Makefile.am +++ b/Makefile.am @@ -144,6 +144,7 @@ MODULES = \ guix/svn-download.scm \ guix/colors.scm \ guix/i18n.scm \ + guix/diagnostics.scm \ guix/ui.scm \ guix/status.scm \ guix/build/android-ndk-build-system.scm \ diff --git a/doc/guix.texi b/doc/guix.texi index c01eb3a656..996255d9dc 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -4219,7 +4219,7 @@ to another like this: @example guix archive --export -r $(readlink -f ~/.guix-profile) | \ - ssh the-machine guix-archive --import + ssh the-machine guix archive --import @end example @noindent @@ -12232,10 +12232,19 @@ The TCP port to listen for connections. The host (and thus, network interface) to listen to. Use @code{"0.0.0.0"} to listen on all the network interfaces. -@item @code{compression-level} (default: @code{3}) -The gzip compression level at which substitutes are compressed. Use -@code{0} to disable compression altogether, and @code{9} to get the best -compression ratio at the expense of increased CPU usage. +@item @code{compression} (default: @code{'(("gzip" 3))}) +This is a list of compression method/level tuple used when compressing +substitutes. For example, to compress all substitutes with @emph{both} lzip +at level 7 and gzip at level 9, write: + +@example +'(("lzip" 7) ("gzip" 9)) +@end example + +Level 9 achieves the best compression ratio at the expense of increased CPU +usage, whereas level 1 achieves fast compression. + +An empty list disables compression altogether. @item @code{nar-path} (default: @code{"nar"}) The URL path at which ``nars'' can be fetched. @xref{Invoking guix diff --git a/etc/guix-daemon.service.in b/etc/guix-daemon.service.in index 7b20a91931..407cdd199c 100644 --- a/etc/guix-daemon.service.in +++ b/etc/guix-daemon.service.in @@ -7,7 +7,7 @@ Description=Build daemon for GNU Guix [Service] ExecStart=@localstatedir@/guix/profiles/per-user/root/current-guix/bin/guix-daemon --build-users-group=guixbuild -Environment=GUIX_LOCPATH='@localstatedir@/guix/profiles/per-user/root/guix-profile/lib/locale' LC_ALL=en_US.utf8 +Environment='GUIX_LOCPATH=@localstatedir@/guix/profiles/per-user/root/guix-profile/lib/locale' LC_ALL=en_US.utf8 RemainAfterExit=yes StandardOutput=syslog StandardError=syslog diff --git a/etc/guix-publish.service.in b/etc/guix-publish.service.in index e61a0314ce..2dc89ef600 100644 --- a/etc/guix-publish.service.in +++ b/etc/guix-publish.service.in @@ -7,7 +7,7 @@ Description=Publish the GNU Guix store [Service] ExecStart=@localstatedir@/guix/profiles/per-user/root/current-guix/bin/guix publish --user=nobody --port=8181 -Environment=GUIX_LOCPATH='@localstatedir@/guix/profiles/per-user/root/guix-profile/lib/locale' LC_ALL=en_US.utf8 +Environment='GUIX_LOCPATH=@localstatedir@/guix/profiles/per-user/root/guix-profile/lib/locale' LC_ALL=en_US.utf8 RemainAfterExit=yes StandardOutput=syslog StandardError=syslog diff --git a/gnu/build/linux-boot.scm b/gnu/build/linux-boot.scm index a35d18ad7c..03f2ea245c 100644 --- a/gnu/build/linux-boot.scm +++ b/gnu/build/linux-boot.scm @@ -517,6 +517,8 @@ upon error." (unless (pre-mount) (error "pre-mount actions failed"))) + (setenv "EXT2FS_NO_MTAB_OK" "1") + (if root ;; The "--root=SPEC" kernel command-line option always provides a ;; string, but the string can represent a device, a UUID, or a @@ -533,6 +535,8 @@ upon error." (for-each mount-file-system (remove root-mount-point? mounts)) + (setenv "EXT2FS_NO_MTAB_OK" #f) + (if to-load (begin (switch-root "/root") diff --git a/gnu/installer/parted.scm b/gnu/installer/parted.scm index bd2640d1ad..682e233d9f 100644 --- a/gnu/installer/parted.scm +++ b/gnu/installer/parted.scm @@ -1318,7 +1318,8 @@ USER-PARTITIONS, or return nothing." (() '()) ((modules ...) - `((initrd-modules ',modules))))) + `((initrd-modules (append ',modules + %base-initrd-modules)))))) (define (user-partitions->configuration user-partitions) "Return the configuration field for USER-PARTITIONS." diff --git a/gnu/local.mk b/gnu/local.mk index d6ad896f93..0fb6a22953 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -689,7 +689,6 @@ dist_patch_DATA = \ %D%/packages/patches/blender-2.79-newer-ffmpeg.patch \ %D%/packages/patches/blender-2.79-python-3.7-fix.patch \ %D%/packages/patches/boost-fix-icu-build.patch \ - %D%/packages/patches/borg-fix-hard-link-preloading.patch \ %D%/packages/patches/byobu-writable-status.patch \ %D%/packages/patches/calibre-no-updates-dialog.patch \ %D%/packages/patches/calibre-remove-test-bs4.patch \ @@ -983,11 +982,6 @@ dist_patch_DATA = \ %D%/packages/patches/libcroco-CVE-2017-7960.patch \ %D%/packages/patches/libcroco-CVE-2017-7961.patch \ %D%/packages/patches/libdrm-symbol-check.patch \ - %D%/packages/patches/libevent-dns-tests.patch \ - %D%/packages/patches/libevent-2.0-CVE-2016-10195.patch \ - %D%/packages/patches/libevent-2.0-CVE-2016-10196.patch \ - %D%/packages/patches/libevent-2.0-CVE-2016-10197.patch \ - %D%/packages/patches/libevent-2.0-evbuffer-add-use-last-with-datap.patch \ %D%/packages/patches/libexif-CVE-2016-6328.patch \ %D%/packages/patches/libexif-CVE-2017-7544.patch \ %D%/packages/patches/libgcrypt-make-yat2m-reproducible.patch \ @@ -1167,7 +1161,6 @@ dist_patch_DATA = \ %D%/packages/patches/plink-endian-detection.patch \ %D%/packages/patches/plotutils-libpng-jmpbuf.patch \ %D%/packages/patches/podofo-cmake-3.12.patch \ - %D%/packages/patches/polkit-CVE-2018-19788.patch \ %D%/packages/patches/portaudio-audacity-compat.patch \ %D%/packages/patches/portmidi-modular-build.patch \ %D%/packages/patches/postgresql-disable-resolve_symlinks.patch \ diff --git a/gnu/packages/aspell.scm b/gnu/packages/aspell.scm index dd006e8184..1bbe57a4ef 100644 --- a/gnu/packages/aspell.scm +++ b/gnu/packages/aspell.scm @@ -6,6 +6,7 @@ ;;; Copyright © 2016 Christopher Andersson <christopher@8bits.nu> ;;; Copyright © 2016 Theodoros Foradis <theodoros@foradis.org> ;;; Copyright © 2016, 2017, 2019 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2019 Jens Mølgaard <jens@zete.tk> ;;; ;;; This file is part of GNU Guix. ;;; @@ -131,6 +132,22 @@ dictionaries, including personal ones.") (home-page "http://aspell.net/"))) +(define-public aspell-dict-ar + (aspell-dictionary "ar" "Arabic" + #:version "1.2-0" + #:prefix "aspell6-" + #:sha256 + (base32 + "1avw40bp8yi5bnkq64ihm2rldgw34lk89yz281q9bmndh95a47h4"))) + +(define-public aspell-dict-be + (aspell-dictionary "be" "Belarusian" + #:version "0.01" + #:prefix "aspell5-" + #:sha256 + (base32 + "1svls9p7rsfi3hs0afh0cssj006qb4v1ik2yzqgj8hm10c6as2sm"))) + (define-public aspell-dict-ca (aspell-dictionary "ca" "Catalan" #:version "2.1.5-1" @@ -145,6 +162,14 @@ dictionaries, including personal ones.") (base32 "01p92qj66cqb346gk7hjfynaap5sbcn85xz07kjfdq623ghr8v5s"))) +(define-public aspell-dict-da + (aspell-dictionary "da" "Danish" + #:version "1.4.42-1" + #:prefix "aspell5-" + #:sha256 + (base32 + "1hfkmiyhgrx5lgrb2mffjbdn1hivrm73wcg7x0iid74p2yb0fjpp"))) + (define-public aspell-dict-el (aspell-dictionary "el" "Greek" #:version "0.08-0" @@ -174,6 +199,14 @@ dictionaries, including personal ones.") (base32 "1k5g328ac1hdpp6fsg57d8md6i0aqcwlszp3gbmp5706wyhpydmd"))) +(define-public aspell-dict-fi + (aspell-dictionary "fi" "Finnish" + #:version "0.7-0" + #:prefix "aspell6-" + #:sha256 + (base32 + "07d5s08ba4dd89cmwy9icc01i6fjdykxlb9ravmhdrhi8mxz1mzq"))) + (define-public aspell-dict-fr (aspell-dictionary "fr" "French" #:version "0.50-3" @@ -196,6 +229,14 @@ dictionaries, including personal ones.") (base32 "13bhbghx5b8g0119g3wxd4n8mlf707y41vlf59irxjj0kynankfn"))) +(define-public aspell-dict-hi + (aspell-dictionary "hi" "Hindi" + #:version "0.02-0" + #:prefix "aspell6-" + #:sha256 + (base32 + "0drs374qz4419zx1lf2k281ydxf2750jk5ailafj1x0ncz27h1ys"))) + (define-public aspell-dict-it (let ((version "2.4-20070901-0") (sha256 @@ -217,6 +258,13 @@ dictionaries, including personal ones.") (home-page "http://linguistico.sourceforge.net/pages/dizionario_italiano.html")))) +(define-public aspell-dict-mi + (aspell-dictionary "mi" "Maori" + #:version "0.50-0" + #:sha256 + (base32 + "12bxplpd348yx8d2q8qvahi9dlp7qf28qmanzhziwc7np8rixvmy"))) + (define-public aspell-dict-nl (aspell-dictionary "nl" "Dutch" #:version "0.50-2" @@ -225,6 +273,13 @@ dictionaries, including personal ones.") (base32 "0ffb87yjsh211hllpc4b9khqqrblial4pzi1h9r3v465z1yhn3j4"))) +(define-public aspell-dict-nn + (aspell-dictionary "nn" "Norwegian Nynorsk" + #:version "0.50.1-1" + #:sha256 + (base32 + "0w2k5l5rbqpliripgqwiqixz5ghnjf7i9ggbrc4ly4vy1ia10rmc"))) + (define-public aspell-dict-pt-br (aspell-dictionary "pt-br" "Brazilian Portuguese" #:version "20090702-0" @@ -233,6 +288,14 @@ dictionaries, including personal ones.") (base32 "1y09lx9zf2rnp55r16b2vgj953l3538z1vaqgflg9mdvm555bz3p"))) +(define-public aspell-dict-pt-pt + (aspell-dictionary "pt-pt" "Portuguese" + #:version "20070510-0" + #:prefix "aspell6-" + #:sha256 + (base32 + "1mnr994cwlag6shy8865ky99lymysiln07mbldcncahg90dagdxq"))) + (define-public aspell-dict-ru (aspell-dictionary "ru" "Russian" #:version "0.99f7-1" @@ -248,6 +311,13 @@ dictionaries, including personal ones.") (base32 "02jwkjhr32kvyibnyzgx3smbnm576jwdzg3avdf6zxwckhy5fw4v"))) +(define-public aspell-dict-uk + (aspell-dictionary "uk" "Ukrainian" + #:version "1.4.0-0" + #:sha256 + (base32 + "137i4njvnslab6l4s291s11xijr5jsy75lbdph32f9y183lagy9m"))) + ;;; ;;; Hunspell packages made from the Aspell word lists. diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index 592a1ba94c..4a8548c25b 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -174,14 +174,14 @@ Filter) modules follow the convention of 1V / Octave.") "--enable-jack" "--enable-sndfile" "--enable-samplerate" - ;; TODO: enable compilation with avcodec once available. - "--disable-avcodec") + "--enable-avcodec") #:python ,python-2)) (inputs `(("jack" ,jack-1) ("libsndfile" ,libsndfile) ("libsamplerate" ,libsamplerate) - ("fftwf" ,fftwf))) + ("fftwf" ,fftwf) + ("ffmpeg" ,ffmpeg))) ; for libavcodec (native-inputs `(("pkg-config" ,pkg-config))) (home-page "https://aubio.org/") diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm index 70cc06c736..0bd894f958 100644 --- a/gnu/packages/backup.scm +++ b/gnu/packages/backup.scm @@ -511,15 +511,13 @@ detection, and lossless compression.") (define-public borg (package (name "borg") - (version "1.1.9") + (version "1.1.10") (source (origin (method url-fetch) (uri (pypi-uri "borgbackup" version)) (sha256 - (base32 - "0x95nhv4h34m8cxycbwc4xdz350saaxlgh727b23bgn4ci7gh3vx")) - (patches (search-patches "borg-fix-hard-link-preloading.patch")) + (base32 "1pp70p4n5kamvcbl4d8021ggrxhyykmg9isjg4yd3wags8b19d7g")) (modules '((guix build utils))) (snippet '(begin @@ -541,7 +539,12 @@ detection, and lossless compression.") ;; Remove bundled shared libraries. (with-directory-excursion "src/borg/algorithms" (for-each delete-file-recursively - (list "blake2" "lz4" "zstd"))) + (list "blake2" "lz4" "msgpack" "zstd"))) + ;; Purge some msgpack references from setup.py or the resulting + ;; sources will be unbuildable. + (substitute* "setup.py" + ((".*Extension\\('borg\\.algorithms\\.msgpack\\..*") "") + (("msgpack_packer_source, msgpack_unpacker_source") "")) #t)))) (build-system python-build-system) (arguments @@ -565,6 +568,12 @@ detection, and lossless compression.") ;; HOME=/homeless-shelter. (setenv "HOME" "/tmp") #t))) + (add-after 'unpack 'use-system-msgpack + (lambda _ + (substitute* "src/borg/helpers.py" + (("prefer_system_msgpack = False") + "prefer_system_msgpack = True")) + #t)) ;; The tests need to be run after Borg is installed. (delete 'check) (add-after 'install 'check diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm index 1d145ef4c7..53137e90e9 100644 --- a/gnu/packages/crypto.scm +++ b/gnu/packages/crypto.scm @@ -75,7 +75,7 @@ (define-public libsodium (package (name "libsodium") - (version "1.0.17") + (version "1.0.18") (source (origin (method url-fetch) (uri (list (string-append @@ -86,7 +86,7 @@ "releases/old/libsodium-" version ".tar.gz"))) (sha256 (base32 - "1cf2d9v1gylz1qcy2zappbf526qfmph6gd6fnn3w2b347vixmhqc")))) + "1h9ncvj23qbbni958knzsli8dvybcswcjbx0qjjgi922nf848l3g")))) (build-system gnu-build-system) (synopsis "Portable NaCl-based crypto library") (description diff --git a/gnu/packages/debian.scm b/gnu/packages/debian.scm index 1b401bc946..f94f49c51b 100644 --- a/gnu/packages/debian.scm +++ b/gnu/packages/debian.scm @@ -154,6 +154,11 @@ contains the archive keys used for that.") (("/usr") ubuntu)) (substitute* "debootstrap" (("=/usr") (string-append "=" out))) + ;; Ensure PATH works both in guix and within the debian chroot + ;; workaround for: https://bugs.debian.org/929889 + (substitute* "functions" + (("PATH=/sbin:/usr/sbin:/bin:/usr/bin") + "PATH=$PATH:/sbin:/usr/sbin:/bin:/usr/bin")) (substitute* (find-files "scripts" ".") (("/usr/share/zoneinfo") (string-append tzdata "/share/zoneinfo"))) #t))) @@ -184,9 +189,5 @@ contains the archive keys used for that.") (description "Debootstrap is used to create a Debian base system from scratch, without requiring the availability of @code{dpkg} or @code{apt}. It does this by downloading .deb files from a mirror site, and carefully -unpacking them into a directory which can eventually be chrooted into. - -It is recommended to run @code{debootstrap --foreign --arch=...} and then -@code{chroot} into the directory, set the PATH and run @code{debootstrap ---second-stage} after.") +unpacking them into a directory which can eventually be chrooted into.") (license license:gpl2))) diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm index 2ef50bd0f7..dcef7370bd 100644 --- a/gnu/packages/django.scm +++ b/gnu/packages/django.scm @@ -41,13 +41,13 @@ (define-public python-django (package (name "python-django") - (version "1.11.20") + (version "1.11.21") (source (origin (method url-fetch) (uri (pypi-uri "Django" version)) (sha256 (base32 - "0h90kdq8r4y8wa73hdxmyy5psnwlg61dcq3qsa098cpfiyh9vaa3")))) + "0adhcw8sx2mgwk9y2j760y96pqbip1ni3sf2v2ls5zxc9x93wwms")))) (build-system python-build-system) (arguments '(#:modules ((srfi srfi-1) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index c2b3bfddcb..e5b11e5422 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -667,6 +667,37 @@ programs.") (define-public haskell-mode (deprecated-package "haskell-mode" emacs-haskell-mode)) +(define-public emacs-dante + (let ((commit "149dded24ca9cdff09a3d859e4b62638db4aadda") + (revision "1")) + (package + (name "emacs-dante") + (version (git-version "1.5" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/jyp/dante") + (commit commit))) + (sha256 + (base32 + "0i7kj3d6pfys6si9va5f36qzifyac9mahdl0qh40rya9m0syrkla")) + (file-name (git-file-name name version)))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-dash" ,emacs-dash) + ("emacs-f" ,emacs-f) + ("emacs-flycheck" ,emacs-flycheck) + ("emacs-haskell-mode" ,emacs-haskell-mode) + ("emacs-s" ,emacs-s) + ("emacs-company" ,emacs-company) + ("emacs-lcr" ,emacs-lcr))) + (home-page "https://github.com/jyp/dante") + (synopsis "Minor mode for interactive Haskell") + (description + "This package provides a minor mode for Haskell development that +supports type hints, definition-jumping, completion, and more.") + (license license:gpl3+)))) + (define-public emacs-flycheck (package (name "emacs-flycheck") @@ -2523,6 +2554,28 @@ evaluated in the browser, just like Emacs does with an inferior Lisp process in Lisp modes.") (license license:unlicense))) +(define-public emacs-litable + (let ((commit "b0278f3f8dcff424bfbdfdefb545b1fbff33206f")) + (package + (name "emacs-litable") + (version (git-version "0.1" "0" commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Fuco1/litable.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0bny40hv9a024n01clxns351cs4j4ifhgcc7m4743xncqf612p7g")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-dash" ,emacs-dash))) + (home-page "https://github.com/Fuco1/litable/") + (synopsis "Dynamic evaluation replacement with Emacs") + (description "This packages provides dynamic evaluation in Emacs.") + (license license:gpl3+)))) + (define-public emacs-string-inflection (package (name "emacs-string-inflection") @@ -6969,7 +7022,7 @@ highlights quasi-quoted expressions.") (define-public emacspeak (package (name "emacspeak") - (version "49.0") + (version "50.0") (source (origin (method url-fetch) @@ -6978,7 +7031,7 @@ highlights quasi-quoted expressions.") version "/emacspeak-" version ".tar.bz2")) (sha256 (base32 - "1smf26m7201z0bk49lzbw9zhbjfi6wylidfjixb8ylp6g0wnh8dx")))) + "0rsj7rzfyqmyidfsjrhjnxi2d43axx6r3gac1fhv5xkkbiiqzqkb")))) (build-system gnu-build-system) (arguments '(#:make-flags (list (string-append "prefix=" @@ -6986,13 +7039,10 @@ highlights quasi-quoted expressions.") #:phases (modify-phases %standard-phases (replace 'configure - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (lisp (string-append out - "/share/emacs/site-lisp/emacspeak"))) - (setenv "SHELL" (which "sh")) - ;; Configure Emacspeak according to etc/install.org. - (invoke "make" "config")))) + (lambda _ + (setenv "SHELL" (which "sh")) + ;; Configure Emacspeak according to etc/install.org. + (invoke "make" "config"))) (add-after 'build 'build-espeak (lambda _ (invoke "make" "espeak"))) @@ -7009,7 +7059,7 @@ highlights quasi-quoted expressions.") (for-each (lambda (file) (copy-recursively file (string-append lisp "/" file))) - '("etc" "info" "js" "lisp" "media" "scapes" "servers" "sounds" + '("etc" "info" "js" "lisp" "media" "servers" "sounds" "stumpwm" "xsl")) ;; Make sure emacspeak is loaded from the correct directory. (substitute* "etc/emacspeak.sh" @@ -8049,6 +8099,30 @@ from within Emacs. Restclient runs queries from a plan-text query sheet, displays results pretty-printed in XML or JSON with @code{restclient-mode}") (license license:public-domain)))) +(define-public emacs-whitespace-cleanup-mode + (let ((commit "72427144b054b0238a86e1348c45d986b8830d9d") + (revision "1")) + (package + (name "emacs-whitespace-cleanup-mode") + (version (git-version "0.10" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/purcell/whitespace-cleanup-mode") + (commit commit))) + (sha256 + (base32 + "1zlk534jbwrsabcg3kqlzk4h4hwya60lh6q2n1v4yn4rpf5ghsag")) + (file-name (git-file-name name version)))) + (build-system emacs-build-system) + (home-page "https://github.com/purcell/whitespace-cleanup-mode") + (synopsis "Intelligently call @code{whitespace-cleanup} on save") + (description + "This package provides a minor mode that calls +@code{whitespace-cleanup} before saving the current buffer only if the +whitespace in the buffer was initially clean.") + (license license:gpl3+)))) + (define-public emacs-eimp (let ((version "1.4.0") (commit "2e7536fe6d8f7faf1bad7a8ae37faba0162c3b4f") @@ -8280,6 +8354,56 @@ multiplexer.") editing RPM spec files.") (license license:gpl2+))) +(define-public emacs-lcr + (package + (name "emacs-lcr") + (version "1.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/jyp/lcr") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0mc55icihxqpf8b05990q1lc2nj2792wcgyr73xsiqx0963sjaj8")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-dash" ,emacs-dash))) + (home-page "https://github.com/jyp/lcr") + (synopsis "Lightweight coroutines in Emacs Lisp") + (description "This package provides macros that can translate code into +equivalent continuation-passing code, as well as miscellaneous utility +functions written in continuation-passing style.") + (license license:gpl3+))) + +(define-public emacs-attrap + (let ((commit "3b092bb8f6755a97e6ecb7623b9d2dde58beba4a") + (revision "1")) + (package + (name "emacs-attrap") + (version (git-version "1.0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/jyp/attrap") + (commit commit))) + (sha256 + (base32 + "05d32980saji8ja1pcv65l0s3dq7w0n5hpikbf246hciy1x067pp")) + (file-name (git-file-name name version)))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-dash" ,emacs-dash) + ("emacs-f" ,emacs-f) + ("emacs-flycheck" ,emacs-flycheck) + ("emacs-s" ,emacs-s))) + (home-page "https://github.com/jyp/attrap") + (synopsis "Fix coding error at point") + (description "This package provides a command to fix the Flycheck error +at point.") + (license license:gpl3+)))) + (define-public emacs-git-messenger (package (name "emacs-git-messenger") diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm index c3177a0b1c..e6b713465c 100644 --- a/gnu/packages/game-development.scm +++ b/gnu/packages/game-development.scm @@ -1321,24 +1321,15 @@ a 2D editor view.") (define-public guile-chickadee (package (name "guile-chickadee") - (version "0.3.0") + (version "0.4.0") (source (origin (method url-fetch) (uri (string-append "https://files.dthompson.us/chickadee/" "chickadee-" version ".tar.gz")) (sha256 (base32 - "0jl223dybsj5gvs7z4q60gnafj1b7kgi5mx0kj58m5knrp8qwg5h")))) + "1fdicsgls5cp0yffcm5vjmav67gv9bxhz1s3jvdvinspxb485x7l")))) (build-system gnu-build-system) - (arguments - '(#:make-flags '("GUILE_AUTO_COMPILE=0") - #:phases - (modify-phases %standard-phases - (add-before 'configure 'patch-godir - (lambda _ - ;; Install compiled '.go' files into the site directory. - (substitute* "Makefile.in" - (("/ccache") "/site-ccache"))))))) (propagated-inputs `(("guile-opengl" ,guile-opengl) ("guile-sdl2" ,guile-sdl2))) diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm index bac5f9d008..cfa392191a 100644 --- a/gnu/packages/gl.scm +++ b/gnu/packages/gl.scm @@ -447,7 +447,7 @@ from software emulation to complete hardware acceleration for modern GPUs.") '("src/xdemos/glxdemo" "src/xdemos/glxgears" "src/xdemos/glxinfo" "src/xdemos/glxheads")) #t)))))) - (home-page "http://mesa3d.org/") + (home-page "https://mesa3d.org/") (synopsis "Utility tools for Mesa") (description "The mesa-utils package contains several utility tools for Mesa: glxdemo, @@ -619,7 +619,7 @@ OpenGL graphics API.") `(("unzip" ,unzip))) (inputs `(("mesa" ,mesa))) - (home-page "http://www.lonesock.net/soil.html") + (home-page "https://www.lonesock.net/soil.html") (synopsis "OpenGL texture loading library") (description "SOIL is a tiny C library used primarily for uploading textures into diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index f1952be840..43b8934fb2 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -4320,15 +4320,15 @@ work and the interface is well tested.") (define-public eolie (package (name "eolie") - (version "0.9.60") + (version "0.9.62") (source (origin (method url-fetch) (uri (string-append "https://gitlab.gnome.org/World/eolie/" - "uploads/3b2ceb7eb15860587db6886bfdd8a91e/" + "uploads/bb4aad19272cc636bd17f2f6602127fe/" "eolie-" version ".tar.xz")) (sha256 (base32 - "1s9gkzxa6457v6bh0q8n1ijq1chd2jwgvhk5kppsnya7kxvsx8qh")))) + "06v76hg87fnhw45dil5vvl20myvaa38n1jqsl0lmkkq6af4mk8wx")))) (build-system meson-build-system) (arguments `(#:glib-or-gtk? #t @@ -5881,6 +5881,9 @@ devices using the GNOME desktop.") (("\"nm-connection-editor") (string-append "\"" nm-applet "/bin/nm-connection-editor"))) + (substitute* '("panels/user-accounts/run-passwd.c") + (("/usr/bin/passwd") + "/run/setuid-programs/passwd")) #t)))))) (native-inputs `(("glib:bin" ,glib "bin") ; for glib-mkenums, etc. diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm index 2ee65015a6..ba8d31eb25 100644 --- a/gnu/packages/gnupg.scm +++ b/gnu/packages/gnupg.scm @@ -224,14 +224,14 @@ compatible to GNU Pth.") (define-public gnupg (package (name "gnupg") - (version "2.2.15") + (version "2.2.16") (source (origin (method url-fetch) (uri (string-append "mirror://gnupg/gnupg/gnupg-" version ".tar.bz2")) (sha256 (base32 - "0m6lyphbb20i84isdxzfhcbzyc682hdrdv4aqkzmhrdksycf536b")))) + "1jqlzp9b3kpfp1dkjqskm67jjrhvf9nh3lzf45321p7m9d2qvgkc")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index 825678bfc6..c2356f2a44 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -426,7 +426,7 @@ from forcing GEXP-PROMISE." #:system system #:guile-for-build guile))) -(define %icecat-version "60.7.0-guix1") +(define %icecat-version "60.7.0-guix2") ;; 'icecat-source' is a "computed" origin that generates an IceCat tarball ;; from the corresponding upstream Firefox ESR tarball, using the 'makeicecat' @@ -450,7 +450,7 @@ from forcing GEXP-PROMISE." (base32 "08x0nijh0ja5jza95a8y030ibk756bn7zlw3a3c4750yilfhqpqa")))) - (upstream-icecat-base-version "60.3.0") ; maybe older than base-version + (upstream-icecat-base-version "60.7.0") ; maybe older than base-version (upstream-icecat-gnu-version "1") (upstream-icecat-version (string-append upstream-icecat-base-version "-gnu" @@ -463,7 +463,7 @@ from forcing GEXP-PROMISE." "/icecat-" upstream-icecat-version ".tar.bz2")) (sha256 (base32 - "0icnl64nxcyf7dprpdpygxhabsvyhps8c3ixysj9bcdlj9q34ib1")))) + "09xqdfd8rwbn2n6m7n059qf1psbrj5v5kfzm7gg5xng22ddxawv8")))) (gnuzilla-commit (string-append "v" upstream-icecat-base-version)) (gnuzilla-source @@ -475,7 +475,7 @@ from forcing GEXP-PROMISE." (file-name (git-file-name "gnuzilla" upstream-icecat-base-version)) (sha256 (base32 - "19wal7hkbb4wvk40hs6d7a5paal2bfday08hwssm02srcbv48fj0")))) + "1vqhb0py28hnwcynbaad304ziciz1kn5bv1qg2q4f7g13js3b1hf")))) (makeicecat-patch (local-file (search-patch "icecat-makeicecat.patch")))) @@ -545,10 +545,6 @@ from forcing GEXP-PROMISE." #$upstream-icecat-gnu-version "\n")) (("^DATA=.*") "DATA=/tmp/gnuzilla/data\n") - (("^sed .* debian/" all) - (string-append "echo warning: skipped: " all)) - (("^debian/rules " all) - (string-append "echo warning: skipped: " all)) (("^find extensions/gnu/ ") "find extensions/gnu/ | sort ") (("/bin/sed") @@ -560,21 +556,19 @@ from forcing GEXP-PROMISE." (rename-file firefox-dir icecat-dir) (with-directory-excursion icecat-dir - (for-each mkdir-p '("l10n" "debian/config")) - (call-with-output-file "debian/control" (const #t)) + (mkdir "l10n") (format #t "Running makeicecat script...~%") (force-output) (invoke "bash" "/tmp/gnuzilla/makeicecat") - (for-each delete-file-recursively '("l10n" "debian"))) + (delete-file-recursively "l10n")) - (format #t (string-append "Unpacking l10n/* and debian/* from" + (format #t (string-append "Unpacking l10n/* from" " upstream IceCat tarball...~%")) (force-output) (unless (string=? icecat-dir old-icecat-dir) (symlink icecat-dir old-icecat-dir)) (invoke "tar" "xf" #+upstream-icecat-source - (string-append old-icecat-dir "/l10n") - (string-append old-icecat-dir "/debian")) + (string-append old-icecat-dir "/l10n")) (format #t "Packing new IceCat tarball...~%") (force-output) @@ -899,43 +893,16 @@ from forcing GEXP-PROMISE." (add-before 'configure 'install-desktop-entry (lambda* (#:key outputs #:allow-other-keys) ;; Install the '.desktop' file. - (define (swallow-%%-directives input output) - ;; Interpret '%%ifdef' directives found in the '.desktop' file. - (let loop ((state 'top)) - (match (read-line input 'concat) - ((? eof-object?) - #t) - ((? string? line) - (cond ((string-prefix? "%%ifdef" line) - (loop 'ifdef)) - ((string-prefix? "%%else" line) - (loop 'else)) - ((string-prefix? "%%endif" line) - (loop 'top)) - (else - (case state - ((top else) - (display line output) - (loop state)) - (else - (loop state))))))))) - - (let* ((out (assoc-ref outputs "out")) + (let* ((desktop-file "taskcluster/docker/icecat-snap/icecat.desktop") + (out (assoc-ref outputs "out")) (applications (string-append out "/share/applications"))) - (call-with-input-file "debian/icecat.desktop.in" - (lambda (input) - (call-with-output-file "debian/icecat.desktop" - (lambda (output) - (swallow-%%-directives input output))))) - - (substitute* "debian/icecat.desktop" - (("@MOZ_DISPLAY_NAME@") - "GNU IceCat") - (("^Exec=@MOZ_APP_NAME@") - (string-append "Exec=" out "/bin/icecat")) - (("@MOZ_APP_NAME@") - "icecat")) - (install-file "debian/icecat.desktop" applications) + (substitute* desktop-file + (("^Exec=icecat") (string-append "Exec=" out "/bin/icecat")) + (("IceCat") "GNU IceCat") + (("Icon=.*") "Icon=icecat\n") + (("NewWindow") "new-window") + (("NewPrivateWindow") "new-private-window")) + (install-file desktop-file applications) #t))) (add-after 'install-desktop-entry 'install-icons (lambda* (#:key outputs #:allow-other-keys) diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm index 18013a4450..2f5396dd1e 100644 --- a/gnu/packages/golang.scm +++ b/gnu/packages/golang.scm @@ -1914,7 +1914,7 @@ values.") (define-public go-github-com-mattn-go-isatty (package (name "go-github-com-mattn-go-isatty") - (version "0.0.4") + (version "0.0.7") (source (origin (method git-fetch) @@ -1924,8 +1924,10 @@ values.") (file-name (git-file-name name version)) (sha256 (base32 - "0zs92j2cqaw9j8qx1sdxpv3ap0rgbs0vrvi72m40mg8aa36gd39w")))) + "1i77aq4gf9as03m8fpfh8fq49n4z9j7548blrcsidm1xhslzk5xd")))) (build-system go-build-system) + (propagated-inputs + `(("go-golang-org-x-sys-unix" ,go-golang-org-x-sys-unix))) (arguments '(#:import-path "github.com/mattn/go-isatty")) (home-page "https://github.com/mattn/go-isatty") diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm index 43bdcab263..aee908a6f5 100644 --- a/gnu/packages/guile-xyz.scm +++ b/gnu/packages/guile-xyz.scm @@ -2238,20 +2238,20 @@ list of components. This module takes care of that for you.") (license license:lgpl3+))) (define-public guile-gi - (let ((commit "91753258892c4a1fbf7ed43ff793a00ac0f77cf6") - (revision "0")) + (let ((commit "26e885219ae6b31a83766564a2ecfe8c4532346f") + (revision "1")) (package (name "guile-gi") (version (string-append "0.0.1-" revision "." (string-take commit 7))) (source (origin (method git-fetch) (uri (git-reference - (url "https://gitlab.com/janneke/guile-gi.git") + (url "https://github.com/spk121/guile-gi.git") (commit commit))) (file-name (string-append name "-" version)) (sha256 (base32 - "1i76jfs90p8pbx0bfrjd4sias9380pmjb9x387rx7hav4kvnsd1b")))) + "1prbzhr4sqqihb34l6yfrz6sd8nghwd3q9wvbm36jnl2n3z2nxj8")))) (build-system gnu-build-system) (native-inputs `(("autoconf" ,autoconf) ("automake" ,automake) diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm index 822b0499b6..06e255fdcf 100644 --- a/gnu/packages/haskell.scm +++ b/gnu/packages/haskell.scm @@ -17,6 +17,7 @@ ;;; Copyright © 2018, 2019 Timothy Sample <samplet@ngyro.com> ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2018, 2019 Gabriel Hondet <gabrielhondet@gmail.com> +;;; Copyright © 2019 Robert Vollmert <rob@vllmrt.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -6951,7 +6952,7 @@ upon it.") (define-public ghc-conduit-extra (package (name "ghc-conduit-extra") - (version "1.3.0") + (version "1.3.1.1") (source (origin (method url-fetch) @@ -6960,7 +6961,7 @@ upon it.") version ".tar.gz")) (sha256 (base32 - "1bi2b6kdzy5f9glq46jzsk02has95jkxqz0cchpbmnakzhjwjh9c")))) + "0jaj350vv6mbb26gdwcqz4gwzfzrjydv5pis2da49wz1npbakcfw")))) (build-system haskell-build-system) (inputs `(("ghc-conduit" ,ghc-conduit) diff --git a/gnu/packages/libevent.scm b/gnu/packages/libevent.scm index bb96fd6abf..7982a12dfd 100644 --- a/gnu/packages/libevent.scm +++ b/gnu/packages/libevent.scm @@ -58,7 +58,7 @@ `(("python" ,python-2))) ; for 'event_rpcgen.py' (native-inputs `(("which" ,which))) - (home-page "http://libevent.org/") + (home-page "https://libevent.org/") (synopsis "Event notification library") (description "The libevent API provides a mechanism to execute a callback @@ -72,27 +72,6 @@ then add or remove events dynamically without having to change the event loop.") (license bsd-3))) -(define-public libevent-2.0 - (package - (inherit libevent) - (version "2.0.22") - (source (origin - (method url-fetch) - (uri (string-append - "https://github.com/libevent/libevent/releases/download/release-" - version "-stable/libevent-" version "-stable.tar.gz")) - (sha256 - (base32 - "18qz9qfwrkakmazdlwxvjmw8p76g70n3faikwvdwznns1agw9hki")) - (patches - (search-patches - "libevent-dns-tests.patch" - "libevent-2.0-CVE-2016-10195.patch" - "libevent-2.0-CVE-2016-10196.patch" - "libevent-2.0-CVE-2016-10197.patch" - "libevent-2.0-evbuffer-add-use-last-with-datap.patch")))) - (arguments '()))) - (define-public libev (package (name "libev") diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 62f9b12ae5..6368359969 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -430,8 +430,8 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration." It has been modified to remove all non-free binary blobs.") (license license:gpl2))) -(define %linux-libre-version "5.1.6") -(define %linux-libre-hash "0m7yi23wlgrh16z5z9dxb7dd64i2irrkdwxi71i88mradn55iq42") +(define %linux-libre-version "5.1.7") +(define %linux-libre-hash "0hr4sbapdpgdkb6xg1f7bpc31242yiqdvy5sfpymsrzfslr8vwy1") (define %linux-libre-5.1-patches (list %boot-logo-patch @@ -448,8 +448,8 @@ It has been modified to remove all non-free binary blobs.") (make-linux-libre-headers %linux-libre-version %linux-libre-hash)) -(define %linux-libre-4.19-version "4.19.47") -(define %linux-libre-4.19-hash "155rn6f555d2r1bqzi74zdif44ay7gk25xxjgw36s9n26dml8wf7") +(define %linux-libre-4.19-version "4.19.48") +(define %linux-libre-4.19-hash "04jwwzc9wbhx33i4bhm3vbs52vxlb8kjdmfjpfild94xbk8m2wy4") (define %linux-libre-4.19-patches (list %boot-logo-patch @@ -957,7 +957,7 @@ slabtop, and skill.") (define-public e2fsprogs (package (name "e2fsprogs") - (version "1.44.5") + (version "1.45.2") (source (origin (method url-fetch) (uri (string-append @@ -966,7 +966,7 @@ slabtop, and skill.") name "-" version ".tar.xz")) (sha256 (base32 - "1ff56h6h1h17sj2zvlddv5c88nmbx46p1fcbh6b0s5k9kl3b6pms")))) + "02g0cm72sgz709s9pkg4mvj56m7bgs7rwnyc2cp7cvg3j6pcjlj9")))) (build-system gnu-build-system) (inputs `(("util-linux" ,util-linux))) (native-inputs `(("pkg-config" ,pkg-config) diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index 114ef32a9d..4edc62ed1d 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -351,14 +351,14 @@ aliasing facilities to work just as they would on normal mail.") (define-public mutt (package (name "mutt") - (version "1.11.4") + (version "1.12.0") (source (origin (method url-fetch) (uri (string-append "https://bitbucket.org/mutt/mutt/downloads/" "mutt-" version ".tar.gz")) (sha256 (base32 - "0098pr4anmq2a0id8wfi2vci3cgcfwf9k4q411w22xn8lrz3aldn")) + "13zr2fpql33sdbsjsiaa952js5bvphc1x4lqsj36qyzdhj3l84na")) (patches (search-patches "mutt-store-references.patch")))) (build-system gnu-build-system) (inputs diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 4741a0d5ec..a0a077cf99 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -2760,7 +2760,7 @@ to BMP, JPEG or PNG image formats.") (define-public maxima (package (name "maxima") - (version "5.42.2") + (version "5.43.0") (source (origin (method url-fetch) @@ -2768,7 +2768,7 @@ to BMP, JPEG or PNG image formats.") version "-source/" name "-" version ".tar.gz")) (sha256 (base32 - "0kdncy6137sg3rradirxzj10mkcvafxd892zlclwhr9sa7b12zhn")) + "0xyahp4c6509haxh4n1swiqm3421gplkdisa0zypclh3252sbzfw")) (patches (search-patches "maxima-defsystem-mkdir.patch")))) (build-system gnu-build-system) (inputs @@ -2802,11 +2802,18 @@ to BMP, JPEG or PNG image formats.") (let* ((sed (string-append (assoc-ref inputs "sed") "/bin/sed")) (coreutils (assoc-ref inputs "coreutils")) (dirname (string-append coreutils "/bin/dirname")) - (head (string-append coreutils "/bin/head"))) + (head (string-append coreutils "/bin/head")) + (perl (string-append (assoc-ref inputs "perl") "/bin/perl")) + (python (string-append (assoc-ref inputs "python") + "/bin/python3"))) (substitute* "src/maxima.in" (("sed ") (string-append sed " ")) (("dirname") dirname) (("head") head)) + (substitute* "doc/info/Makefile.in" + (("/usr/bin/env perl") perl)) + (substitute* "doc/info/build_html.sh.in" + (("python") python)) #t))) (add-before 'check 'pre-check (lambda _ @@ -2838,9 +2845,6 @@ to BMP, JPEG or PNG image formats.") (mkdir-p "share/emacs") (mkdir-p "share/doc") (symlink - (string-append datadir "/emacs/") - (string-append out "/share/emacs/site-lisp")) - (symlink (string-append datadir "/doc/") (string-append out "/share/doc/maxima")) (with-atomic-file-replacement @@ -2871,7 +2875,7 @@ point numbers.") (define-public wxmaxima (package (name "wxmaxima") - (version "19.03.1") + (version "19.05.7") (source (origin (method git-fetch) @@ -2881,7 +2885,7 @@ point numbers.") (file-name (git-file-name name version)) (sha256 (base32 - "1qkf4jg86xnn3wk3782ffmfz12axb92dkjagcz3ffzw2wi1rclml")))) + "0zaz71fh156b9inrxf86scnix247al5pl9v18cxhjxcm0lanqxdp")))) (build-system cmake-build-system) (native-inputs `(("gettext" ,gettext-minimal))) diff --git a/gnu/packages/mpd.scm b/gnu/packages/mpd.scm index f631dbd7c6..1d75592795 100644 --- a/gnu/packages/mpd.scm +++ b/gnu/packages/mpd.scm @@ -91,7 +91,7 @@ interfacing MPD in the C, C++ & Objective C languages.") (define-public mpd (package (name "mpd") - (version "0.21.8") + (version "0.21.9") (source (origin (method url-fetch) (uri @@ -100,7 +100,7 @@ interfacing MPD in the C, C++ & Objective C languages.") "/mpd-" version ".tar.xz")) (sha256 (base32 - "0mwpkbjsljj1khlnnjanvw3pgxbhsdl0bh2k9bxnpijn2gqq7q13")))) + "0ghda8g9q0bi6nrvl6n756d8f45spqpblkh77mnb4k9gmiv57qir")))) (build-system meson-build-system) (arguments `(#:configure-flags '("-Ddocumentation=true") ; The default is 'false'... diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm index bb11154978..2ea65f270c 100644 --- a/gnu/packages/networking.scm +++ b/gnu/packages/networking.scm @@ -1485,15 +1485,15 @@ procedure calls (RPCs).") (define-public openvswitch (package (name "openvswitch") - (version "2.10.1") + (version "2.11.1") (source (origin (method url-fetch) (uri (string-append - "http://openvswitch.org/releases/openvswitch-" + "https://www.openvswitch.org/releases/openvswitch-" version ".tar.gz")) (sha256 (base32 - "103wi6k8xal0z1pyy680gms56skagh6jawa2ja588ljr55jcg4sg")))) + "1p5mv44jaslvrr1ym15smqna19y0gi4vqcsyj58625vv9bj6laf1")))) (build-system gnu-build-system) (arguments '(;; FIXME: many tests fail with: @@ -1529,7 +1529,7 @@ procedure calls (RPCs).") `(("libcap-ng" ,libcap-ng) ("openssl" ,openssl))) (synopsis "Virtual network switch") - (home-page "http://www.openvswitch.org/") + (home-page "https://www.openvswitch.org/") (description "Open vSwitch is a multilayer virtual switch. It is designed to enable massive network automation through programmatic extension, while still diff --git a/gnu/packages/password-utils.scm b/gnu/packages/password-utils.scm index 19595a2a62..ed890f73c3 100644 --- a/gnu/packages/password-utils.scm +++ b/gnu/packages/password-utils.scm @@ -310,6 +310,15 @@ and vice versa.") (sha256 (base32 "1rimpjsdnmw8f5b7k558cic41p2qy2n2yrlqp5vh7mp4162hk0py")))) (build-system gnu-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'install 'install-dict + (lambda* (#:key make-flags #:allow-other-keys) + (begin + (chmod (string-append "util/cracklib-format") #o755) + (apply invoke "make" "dict" make-flags) + #t)))))) (synopsis "Password checking library") (home-page "https://github.com/cracklib/cracklib") (description diff --git a/gnu/packages/patches/borg-fix-hard-link-preloading.patch b/gnu/packages/patches/borg-fix-hard-link-preloading.patch deleted file mode 100644 index 92a4e22674..0000000000 --- a/gnu/packages/patches/borg-fix-hard-link-preloading.patch +++ /dev/null @@ -1,157 +0,0 @@ -Fix a bug that would cause the test suite to hang: - -https://github.com/borgbackup/borg/issues/4350 - -Patch copied from upstream source repository: - -https://github.com/borgbackup/borg/commit/18242ab9e2f26c450b8507aa1d5eceadab8ad027 - -From 18242ab9e2f26c450b8507aa1d5eceadab8ad027 Mon Sep 17 00:00:00 2001 -From: Thomas Waldmann <tw@waldmann-edv.de> -Date: Thu, 2 May 2019 21:02:26 +0200 -Subject: [PATCH] preload chunks for hardlink slaves w/o preloaded master, - fixes #4350 - -also split the hardlink extraction test into 2 tests. - -(cherry picked from commit f33f318d816505161d1449a02ddfdeb97d6fe80a) ---- - src/borg/archive.py | 42 +++++++++++++++++++++++++++++----- - src/borg/archiver.py | 5 ++-- - src/borg/testsuite/archiver.py | 20 +++++++++------- - 3 files changed, 51 insertions(+), 16 deletions(-) - -diff --git a/src/borg/archive.py b/src/borg/archive.py -index adc1f42c..0793672a 100644 ---- a/src/borg/archive.py -+++ b/src/borg/archive.py -@@ -192,7 +192,7 @@ def __init__(self, repository, key): - self.repository = repository - self.key = key - -- def unpack_many(self, ids, filter=None, preload=False): -+ def unpack_many(self, ids, filter=None, partial_extract=False, preload=False, hardlink_masters=None): - """ - Return iterator of items. - -@@ -209,12 +209,40 @@ def unpack_many(self, ids, filter=None, preload=False): - for item in items: - if 'chunks' in item: - item.chunks = [ChunkListEntry(*e) for e in item.chunks] -+ -+ def preload(chunks): -+ self.repository.preload([c.id for c in chunks]) -+ - if filter: - items = [item for item in items if filter(item)] -+ - if preload: -- for item in items: -- if 'chunks' in item: -- self.repository.preload([c.id for c in item.chunks]) -+ if filter and partial_extract: -+ # if we do only a partial extraction, it gets a bit -+ # complicated with computing the preload items: if a hardlink master item is not -+ # selected (== not extracted), we will still need to preload its chunks if a -+ # corresponding hardlink slave is selected (== is extracted). -+ # due to a side effect of the filter() call, we now have hardlink_masters dict populated. -+ masters_preloaded = set() -+ for item in items: -+ if 'chunks' in item: # regular file, maybe a hardlink master -+ preload(item.chunks) -+ # if this is a hardlink master, remember that we already preloaded it: -+ if 'source' not in item and hardlinkable(item.mode) and item.get('hardlink_master', True): -+ masters_preloaded.add(item.path) -+ elif 'source' in item and hardlinkable(item.mode): # hardlink slave -+ source = item.source -+ if source not in masters_preloaded: -+ # we only need to preload *once* (for the 1st selected slave) -+ chunks, _ = hardlink_masters[source] -+ preload(chunks) -+ masters_preloaded.add(source) -+ else: -+ # easy: we do not have a filter, thus all items are selected, thus we need to preload all chunks. -+ for item in items: -+ if 'chunks' in item: -+ preload(item.chunks) -+ - for item in items: - yield item - -@@ -433,8 +461,10 @@ def item_filter(self, item, filter=None): - return False - return filter(item) if filter else True - -- def iter_items(self, filter=None, preload=False): -- for item in self.pipeline.unpack_many(self.metadata.items, preload=preload, -+ def iter_items(self, filter=None, partial_extract=False, preload=False, hardlink_masters=None): -+ assert not (filter and partial_extract and preload) or hardlink_masters is not None -+ for item in self.pipeline.unpack_many(self.metadata.items, partial_extract=partial_extract, -+ preload=preload, hardlink_masters=hardlink_masters, - filter=lambda item: self.item_filter(item, filter)): - yield item - -diff --git a/src/borg/archiver.py b/src/borg/archiver.py -index 957959d6..dcc20455 100644 ---- a/src/borg/archiver.py -+++ b/src/borg/archiver.py -@@ -755,7 +755,8 @@ def peek_and_store_hardlink_masters(item, matched): - else: - pi = None - -- for item in archive.iter_items(filter, preload=True): -+ for item in archive.iter_items(filter, partial_extract=partial_extract, -+ preload=True, hardlink_masters=hardlink_masters): - orig_path = item.path - if strip_components: - item.path = os.sep.join(orig_path.split(os.sep)[strip_components:]) -@@ -997,7 +998,7 @@ def item_to_tarinfo(item, original_path): - return None, stream - return tarinfo, stream - -- for item in archive.iter_items(filter, preload=True): -+ for item in archive.iter_items(filter, preload=True, hardlink_masters=hardlink_masters): - orig_path = item.path - if strip_components: - item.path = os.sep.join(orig_path.split(os.sep)[strip_components:]) -diff --git a/src/borg/testsuite/archiver.py b/src/borg/testsuite/archiver.py -index c35ad800..935b3d79 100644 ---- a/src/borg/testsuite/archiver.py -+++ b/src/borg/testsuite/archiver.py -@@ -823,7 +823,18 @@ def test_mount_hardlinks(self): - assert open('input/dir1/subdir/hardlink', 'rb').read() == b'123456' - - @requires_hardlinks -- def test_extract_hardlinks(self): -+ def test_extract_hardlinks1(self): -+ self._extract_hardlinks_setup() -+ with changedir('output'): -+ self.cmd('extract', self.repository_location + '::test') -+ assert os.stat('input/source').st_nlink == 4 -+ assert os.stat('input/abba').st_nlink == 4 -+ assert os.stat('input/dir1/hardlink').st_nlink == 4 -+ assert os.stat('input/dir1/subdir/hardlink').st_nlink == 4 -+ assert open('input/dir1/subdir/hardlink', 'rb').read() == b'123456' -+ -+ @requires_hardlinks -+ def test_extract_hardlinks2(self): - self._extract_hardlinks_setup() - with changedir('output'): - self.cmd('extract', self.repository_location + '::test', '--strip-components', '2') -@@ -839,13 +850,6 @@ def test_extract_hardlinks(self): - assert open('input/dir1/subdir/hardlink', 'rb').read() == b'123456' - assert os.stat('input/dir1/aaaa').st_nlink == 2 - assert os.stat('input/dir1/source2').st_nlink == 2 -- with changedir('output'): -- self.cmd('extract', self.repository_location + '::test') -- assert os.stat('input/source').st_nlink == 4 -- assert os.stat('input/abba').st_nlink == 4 -- assert os.stat('input/dir1/hardlink').st_nlink == 4 -- assert os.stat('input/dir1/subdir/hardlink').st_nlink == 4 -- assert open('input/dir1/subdir/hardlink', 'rb').read() == b'123456' - - def test_extract_include_exclude(self): - self.cmd('init', '--encryption=repokey', self.repository_location) --- -2.21.0 - diff --git a/gnu/packages/patches/icecat-makeicecat.patch b/gnu/packages/patches/icecat-makeicecat.patch index 2a11bf0b70..7d4f774c83 100644 --- a/gnu/packages/patches/icecat-makeicecat.patch +++ b/gnu/packages/patches/icecat-makeicecat.patch @@ -3,10 +3,10 @@ in a snippet without network access. After this patch is applied, some additional changes will be made using 'substitute*'. diff --git a/makeicecat b/makeicecat -index aa46b94..db27a86 100644 +index 5a4390b..fcfa143 100644 --- a/makeicecat +++ b/makeicecat -@@ -36,75 +36,75 @@ export DEBFULLNAME="Ruben Rodriguez" +@@ -29,55 +29,55 @@ SOURCEDIR=icecat-$FFVERSION DATA="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"/data @@ -25,6 +25,7 @@ index aa46b94..db27a86 100644 -wget -N https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FFVERSION}esr/source/firefox-${FFVERSION}esr.source.tar.xz.asc -gpg --recv-keys --keyserver keyserver.ubuntu.com 24C6F355 -gpg --verify firefox-${FFVERSION}esr.source.tar.xz.asc +-echo -n 0a5f0c1d8d1e9443d85083d37fec32e5cc15c1001ea992d49745490065b4a023 firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c - - -echo Extracting Firefox tarball -tar -xf firefox-${FFVERSION}esr.source.tar.xz @@ -36,6 +37,7 @@ index aa46b94..db27a86 100644 +# wget -N https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FFVERSION}esr/source/firefox-${FFVERSION}esr.source.tar.xz.asc +# gpg --recv-keys --keyserver keyserver.ubuntu.com 24C6F355 +# gpg --verify firefox-${FFVERSION}esr.source.tar.xz.asc ++# echo -n 0a5f0c1d8d1e9443d85083d37fec32e5cc15c1001ea992d49745490065b4a023 firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c - +# +# echo Extracting Firefox tarball +# tar -xf firefox-${FFVERSION}esr.source.tar.xz @@ -43,43 +45,6 @@ index aa46b94..db27a86 100644 +# mv firefox-${FFVERSION} $SOURCEDIR ############################################################################### - # Retrieve /debian from Ubuntu - ############################################################################### - --rm -rf firefox.$CODENAME --bzr branch https://code.launchpad.net/~mozillateam/firefox/firefox.$CODENAME --cd firefox.$CODENAME --bzr revert -r$REVISION --echo '3.0 (native)' > debian/source/format -- --for PATCH in ubuntu-bookmarks.patch ubuntu-ua-string-changes.patch unity-menubar.patch ubuntu-search-defaults.patch fix-make-package-tests-without-webrtc.patch revert-upstream-search-engine-changes.patch --do -- rm debian/patches/$PATCH -- sed "/$PATCH/d" -i debian/patches/series --done --sed "/test-/d" -i debian/patches/series --cd .. -- --mv firefox.$CODENAME/debian $SOURCEDIR --rm -rf firefox.$CODENAME -+# rm -rf firefox.$CODENAME -+# bzr branch https://code.launchpad.net/~mozillateam/firefox/firefox.$CODENAME -+# cd firefox.$CODENAME -+# bzr revert -r$REVISION -+# echo '3.0 (native)' > debian/source/format -+# -+# for PATCH in ubuntu-bookmarks.patch ubuntu-ua-string-changes.patch unity-menubar.patch ubuntu-search-defaults.patch fix-make-package-tests-without-webrtc.patch revert-upstream-search-engine-changes.patch -+# do -+# rm debian/patches/$PATCH -+# sed "/$PATCH/d" -i debian/patches/series -+# done -+# sed "/test-/d" -i debian/patches/series -+# cd .. -+# -+# mv firefox.$CODENAME/debian $SOURCEDIR -+# rm -rf firefox.$CODENAME - - ############################################################################### # Retrieve l10n ############################################################################### @@ -133,19 +98,10 @@ index aa46b94..db27a86 100644 #for patch in $DATA/patches/*; do # echo Patching with file: $patch -@@ -720,7 +720,7 @@ debian/rules debian/control - touch -d "yesterday" debian/control - debian/rules debian/control - --echo | dch -b -D stable -v "$ICECATVERSION" "Converted into IceCat (http://www.gnu.org/software/gnuzilla/)" -+# echo | dch -b -D stable -v "$ICECATVERSION" "Converted into IceCat (http://www.gnu.org/software/gnuzilla/)" - sed "1s/firefox/icecat/" -i debian/changelog - - touch configure js/src/configure -@@ -734,6 +734,6 @@ sed 's/777/755/;' -i toolkit/crashreporter/google-breakpad/Makefile.in +@@ -590,6 +590,6 @@ sed 's/777/755/;' -i toolkit/crashreporter/google-breakpad/Makefile.in + # Fix CVE-2012-3386 /bin/sed 's/chmod a+w/chmod u+w/' -i ./js/src/ctypes/libffi/Makefile.in ./toolkit/crashreporter/google-breakpad/Makefile.in ./toolkit/crashreporter/google-breakpad/src/third_party/glog/Makefile.in || true - -cd .. -echo Packaging tarball -tar cfj icecat-$ICECATVERSION.tar.bz2 $SOURCEDIR diff --git a/gnu/packages/patches/libevent-2.0-CVE-2016-10195.patch b/gnu/packages/patches/libevent-2.0-CVE-2016-10195.patch deleted file mode 100644 index bffe2c454c..0000000000 --- a/gnu/packages/patches/libevent-2.0-CVE-2016-10195.patch +++ /dev/null @@ -1,41 +0,0 @@ -Fix CVE-2016-10195 (buffer overread in libevent's DNS code): - -https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-10195 -https://github.com/libevent/libevent/issues/317 - -Patch copied from upstream source repository: - -https://github.com/libevent/libevent/commit/96f64a022014a208105ead6c8a7066018449d86d - -From 3c570970516f48da35f42fef98276531fcc0abaa Mon Sep 17 00:00:00 2001 -From: Azat Khuzhin <a3at.mail@gmail.com> -Date: Mon, 1 Feb 2016 17:32:09 +0300 -Subject: [PATCH] evdns: name_parse(): fix remote stack overread - ---- - evdns.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/evdns.c b/evdns.c -index 60b10485..137c24ea 100644 ---- a/evdns.c -+++ b/evdns.c -@@ -960,7 +960,6 @@ name_parse(u8 *packet, int length, int *idx, char *name_out, int name_out_len) { - - for (;;) { - u8 label_len; -- if (j >= length) return -1; - GET8(label_len); - if (!label_len) break; - if (label_len & 0xc0) { -@@ -981,6 +980,7 @@ name_parse(u8 *packet, int length, int *idx, char *name_out, int name_out_len) { - *cp++ = '.'; - } - if (cp + label_len >= end) return -1; -+ if (j + label_len > length) return -1; - memcpy(cp, packet + j, label_len); - cp += label_len; - j += label_len; --- -2.11.0 - diff --git a/gnu/packages/patches/libevent-2.0-CVE-2016-10196.patch b/gnu/packages/patches/libevent-2.0-CVE-2016-10196.patch deleted file mode 100644 index 03f96e938b..0000000000 --- a/gnu/packages/patches/libevent-2.0-CVE-2016-10196.patch +++ /dev/null @@ -1,41 +0,0 @@ -Fix CVE-2016-10196 (buffer overflow in evutil): - -https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-10196 -https://github.com/libevent/libevent/issues/318 - -Patch copied from upstream source repository: - -https://github.com/libevent/libevent/commit/329acc18a0768c21ba22522f01a5c7f46cacc4d5 - -From 28bdc2f3f62259d21ccaf7be2b60ef0a53e6f342 Mon Sep 17 00:00:00 2001 -From: Azat Khuzhin <a3at.mail@gmail.com> -Date: Sun, 31 Jan 2016 00:57:16 +0300 -Subject: [PATCH] evutil_parse_sockaddr_port(): fix buffer overflow - ---- - evutil.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/evutil.c b/evutil.c -index 33445170..e2dfe6e4 100644 ---- a/evutil.c -+++ b/evutil.c -@@ -1808,12 +1808,12 @@ evutil_parse_sockaddr_port(const char *ip_as_string, struct sockaddr *out, int * - - cp = strchr(ip_as_string, ':'); - if (*ip_as_string == '[') { -- int len; -+ size_t len; - if (!(cp = strchr(ip_as_string, ']'))) { - return -1; - } -- len = (int) ( cp-(ip_as_string + 1) ); -- if (len > (int)sizeof(buf)-1) { -+ len = ( cp-(ip_as_string + 1) ); -+ if (len > sizeof(buf)-1) { - return -1; - } - memcpy(buf, ip_as_string+1, len); --- -2.11.0 - diff --git a/gnu/packages/patches/libevent-2.0-CVE-2016-10197.patch b/gnu/packages/patches/libevent-2.0-CVE-2016-10197.patch deleted file mode 100644 index c62a328627..0000000000 --- a/gnu/packages/patches/libevent-2.0-CVE-2016-10197.patch +++ /dev/null @@ -1,39 +0,0 @@ -Fix CVE-2016-10197 (out of bounds read on empty hostnames in evdns): - -https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-10197 -https://github.com/libevent/libevent/issues/332 - -Patch copied from upstream source repository: - -https://github.com/libevent/libevent/commit/ec65c42052d95d2c23d1d837136d1cf1d9ecef9e - -From a0305cec166a5bc89f1eb362510cc4cd25ecc0bc Mon Sep 17 00:00:00 2001 -From: Azat Khuzhin <a3at.mail@gmail.com> -Date: Fri, 25 Mar 2016 00:33:47 +0300 -Subject: [PATCH] evdns: fix searching empty hostnames - ---- - evdns.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/evdns.c b/evdns.c -index 137c24ea..6191c677 100644 ---- a/evdns.c -+++ b/evdns.c -@@ -3122,9 +3122,12 @@ search_set_from_hostname(struct evdns_base *base) { - static char * - search_make_new(const struct search_state *const state, int n, const char *const base_name) { - const size_t base_len = strlen(base_name); -- const char need_to_append_dot = base_name[base_len - 1] == '.' ? 0 : 1; -+ char need_to_append_dot; - struct search_domain *dom; - -+ if (!base_len) return NULL; -+ need_to_append_dot = base_name[base_len - 1] == '.' ? 0 : 1; -+ - for (dom = state->head; dom; dom = dom->next) { - if (!n--) { - /* this is the postfix we want */ --- -2.11.0 - diff --git a/gnu/packages/patches/libevent-2.0-evbuffer-add-use-last-with-datap.patch b/gnu/packages/patches/libevent-2.0-evbuffer-add-use-last-with-datap.patch deleted file mode 100644 index 0253700bf6..0000000000 --- a/gnu/packages/patches/libevent-2.0-evbuffer-add-use-last-with-datap.patch +++ /dev/null @@ -1,38 +0,0 @@ -From a8769ef12d7e223e33fc47bed03fba2bfa2f3536 Mon Sep 17 00:00:00 2001 -From: Marcus Sundberg <marcus@marcussundberg.com> -Date: Sat, 26 Mar 2016 20:11:43 +0100 -Subject: [PATCH] evbuffer_add: Use last_with_datap if set, not last. - -evbuffer_add() would always put data in the last chain, even if there -was available space in a previous chain, and in doing so it also -failed to update last_with_datap, causing subsequent calls to other -functions that do look at last_with_datap to add data in the middle -of the evbuffer instead of at the end. - -Fixes the evbuffer_add() part of issue #335, and the evbuffer/add2 and -evbuffer/add3 tests, and also prevents wasting space available in the -chain pointed to by last_with_datap. ---- - buffer.c | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -diff --git a/buffer.c b/buffer.c -index 7cca0e8a..f378b731 100644 ---- a/buffer.c -+++ b/buffer.c -@@ -1732,7 +1732,11 @@ evbuffer_add(struct evbuffer *buf, const void *data_in, size_t datlen) - goto done; - } - -- chain = buf->last; -+ if (*buf->last_with_datap == NULL) { -+ chain = buf->last; -+ } else { -+ chain = *buf->last_with_datap; -+ } - - /* If there are no chains allocated for this buffer, allocate one - * big enough to hold all the data. */ --- -2.12.0 - diff --git a/gnu/packages/patches/libevent-dns-tests.patch b/gnu/packages/patches/libevent-dns-tests.patch deleted file mode 100644 index 6ff8aaaa7b..0000000000 --- a/gnu/packages/patches/libevent-dns-tests.patch +++ /dev/null @@ -1,16 +0,0 @@ -Disable tests that rely on usable DNS lookups, which aren't available -in build chroots. - ---- libevent-2.0.21-stable/test/regress_dns.c 2013-01-20 22:32:09.000000000 +0100 -+++ libevent-2.0.21-stable/test/regress_dns.c 2013-01-20 22:32:30.000000000 +0100 -@@ -1827,10 +1827,6 @@ end: - - struct testcase_t dns_testcases[] = { - DNS_LEGACY(server, TT_FORK|TT_NEED_BASE), -- DNS_LEGACY(gethostbyname, TT_FORK|TT_NEED_BASE|TT_NEED_DNS), -- DNS_LEGACY(gethostbyname6, TT_FORK|TT_NEED_BASE|TT_NEED_DNS), -- DNS_LEGACY(gethostbyaddr, TT_FORK|TT_NEED_BASE|TT_NEED_DNS), -- { "resolve_reverse", dns_resolve_reverse, TT_FORK, NULL, NULL }, - { "search", dns_search_test, TT_FORK|TT_NEED_BASE, &basic_setup, NULL }, - { "search_cancel", dns_search_cancel_test, - TT_FORK|TT_NEED_BASE, &basic_setup, NULL }, diff --git a/gnu/packages/patches/polkit-CVE-2018-19788.patch b/gnu/packages/patches/polkit-CVE-2018-19788.patch deleted file mode 100644 index 58cde6c5dc..0000000000 --- a/gnu/packages/patches/polkit-CVE-2018-19788.patch +++ /dev/null @@ -1,197 +0,0 @@ -Fix CVE-2018-19788: - -https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-19788 -https://gitlab.freedesktop.org/polkit/polkit/issues/74 - -Patch copied from upstream source repository: - -https://gitlab.freedesktop.org/polkit/polkit/commit/2cb40c4d5feeaa09325522bd7d97910f1b59e379 - -From 2cb40c4d5feeaa09325522bd7d97910f1b59e379 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl> -Date: Mon, 3 Dec 2018 10:28:58 +0100 -Subject: [PATCH] Allow negative uids/gids in PolkitUnixUser and Group objects - -(uid_t) -1 is still used as placeholder to mean "unset". This is OK, since -there should be no users with such number, see -https://systemd.io/UIDS-GIDS#special-linux-uids. - -(uid_t) -1 is used as the default value in class initialization. - -When a user or group above INT32_MAX is created, the numeric uid or -gid wraps around to negative when the value is assigned to gint, and -polkit gets confused. Let's accept such gids, except for -1. - -A nicer fix would be to change the underlying type to e.g. uint32 to -not have negative values. But this cannot be done without breaking the -API, so likely new functions will have to be added (a -polkit_unix_user_new variant that takes a unsigned, and the same for -_group_new, _set_uid, _get_uid, _set_gid, _get_gid, etc.). This will -require a bigger patch. - -Fixes https://gitlab.freedesktop.org/polkit/polkit/issues/74. ---- - src/polkit/polkitunixgroup.c | 15 +++++++++++---- - src/polkit/polkitunixprocess.c | 12 ++++++++---- - src/polkit/polkitunixuser.c | 13 ++++++++++--- - 3 files changed, 29 insertions(+), 11 deletions(-) - -diff --git a/src/polkit/polkitunixgroup.c b/src/polkit/polkitunixgroup.c -index c57a1aa..309f689 100644 ---- a/src/polkit/polkitunixgroup.c -+++ b/src/polkit/polkitunixgroup.c -@@ -71,6 +71,7 @@ G_DEFINE_TYPE_WITH_CODE (PolkitUnixGroup, polkit_unix_group, G_TYPE_OBJECT, - static void - polkit_unix_group_init (PolkitUnixGroup *unix_group) - { -+ unix_group->gid = -1; /* (git_t) -1 is not a valid GID under Linux */ - } - - static void -@@ -100,11 +101,14 @@ polkit_unix_group_set_property (GObject *object, - GParamSpec *pspec) - { - PolkitUnixGroup *unix_group = POLKIT_UNIX_GROUP (object); -+ gint val; - - switch (prop_id) - { - case PROP_GID: -- unix_group->gid = g_value_get_int (value); -+ val = g_value_get_int (value); -+ g_return_if_fail (val != -1); -+ unix_group->gid = val; - break; - - default: -@@ -131,9 +135,9 @@ polkit_unix_group_class_init (PolkitUnixGroupClass *klass) - g_param_spec_int ("gid", - "Group ID", - "The UNIX group ID", -- 0, -+ G_MININT, - G_MAXINT, -- 0, -+ -1, - G_PARAM_CONSTRUCT | - G_PARAM_READWRITE | - G_PARAM_STATIC_NAME | -@@ -166,9 +170,10 @@ polkit_unix_group_get_gid (PolkitUnixGroup *group) - */ - void - polkit_unix_group_set_gid (PolkitUnixGroup *group, -- gint gid) -+ gint gid) - { - g_return_if_fail (POLKIT_IS_UNIX_GROUP (group)); -+ g_return_if_fail (gid != -1); - group->gid = gid; - } - -@@ -183,6 +188,8 @@ polkit_unix_group_set_gid (PolkitUnixGroup *group, - PolkitIdentity * - polkit_unix_group_new (gint gid) - { -+ g_return_val_if_fail (gid != -1, NULL); -+ - return POLKIT_IDENTITY (g_object_new (POLKIT_TYPE_UNIX_GROUP, - "gid", gid, - NULL)); -diff --git a/src/polkit/polkitunixprocess.c b/src/polkit/polkitunixprocess.c -index 972b777..b02b258 100644 ---- a/src/polkit/polkitunixprocess.c -+++ b/src/polkit/polkitunixprocess.c -@@ -159,9 +159,14 @@ polkit_unix_process_set_property (GObject *object, - polkit_unix_process_set_pid (unix_process, g_value_get_int (value)); - break; - -- case PROP_UID: -- polkit_unix_process_set_uid (unix_process, g_value_get_int (value)); -+ case PROP_UID: { -+ gint val; -+ -+ val = g_value_get_int (value); -+ g_return_if_fail (val != -1); -+ polkit_unix_process_set_uid (unix_process, val); - break; -+ } - - case PROP_START_TIME: - polkit_unix_process_set_start_time (unix_process, g_value_get_uint64 (value)); -@@ -239,7 +244,7 @@ polkit_unix_process_class_init (PolkitUnixProcessClass *klass) - g_param_spec_int ("uid", - "User ID", - "The UNIX user ID", -- -1, -+ G_MININT, - G_MAXINT, - -1, - G_PARAM_CONSTRUCT | -@@ -303,7 +308,6 @@ polkit_unix_process_set_uid (PolkitUnixProcess *process, - gint uid) - { - g_return_if_fail (POLKIT_IS_UNIX_PROCESS (process)); -- g_return_if_fail (uid >= -1); - process->uid = uid; - } - -diff --git a/src/polkit/polkitunixuser.c b/src/polkit/polkitunixuser.c -index 8bfd3a1..234a697 100644 ---- a/src/polkit/polkitunixuser.c -+++ b/src/polkit/polkitunixuser.c -@@ -72,6 +72,7 @@ G_DEFINE_TYPE_WITH_CODE (PolkitUnixUser, polkit_unix_user, G_TYPE_OBJECT, - static void - polkit_unix_user_init (PolkitUnixUser *unix_user) - { -+ unix_user->uid = -1; /* (uid_t) -1 is not a valid UID under Linux */ - unix_user->name = NULL; - } - -@@ -112,11 +113,14 @@ polkit_unix_user_set_property (GObject *object, - GParamSpec *pspec) - { - PolkitUnixUser *unix_user = POLKIT_UNIX_USER (object); -+ gint val; - - switch (prop_id) - { - case PROP_UID: -- unix_user->uid = g_value_get_int (value); -+ val = g_value_get_int (value); -+ g_return_if_fail (val != -1); -+ unix_user->uid = val; - break; - - default: -@@ -144,9 +148,9 @@ polkit_unix_user_class_init (PolkitUnixUserClass *klass) - g_param_spec_int ("uid", - "User ID", - "The UNIX user ID", -- 0, -+ G_MININT, - G_MAXINT, -- 0, -+ -1, - G_PARAM_CONSTRUCT | - G_PARAM_READWRITE | - G_PARAM_STATIC_NAME | -@@ -182,6 +186,7 @@ polkit_unix_user_set_uid (PolkitUnixUser *user, - gint uid) - { - g_return_if_fail (POLKIT_IS_UNIX_USER (user)); -+ g_return_if_fail (uid != -1); - user->uid = uid; - } - -@@ -196,6 +201,8 @@ polkit_unix_user_set_uid (PolkitUnixUser *user, - PolkitIdentity * - polkit_unix_user_new (gint uid) - { -+ g_return_val_if_fail (uid != -1, NULL); -+ - return POLKIT_IDENTITY (g_object_new (POLKIT_TYPE_UNIX_USER, - "uid", uid, - NULL)); --- -2.18.1 - diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm index 2bf53d1c1e..b2e3edca18 100644 --- a/gnu/packages/photo.scm +++ b/gnu/packages/photo.scm @@ -132,14 +132,14 @@ data as produced by digital cameras.") (define-public libgphoto2 (package (name "libgphoto2") - (version "2.5.22") + (version "2.5.23") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/gphoto/libgphoto/" version "/libgphoto2-" version ".tar.bz2")) (sha256 (base32 - "0n6f6nagys775ib483nka1sbclhkm1dz3n5z3lgaz1m9m5x35mqm")))) + "0bc5x2bkqbfi4hbkz8ab5xc0bkks9vvks1vygxhdh3x498v27byq")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) (inputs @@ -163,14 +163,14 @@ from digital cameras.") (define-public gphoto2 (package (name "gphoto2") - (version "2.5.20") + (version "2.5.23") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/gphoto/gphoto/" version "/gphoto2-" version ".tar.bz2")) (sha256 (base32 - "1xj80abkzvqrd6g1j1q946lhbp03gyapyxdwbhc0y14g1ash6vx3")))) + "1laqwhxr0xhbykmp0dhd3j4rr2lhj5y228s31afnqxp700hhk1yz")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) diff --git a/gnu/packages/polkit.scm b/gnu/packages/polkit.scm index ccb8ebf8f8..ac24adef43 100644 --- a/gnu/packages/polkit.scm +++ b/gnu/packages/polkit.scm @@ -43,16 +43,15 @@ (define-public polkit (package (name "polkit") - (version "0.115") + (version "0.116") (source (origin (method url-fetch) (uri (string-append "https://www.freedesktop.org/software/polkit/releases/" name "-" version ".tar.gz")) - (patches (search-patches "polkit-CVE-2018-19788.patch")) (sha256 (base32 - "0c91y61y4gy6p91cwbzg32dhavw4b7fflg370rimqhdxpzdfr1rg")) + "1c9lbpndh5zis22f154vjrhnqw65z8s85nrgl42v738yf6g0q5w8")) (modules '((guix build utils))) (snippet '(begin @@ -90,7 +89,7 @@ `(("expat" ,expat) ("linux-pam" ,linux-pam) ("elogind" ,elogind) - ("mozjs" ,mozjs-52) + ("mozjs" ,mozjs-60) ("nspr" ,nspr))) (propagated-inputs `(("glib" ,glib))) ; required by polkit-gobject-1.pc @@ -101,6 +100,9 @@ ("gobject-introspection" ,gobject-introspection))) (arguments `(#:configure-flags '("--sysconfdir=/etc" + ;; XXX: MozJS 60 requires the C++11 ABI or higher. + ;; Remove when the default compiler is >= GCC 6. + "CXXFLAGS=-std=gnu++11" "--enable-man-pages") #:phases (modify-phases %standard-phases diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm index 6248be0c9b..d9065e8b15 100644 --- a/gnu/packages/python-crypto.scm +++ b/gnu/packages/python-crypto.scm @@ -357,14 +357,14 @@ is used by the Requests library to verify HTTPS requests.") (define-public python-cryptography-vectors (package (name "python-cryptography-vectors") - (version "2.6.1") + (version "2.7") (source (origin (method url-fetch) (uri (pypi-uri "cryptography_vectors" version)) (sha256 (base32 - "1bsqcv3h49dzqnyn29ijq8r7k1ra8ikl1y9qcpcns9nbvhaq3wq3")))) + "1g38zw90510azyfrj6mxbslx2gp9yrnv5dac0w2819k9ssdznbgi")))) (build-system python-build-system) (home-page "https://github.com/pyca/cryptography") (synopsis "Test vectors for the cryptography package") @@ -379,14 +379,14 @@ is used by the Requests library to verify HTTPS requests.") (define-public python-cryptography (package (name "python-cryptography") - (version "2.6.1") + (version "2.7") (source (origin (method url-fetch) (uri (pypi-uri "cryptography" version)) (sha256 (base32 - "19iwz5avym5zl6jrrrkym1rdaa9h61j20ph4cswsqgv8xg5j3j16")))) + "1inlnr36kl36551c9rcad99jmhk81v33by3glkadwdcgmi17fd76")))) (build-system python-build-system) (inputs `(("openssl" ,openssl))) diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index 3a022c66ce..a7c88e9187 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -3163,7 +3163,7 @@ provides additional functionality on the produced Mallard documents.") (replace 'check (lambda _ (invoke "python" "runtests.py" "-vv")))))) - (home-page "http://cython.org/") + (home-page "https://cython.org/") (synopsis "C extensions for Python") (description "Cython is an optimising static compiler for both the Python programming language and the extended Cython programming language. It makes @@ -5381,14 +5381,14 @@ libxml2 and libxslt.") (define-public python-beautifulsoup4 (package (name "python-beautifulsoup4") - (version "4.6.3") + (version "4.7.1") (source (origin (method url-fetch) (uri (pypi-uri "beautifulsoup4" version)) (sha256 (base32 - "041dhalzjciw6qyzzq7a2k4h1yvyk76xigp35hv5ibnn448ydy4h")))) + "0j2kycz2dxgx68xzjm7rxg5xn6v61gq5ifvxyg99slmqkybnal4l")))) (build-system python-build-system) (arguments `(#:phases @@ -5400,6 +5400,8 @@ libxml2 and libxslt.") ;; distribution. (replace 'check (lambda _ (invoke "./convert-py3k")))))) + (propagated-inputs + `(("python-soupsieve" ,python-soupsieve))) (home-page "https://www.crummy.com/software/BeautifulSoup/bs4/") (synopsis @@ -5443,14 +5445,17 @@ Soup 4. It aims to provide selecting, matching, and filtering using modern CSS selectors. Soup Sieve currently provides selectors from the CSS level 1 specifications up through the latest CSS level 4 drafts and beyond (though some are not yet implemented).") + (properties `((python2-variant . ,(delay python2-soupsieve)))) (license license:expat))) (define-public python2-soupsieve - (let ((base (package-with-python2 python-soupsieve))) + (let ((base (package-with-python2 (strip-python2-variant python-soupsieve)))) (package (inherit base) (propagated-inputs - `(("python2-backports-functools-lru-cache" ,python2-backports-functools-lru-cache)))))) + `(("python2-backports-functools-lru-cache" + ,python2-backports-functools-lru-cache) + ,@(package-propagated-inputs base)))))) (define-public python-netifaces (package @@ -12180,7 +12185,7 @@ current test, while only declaring the test-specific fields") ;; 'parse_funcs' ;; during test setup. `(#:tests? #f)) - (home-page "http://toolkit.translatehouse.org") + (home-page "https://toolkit.translatehouse.org") (synopsis "Tools and API for translation and localization engineering") (description "Tools and API for translation and localization engineering. It contains diff --git a/gnu/packages/regex.scm b/gnu/packages/regex.scm index f37fb064a2..a64944080b 100644 --- a/gnu/packages/regex.scm +++ b/gnu/packages/regex.scm @@ -30,7 +30,7 @@ (define-public re2 (package (name "re2") - (version "2019-04-01") + (version "2019-06-01") (home-page "https://github.com/google/re2") (source (origin (method git-fetch) @@ -38,7 +38,7 @@ (file-name (git-file-name name version)) (sha256 (base32 - "018b8z3fgcr02rmhxdz80r363k40938cbgmk1c9b46k6xkc4q0hd")))) + "01613z66wgiffdngbq3031rwd92jf87j93h7y5mn8hlx19gg5k4j")))) (build-system gnu-build-system) (arguments `(#:modules ((guix build gnu-build-system) diff --git a/gnu/packages/sdl.scm b/gnu/packages/sdl.scm index 2e8cec8ffb..b6b28b7d06 100644 --- a/gnu/packages/sdl.scm +++ b/gnu/packages/sdl.scm @@ -6,7 +6,7 @@ ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com> ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> -;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2019 Kei Kebreau <kkebreau@posteo.net> ;;; Copyright © 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr> ;;; @@ -523,15 +523,14 @@ sound and device input (keyboards, joysticks, mice, etc.).") (define-public guile-sdl2 (package (name "guile-sdl2") - (version "0.3.1") + (version "0.4.0") (source (origin (method url-fetch) - (uri (string-append - "https://files.dthompson.us/guile-sdl2/guile-sdl2-" - version ".tar.gz")) + (uri (string-append "https://files.dthompson.us/guile-sdl2/" + "guile-sdl2-" version ".tar.gz")) (sha256 (base32 - "0bw7x2lx90k4banc5k7yfkn3as93y25gr1xdr225ll7lmij21k64")))) + "0zcxwgyadwpbhq6h5mv2569c3kalgra26zc186y9fqiyyzmh1v9s")))) (build-system gnu-build-system) (arguments '(#:make-flags '("GUILE_AUTO_COMPILE=0") diff --git a/gnu/packages/syncthing.scm b/gnu/packages/syncthing.scm index acc9eda152..cd3dd0de54 100644 --- a/gnu/packages/syncthing.scm +++ b/gnu/packages/syncthing.scm @@ -30,7 +30,7 @@ (define-public syncthing (package (name "syncthing") - (version "1.1.2") + (version "1.1.4") (source (origin (method url-fetch) (uri (string-append "https://github.com/syncthing/syncthing" @@ -38,7 +38,7 @@ "/syncthing-source-v" version ".tar.gz")) (sha256 (base32 - "0x2203xa4fxadj7ra7l2ac285j3gi1qgghpkssl4hkcq0kjmxqrk")) + "0pkb9vdb10lnlk6sgg6hxgkdjnvxx90cfdf8vgrc5sljzm5qhr6l")) (modules '((guix build utils))) ;; Delete bundled ("vendored") free software source code. (snippet '(begin @@ -418,7 +418,7 @@ address of the default LAN gateway.") (define-public go-github-com-lib-pq (package (name "go-github-com-lib-pq") - (version "1.0.0") + (version "1.1.1") (source (origin (method git-fetch) (uri (git-reference @@ -427,7 +427,7 @@ address of the default LAN gateway.") (file-name (git-file-name name version)) (sha256 (base32 - "1zqnnyczaf00xi6xh53vq758v5bdlf0iz7kf22l02cal4i6px47i")))) + "0g64wlg1l1ybq4x44idksl4pgm055s58jxc6r6x4qhqm5q76h0km")))) (build-system go-build-system) (arguments `(#:import-path "github.com/lib/pq" @@ -443,7 +443,7 @@ database/sql package.") (define-public go-github-com-oschwald-geoip2-golang (package (name "go-github-com-oschwald-geoip2-golang") - (version "1.1.0") + (version "1.3.0") (source (origin (method git-fetch) (uri (git-reference @@ -452,7 +452,7 @@ database/sql package.") (file-name (git-file-name name version)) (sha256 (base32 - "0v698bzs8lb59cqpsa9cf4sl8rdsvnnmaravhbfn6g6i511ppclr")))) + "0jivzl15jb8n16rm1b2w97kf7vna5dd3kcz865wfi233qay075j2")))) (build-system go-build-system) (propagated-inputs `(("go-github-com-oschwald-maxminddb-golang" diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm index bb82efba5d..8e20101e51 100644 --- a/gnu/packages/tls.scm +++ b/gnu/packages/tls.scm @@ -410,7 +410,7 @@ required structures.") (package (inherit openssl) (name "openssl") - (version "1.1.1b") + (version "1.1.1c") (source (origin (method url-fetch) (uri (list (string-append "https://www.openssl.org/source/openssl-" @@ -423,7 +423,7 @@ required structures.") (patches (search-patches "openssl-1.1-c-rehash-in.patch")) (sha256 (base32 - "0jza8cmznnyiia43056dij1jdmz62dx17wsn0zxksh9h6817nmaw")))) + "142c7zdlz06hjrrvinb9f276czc78bnkyhd9xma621qmmmwk1yzn")))) (outputs '("out" "doc" ; 6.8 MiB of man3 pages and full HTML documentation "static")) ; 6.4 MiB of .a files diff --git a/gnu/packages/vim.scm b/gnu/packages/vim.scm index 8789060b3c..aa543b68d0 100644 --- a/gnu/packages/vim.scm +++ b/gnu/packages/vim.scm @@ -730,7 +730,7 @@ are detected, the user is notified."))) (define-public neovim (package (name "neovim") - (version "0.3.5") + (version "0.3.7") (source (origin (method git-fetch) @@ -740,7 +740,7 @@ are detected, the user is notified."))) (file-name (git-file-name name version)) (sha256 (base32 - "113lrr9gwimvvzlkwlishm4cjqcf30xq9jfxn7vh41ckgnbiwf3w")))) + "1j6w5jvq5v7kf7diad91qs1acr427nidnk9s24yyrz0hwdd1c2lh")))) (build-system cmake-build-system) (arguments `(#:modules ((srfi srfi-26) diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm index ae28e38adb..27966f038a 100644 --- a/gnu/packages/xorg.scm +++ b/gnu/packages/xorg.scm @@ -5067,7 +5067,7 @@ over Xlib, including: (define-public xorg-server (package (name "xorg-server") - (version "1.20.4") + (version "1.20.5") (source (origin (method url-fetch) @@ -5076,7 +5076,7 @@ over Xlib, including: "xorg-server-" version ".tar.bz2")) (sha256 (base32 - "1vk6j7hmigfill9x8m7a6vvgb3s50ji2yf6yprbgqfz9xf9x83zy")) + "17dc3g8cc55nbkx3np64dsz04n621dnzjmcc9wys0xbyyd1q47d8")) (patches (list ;; See: @@ -5198,7 +5198,16 @@ draggable titlebars and borders.") (define-public xorg-server-for-tests (hidden-package (package - (inherit xorg-server)))) + (inherit xorg-server) + (version "1.20.4") + (source (origin + (inherit (package-source xorg-server)) + (uri (string-append + "mirror://xorg/individual/xserver/" + "xorg-server-" version ".tar.bz2")) + (sha256 + (base32 + "1vk6j7hmigfill9x8m7a6vvgb3s50ji2yf6yprbgqfz9xf9x83zy"))))))) (define-public xorg-server-xwayland (package diff --git a/gnu/services/base.scm b/gnu/services/base.scm index f709ca5519..c88a6ddec6 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -142,7 +142,8 @@ guix-publish-configuration-guix guix-publish-configuration-port guix-publish-configuration-host - guix-publish-configuration-compression-level + guix-publish-configuration-compression + guix-publish-configuration-compression-level ;deprecated guix-publish-configuration-nar-path guix-publish-configuration-cache guix-publish-configuration-ttl @@ -1748,8 +1749,12 @@ archive' public keys, with GUIX." (default 80)) (host guix-publish-configuration-host ;string (default "localhost")) - (compression-level guix-publish-configuration-compression-level ;integer - (default 3)) + (compression guix-publish-configuration-compression + (thunked) + (default (default-compression this-record + (current-source-location)))) + (compression-level %guix-publish-configuration-compression-level ;deprecated + (default #f)) (nar-path guix-publish-configuration-nar-path ;string (default "nar")) (cache guix-publish-configuration-cache ;#f | string @@ -1759,42 +1764,68 @@ archive' public keys, with GUIX." (ttl guix-publish-configuration-ttl ;#f | integer (default #f))) -(define guix-publish-shepherd-service - (match-lambda - (($ <guix-publish-configuration> guix port host compression - nar-path cache workers ttl) - (list (shepherd-service - (provision '(guix-publish)) - (requirement '(guix-daemon)) - (start #~(make-forkexec-constructor - (list #$(file-append guix "/bin/guix") - "publish" "-u" "guix-publish" - "-p" #$(number->string port) - "-C" #$(number->string compression) - (string-append "--nar-path=" #$nar-path) - (string-append "--listen=" #$host) - #$@(if workers - #~((string-append "--workers=" - #$(number->string - workers))) - #~()) - #$@(if ttl - #~((string-append "--ttl=" - #$(number->string ttl) - "s")) - #~()) - #$@(if cache - #~((string-append "--cache=" #$cache)) - #~())) - - ;; Make sure we run in a UTF-8 locale so we can produce - ;; nars for packages that contain UTF-8 file names such - ;; as 'nss-certs'. See <https://bugs.gnu.org/26948>. - #:environment-variables - (list (string-append "GUIX_LOCPATH=" - #$glibc-utf8-locales "/lib/locale") - "LC_ALL=en_US.utf8"))) - (stop #~(make-kill-destructor))))))) +(define-deprecated (guix-publish-configuration-compression-level config) + "Return a compression level, the old way." + (match (guix-publish-configuration-compression config) + (((_ level) _ ...) level))) + +(define (default-compression config properties) + "Return the default 'guix publish' compression according to CONFIG, and +raise a deprecation warning if the 'compression-level' field was used." + (match (%guix-publish-configuration-compression-level config) + (#f + '(("gzip" 3))) + (level + (warn-about-deprecation 'compression-level properties + #:replacement 'compression) + `(("gzip" ,level))))) + +(define (guix-publish-shepherd-service config) + (define (config->compression-options config) + (match (guix-publish-configuration-compression config) + (() ;empty list means "no compression" + '("-C0")) + (lst + (append-map (match-lambda + ((type level) + `("-C" ,(string-append type ":" + (number->string level))))) + lst)))) + + (match-record config <guix-publish-configuration> + (guix port host nar-path cache workers ttl) + (list (shepherd-service + (provision '(guix-publish)) + (requirement '(guix-daemon)) + (start #~(make-forkexec-constructor + (list #$(file-append guix "/bin/guix") + "publish" "-u" "guix-publish" + "-p" #$(number->string port) + #$@(config->compression-options config) + (string-append "--nar-path=" #$nar-path) + (string-append "--listen=" #$host) + #$@(if workers + #~((string-append "--workers=" + #$(number->string + workers))) + #~()) + #$@(if ttl + #~((string-append "--ttl=" + #$(number->string ttl) + "s")) + #~()) + #$@(if cache + #~((string-append "--cache=" #$cache)) + #~())) + + ;; Make sure we run in a UTF-8 locale so we can produce + ;; nars for packages that contain UTF-8 file names such + ;; as 'nss-certs'. See <https://bugs.gnu.org/26948>. + #:environment-variables + (list (string-append "GUIX_LOCPATH=" + #$glibc-utf8-locales "/lib/locale") + "LC_ALL=en_US.utf8"))) + (stop #~(make-kill-destructor)))))) (define %guix-publish-accounts (list (user-group (name "guix-publish") (system? #t)) diff --git a/gnu/services/cups.scm b/gnu/services/cups.scm index 9125139ef3..9d21b6e70c 100644 --- a/gnu/services/cups.scm +++ b/gnu/services/cups.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2016 Andy Wingo <wingo@pobox.com> ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org> ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2019 Alex Griffin <a@ajgrf.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -895,6 +896,7 @@ IPP specifications.") (mkdir-p/perms "/var/spool/cups" user #o755) (mkdir-p/perms "/var/spool/cups/tmp" user #o755) (mkdir-p/perms "/var/log/cups" user #o755) + (mkdir-p/perms "/var/cache/cups" user #o770) (mkdir-p/perms "/etc/cups" user #o755) (mkdir-p/perms "/etc/cups/ssl" user #o700) ;; This certificate is used for HTTPS connections to the CUPS web diff --git a/guix/channels.scm b/guix/channels.scm index e93879e1b4..e7278c6060 100644 --- a/guix/channels.scm +++ b/guix/channels.scm @@ -27,7 +27,7 @@ #:use-module (guix profiles) #:use-module (guix derivations) #:use-module (guix combinators) - #:use-module (guix deprecation) + #:use-module (guix diagnostics) #:use-module (guix store) #:use-module (guix i18n) #:use-module ((guix utils) @@ -280,7 +280,7 @@ package modules under SOURCE using CORE, an instance of Guix." ;; Disable deprecation warnings; it's OK for SCRIPT to ;; use deprecated APIs and the user doesn't have to know ;; about it. - (parameterize ((deprecation-warning-port + (parameterize ((guix-warning-port (%make-void-port "w"))) (primitive-load script)))))) ;; BUILD must be a monadic procedure of at least one argument: the diff --git a/guix/deprecation.scm b/guix/deprecation.scm index 2f7c058940..468b2e9b7b 100644 --- a/guix/deprecation.scm +++ b/guix/deprecation.scm @@ -18,39 +18,26 @@ (define-module (guix deprecation) #:use-module (guix i18n) - #:use-module (ice-9 format) + #:use-module (guix diagnostics) + #:autoload (guix utils) (source-properties->location) #:export (define-deprecated define-deprecated/alias - deprecation-warning-port)) + warn-about-deprecation)) ;;; Commentary: ;;; ;;; Provide a mechanism to mark bindings as deprecated. ;;; -;;; We don't reuse (guix ui) mostly to avoid pulling in too many things. -;;; ;;; Code: -(define deprecation-warning-port - ;; Port where deprecation warnings go. - (make-parameter (current-error-port))) - -(define (source-properties->location-string properties) - "Return a human-friendly, GNU-standard representation of PROPERTIES, a -source property alist." - (let ((file (assq-ref properties 'filename)) - (line (assq-ref properties 'line)) - (column (assq-ref properties 'column))) - (if (and file line column) - (format #f "~a:~a:~a" file (+ 1 line) column) - (G_ "<unknown location>")))) - (define* (warn-about-deprecation variable properties #:key replacement) - (format (deprecation-warning-port) - (G_ "~a: warning: '~a' is deprecated~@[, use '~a' instead~]~%") - (source-properties->location-string properties) - variable replacement)) + (let ((location (and properties (source-properties->location properties)))) + (if replacement + (warning location (G_ "'~a' is deprecated, use '~a' instead~%") + variable replacement) + (warning location (G_ "'~a' is deprecated~%") + variable)))) (define-syntax define-deprecated (lambda (s) @@ -59,7 +46,7 @@ source property alist." (define-deprecated foo bar 42) (define-deprecated (baz x y) qux (qux y x)) -This will write a deprecation warning to DEPRECATION-WARNING-PORT." +This will write a deprecation warning to GUIX-WARNING-PORT." (syntax-case s () ((_ (proc formals ...) replacement body ...) #'(define-deprecated proc replacement @@ -96,7 +83,7 @@ these lines: where 'nix-server?' is the deprecated name for 'store-connection?'. -This will write a deprecation warning to DEPRECATION-WARNING-PORT." +This will write a deprecation warning to GUIX-WARNING-PORT." (define-syntax deprecated (lambda (s) (warn-about-deprecation 'deprecated (syntax-source s) diff --git a/guix/diagnostics.scm b/guix/diagnostics.scm new file mode 100644 index 0000000000..380cfbb613 --- /dev/null +++ b/guix/diagnostics.scm @@ -0,0 +1,173 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 (guix diagnostics) + #:use-module (guix colors) + #:use-module (guix i18n) + #:autoload (guix utils) (<location>) + #:use-module (srfi srfi-26) + #:use-module (ice-9 format) + #:use-module (ice-9 match) + #:export (warning + info + report-error + leave + + location->string + + guix-warning-port + program-name)) + +;;; Commentary: +;;; +;;; This module provides the tools to report diagnostics to the user in a +;;; consistent way: errors, warnings, and notes. +;;; +;;; Code: + +(define-syntax highlight-argument + (lambda (s) + "Given FMT and ARG, expand ARG to a call that highlights it, provided FMT +is a trivial format string." + (define (trivial-format-string? fmt) + (define len + (string-length fmt)) + + (let loop ((start 0)) + (or (>= (+ 1 start) len) + (let ((tilde (string-index fmt #\~ start))) + (or (not tilde) + (case (string-ref fmt (+ tilde 1)) + ((#\a #\A #\%) (loop (+ tilde 2))) + (else #f))))))) + + ;; Be conservative: limit format argument highlighting to cases where the + ;; format string contains nothing but ~a escapes. If it contained ~s + ;; escapes, this strategy wouldn't work. + (syntax-case s () + ((_ "~a~%" arg) ;don't highlight whole messages + #'arg) + ((_ fmt arg) + (trivial-format-string? (syntax->datum #'fmt)) + #'(%highlight-argument arg)) + ((_ fmt arg) + #'arg)))) + +(define* (%highlight-argument arg #:optional (port (guix-warning-port))) + "Highlight ARG, a format string argument, if PORT supports colors." + (cond ((string? arg) + (highlight arg port)) + ((symbol? arg) + (highlight (symbol->string arg) port)) + (else arg))) + +(define-syntax define-diagnostic + (syntax-rules () + "Create a diagnostic macro (i.e., NAME), which will prepend PREFIX to all +messages." + ((_ name (G_ prefix) colors) + (define-syntax name + (lambda (x) + (syntax-case x () + ((name location (underscore fmt) args (... ...)) + (and (string? (syntax->datum #'fmt)) + (free-identifier=? #'underscore #'G_)) + #'(begin + (print-diagnostic-prefix prefix location + #:colors colors) + (format (guix-warning-port) (gettext fmt %gettext-domain) + (highlight-argument fmt args) (... ...)))) + ((name location (N-underscore singular plural n) + args (... ...)) + (and (string? (syntax->datum #'singular)) + (string? (syntax->datum #'plural)) + (free-identifier=? #'N-underscore #'N_)) + #'(begin + (print-diagnostic-prefix prefix location + #:colors colors) + (format (guix-warning-port) + (ngettext singular plural n %gettext-domain) + (highlight-argument singular args) (... ...)))) + ((name (underscore fmt) args (... ...)) + (free-identifier=? #'underscore #'G_) + #'(name #f (underscore fmt) args (... ...))) + ((name (N-underscore singular plural n) + args (... ...)) + (free-identifier=? #'N-underscore #'N_) + #'(name #f (N-underscore singular plural n) + args (... ...))))))))) + +;; XXX: This doesn't work well for right-to-left languages. +;; TRANSLATORS: The goal is to emit "warning:" followed by a short phrase; +;; "~a" is a placeholder for that phrase. +(define-diagnostic warning (G_ "warning: ") %warning-color) ;emit a warning +(define-diagnostic info (G_ "") %info-color) +(define-diagnostic report-error (G_ "error: ") %error-color) + +(define-syntax-rule (leave args ...) + "Emit an error message and exit." + (begin + (report-error args ...) + (exit 1))) + +(define %warning-color (color BOLD MAGENTA)) +(define %info-color (color BOLD)) +(define %error-color (color BOLD RED)) + +(define* (print-diagnostic-prefix prefix #:optional location + #:key (colors (color))) + "Print PREFIX as a diagnostic line prefix." + (define color? + (color-output? (guix-warning-port))) + + (define location-color + (if color? + (cut colorize-string <> (color BOLD)) + identity)) + + (define prefix-color + (if color? + (lambda (prefix) + (colorize-string prefix colors)) + identity)) + + (let ((prefix (if (string-null? prefix) + prefix + (gettext prefix %gettext-domain)))) + (if location + (format (guix-warning-port) "~a: ~a" + (location-color (location->string location)) + (prefix-color prefix)) + (format (guix-warning-port) "~:[~*~;guix ~a: ~]~a" + (program-name) (program-name) + (prefix-color prefix))))) + +(define (location->string loc) + "Return a human-friendly, GNU-standard representation of LOC." + (match loc + (#f (G_ "<unknown location>")) + (($ <location> file line column) + (format #f "~a:~a:~a" file line column)))) + + +(define guix-warning-port + (make-parameter (current-warning-port))) + +(define program-name + ;; Name of the command-line program currently executing, or #f. + (make-parameter #f)) diff --git a/guix/import/utils.scm b/guix/import/utils.scm index 516c0cfaa2..d0dffe9b04 100644 --- a/guix/import/utils.scm +++ b/guix/import/utils.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2016 David Craven <david@craven.ch> ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com> +;;; Copyright © 2019 Robert Vollmert <rob@vllmrt.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -378,57 +379,35 @@ separated by PRED." #:allow-other-keys) "Generate a stream of package expressions for PACKAGE-NAME and all its dependencies." - (receive (package . dependencies) - (repo->guix-package package-name repo) - (if (not package) - stream-null - - ;; Generate a lazy stream of package expressions for all unknown - ;; dependencies in the graph. - (let* ((make-state (lambda (queue done) - (cons queue done))) - (next (match-lambda - (((next . rest) . done) next))) - (imported (match-lambda - ((queue . done) done))) - (done? (match-lambda - ((queue . done) - (zero? (length queue))))) - (unknown? (lambda* (dependency #:optional (done '())) - (and (not (member dependency - done)) - (null? (find-packages-by-name - (guix-name dependency)))))) - (update (lambda (state new-queue) - (match state - (((head . tail) . done) - (make-state (lset-difference - equal? - (lset-union equal? new-queue tail) - done) - (cons head done))))))) - (stream-cons - package - (stream-unfold - ;; map: produce a stream element - (lambda (state) - (repo->guix-package (next state) repo)) - - ;; predicate - (negate done?) - - ;; generator: update the queue - (lambda (state) - (receive (package . dependencies) - (repo->guix-package (next state) repo) - (if package - (update state (filter (cut unknown? <> - (cons (next state) - (imported state))) - (car dependencies))) - ;; TODO: Try the other archives before giving up - (update state (imported state))))) - - ;; initial state - (make-state (filter unknown? (car dependencies)) - (list package-name)))))))) + (define (exists? dependency) + (not (null? (find-packages-by-name (guix-name dependency))))) + (define initial-state (list #f (list package-name) (list))) + (define (step state) + (match state + ((prev (next . rest) done) + (define (handle? dep) + (and + (not (equal? dep next)) + (not (member dep done)) + (not (exists? dep)))) + (receive (package . dependencies) (repo->guix-package next repo) + (list + (if package package '()) ;; default #f on failure would interrupt + (if package + (lset-union equal? rest (filter handle? (car dependencies))) + rest) + (cons next done)))) + ((prev '() done) + (list #f '() done)))) + + ;; Generate a lazy stream of package expressions for all unknown + ;; dependencies in the graph. + (stream-unfold + ;; map: produce a stream element + (match-lambda ((latest queue done) latest)) + ;; predicate + (match-lambda ((latest queue done) latest)) + ;; generator: update the queue + step + ;; initial state + (step initial-state))) diff --git a/guix/ui.scm b/guix/ui.scm index 529401eea8..0b4fe144b6 100644 --- a/guix/ui.scm +++ b/guix/ui.scm @@ -32,6 +32,7 @@ (define-module (guix ui) #:use-module (guix i18n) #:use-module (guix colors) + #:use-module (guix diagnostics) #:use-module (guix gexp) #:use-module (guix sets) #:use-module (guix utils) @@ -70,10 +71,14 @@ #:use-module (texinfo) #:use-module (texinfo plain-text) #:use-module (texinfo string-utils) - #:re-export (G_ N_ P_) ;backward compatibility - #:export (report-error - display-hint - leave + + ;; Re-exports for backward compatibility. + #:re-export (G_ N_ P_ ;now in (guix i18n) + + warning info report-error leave ;now in (guix diagnostics) + location->string + guix-warning-port program-name) + #:export (display-hint make-user-module load* warn-about-load-error @@ -93,7 +98,6 @@ read/eval read/eval-package-expression check-available-space - location->string fill-paragraph %text-width texi->plain-text @@ -115,10 +119,6 @@ delete-generation* run-guix-command run-guix - program-name - guix-warning-port - warning - info guix-main)) ;;; Commentary: @@ -127,124 +127,6 @@ ;;; ;;; Code: -(define-syntax highlight-argument - (lambda (s) - "Given FMT and ARG, expand ARG to a call that highlights it, provided FMT -is a trivial format string." - (define (trivial-format-string? fmt) - (define len - (string-length fmt)) - - (let loop ((start 0)) - (or (>= (+ 1 start) len) - (let ((tilde (string-index fmt #\~ start))) - (or (not tilde) - (case (string-ref fmt (+ tilde 1)) - ((#\a #\A #\%) (loop (+ tilde 2))) - (else #f))))))) - - ;; Be conservative: limit format argument highlighting to cases where the - ;; format string contains nothing but ~a escapes. If it contained ~s - ;; escapes, this strategy wouldn't work. - (syntax-case s () - ((_ "~a~%" arg) ;don't highlight whole messages - #'arg) - ((_ fmt arg) - (trivial-format-string? (syntax->datum #'fmt)) - #'(%highlight-argument arg)) - ((_ fmt arg) - #'arg)))) - -(define* (%highlight-argument arg #:optional (port (guix-warning-port))) - "Highlight ARG, a format string argument, if PORT supports colors." - (cond ((string? arg) - (highlight arg port)) - ((symbol? arg) - (highlight (symbol->string arg) port)) - (else arg))) - -(define-syntax define-diagnostic - (syntax-rules () - "Create a diagnostic macro (i.e., NAME), which will prepend PREFIX to all -messages." - ((_ name (G_ prefix) colors) - (define-syntax name - (lambda (x) - (syntax-case x () - ((name location (underscore fmt) args (... ...)) - (and (string? (syntax->datum #'fmt)) - (free-identifier=? #'underscore #'G_)) - #'(begin - (print-diagnostic-prefix prefix location - #:colors colors) - (format (guix-warning-port) (gettext fmt %gettext-domain) - (highlight-argument fmt args) (... ...)))) - ((name location (N-underscore singular plural n) - args (... ...)) - (and (string? (syntax->datum #'singular)) - (string? (syntax->datum #'plural)) - (free-identifier=? #'N-underscore #'N_)) - #'(begin - (print-diagnostic-prefix prefix location - #:colors colors) - (format (guix-warning-port) - (ngettext singular plural n %gettext-domain) - (highlight-argument singular args) (... ...)))) - ((name (underscore fmt) args (... ...)) - (free-identifier=? #'underscore #'G_) - #'(name #f (underscore fmt) args (... ...))) - ((name (N-underscore singular plural n) - args (... ...)) - (free-identifier=? #'N-underscore #'N_) - #'(name #f (N-underscore singular plural n) - args (... ...))))))))) - -;; XXX: This doesn't work well for right-to-left languages. -;; TRANSLATORS: The goal is to emit "warning:" followed by a short phrase; -;; "~a" is a placeholder for that phrase. -(define-diagnostic warning (G_ "warning: ") %warning-color) ;emit a warning -(define-diagnostic info (G_ "") %info-color) -(define-diagnostic report-error (G_ "error: ") %error-color) - -(define-syntax-rule (leave args ...) - "Emit an error message and exit." - (begin - (report-error args ...) - (exit 1))) - -(define %warning-color (color BOLD MAGENTA)) -(define %info-color (color BOLD)) -(define %error-color (color BOLD RED)) -(define %hint-color (color BOLD CYAN)) - -(define* (print-diagnostic-prefix prefix #:optional location - #:key (colors (color))) - "Print PREFIX as a diagnostic line prefix." - (define color? - (color-output? (guix-warning-port))) - - (define location-color - (if color? - (cut colorize-string <> (color BOLD)) - identity)) - - (define prefix-color - (if color? - (lambda (prefix) - (colorize-string prefix colors)) - identity)) - - (let ((prefix (if (string-null? prefix) - prefix - (gettext prefix %gettext-domain)))) - (if location - (format (guix-warning-port) "~a: ~a" - (location-color (location->string location)) - (prefix-color prefix)) - (format (guix-warning-port) "~:[~*~;guix ~a: ~]~a" - (program-name) (program-name) - (prefix-color prefix))))) - (define (print-unbound-variable-error port key args default-printer) ;; Print unbound variable errors more nicely, and in the right language. (match args @@ -393,6 +275,8 @@ VARIABLE and return it, or #f if none was found." (('gnu _ ...) head) ;must be that one (_ (loop next (cons head suggestions) visited))))))))))) +(define %hint-color (color BOLD CYAN)) + (define* (display-hint message #:optional (port (current-error-port))) "Display MESSAGE, a l10n message possibly containing Texinfo markup, to PORT." @@ -1192,13 +1076,6 @@ replacement if PORT is not Unicode-capable." (lambda () body ...))))) -(define (location->string loc) - "Return a human-friendly, GNU-standard representation of LOC." - (match loc - (#f (G_ "<unknown location>")) - (($ <location> file line column) - (format #f "~a:~a:~a" file line column)))) - (define* (fill-paragraph str width #:optional (column 0)) "Fill STR such that each line contains at most WIDTH characters, assuming that the first character is at COLUMN. @@ -1720,10 +1597,6 @@ Run COMMAND with ARGS.\n")) string<?)) (show-bug-report-information)) -(define program-name - ;; Name of the command-line program currently executing, or #f. - (make-parameter #f)) - (define (run-guix-command command . args) "Run COMMAND with the given ARGS. Report an error when COMMAND is not found." @@ -1783,9 +1656,6 @@ and signal handling has already been set up." (string->symbol command) args)))) -(define guix-warning-port - (make-parameter (current-warning-port))) - (define (guix-main arg0 . args) (initialize-guix) (apply run-guix args)) |