Merge branch 'master' into core-updates

This commit is contained in:
Mark H Weaver 2017-06-20 00:25:59 -04:00
commit 9815739e9b
No known key found for this signature in database
GPG key ID: 7CEF29847562C516
24 changed files with 335 additions and 135 deletions

View file

@ -571,6 +571,7 @@ dist_patch_DATA = \
%D%/packages/patches/emacs-source-date-epoch.patch \ %D%/packages/patches/emacs-source-date-epoch.patch \
%D%/packages/patches/eudev-rules-directory.patch \ %D%/packages/patches/eudev-rules-directory.patch \
%D%/packages/patches/evilwm-lost-focus-bug.patch \ %D%/packages/patches/evilwm-lost-focus-bug.patch \
%D%/packages/patches/exim-CVE-2017-1000369.patch \
%D%/packages/patches/fabric-tests.patch \ %D%/packages/patches/fabric-tests.patch \
%D%/packages/patches/fastcap-mulGlobal.patch \ %D%/packages/patches/fastcap-mulGlobal.patch \
%D%/packages/patches/fastcap-mulSetup.patch \ %D%/packages/patches/fastcap-mulSetup.patch \
@ -805,7 +806,6 @@ dist_patch_DATA = \
%D%/packages/patches/mesa-wayland-egl-symbols-check-mips.patch \ %D%/packages/patches/mesa-wayland-egl-symbols-check-mips.patch \
%D%/packages/patches/metabat-remove-compilation-date.patch \ %D%/packages/patches/metabat-remove-compilation-date.patch \
%D%/packages/patches/mhash-keygen-test-segfault.patch \ %D%/packages/patches/mhash-keygen-test-segfault.patch \
%D%/packages/patches/miniupnpc-CVE-2017-8798.patch \
%D%/packages/patches/mingw-w64-5.0rc2-gcc-4.9.3.patch \ %D%/packages/patches/mingw-w64-5.0rc2-gcc-4.9.3.patch \
%D%/packages/patches/mpc123-initialize-ao.patch \ %D%/packages/patches/mpc123-initialize-ao.patch \
%D%/packages/patches/module-init-tools-moduledir.patch \ %D%/packages/patches/module-init-tools-moduledir.patch \

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org> ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
@ -114,6 +114,9 @@ (define-public econnman
`(#:configure-flags '("--localstatedir=/var") `(#:configure-flags '("--localstatedir=/var")
#:phases #:phases
(modify-phases %standard-phases (modify-phases %standard-phases
(add-after 'unpack 'set-home-directory
;; FATAL: Cannot create run dir '/homeless-shelter/.run' - errno=2
(lambda _ (setenv "HOME" "/tmp") #t))
(add-after 'install 'wrap-binary (add-after 'install 'wrap-binary
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out")) (let* ((out (assoc-ref outputs "out"))

View file

@ -507,7 +507,8 @@ (define-public propeller-gcc-4
(patches (patches
(append (append
(origin-patches (package-source gcc-4.7)) (origin-patches (package-source gcc-4.7))
(search-patches "gcc-4.6-gnu-inline.patch"))))) (search-patches "gcc-4.6-gnu-inline.patch"
"gcc-cross-environment-variables.patch")))))
(home-page "https://github.com/dbetz/propgcc-gcc")))) (home-page "https://github.com/dbetz/propgcc-gcc"))))
;; There is no release, so we take the latest version as referenced from here: ;; There is no release, so we take the latest version as referenced from here:

View file

@ -58,7 +58,7 @@ (define-module (gnu packages enlightenment)
(define-public efl (define-public efl
(package (package
(name "efl") (name "efl")
(version "1.18.5") (version "1.19.1")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -66,7 +66,7 @@ (define-public efl
version ".tar.xz")) version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"0wxz00cijynamm0sx4ss4hp89zyz5y6zliv5zd905jn4nak2mw2n")))) "0fndwraca9rg0bz3al4isdprvyw56szr88qiyvglb4j8ygsylscc"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs (native-inputs
`(("pkg-config" ,pkg-config))) `(("pkg-config" ,pkg-config)))
@ -109,7 +109,7 @@ (define-public efl
("xproto" ,xproto))) ("xproto" ,xproto)))
(propagated-inputs (propagated-inputs
;; All these inputs are in package config files in section ;; All these inputs are in package config files in section
;; Require.private. ;; Requires.private.
`(("bullet" ,bullet) ; ephysics.pc `(("bullet" ,bullet) ; ephysics.pc
("dbus" ,dbus) ; eldbus.pc, elementary.pc, elocation.pc, ethumb_client.pc ("dbus" ,dbus) ; eldbus.pc, elementary.pc, elocation.pc, ethumb_client.pc
("eudev" ,eudev) ; eeze.pc ("eudev" ,eudev) ; eeze.pc
@ -123,17 +123,23 @@ (define-public efl
("libsndfile" ,libsndfile) ; ecore-audio.pc, ecore-audio-cxx.pc ("libsndfile" ,libsndfile) ; ecore-audio.pc, ecore-audio-cxx.pc
("openssl" ,openssl) ; ecore-con.pc, eet.pc, eet-cxx.pc, emile.pc ("openssl" ,openssl) ; ecore-con.pc, eet.pc, eet-cxx.pc, emile.pc
("pulseaudio" ,pulseaudio) ; ecore-audio.pc, ecore-audio-cxx.pc ("pulseaudio" ,pulseaudio) ; ecore-audio.pc, ecore-audio-cxx.pc
("util-linux" ,util-linux) ; eeze.pc ("util-linux" ,util-linux) ; mount: eeze.pc
("zlib" ,zlib))) ; eet.pc, eet-cxx.pc, emile.pc ("zlib" ,zlib))) ; eet.pc, eet-cxx.pc, emile.pc
(arguments (arguments
`(#:configure-flags '("--disable-silent-rules" `(#:configure-flags '("--disable-silent-rules"
"--disable-systemd"
"--enable-liblz4" "--enable-liblz4"
"--enable-xinput22" "--enable-xinput22"
"--enable-image-loader-webp" "--enable-image-loader-webp"
"--enable-multisense" "--enable-multisense"
"--with-opengl=es" "--with-opengl=es"
"--enable-egl" "--enable-egl"
"--enable-harfbuzz"))) "--enable-harfbuzz")
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'set-home-directory
;; FATAL: Cannot create run dir '/homeless-shelter/.run' - errno=2
(lambda _ (setenv "HOME" "/tmp") #t)))))
(home-page "https://www.enlightenment.org/about-efl") (home-page "https://www.enlightenment.org/about-efl")
(synopsis "Enlightenment Foundation Libraries") (synopsis "Enlightenment Foundation Libraries")
(description (description
@ -157,6 +163,12 @@ (define-public terminology
(base32 (base32
"1x4j2q4qqj10ckbka0zaq2r2zm66ff1x791kp8slv1ff7fw45vdz")))) "1x4j2q4qqj10ckbka0zaq2r2zm66ff1x791kp8slv1ff7fw45vdz"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments
'(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'set-home-directory
;; FATAL: Cannot create run dir '/homeless-shelter/.run' - errno=2
(lambda _ (setenv "HOME" "/tmp") #t)))))
(native-inputs (native-inputs
`(("pkg-config" ,pkg-config))) `(("pkg-config" ,pkg-config)))
(inputs (inputs
@ -184,6 +196,12 @@ (define-public rage
(base32 (base32
"06kbgcnbhl9clhdl7k983m4d0n6ggsl4qvizzi1nrp8c7np87fix")))) "06kbgcnbhl9clhdl7k983m4d0n6ggsl4qvizzi1nrp8c7np87fix"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments
'(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'set-home-directory
;; FATAL: Cannot create run dir '/homeless-shelter/.run' - errno=2
(lambda _ (setenv "HOME" "/tmp") #t)))))
(native-inputs (native-inputs
`(("pkg-config" ,pkg-config))) `(("pkg-config" ,pkg-config)))
(inputs (inputs
@ -198,7 +216,7 @@ (define-public rage
(define-public enlightenment (define-public enlightenment
(package (package
(name "enlightenment") (name "enlightenment")
(version "0.21.7") (version "0.21.8")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (uri
@ -206,25 +224,34 @@ (define-public enlightenment
name "/" name "-" version ".tar.xz")) name "/" name "-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"1xvngjdsa0p901vfhrh2qpa50k32hwwhc8bgi16a9b5d9byzfhvn")))) "0cjjiip12hd8bfjl9ccl3vzl81pxh1wpymxk2yvrzf6ap5girhps"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:configure-flags '("--enable-mount-eeze") `(#:configure-flags '("--enable-mount-eeze")
#:phases #:phases
(modify-phases %standard-phases (modify-phases %standard-phases
(add-before 'configure 'fix-keyboard (add-before 'configure 'set-system-actions
(lambda _ (lambda* (#:key inputs #:allow-other-keys)
(let ((xkeyboard (assoc-ref %build-inputs "xkeyboard-config"))) (let ((xkeyboard (assoc-ref inputs "xkeyboard-config"))
(utils (assoc-ref inputs "util-linux")))
;; We need to patch the path to 'base.lst' to be able ;; We need to patch the path to 'base.lst' to be able
;; to switch the keyboard layout in E. ;; to switch the keyboard layout in E.
(substitute* "src/modules/xkbswitch/e_mod_parse.c" (substitute* "src/modules/xkbswitch/e_mod_parse.c"
(("/usr/share/X11/xkb/rules/xorg.lst") (("/usr/share/X11/xkb/rules/xorg.lst")
(string-append xkeyboard (string-append xkeyboard
"/share/X11/xkb/rules/base.lst"))) "/share/X11/xkb/rules/base.lst")))
(substitute* "configure"
(("/bin/mount") (string-append utils "/bin/mount"))
(("/bin/umount") (string-append utils "/bin/umount"))
(("/usr/bin/eject") (string-append utils "/bin/eject"))
; TODO: Replace suspend and hibernate also.
(("/sbin/shutdown -h now") "/run/current-system/profile/sbin/halt")
(("/sbin/shutdown -r now") "/run/current-system/profile/sbin/reboot"))
#t)))))) #t))))))
(native-inputs (native-inputs
`(("gettext" ,gettext-minimal) `(("gettext" ,gettext-minimal)
("pkg-config" ,pkg-config))) ("pkg-config" ,pkg-config)
("util-linux" ,util-linux)))
(inputs (inputs
`(("alsa-lib" ,alsa-lib) `(("alsa-lib" ,alsa-lib)
("dbus" ,dbus) ("dbus" ,dbus)
@ -247,14 +274,14 @@ (define-public enlightenment
(define-public python-efl (define-public python-efl
(package (package
(name "python-efl") (name "python-efl")
(version "1.18.0") (version "1.19.0")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (pypi-uri "python-efl" version)) (uri (pypi-uri "python-efl" version))
(sha256 (sha256
(base32 (base32
"0x49rb7mx7ysjp23m919r2rx8qnl4xackhl9s9x2697m7cs77n1r")))) "0l0f9bv1134qh5376p5asycncidrhp8hdb6qwd8ybr1a61q9zq67"))))
(build-system python-build-system) (build-system python-build-system)
(arguments (arguments
'(#:phases '(#:phases
@ -297,7 +324,7 @@ (define-public python2-efl
(define-public edi (define-public edi
(package (package
(name "edi") (name "edi")
(version "0.4.0") (version "0.5.0")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -305,9 +332,15 @@ (define-public edi
"download/v" version "/edi-" version ".tar.bz2")) "download/v" version "/edi-" version ".tar.bz2"))
(sha256 (sha256
(base32 (base32
"0qczz5psryxasphg5km95845h510237rf0k1dy8f0dad52ii90j1")))) "1l90x1bw82a0df6r11wd55qizhi99gg0qcljwxga606ahy6ycnkn"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments '(#:configure-flags '("--with-tests=coverage"))) (arguments
'(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'set-home-directory
;; FATAL: Cannot create run dir '/homeless-shelter/.run' - errno=2
(lambda _ (setenv "HOME" "/tmp") #t)))
#:configure-flags '("--with-tests=coverage")))
(native-inputs (native-inputs
`(("check" ,check) `(("check" ,check)
("lcov" ,lcov) ("lcov" ,lcov)

View file

@ -49,7 +49,7 @@ (define-module (gnu packages finance)
(define-public bitcoin-core (define-public bitcoin-core
(package (package
(name "bitcoin-core") (name "bitcoin-core")
(version "0.14.1") (version "0.14.2")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (uri
@ -57,7 +57,7 @@ (define-public bitcoin-core
version "/bitcoin-" version ".tar.gz")) version "/bitcoin-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"18zrsinlwkj4q5bj2hzswbhswkvd0sdfi6skfwqwwk85gzh064pj")))) "1jp8vdc25gs46gj1d9mraqa1xnampffpa7mdy0fw80xca77fbi0s"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs (native-inputs
`(("pkg-config" ,pkg-config) `(("pkg-config" ,pkg-config)

View file

@ -6291,7 +6291,11 @@ (define-public gnome-planner
;; Disable the Python bindings because the Planner program functions ;; Disable the Python bindings because the Planner program functions
;; without them, and (as of 2017-06-13) we have not packaged all of ;; without them, and (as of 2017-06-13) we have not packaged all of
;; packages that are necessary for building the Python bindings. ;; packages that are necessary for building the Python bindings.
`(#:configure-flags (list "--disable-python"))) `(#:configure-flags
(list "--disable-python"
,@(if (string=? "aarch64-linux" (%current-system))
'("--build=aarch64-unknown-linux-gnu")
'()))))
(inputs (inputs
`(("libgnomecanvas" ,libgnomecanvas) `(("libgnomecanvas" ,libgnomecanvas)
("libgnomeui" ,libgnomeui) ("libgnomeui" ,libgnomeui)

View file

@ -239,7 +239,7 @@ (define-public guile-2.2
(snippet '(for-each delete-file (snippet '(for-each delete-file
(find-files "prebuilt" "\\.go$"))))) (find-files "prebuilt" "\\.go$")))))
(properties '((timeout . 72000) ;20 hours (properties '((timeout . 72000) ;20 hours
(max-silent-time . 21600))) ;6 hours (needed on ARM (max-silent-time . 36000))) ;10 hours (needed on ARM
; when heavily loaded) ; when heavily loaded)
(native-search-paths (native-search-paths
(list (search-path-specification (list (search-path-specification

View file

@ -365,19 +365,49 @@ (define-public linux-libre
(make-linux-libre %linux-libre-version (make-linux-libre %linux-libre-version
%linux-libre-hash %linux-libre-hash
%intel-compatible-systems %intel-compatible-systems
#:configuration-file kernel-config)) #:configuration-file kernel-config
#:patches
(list %boot-logo-patch
(origin
(method url-fetch)
(uri "\
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git/patch/?id=167ec8235f978d7af78c73e9490dae1af3fee67f")
(file-name "linux-libre-4.11-CVE-2017-1000364.patch")
(sha256
(base32
"0hv3lxjgpssvsldkydg5q7znnzxv5ncpzrk6g11q01k3gkl0q689"))))))
(define-public linux-libre-4.9 (define-public linux-libre-4.9
(make-linux-libre "4.9.33" (make-linux-libre "4.9.33"
"1dam6vqymhlx1vsl0lzxphamiifgyf97snxg18b2czqq402nz094" "1dam6vqymhlx1vsl0lzxphamiifgyf97snxg18b2czqq402nz094"
%intel-compatible-systems %intel-compatible-systems
#:configuration-file kernel-config)) #:configuration-file kernel-config
#:patches
(list %boot-logo-patch
(origin
(method url-fetch)
(uri "\
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git/patch/?id=37c40b6777f0bc8a63f616479c469b371097f333")
(file-name "linux-libre-4.9-CVE-2017-1000364.patch")
(sha256
(base32
"0zhnh8ysiqldxlnd50bjrxagzx29kc8nlajdrikii2x2ibkbfb4i"))))))
(define-public linux-libre-4.4 (define-public linux-libre-4.4
(make-linux-libre "4.4.73" (make-linux-libre "4.4.73"
"144ssqw1dr86z4cgl797pq5rggfibsxqk7wmfbl6j92l1cj6yjrz" "144ssqw1dr86z4cgl797pq5rggfibsxqk7wmfbl6j92l1cj6yjrz"
%intel-compatible-systems %intel-compatible-systems
#:configuration-file kernel-config)) #:configuration-file kernel-config
#:patches
(list %boot-logo-patch
(origin
(method url-fetch)
(uri "\
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git/patch/?id=87422f5b9b4f43efef4eaf37d7d040aed96500cb")
(file-name "linux-libre-4.4-CVE-2017-1000364.patch")
(sha256
(base32
"137p1cpiwlbvw4x12w1l23iy593xmdry60kd7j9kk690r9arfagw"))))))
(define-public linux-libre-4.1 (define-public linux-libre-4.1
(make-linux-libre "4.1.41" (make-linux-libre "4.1.41"

View file

@ -996,7 +996,7 @@ (define-public msmtp
(define-public exim (define-public exim
(package (package
(name "exim") (name "exim")
(version "4.87.1") (version "4.89")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -1004,9 +1004,10 @@ (define-public exim
version ".tar.bz2") version ".tar.bz2")
(string-append "ftp://ftp.exim.org/pub/exim/exim4/old/exim-" (string-append "ftp://ftp.exim.org/pub/exim/exim4/old/exim-"
version ".tar.bz2"))) version ".tar.bz2")))
(patches (search-patches "exim-CVE-2017-1000369.patch"))
(sha256 (sha256
(base32 (base32
"050m2gjzpc6vyik458h1j0vi8bxplkzjsyndkyd2y394i569kdyl")))) "1c0syp7yxngmq7y8vqsrvijinzin5m941vn0ljihdfld7kh2wbwi"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs (inputs
`(("bdb" ,bdb) `(("bdb" ,bdb)

View file

@ -317,7 +317,7 @@ (define-public ocaml4.01-gsl
(define-public glpk (define-public glpk
(package (package
(name "glpk") (name "glpk")
(version "4.61") (version "4.62")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -325,7 +325,7 @@ (define-public glpk
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1adbvwiaqrv9pql9ry3lhn2vfsxnff2vh4fs477d90kpfx0xwrlq")))) "0w7s3869ybwyq9a4490dikpib1qp3jnn5nqz1vvwqy1qz3ilnvh9"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs (inputs
`(("gmp" ,gmp))) `(("gmp" ,gmp)))

View file

@ -2,7 +2,7 @@
;;; Copyright © 2014, 2017 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015, 2016 Stefan Reichör <stefan@xsteve.at> ;;; Copyright © 2015, 2016, 2017 Stefan Reichör <stefan@xsteve.at>
;;; Copyright © 2016 Raimon Grau <raimonster@gmail.com> ;;; Copyright © 2016 Raimon Grau <raimonster@gmail.com>
;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2016 John Darrington <jmd@gnu.org> ;;; Copyright © 2016 John Darrington <jmd@gnu.org>
@ -474,7 +474,7 @@ (define-public whois
(define-public wireshark (define-public wireshark
(package (package
(name "wireshark") (name "wireshark")
(version "2.2.6") (version "2.2.7")
(synopsis "Network traffic analyzer") (synopsis "Network traffic analyzer")
(source (source
(origin (origin
@ -483,7 +483,7 @@ (define-public wireshark
version ".tar.bz2")) version ".tar.bz2"))
(sha256 (sha256
(base32 (base32
"0jd89i9si43lyv3hsl6p1lkjmz4zagvc37wcbigsxxc5v8gda9zn")))) "1dfvhra5v6xhzbp097qsxi0zvirw0srbasl4v1wjf58v49idz7b8"))))
(build-system glib-or-gtk-build-system) (build-system glib-or-gtk-build-system)
(inputs `(("bison" ,bison) (inputs `(("bison" ,bison)
("c-ares" ,c-ares) ("c-ares" ,c-ares)
@ -522,6 +522,31 @@ (define-public wireshark
(license license:gpl2+) (license license:gpl2+)
(home-page "https://www.wireshark.org/"))) (home-page "https://www.wireshark.org/")))
(define-public fping
(package
(name "fping")
(version "4.0")
(source
(origin
(method url-fetch)
(uri (string-append "https://fping.org/dist/fping-"
version ".tar.gz"))
(sha256
(base32
"1kp81wchi79l8z8rrj602fpjrd8bi84y3i7fsaclzlwap5943sv7"))))
(build-system gnu-build-system)
(home-page "http://fping.org/")
(synopsis "Send ICMP ECHO_REQUEST packets to network hosts")
(description
"fping is a ping like program which uses the Internet Control Message
Protocol (ICMP) echo request to determine if a target host is responding.
fping differs from ping in that you can specify any number of targets on the
command line, or specify a file containing the lists of targets to ping.
Instead of sending to one target until it times out or replies, fping will
send out a ping packet and move on to the next target in a round-robin
fashion.")
(license license:expat)))
(define-public httping (define-public httping
(package (package
(name "httping") (name "httping")

View file

@ -0,0 +1,59 @@
Fix CVE-2017-1000369:
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-1000369
https://www.qualys.com/2017/06/19/stack-clash/stack-clash.txt
Patch adapted from upstream source repository:
https://git.exim.org/exim.git/commit/65e061b76867a9ea7aeeb535341b790b90ae6c21
From 65e061b76867a9ea7aeeb535341b790b90ae6c21 Mon Sep 17 00:00:00 2001
From: "Heiko Schlittermann (HS12-RIPE)" <hs@schlittermann.de>
Date: Wed, 31 May 2017 23:08:56 +0200
Subject: [PATCH] Cleanup (prevent repeated use of -p/-oMr to avoid mem leak)
---
doc/doc-docbook/spec.xfpt | 3 ++-
src/src/exim.c | 19 +++++++++++++++++--
2 files changed, 19 insertions(+), 3 deletions(-)
diff --git a/src/src/exim.c b/src/src/exim.c
index 67583e58..88e11977 100644
--- a/src/exim.c
+++ b/src/exim.c
@@ -3106,7 +3106,14 @@ for (i = 1; i < argc; i++)
/* -oMr: Received protocol */
- else if (Ustrcmp(argrest, "Mr") == 0) received_protocol = argv[++i];
+ else if (Ustrcmp(argrest, "Mr") == 0)
+
+ if (received_protocol)
+ {
+ fprintf(stderr, "received_protocol is set already\n");
+ exit(EXIT_FAILURE);
+ }
+ else received_protocol = argv[++i];
/* -oMs: Set sender host name */
@@ -3202,7 +3209,15 @@ for (i = 1; i < argc; i++)
if (*argrest != 0)
{
- uschar *hn = Ustrchr(argrest, ':');
+ uschar *hn;
+
+ if (received_protocol)
+ {
+ fprintf(stderr, "received_protocol is set already\n");
+ exit(EXIT_FAILURE);
+ }
+
+ hn = Ustrchr(argrest, ':');
if (hn == NULL)
{
received_protocol = argrest;
--
2.13.1

View file

@ -1,55 +0,0 @@
Fix CVE-2017-8798.
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-8798
http://seclists.org/oss-sec/2017/q2/247
Patch copied from upstream source repository, with Changelog entry removed:
https://github.com/miniupnp/miniupnp/commit/f0f1f4b22d6a98536377a1bb07e7c20e4703d229
diff --git a/miniwget.c b/miniwget.c
index 37cb47b..1eda57c 100644
--- a/miniwget.c
+++ b/miniwget.c
@@ -284,11 +284,12 @@ getHTTPResponse(int s, int * size, int * status_code)
goto end_of_stream;
}
}
- bytestocopy = ((int)chunksize < (n - i))?chunksize:(unsigned int)(n - i);
+ /* it is guaranteed that (n >= i) */
+ bytestocopy = (chunksize < (unsigned int)(n - i))?chunksize:(unsigned int)(n - i);
if((content_buf_used + bytestocopy) > content_buf_len)
{
char * tmp;
- if(content_length >= (int)(content_buf_used + bytestocopy)) {
+ if((content_length >= 0) && ((unsigned int)content_length >= (content_buf_used + bytestocopy))) {
content_buf_len = content_length;
} else {
content_buf_len = content_buf_used + bytestocopy;
@@ -313,14 +314,15 @@ getHTTPResponse(int s, int * size, int * status_code)
{
/* not chunked */
if(content_length > 0
- && (int)(content_buf_used + n) > content_length) {
+ && (content_buf_used + n) > (unsigned int)content_length) {
/* skipping additional bytes */
n = content_length - content_buf_used;
}
if(content_buf_used + n > content_buf_len)
{
char * tmp;
- if(content_length >= (int)(content_buf_used + n)) {
+ if(content_length >= 0
+ && (unsigned int)content_length >= (content_buf_used + n)) {
content_buf_len = content_length;
} else {
content_buf_len = content_buf_used + n;
@@ -340,7 +342,7 @@ getHTTPResponse(int s, int * size, int * status_code)
}
}
/* use the Content-Length header value if available */
- if(content_length > 0 && (int)content_buf_used >= content_length)
+ if(content_length > 0 && content_buf_used >= (unsigned int)content_length)
{
#ifdef DEBUG
printf("End of HTTP content\n");

View file

@ -925,6 +925,24 @@ (define-public python-mock
(define-public python2-mock (define-public python2-mock
(package-with-python2 python-mock)) (package-with-python2 python-mock))
;;; Some packages (notably, certbot and python-acme) rely on this newer version
;;; of python-mock. However, a large number of packages fail to build with
;;; mock@2, so we add a new variable for now. Also, there may be a dependency
;;; cycle between mock and six, so we avoid creating python2-mock@2 for now.
(define-public python-mock-2
(package
(inherit python-mock)
(version "2.0.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "mock" version))
(sha256
(base32
"1flbpksir5sqrvq2z0dp8sl4bzbadg21sj4d42w3klpdfvgvcn5i"))))
(propagated-inputs
`(("python-pbr" ,python-pbr-minimal)
,@(package-propagated-inputs python-mock)))))
(define-public python-setuptools (define-public python-setuptools
(package (package
@ -15382,3 +15400,26 @@ (define-public python-apache-libcloud
(define-public python2-apache-libcloud (define-public python2-apache-libcloud
(package-with-python2 python-apache-libcloud)) (package-with-python2 python-apache-libcloud))
(define-public python-smmap2
(package
(name "python-smmap2")
(version "2.0.3")
(source
(origin
(method url-fetch)
(uri (pypi-uri "smmap2" version))
(sha256
(base32
"1hvn28p3zvxa98sbi9lrqvv2ps4q284j4jq9a619zw0m7yv0sly7"))))
(build-system python-build-system)
(native-inputs
`(("python-nosexcover" ,python-nosexcover)))
(home-page "https://github.com/Byron/smmap")
(synopsis "Python sliding window memory map manager")
(description "@code{smmap2} is a pure Python implementation of a sliding
window memory map manager.")
(license license:bsd-3)))
(define-public python2-smmap2
(package-with-python2 python-smmap2))

View file

@ -93,15 +93,15 @@ (define-public libyubikey
(define-public pcsc-lite (define-public pcsc-lite
(package (package
(name "pcsc-lite") (name "pcsc-lite")
(version "1.8.21") (version "1.8.22")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
"https://alioth.debian.org/frs/download.php/file/4216/" "https://alioth.debian.org/frs/download.php/file/4225/"
"pcsc-lite-" version ".tar.bz2")) "pcsc-lite-" version ".tar.bz2"))
(sha256 (sha256
(base32 (base32
"1b8kwl81f6s3y7qh68ahr8sp8a0w6m464v9b3s4zxq2cgpmnaczy")))) "01flkdyqs7kr6c63dv2qg8dwir3v9jlr9rzlw7vafrivxmhqydba"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:configure-flags '("--enable-usbdropdir=/var/lib/pcsc/drivers"))) `(#:configure-flags '("--enable-usbdropdir=/var/lib/pcsc/drivers")))

View file

@ -172,7 +172,7 @@ (define-public fish-guix
#:phases #:phases
(modify-phases %standard-phases (modify-phases %standard-phases
(delete 'configure)))) ; No configure script. (delete 'configure)))) ; No configure script.
(home-page "https://pragmatique.xyz/software/fish-guix.html") (home-page "https://www.infotropique.org/projects/fish-guix/")
(synopsis "Fish completions for Guix") (synopsis "Fish completions for Guix")
(description (description
"Fish-guix provides completions for Guix for users of the fish shell.") "Fish-guix provides completions for Guix for users of the fish shell.")

View file

@ -195,7 +195,7 @@ (define-public texlive-dvips
(revision %texlive-revision))) (revision %texlive-revision)))
(sha256 (sha256
(base32 (base32
"1k11yvz4q95bxyxczwvd4r177h6a2gg03xmf51kmgjgz8an2gq2w")))) "0fcy2hpapbj01ncpjj3v39yhr0jjxb6rm13qaxjjw66s3vydxls1"))))
(build-system trivial-build-system) (build-system trivial-build-system)
(arguments (arguments
`(#:modules ((guix build utils)) `(#:modules ((guix build utils))
@ -650,7 +650,7 @@ (define-public texlive-tex-plain
(revision %texlive-revision))) (revision %texlive-revision)))
(sha256 (sha256
(base32 (base32
"1ifmbyl3ir8k0v1g25xjb5rcyy5vhj8a3fa2088nczga09hna5vn")))) "0mjgl3gscn3ps29yjambz1j9fg81ynnncb96vpprwx4xsijhsns0"))))
(build-system trivial-build-system) (build-system trivial-build-system)
(arguments (arguments
`(#:modules ((guix build utils)) `(#:modules ((guix build utils))
@ -835,7 +835,7 @@ (define-public texlive-latex-filecontents
(define-public texlive-generic-ifxetex (define-public texlive-generic-ifxetex
(package (package
(name "texlive-generic-ifxetex") (name "texlive-generic-ifxetex")
(version "0.6") (version (number->string %texlive-revision))
(source (origin (source (origin
(method svn-fetch) (method svn-fetch)
(uri (texlive-ref "generic" "ifxetex")) (uri (texlive-ref "generic" "ifxetex"))
@ -892,7 +892,7 @@ (define-public texlive-latex-graphics
(uri (texlive-ref "latex" "graphics")) (uri (texlive-ref "latex" "graphics"))
(sha256 (sha256
(base32 (base32
"17ka701xr9nqsjlhz30hphr8d9j4zzwgv5zl5r2f118yzqh9c34v")))) "07azyn0b1s49vbdlr6dmygrminxp72ndl24j1091hiiccvrjq3xc"))))
(build-system texlive-build-system) (build-system texlive-build-system)
(arguments (arguments
'(#:tex-directory "latex/graphics" '(#:tex-directory "latex/graphics"
@ -1101,7 +1101,7 @@ (define-public texlive-latex-l3kernel
(uri (texlive-ref "latex" "l3kernel")) (uri (texlive-ref "latex" "l3kernel"))
(sha256 (sha256
(base32 (base32
"0ndqw0flhl20f4ny5lssp8rqpnj5kglyg59whbdrxbh2zc7w7j0b")))) "0r0wfk594j8wkdqhh21haimwsfq8x5jch4ldm21hkzk5dnmvpbg6"))))
(build-system texlive-build-system) (build-system texlive-build-system)
(arguments (arguments
'(#:tex-directory "latex/l3kernel")) '(#:tex-directory "latex/l3kernel"))
@ -1124,7 +1124,7 @@ (define-public texlive-latex-l3packages
(uri (texlive-ref "latex" "l3packages")) (uri (texlive-ref "latex" "l3packages"))
(sha256 (sha256
(base32 (base32
"1p1y9my6ccmp2ab91fzqqgih8ifrk4y3wyh397kagiq9f6a6v91f")))) "16jplkvzdysfssijq9l051nsks65c2nrarsl17k8gjhc28yznj8y"))))
(build-system texlive-build-system) (build-system texlive-build-system)
(arguments (arguments
'(#:tex-directory "latex/l3packages" '(#:tex-directory "latex/l3packages"

View file

@ -498,7 +498,7 @@ (define-public python-acme
#t)))))) #t))))))
;; TODO: Add optional inputs for testing. ;; TODO: Add optional inputs for testing.
(native-inputs (native-inputs
`(("python-mock" ,python-mock) `(("python-mock" ,python-mock-2)
;; For documentation ;; For documentation
("python-sphinx" ,python-sphinx) ("python-sphinx" ,python-sphinx)
("python-sphinxcontrib-programoutput" ,python-sphinxcontrib-programoutput) ("python-sphinxcontrib-programoutput" ,python-sphinxcontrib-programoutput)
@ -534,8 +534,7 @@ (define-public certbot
"1srvmjxz75dbafx7xfg1w3n9h3srr9p2ljnfsih9dwwd5cxh9i5q")))) "1srvmjxz75dbafx7xfg1w3n9h3srr9p2ljnfsih9dwwd5cxh9i5q"))))
(build-system python-build-system) (build-system python-build-system)
(arguments (arguments
`(#:python ,python-2 `(,@(substitute-keyword-arguments (package-arguments python-acme)
,@(substitute-keyword-arguments (package-arguments python-acme)
((#:phases phases) ((#:phases phases)
`(modify-phases ,phases `(modify-phases ,phases
(replace 'install-documentation (replace 'install-documentation
@ -550,27 +549,27 @@ (define-public certbot
#t)))))))) #t))))))))
;; TODO: Add optional inputs for testing. ;; TODO: Add optional inputs for testing.
(native-inputs (native-inputs
`(("python2-nose" ,python2-nose) `(("python-nose" ,python-nose)
("python2-mock" ,python2-mock) ("python-mock" ,python-mock-2)
;; For documentation ;; For documentation
("python2-sphinx" ,python2-sphinx) ("python-sphinx" ,python-sphinx)
("python2-sphinx-rtd-theme" ,python2-sphinx-rtd-theme) ("python-sphinx-rtd-theme" ,python-sphinx-rtd-theme)
("python2-sphinx-repoze-autointerface" ,python2-sphinx-repoze-autointerface) ("python-sphinx-repoze-autointerface" ,python-sphinx-repoze-autointerface)
("python2-sphinxcontrib-programoutput" ,python2-sphinxcontrib-programoutput) ("python-sphinxcontrib-programoutput" ,python-sphinxcontrib-programoutput)
("texinfo" ,texinfo))) ("texinfo" ,texinfo)))
(propagated-inputs (propagated-inputs
`(("python2-acme" ,python2-acme) `(("python-acme" ,python-acme)
("python2-zope-interface" ,python2-zope-interface) ("python-zope-interface" ,python-zope-interface)
("python2-pyrfc3339" ,python2-pyrfc3339) ("python-pyrfc3339" ,python-pyrfc3339)
("python2-pyopenssl" ,python2-pyopenssl) ("python-pyopenssl" ,python-pyopenssl)
("python2-configobj" ,python2-configobj) ("python-configobj" ,python-configobj)
("python2-configargparse" ,python2-configargparse) ("python-configargparse" ,python-configargparse)
("python2-zope-component" ,python2-zope-component) ("python-zope-component" ,python-zope-component)
("python2-parsedatetime" ,python2-parsedatetime) ("python-parsedatetime" ,python-parsedatetime)
("python2-six" ,python2-six) ("python-six" ,python-six)
("python2-psutil" ,python2-psutil) ("python-psutil" ,python-psutil)
("python2-requests" ,python2-requests) ("python-requests" ,python-requests)
("python2-pytz" ,python2-pytz))) ("python-pytz" ,python-pytz)))
(synopsis "Let's Encrypt client by the Electronic Frontier Foundation") (synopsis "Let's Encrypt client by the Electronic Frontier Foundation")
(description "Certbot automatically receives and installs X.509 certificates (description "Certbot automatically receives and installs X.509 certificates
to enable Transport Layer Security (TLS) on servers. It interoperates with the to enable Transport Layer Security (TLS) on servers. It interoperates with the

View file

@ -28,15 +28,14 @@ (define-module (gnu packages upnp)
(define-public miniupnpc (define-public miniupnpc
(package (package
(name "miniupnpc") (name "miniupnpc")
(version "2.0.20170421") (version "2.0.20170509")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://miniupnp.tuxfamily.org/files/" (uri (string-append "https://miniupnp.tuxfamily.org/files/"
name "-" version ".tar.gz")) name "-" version ".tar.gz"))
(patches (search-patches "miniupnpc-CVE-2017-8798.patch"))
(sha256 (sha256
(base32 "0n11m2wq812zms5b21h8ihw1kbyaihj9nqjiida0hskf4dmw4m13")))) (base32 "0spi75q6nafxp3ndnrhrlqagzmjlp8wwlr5x7rnvdpswgxi6ihyk"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs (native-inputs
`(("python" ,python-2))) `(("python" ,python-2)))

View file

@ -186,12 +186,16 @@ (define-public git
,@%gnu-build-system-modules) ,@%gnu-build-system-modules)
#:phases #:phases
(modify-phases %standard-phases (modify-phases %standard-phases
(add-after 'configure 'patch-makefile-shebangs (add-after 'configure 'patch-makefiles
(lambda _ (lambda _
(substitute* "Makefile" (substitute* "Makefile"
(("/bin/sh") (which "sh")) (("/bin/sh") (which "sh"))
(("/usr/bin/perl") (which "perl")) (("/usr/bin/perl") (which "perl"))
(("/usr/bin/python") (which "python"))))) (("/usr/bin/python") (which "python")))
(substitute* "perl/Makefile"
;; Don't create timestamped 'perllocal.pod'.
(("\\$< PREFIX=") "$< NO_PERLLOCAL=1 PREFIX="))
#t))
(add-after 'configure 'add-PM.stamp (add-after 'configure 'add-PM.stamp
(lambda _ (lambda _
;; Add the "PM.stamp" to avoid "no rule to make target". ;; Add the "PM.stamp" to avoid "no rule to make target".
@ -816,6 +820,7 @@ (define-public subversion
"subversion/bindings/swig/perl/native" "subversion/bindings/swig/perl/native"
(and (zero? (and (zero?
(system* "perl" "Makefile.PL" (system* "perl" "Makefile.PL"
"NO_PERLLOCAL=1"
(string-append "PREFIX=" out))) (string-append "PREFIX=" out)))
(zero? (zero?
(system* "make" "install" (system* "make" "install"

View file

@ -1144,7 +1144,7 @@ (define-public you-get
(define-public libbluray (define-public libbluray
(package (package
(name "libbluray") (name "libbluray")
(version "1.0.0") (version "1.0.1")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://download.videolan.org/videolan/" (uri (string-append "https://download.videolan.org/videolan/"
@ -1152,10 +1152,10 @@ (define-public libbluray
name "-" version ".tar.bz2")) name "-" version ".tar.bz2"))
(sha256 (sha256
(base32 (base32
"1k3lag4lxi2jjd3zh4wcb5l3hadzm54j5kagh92yzfy76p9svqzp")))) "0fl5cxfj870rwqmmz3s04wh7wnabb7rnynfj1v3sz37ln8frm7qg"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:configure-flags '("--disable-bdjava") `(#:configure-flags '("--disable-bdjava-jar")
#:phases #:phases
(modify-phases %standard-phases (modify-phases %standard-phases
(add-before 'build 'fix-dlopen-paths (add-before 'build 'fix-dlopen-paths

View file

@ -94,14 +94,14 @@ (define-module (gnu packages web)
(define-public httpd (define-public httpd
(package (package
(name "httpd") (name "httpd")
(version "2.4.25") (version "2.4.26")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://apache/httpd/httpd-" (uri (string-append "mirror://apache/httpd/httpd-"
version ".tar.bz2")) version ".tar.bz2"))
(sha256 (sha256
(base32 (base32
"1cl0bkqg6srb1sypga0cn8dcmdyxldavij73zmmkxvlz3kgw4zpq")))) "11ykcfv7b9zpd7fb93a7yhnyfwrilryjz21iklaf0yf8mwpvazm0"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs `(("pcre" ,pcre "bin"))) ;for 'pcre-config' (native-inputs `(("pcre" ,pcre "bin"))) ;for 'pcre-config'
(inputs `(("apr" ,apr) (inputs `(("apr" ,apr)

View file

@ -40,8 +40,8 @@ (define-module (guix build-system texlive)
;; Code: ;; Code:
;; These variables specify the SVN tag and the matching SVN revision. ;; These variables specify the SVN tag and the matching SVN revision.
(define %texlive-tag "texlive-2017.0") (define %texlive-tag "texlive-2017.1")
(define %texlive-revision 44445) (define %texlive-revision 44591)
(define (texlive-ref component id) (define (texlive-ref component id)
"Return a <svn-reference> object for the package ID, which is part of the "Return a <svn-reference> object for the package ID, which is part of the

View file

@ -322,12 +322,16 @@ (define-syntax read-arg
(define-record-type <nix-server> (define-record-type <nix-server>
(%make-nix-server socket major minor (%make-nix-server socket major minor
buffer flush
ats-cache atts-cache) ats-cache atts-cache)
nix-server? nix-server?
(socket nix-server-socket) (socket nix-server-socket)
(major nix-server-major-version) (major nix-server-major-version)
(minor nix-server-minor-version) (minor nix-server-minor-version)
(buffer nix-server-output-port) ;output port
(flush nix-server-flush-output) ;thunk
;; Caches. We keep them per-connection, because store paths build ;; Caches. We keep them per-connection, because store paths build
;; during the session are temporary GC roots kept for the duration of ;; during the session are temporary GC roots kept for the duration of
;; the session. ;; the session.
@ -481,7 +485,11 @@ (define* (open-connection #:optional (uri (%daemon-socket-uri))
(&nix-connection-error (file (or port uri)) (&nix-connection-error (file (or port uri))
(errno EPROTO)) (errno EPROTO))
(&message (message "build daemon handshake failed")))))) (&message (message "build daemon handshake failed"))))))
(let ((port (or port (connect-to-daemon uri)))) (let*-values (((port)
(or port (connect-to-daemon uri)))
((output flush)
(buffering-output-port port
(make-bytevector 8192))))
(write-int %worker-magic-1 port) (write-int %worker-magic-1 port)
(let ((r (read-int port))) (let ((r (read-int port)))
(and (eqv? r %worker-magic-2) (and (eqv? r %worker-magic-2)
@ -499,12 +507,18 @@ (define* (open-connection #:optional (uri (%daemon-socket-uri))
(let ((conn (%make-nix-server port (let ((conn (%make-nix-server port
(protocol-major v) (protocol-major v)
(protocol-minor v) (protocol-minor v)
output flush
(make-hash-table 100) (make-hash-table 100)
(make-hash-table 100)))) (make-hash-table 100))))
(let loop ((done? (process-stderr conn))) (let loop ((done? (process-stderr conn)))
(or done? (process-stderr conn))) (or done? (process-stderr conn)))
conn))))))))) conn)))))))))
(define (write-buffered-output server)
"Flush SERVER's output port."
(force-output (nix-server-output-port server))
((nix-server-flush-output server)))
(define (close-connection server) (define (close-connection server)
"Close the connection to SERVER." "Close the connection to SERVER."
(close (nix-server-socket server))) (close (nix-server-socket server)))
@ -718,6 +732,44 @@ (define socket
(let loop ((done? (process-stderr server))) (let loop ((done? (process-stderr server)))
(or done? (process-stderr server))))) (or done? (process-stderr server)))))
(define (buffering-output-port port buffer)
"Return two value: an output port wrapped around PORT that uses BUFFER (a
bytevector) as its internal buffer, and a thunk to flush this output port."
;; Note: In Guile 2.2.2, custom binary output ports already have their own
;; 4K internal buffer.
(define size
(bytevector-length buffer))
(define total 0)
(define (flush)
(put-bytevector port buffer 0 total)
(set! total 0))
(define (write bv offset count)
(if (zero? count) ;end of file
(flush)
(let loop ((offset offset)
(count count)
(written 0))
(cond ((= total size)
(flush)
(loop offset count written))
((zero? count)
written)
(else
(let ((to-copy (min count (- size total))))
(bytevector-copy! bv offset buffer total to-copy)
(set! total (+ total to-copy))
(loop (+ offset to-copy) (- count to-copy)
(+ written to-copy))))))))
;; Note: We need to return FLUSH because the custom binary port has no way
;; to be notified of a 'force-output' call on itself.
(values (make-custom-binary-output-port "buffering-output-port"
write #f #f flush)
flush))
(define %rpc-calls (define %rpc-calls
;; Mapping from RPC names (symbols) to invocation counts. ;; Mapping from RPC names (symbols) to invocation counts.
(make-hash-table)) (make-hash-table))
@ -755,11 +807,14 @@ (define-syntax operation
((_ (name (type arg) ...) docstring return ...) ((_ (name (type arg) ...) docstring return ...)
(lambda (server arg ...) (lambda (server arg ...)
docstring docstring
(let ((s (nix-server-socket server))) (let* ((s (nix-server-socket server))
(buffered (nix-server-output-port server)))
(record-operation 'name) (record-operation 'name)
(write-int (operation-id name) s) (write-int (operation-id name) buffered)
(write-arg type arg s) (write-arg type arg buffered)
... ...
(write-buffered-output server)
;; Loop until the server is done sending error output. ;; Loop until the server is done sending error output.
(let loop ((done? (process-stderr server))) (let loop ((done? (process-stderr server)))
(or done? (loop (process-stderr server)))) (or done? (loop (process-stderr server))))