Merge branch 'master' into staging
This commit is contained in:
commit
d4721ff101
@ -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 \
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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")
|
||||
|
@ -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."
|
||||
|
@ -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 \
|
||||
|
@ -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.
|
||||
|
@ -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/")
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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)))
|
||||
|
@ -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)
|
||||
|
@ -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")
|
||||
|
@ -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)))
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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)))
|
||||
|
@ -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)
|
||||
|
@ -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")
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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")
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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 _
|
||||
@ -2837,9 +2844,6 @@ to BMP, JPEG or PNG image formats.")
|
||||
(with-directory-excursion out
|
||||
(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"))
|
||||
@ -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)))
|
||||
|
@ -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'...
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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,49 +37,13 @@ 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
|
||||
+#
|
||||
+# 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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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 },
|
@ -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
|
||||
|
@ -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)))
|
||||
|
@ -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
|
||||
|
@ -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)))
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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")
|
||||
|
@ -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"
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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))
|
||||
#~()))
|
||||
(define-deprecated (guix-publish-configuration-compression-level config)
|
||||
"Return a compression level, the old way."
|
||||
(match (guix-publish-configuration-compression config)
|
||||
(((_ level) _ ...) level)))
|
||||
|
||||
;; 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 (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))
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
173
guix/diagnostics.scm
Normal file
173
guix/diagnostics.scm
Normal file
@ -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))
|
@ -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
|
||||
(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.
|
||||
(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))))))))
|
||||
;; 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)))
|
||||
|
152
guix/ui.scm
152
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))
|
||||
|
Loading…
Reference in New Issue
Block a user