aboutsummaryrefslogtreecommitdiff
path: root/gnu
diff options
context:
space:
mode:
Diffstat (limited to 'gnu')
-rw-r--r--gnu/local.mk1
-rw-r--r--gnu/packages/dejagnu.scm6
-rw-r--r--gnu/packages/dns.scm4
-rw-r--r--gnu/packages/emacs.scm4
-rw-r--r--gnu/packages/enlightenment.scm8
-rw-r--r--gnu/packages/geo.scm34
-rw-r--r--gnu/packages/glib.scm21
-rw-r--r--gnu/packages/gnome.scm42
-rw-r--r--gnu/packages/image-viewers.scm6
-rw-r--r--gnu/packages/imagemagick.scm6
-rw-r--r--gnu/packages/java.scm701
-rw-r--r--gnu/packages/maths.scm18
-rw-r--r--gnu/packages/patches/java-powermock-fix-java-files.patch178
-rw-r--r--gnu/packages/perl.scm22
-rw-r--r--gnu/packages/tls.scm28
-rw-r--r--gnu/packages/upnp.scm4
-rw-r--r--gnu/packages/version-control.scm6
-rw-r--r--gnu/packages/video.scm11
-rw-r--r--gnu/system/shadow.scm14
-rw-r--r--gnu/tests/ssh.scm28
20 files changed, 1057 insertions, 85 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index 1bd3f55735..01f2f33bea 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -737,6 +737,7 @@ dist_patch_DATA = \
%D%/packages/patches/intltool-perl-compatibility.patch \
%D%/packages/patches/isl-0.11.1-aarch64-support.patch \
%D%/packages/patches/jacal-fix-texinfo.patch \
+ %D%/packages/patches/java-powermock-fix-java-files.patch \
%D%/packages/patches/jbig2dec-ignore-testtest.patch \
%D%/packages/patches/jbig2dec-CVE-2016-9601.patch \
%D%/packages/patches/jbig2dec-CVE-2017-7885.patch \
diff --git a/gnu/packages/dejagnu.scm b/gnu/packages/dejagnu.scm
index ba34e36c6a..05825bad8f 100644
--- a/gnu/packages/dejagnu.scm
+++ b/gnu/packages/dejagnu.scm
@@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2016 Efraim Flashner <efraim@flasher.co.il>
+;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flasher.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -27,7 +27,7 @@
(define-public dejagnu
(package
(name "dejagnu")
- (version "1.6")
+ (version "1.6.1")
(source
(origin
(method url-fetch)
@@ -35,7 +35,7 @@
version ".tar.gz"))
(sha256
(base32
- "0qypaakd2065jgpcv84zcsibl8gph3p334gb2qdmhsrbirhlmdh0"))))
+ "14hnq1mh91vqprc43xdy4f15sycw6fbajrh7zi6cw2kyg6xjhnxz"))))
(build-system gnu-build-system)
(inputs `(("expect" ,expect)))
(arguments
diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm
index e6afc04208..b06cde71b4 100644
--- a/gnu/packages/dns.scm
+++ b/gnu/packages/dns.scm
@@ -483,14 +483,14 @@ Extensions} (DNSSEC).")
(define-public knot
(package
(name "knot")
- (version "2.6.0")
+ (version "2.6.1")
(source (origin
(method url-fetch)
(uri (string-append "https://secure.nic.cz/files/knot-dns/"
name "-" version ".tar.xz"))
(sha256
(base32
- "1zc3ybhcxgbysyy68kbmndh6xzy4jnr5iikyrf9s2sxzs1hlkq38"))
+ "1qs1rqfir0nxi0a0dcg60sbbr99hyxk8y1xd7j7jd13l9idx84rh"))
(modules '((guix build utils)))
(snippet
'(begin
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index ad96093c3f..52103e2edf 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -3966,7 +3966,7 @@ for search-based navigation of buffers.")
(license license:gpl3+)))
(define-public emacs-helm-make
- (let ((commit "786104ac0c3cf4fe5b53f841eb9fe10bda2e4031")
+ (let ((commit "21c1bfa01b16b0d656f2b8a0dbb5bc8d47a7641b")
(revision "1"))
(package
(name "emacs-helm-make")
@@ -3980,7 +3980,7 @@ for search-based navigation of buffers.")
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32
- "0qdfk0p2j8jah7m0ngy2mm7775cn779m3a84yll86wqc74g331qs"))))
+ "11vzrp63zdc67fg4d0y1alk8z9019sqslh2bd7ispk37s86dlbfw"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-helm" ,emacs-helm)
diff --git a/gnu/packages/enlightenment.scm b/gnu/packages/enlightenment.scm
index e1265cfcf7..b4ff4c3ddc 100644
--- a/gnu/packages/enlightenment.scm
+++ b/gnu/packages/enlightenment.scm
@@ -59,7 +59,7 @@
(define-public efl
(package
(name "efl")
- (version "1.20.4")
+ (version "1.20.5")
(source (origin
(method url-fetch)
(uri (string-append
@@ -67,7 +67,7 @@
version ".tar.xz"))
(sha256
(base32
- "1jxha61gsil6hs9zb72zsyh3gmdipvfnlc9v3palb2bm0b23aq9i"))))
+ "07624c71l9d1jx1zvdhwkr1bgb1n7i0i5hyg6579zdwl3jw6jpns"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
@@ -255,7 +255,7 @@ Libraries with some extra bells and whistles.")
(define-public enlightenment
(package
(name "enlightenment")
- (version "0.21.9")
+ (version "0.22.0")
(source (origin
(method url-fetch)
(uri
@@ -263,7 +263,7 @@ Libraries with some extra bells and whistles.")
name "/" name "-" version ".tar.xz"))
(sha256
(base32
- "0w5f3707hyfc20i6xqh4jlr5p2yhy1z794061mjsz2rp4w00qmpb"))))
+ "0xmrvryr35idd7fyqgshfhvy2053bs3vwrxbx681pi6rgpdvjghv"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags '("--enable-mount-eeze")
diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm
index d8d5490f3e..7bf1562ba0 100644
--- a/gnu/packages/geo.scm
+++ b/gnu/packages/geo.scm
@@ -75,7 +75,7 @@ topology functions.")
(define-public gnome-maps
(package
(name "gnome-maps")
- (version "3.24.3")
+ (version "3.26.2")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/"
@@ -83,30 +83,34 @@ topology functions.")
name "-" version ".tar.xz"))
(sha256
(base32
- "1mnhcrawdp6fyqylh0m8l259xdd7pqwibrjyl54rmsvnm8vfrwsy"))))
+ "0l40l7m9dyphvasiq1jxrn6ivavs1xwzn0bzz2x1z7x73955q783"))))
(build-system glib-or-gtk-build-system)
(arguments
- `(#:configure-flags ; Ensure that geoclue is referred to by output.
+ `(#:configure-flags ;; Ensure that geoclue is referred to by output.
(list (string-append "LDFLAGS=-L"
(assoc-ref %build-inputs "geoclue") "/lib")
(string-append "CFLAGS=-I"
(assoc-ref %build-inputs "geoclue") "/include"))
#:phases
(modify-phases %standard-phases
- (add-after
- 'install 'wrap
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out"))
- (gi-typelib-path (getenv "GI_TYPELIB_PATH"))
- (goa-path (string-append
+ (add-after 'install 'wrap
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out"))
+ (gi-typelib-path (getenv "GI_TYPELIB_PATH"))
+ (goa-path (string-append
(assoc-ref inputs "gnome-online-accounts")
- "/lib")))
- (wrap-program (string-append out "/bin/gnome-maps")
- `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))
+ "/lib"))
+ (webkitgtk-path (string-append
+ (assoc-ref inputs "webkitgtk")
+ "/lib")))
+ (wrap-program (string-append out "/bin/gnome-maps")
+ `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))
- ;; There seems to be no way to embed the path of libgoa-1.0.so.0.
- `("LD_LIBRARY_PATH" ":" prefix (,goa-path)))
- #t))))))
+ ;; There seems to be no way to embed the path of
+ ;; libgoa-1.0.so.0, libwebkit2gtk-4.0.so.37 and
+ ;; libjavascriptcoregtk-4.0.so.18.
+ `("LD_LIBRARY_PATH" ":" prefix (,goa-path ,webkitgtk-path)))
+ #t))))))
(native-inputs
`(("gobject-introspection" ,gobject-introspection)
("intltool" ,intltool)
diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm
index ffa008d612..6cf235960c 100644
--- a/gnu/packages/glib.scm
+++ b/gnu/packages/glib.scm
@@ -391,29 +391,28 @@ The intltool collection can be used to do these things:
(define itstool
(package
(name "itstool")
- (version "2.0.2")
+ (version "2.0.4")
(source (origin
(method url-fetch)
(uri (string-append "http://files.itstool.org/itstool/itstool-"
version ".tar.bz2"))
(sha256
(base32
- "0fh34wi52i0qikgvlmrcpf1vx6gc1xqdad4539l4d9hikfsrz45z"))))
+ "0q7b4qrc758zfx3adsgvz0r93swdbxjr42w37rahngm33nshihlp"))))
(build-system gnu-build-system)
(inputs
`(("libxml2" ,libxml2)
- ("python2-libxml2" ,python2-libxml2)
- ("python-2" ,python-2)))
+ ("python-libxml2" ,python-libxml2)
+ ("python" ,python)))
(arguments
'(#:phases
(modify-phases %standard-phases
- (add-after
- 'install 'wrap-program
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((prog (string-append (assoc-ref outputs "out")
- "/bin/itstool")))
- (wrap-program prog
- `("PYTHONPATH" = (,(getenv "PYTHONPATH"))))))))))
+ (add-after 'install 'wrap-program
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((prog (string-append (assoc-ref outputs "out")
+ "/bin/itstool")))
+ (wrap-program prog
+ `("PYTHONPATH" = (,(getenv "PYTHONPATH"))))))))))
(home-page "http://www.itstool.org")
(synopsis "Tool to translate XML documents with PO files")
(description
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 2ebbd29565..95ba7af240 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -2051,7 +2051,7 @@ editors, IDEs, etc.")
(package
(inherit vte)
(name "vte-ng")
- (version "0.50.1.a")
+ (version "0.50.2.a")
(native-inputs
`(("gtk-doc" ,gtk-doc)
("gperf" ,gperf)
@@ -2066,7 +2066,7 @@ editors, IDEs, etc.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "1r70jysdrc7r1vyn3mikpc8hh7rm4lpr0psakj8yssy11p451pja"))))
+ "0sv666ilid916ja6gw2d376nyyy66gvhsds8ans02x4b7gagj5sx"))))
(arguments
`(#:configure-flags '("CXXFLAGS=-Wformat=0")
#:phases (modify-phases %standard-phases
@@ -2578,7 +2578,7 @@ and other secrets. It communicates with the \"Secret Service\" using DBus.")
(define-public five-or-more
(package
(name "five-or-more")
- (version "3.22.2")
+ (version "3.26.0")
(source
(origin
(method url-fetch)
@@ -2587,7 +2587,7 @@ and other secrets. It communicates with the \"Secret Service\" using DBus.")
name "-" version ".tar.xz"))
(sha256
(base32
- "1b26afyjr26wqy5j008gzsi3hpblbmabh0192lx6414lml1qxkxs"))))
+ "0wkp08xsqr9p9cgdfghi424diajs016b2h4bsfcr5y9xc3rgf93w"))))
(build-system glib-or-gtk-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)
@@ -2609,7 +2609,7 @@ and other secrets. It communicates with the \"Secret Service\" using DBus.")
(define-public gnome-mines
(package
(name "gnome-mines")
- (version "3.24.0")
+ (version "3.26.0")
(source
(origin
(method url-fetch)
@@ -2618,7 +2618,7 @@ and other secrets. It communicates with the \"Secret Service\" using DBus.")
name "-" version ".tar.xz"))
(sha256
(base32
- "1xh2as2xmh7gx45gpnl0fh9xjpvyyn3m84qgv41kyp2s4clsyqz6"))))
+ "1sfxdvns8nppdagnhpd9vd7n77sk5rdji3kdqnc78c2p1npiw11b"))))
(build-system glib-or-gtk-build-system)
(arguments
'(#:phases
@@ -2934,7 +2934,7 @@ service via the system message bus.")
(define-public libgweather
(package
(name "libgweather")
- (version "3.24.1")
+ (version "3.26.0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/"
@@ -2942,7 +2942,7 @@ service via the system message bus.")
name "-" version ".tar.xz"))
(sha256
(base32
- "0g35xfcw9vh3sfff42blk9ksrlmkrjmj46h3ad0sqgdn6xh329qj"))))
+ "0vkbc8rvmrlfiws844izxfl01r6l9p6agf8vvgszzkry1gfbm12v"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags
@@ -2957,12 +2957,6 @@ service via the system message bus.")
(("/usr/share/zoneinfo/zone.tab")
(string-append (assoc-ref inputs "tzdata")
"/share/zoneinfo/zone.tab")))
-
- ;; 'Asia/Rangoon' was renamed in tzdata-2016:
- ;; <https://github.com/eggert/tz/commit/4368251ebf11310a4aadccd1910daeac9080c501>.
- (substitute* "data/Locations.xml"
- (("Asia/Rangoon")
- "Asia/Yangon"))
#t))
(replace 'install
(lambda _
@@ -3089,7 +3083,7 @@ playlists in a variety of formats.")
(define-public aisleriot
(package
(name "aisleriot")
- (version "3.22.3")
+ (version "3.22.4")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/"
@@ -3097,7 +3091,7 @@ playlists in a variety of formats.")
name "-" version ".tar.xz"))
(sha256
(base32
- "12bqbyiqn2dwknz7ndgwgqqqz993s1ynh8qb82sshr7fy4zw8qph"))))
+ "1yrldsf73rd5p51dsxgbx1hmrakq0x0jc2kl6y6pgaviswxfx3gy"))))
(build-system glib-or-gtk-build-system)
(arguments
'(#:configure-flags
@@ -4427,7 +4421,7 @@ share them with others via social networking and more.")
(define-public file-roller
(package
(name "file-roller")
- (version "3.26.1")
+ (version "3.26.2")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/"
@@ -4435,7 +4429,7 @@ share them with others via social networking and more.")
name "-" version ".tar.xz"))
(sha256
(base32
- "1bliwib59jrlfpdbpqc4rc3kzv4ns7pfyn8c28ananj3p34y9mgc"))))
+ "19d8pc5z2xzhnicgaysxmwx3ghwzl4cw8kygd6nsw69g3j77nrry"))))
(build-system glib-or-gtk-build-system)
(arguments
'(#:phases
@@ -5807,7 +5801,7 @@ beautifying border effects.")
(define-public dconf-editor
(package
(name "dconf-editor")
- (version "3.26.1")
+ (version "3.26.2")
(source
(origin
(method url-fetch)
@@ -5816,7 +5810,7 @@ beautifying border effects.")
name "-" version ".tar.xz"))
(sha256
(base32
- "0agay5zbhjbfznlwk7n3gg5cn0c7ih4vnmah6kb6m969li120cs9"))))
+ "1lcarg8igsqpq4iv5834mf9kz4cmfhfw11bwy3x7v7f497z57d18"))))
(build-system glib-or-gtk-build-system)
(arguments
'(#:phases
@@ -6046,7 +6040,7 @@ Microsoft SkyDrive and Hotmail, using their REST protocols.")
(define-public gnome-clocks
(package
(name "gnome-clocks")
- (version "3.26.0")
+ (version "3.26.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/"
@@ -6054,7 +6048,7 @@ Microsoft SkyDrive and Hotmail, using their REST protocols.")
name "-" version ".tar.xz"))
(sha256
(base32
- "00a5bqi1hbyb9kbl4p393l1g6rddl2y6ljxjby9c5j3k1qka0c0g"))))
+ "1xqirnf7xkiv5vj3ng4slpyh50ihn625vhdgskfzx83a3pgxin1b"))))
(build-system meson-build-system)
(arguments
'(#:glib-or-gtk? #t))
@@ -6118,7 +6112,7 @@ desktop. It supports multiple calendars, month, week and year view.")
(define-public gnome-todo
(package
(name "gnome-todo")
- (version "3.26.1")
+ (version "3.26.2")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/"
@@ -6126,7 +6120,7 @@ desktop. It supports multiple calendars, month, week and year view.")
name "-" version ".tar.xz"))
(sha256
(base32
- "13if2lg4r65v3z7h5y57qv4iqz9ihjaml8bzvvihha7dffyr1lz4"))))
+ "106xx1w18pxjmj5k0k2qjzi6b3c3kaz7b5kyrpknykibnr401ff9"))))
(build-system meson-build-system)
(arguments
'(#:glib-or-gtk? #t
diff --git a/gnu/packages/image-viewers.scm b/gnu/packages/image-viewers.scm
index 95fb90fdab..9e93a97a9b 100644
--- a/gnu/packages/image-viewers.scm
+++ b/gnu/packages/image-viewers.scm
@@ -44,6 +44,7 @@
#:use-module (gnu packages image)
#:use-module (gnu packages imagemagick)
#:use-module (gnu packages maths)
+ #:use-module (gnu packages perl)
#:use-module (gnu packages photo)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
@@ -66,9 +67,12 @@
(build-system gnu-build-system)
(arguments
'(#:phases (modify-phases %standard-phases (delete 'configure))
- #:tests? #f ;FIXME: Requires 'perl-test-command'.
+ #:test-target "test"
#:make-flags
(list "CC=gcc" (string-append "PREFIX=" (assoc-ref %outputs "out")))))
+ (native-inputs
+ `(("perl" ,perl)
+ ("perl-test-command" ,perl-test-command)))
(inputs `(("imlib2" ,imlib2)
("curl" ,curl)
("libpng" ,libpng)
diff --git a/gnu/packages/imagemagick.scm b/gnu/packages/imagemagick.scm
index fabbd707ac..ea17ce9c86 100644
--- a/gnu/packages/imagemagick.scm
+++ b/gnu/packages/imagemagick.scm
@@ -46,14 +46,14 @@
;; The 7 release series has an incompatible API, while the 6 series is still
;; maintained. Don't update to 7 until we've made sure that the ImageMagick
;; users are ready for the 7-series API.
- (version "6.9.9-18")
+ (version "6.9.9-21")
(source (origin
(method url-fetch)
(uri (string-append "mirror://imagemagick/ImageMagick-"
version ".tar.xz"))
(sha256
(base32
- "1d70dvrgcasa3cla4c1dag4mw7vq4jk1nzbd604fk20l0l6xa78j"))))
+ "0241g3c207rawn61bz8rc5gz55k5mi2b0n3zlwa0jv9xczlkd6a9"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags '("--with-frozenpaths" "--without-gcc-arch")
@@ -105,7 +105,7 @@
(native-inputs `(("pkg-config" ,pkg-config)))
(outputs '("out"
"doc")) ; 26 MiB of HTML documentation
- (home-page "http://www.imagemagick.org/")
+ (home-page "https://www.imagemagick.org/")
(synopsis "Create, edit, compose, or convert bitmap images")
(description
"ImageMagick is a software suite to create, edit, compose, or convert
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 1fcd237d55..f155fdbabb 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -2336,6 +2336,32 @@ package within @code{plexus-utils}, but has been separated in order to allow
these two libraries to vary independently of one another.")
(license license:asl2.0)))
+(define-public java-plexus-classworlds
+ (package
+ (name "java-plexus-classworlds")
+ (version "2.5.2")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/codehaus-plexus/"
+ "plexus-classworlds/archive/plexus-classworlds-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1qm4p0rl8d82lzhsiwnviw11jnq44s0gflg78zq152xyyr2xmh8g"))))
+ (build-system ant-build-system)
+ (arguments
+ `(#:jar-name "plexus-classworlds.jar"
+ #:source-dir "src/main"
+ #:tests? #f));; FIXME: we need to generate some resources as in pom.xml
+ (native-inputs
+ `(("java-junit" ,java-junit)))
+ (home-page "http://codehaus-plexus.github.io/plexus-classworlds/")
+ (synopsis "Java class loader framework")
+ (description "Plexus classworlds replaces the native ClassLoader mechanism
+of Java. It is especially usefull for dynamic loading of application
+components.")
+ (license license:asl2.0)))
+
(define-public java-asm
(package
(name "java-asm")
@@ -2539,6 +2565,74 @@ The jMock library
@end itemize\n")
(license license:bsd-3)))
+(define-public java-jmock
+ (package
+ (inherit java-jmock-1)
+ (name "java-jmock")
+ (version "2.8.2")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/jmock-developers/"
+ "jmock-library/archive/" version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "18650a9g8xffcsdb6w91pbswa7f40fp2sh6s3nclkclz5dbzq8f0"))))
+ (inputs
+ `(("java-hamcrest-all" ,java-hamcrest-all)
+ ("java-asm" ,java-asm)
+ ("java-bsh" ,java-bsh)
+ ("java-junit" ,java-junit)))
+ (native-inputs
+ `(("cglib" ,java-cglib)))
+ (arguments
+ `(#:jar-name "java-jmock.jar"
+ #:source-dir "jmock/src/main/java"
+ #:test-dir "jmock/src/test"))))
+
+(define-public java-jmock-junit4
+ (package
+ (inherit java-jmock)
+ (name "java-jmock-junit4")
+ (arguments
+ `(#:jar-name "java-jmock-junit4.jar"
+ #:source-dir "jmock-junit4/src/main/java"
+ #:test-dir "jmock-junit4/src/test"))
+ (inputs
+ `(("java-hamcrest-all" ,java-hamcrest-all)
+ ("java-asm" ,java-asm)
+ ("java-bsh" ,java-bsh)
+ ("java-jmock" ,java-jmock)
+ ("java-jumit" ,java-junit)))))
+
+(define-public java-jmock-legacy
+ (package
+ (inherit java-jmock)
+ (name "java-jmock-legacy")
+ (arguments
+ `(#:jar-name "java-jmock-legacy.jar"
+ #:source-dir "jmock-legacy/src/main/java"
+ #:test-dir "jmock-legacy/src/test"
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'check 'copy-tests
+ (lambda _
+ ;; This file is a dependancy of some tests
+ (let ((file "org/jmock/test/acceptance/PackageProtectedType.java"))
+ (copy-file (string-append "jmock/src/test/java/" file)
+ (string-append "jmock-legacy/src/test/java/" file))
+ #t))))))
+ (inputs
+ `(("java-hamcrest-all" ,java-hamcrest-all)
+ ("java-objenesis" ,java-objenesis)
+ ("java-cglib" ,java-cglib)
+ ("java-jmock" ,java-jmock)
+ ("java-asm" ,java-asm)
+ ("java-bsh" ,java-bsh)
+ ("java-junit" ,java-junit)))
+ (native-inputs
+ `(("java-jmock-junit4" ,java-jmock-junit4)))))
+
(define-public java-hamcrest-all
(package (inherit java-hamcrest-core)
(name "java-hamcrest-all")
@@ -6248,3 +6342,610 @@ manipulation simple. It is a class library for editing bytecodes in Java; it
enables Java programs to define a new class at runtime and to modify a class
file when the JVM loads it.")
(license (list license:gpl2 license:cddl1.0)))); either gpl2 only or cddl.
+
+(define-public java-jcommander
+ (package
+ (name "java-jcommander")
+ (version "1.71")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/cbeust/jcommander/archive/"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1f5k2ckay6qjc3d3w3d7bc0p3cx3c7n6p6zxvw1kibqdr0q98wlx"))))
+ (build-system ant-build-system)
+ (arguments
+ `(#:jar-name "java-jcommander.jar"
+ #:jdk ,icedtea-8
+ #:tests? #f; requires testng which depends on jcommander
+ #:source-dir "src/main/java"))
+ (home-page "http://jcommander.org")
+ (synopsis "Command line parameters parser")
+ (description "JCommander is a very small Java framework that makes it
+trivial to parse command line parameters. Parameters are declared with
+annotations.")
+ (license license:asl2.0)))
+
+(define-public java-bsh
+ (package
+ (name "java-bsh")
+ (version "2.0b6")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/beanshell/beanshell/archive/"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1bawkxk6jyc75hxvzkpz689h73cn3f222m0ar3nvb0dal2b85kfv"))))
+ (build-system ant-build-system)
+ (arguments
+ `(#:build-target "jarall"
+ #:test-target "junit-tests-all"
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((share (string-append (assoc-ref outputs "out") "/share/java")))
+ (mkdir-p share)
+ (copy-file "dist/bsh-2.0b6.jar" (string-append share "/bsh-2.0b6.jar"))
+ #t))))))
+ (home-page "http://beanshell.org/")
+ (synopsis "Lightweight Scripting for Java")
+ (description "BeanShell is a small, free, embeddable Java source
+interpreter with object scripting language features, written in Java.
+BeanShell dynamically executes standard Java syntax and extends it with common
+scripting conveniences such as loose types, commands, and method closures like
+those in Perl and JavaScript.")
+ (license license:asl2.0)))
+
+(define-public java-fest-util
+ (package
+ (name "java-fest-util")
+ (version "1.2.5")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/alexruiz/fest-util/"
+ "archive/fest-util-" version ".tar.gz"))
+ (sha256
+ (base32
+ "05g6hljz5mdaakk8d7g32klbhz9bdwp3qlj6rdaggdidxs3x1sb8"))))
+ (build-system ant-build-system)
+ (arguments
+ `(#:jar-name "java-fest-util.jar"
+ #:source-dir "src/main/java"))
+ (native-inputs
+ `(("junit" ,java-junit)
+ ("hamcrest" ,java-hamcrest-core)))
+ (home-page "https://github.com/alexruiz/fest-util")
+ (synopsis "FEST common utilities")
+ (description "Common utilities used in all FEST module.")
+ (license license:asl2.0)))
+
+(define-public java-fest-test
+ (package
+ (name "java-fest-test")
+ (version "2.1.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/alexruiz/fest-test/"
+ "archive/fest-test-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1rxfbw6l9vc65iy1x3fb617qc6y4w2k430pgf1mfbxfdlxbm0f7g"))))
+ (build-system ant-build-system)
+ (arguments
+ `(#:jar-name "java-fest-test.jar"
+ #:source-dir "src/main/java"
+ #:tests? #f)); no tests
+ (inputs
+ `(("junit" ,java-junit)))
+ (home-page "https://github.com/alexruiz/fest-test")
+ (synopsis "Common FEST testing infrastructure")
+ (description "Fest-test contains the common FEST testing infrastructure.")
+ (license license:asl2.0)))
+
+(define-public java-fest-assert
+ (package
+ (name "java-fest-assert")
+ (version "2.0M10")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/alexruiz/fest-assert-2.x/"
+ "archive/fest-assert-core-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1bi0iqavikzww6rxvz5jyg7y6bflv95s6ibryxx0xfcxrrw6i5lw"))))
+ (build-system ant-build-system)
+ (arguments
+ `(#:jar-name "java-fest-assert.jar"
+ #:source-dir "src/main/java"
+ #:test-exclude
+ (list
+ "**/Abstract*.java"
+ "**/*BaseTest.java"
+ ;; Unable to set MockitoNamingPolicy on cglib generator which creates FastClasses
+ "**/MessageFormatter_format_Test.java"
+ "**/internal/*/*_assert*_Test.java")))
+ (inputs
+ `(("java-fest-util" ,java-fest-util)))
+ (native-inputs
+ `(("java-junit" ,java-junit)
+ ("java-fest-test" ,java-fest-test)
+ ("java-hamcrest-core" ,java-hamcrest-core)
+ ("java-mockito" ,java-mockito-1)
+ ("java-cglib" ,java-cglib)
+ ("java-objenesis" ,java-objenesis)
+ ("java-asm" ,java-asm)))
+ (home-page "https://github.com/alexruiz/fest-assert-2.x")
+ (synopsis "FEST fluent assertions")
+ (description "FEST-Assert provides a fluent interface for assertions.")
+ (license license:asl2.0)))
+
+(define-public java-testng
+ (package
+ (name "java-testng")
+ (version "6.12")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/cbeust/testng/archive/"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "01j2x47wkj7n5w6gpcjfbwgc88ai5654b23lb87w7nsrj63m3by6"))))
+ (build-system ant-build-system)
+ (arguments
+ `(#:jdk ,icedtea-8; java.util.function
+ #:jar-name "java-testng.jar"
+ #:source-dir "src/main/java"
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'build 'copy-resources
+ (lambda _
+ (copy-recursively "src/main/resources" "build/classes")
+ #t))
+ (add-before 'check 'copy-test-resources
+ (lambda _
+ (copy-recursively "src/test/resources" "build/test-classes")
+ #t))
+ (replace 'check
+ (lambda _
+ (system* "ant" "compile-tests")
+ ;; we don't have groovy
+ (substitute* "src/test/resources/testng.xml"
+ (("<class name=\"test.groovy.GroovyTest\" />") ""))
+ (zero? (system* "java" "-cp" (string-append (getenv "CLASSPATH")
+ ":build/classes"
+ ":build/test-classes")
+ "-Dtest.resources.dir=src/test/resources"
+ "org.testng.TestNG" "src/test/resources/testng.xml")))))))
+ (propagated-inputs
+ `(("junit" ,java-junit)
+ ("java-jsr305" ,java-jsr305)
+ ("java-bsh" ,java-bsh)
+ ("java-jcommander" ,java-jcommander)
+ ("java-guice" ,java-guice)
+ ("snakeyaml" ,java-snakeyaml)))
+ (native-inputs
+ `(("guava" ,java-guava)
+ ("java-javax-inject" ,java-javax-inject)
+ ("java-hamcrest" ,java-hamcrest-all)
+ ("java-assertj" ,java-assertj)
+ ("cglib" ,java-cglib)
+ ("asm" ,java-asm)
+ ("aopalliance" ,java-aopalliance)))
+ (home-page "http://testng.org")
+ (synopsis "Testing framework")
+ (description "TestNG is a testing framework inspired from JUnit and NUnit
+but introducing some new functionalities that make it more powerful and easier
+to use.")
+ (license license:asl2.0)))
+
+(define-public java-jnacl
+ (package
+ (name "java-jnacl")
+ (version "0.1.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/neilalexander/jnacl")
+ (commit "40c322e0a42637ab17cdf941138eeaf2494055f8")))
+ (sha256
+ (base32
+ "1pspnmp44q61a2q4bpslpxw86rfn8s5l0xgvyrikqgdvg7ypx597"))))
+ (build-system ant-build-system)
+ (arguments
+ `(#:jar-name "java-jnacl.jar"
+ #:source-dir "src/main/java"
+ #:jdk ,icedtea-8
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'build 'fix-tests
+ (lambda _
+ (substitute* "src/test/java/com/neilalexander/jnacl/NaClTest.java"
+ (("assertions.Assertions") "assertions.api.Assertions"))
+ (substitute* "src/test/java/com/neilalexander/jnacl/NaclSecretBoxTest.java"
+ (("assertions.Assertions") "assertions.api.Assertions"))
+ #t))
+ (replace 'check
+ (lambda _
+ (system* "ant" "compile-tests")
+ (and
+ (zero? (system* "java" "-cp" (string-append (getenv "CLASSPATH")
+ ":build/classes"
+ ":build/test-classes")
+ "org.testng.TestNG" "-testclass"
+ "build/test-classes/com/neilalexander/jnacl/NaclSecretBoxTest.class"))
+ (zero? (system* "java" "-cp" (string-append (getenv "CLASSPATH")
+ ":build/classes"
+ ":build/test-classes")
+ "org.testng.TestNG" "-testclass"
+ "build/test-classes/com/neilalexander/jnacl/NaClTest.class"))))))))
+ (native-inputs
+ `(("java-testng" ,java-testng)
+ ("java-fest-util" ,java-fest-util)
+ ("java-fest-assert" ,java-fest-assert)))
+ (home-page "https://github.com/neilalexander/jnacl")
+ (synopsis "Java implementation of NaCl")
+ (description "Pure Java implementation of the NaCl: Networking and
+Cryptography library.")
+ (license license:mpl2.0)))
+
+(define-public java-mvel2
+ (package
+ (name "java-mvel2")
+ (version "2.3.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/mvel/mvel/archive/mvel2-"
+ version ".Final.tar.gz"))
+ (sha256
+ (base32
+ "01ph5s9gm16l2qz58lg21w6fna7xmmrj7f9bzqr1jim7h9557d3z"))))
+ (build-system ant-build-system)
+ (arguments
+ `(#:jar-name "mvel2.jar"
+ #:source-dir "src/main/java"
+ #:test-exclude
+ (list "**/Abstract*.java"
+ ;; Base class with no tests
+ "**/MVELThreadTest.java")
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'install 'install-bin
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((bin (string-append (assoc-ref outputs "out") "/bin")))
+ (mkdir-p bin)
+ (with-output-to-file (string-append bin "/mvel2")
+ (lambda _
+ (display
+ (string-append
+ "#!" (which "bash") "\n"
+ "if [ \"$#\" -ne \"2\" ]; then\n"
+ "echo 'Usage: mvel2 <script> <out.dir>'\n"
+ "exit\n"
+ "fi\n"
+ "java -Dout.dir=$2 -cp " (getenv "CLASSPATH")
+ ":" (assoc-ref outputs "out") "/share/java/mvel2.jar"
+ " org.mvel2.sh.Main $1"))))
+ (chmod (string-append bin "/mvel2") #o755))
+ #t)))))
+ (native-inputs
+ `(("junit" ,java-junit)
+ ("hamcrest" ,java-hamcrest-core)))
+ (home-page "https://github.com/mvel/mvel")
+ (synopsis "MVFLEX Expression Language")
+ (description "MVEL has largely been inspired by Java syntax, but has some
+fundamental differences aimed at making it more efficient as an expression
+language, such as operators that directly support collection, array and string
+matching, as well as regular expressions. MVEL is used to evaluate expressions
+written using Java syntax.
+
+In addition to the expression language, MVEL serves as a templating language for
+configuration and string construction.")
+ (license license:asl2.0)))
+
+(define-public java-lz4
+ (package
+ (name "java-lz4")
+ (version "1.4.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/lz4/lz4-java/archive/"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "096dm57p2lzqk28n0j2p52x2j3cvnsd2dfqn43n7vbwrkjsy7y54"))))
+ (build-system ant-build-system)
+ (arguments
+ `(#:jar-name "lz4.jar"
+ #:jdk ,icedtea-8
+ #:source-dir "src/java:src/java-unsafe"
+ #:tests? #f; FIXME: requires more dependencies
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'generate-source
+ (lambda _
+ (with-directory-excursion "src/build/source_templates"
+ (zero? (system* "mvel2" "../gen_sources.mvel" "../../java"))))))))
+ (native-inputs
+ `(("mvel" ,java-mvel2)))
+ (home-page "https://jpountz.github.io/lz4-java")
+ (synopsis "Compression algorithm")
+ (description "LZ4 - Java is a Java port of the popular lz4 compression
+algorithms and xxHash hashing algorithm.")
+ (license license:asl2.0)))
+
+(define-public java-bouncycastle-bcprov
+ (package
+ (name "java-bouncycastle-bcprov")
+ (version "1.58")
+ (source (origin
+ (method url-fetch)
+ (uri "https://bouncycastle.org/download/bcprov-jdk15on-158.tar.gz")
+ (sha256
+ (base32
+ "1hgkg96llbvgs8i0krwz2n0j7wlg6jfnq8w8kg0cc899j0wfmf3n"))))
+ (build-system ant-build-system)
+ (arguments
+ `(#:jar-name "bouncycastle-bcprov.jar"
+ #:tests? #f; no tests
+ #:source-dir "src"
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'unzip-src
+ (lambda _
+ (mkdir-p "src")
+ (with-directory-excursion "src"
+ (zero? (system* "unzip" "../src.zip"))))))))
+ (native-inputs
+ `(("unzip" ,unzip)
+ ("junit" ,java-junit)))
+ (home-page "https://www.bouncycastle.org")
+ (synopsis "Cryptographic library")
+ (description "Bouncy Castle Provider (bcprov) is a cryptographic library
+for the Java programming language.")
+ (license license:expat)))
+
+(define-public java-bouncycastle-bcpkix
+ (package
+ (name "java-bouncycastle-bcpkix")
+ (version "1.58")
+ (source (origin
+ (method url-fetch)
+ (uri "https://bouncycastle.org/download/bcpkix-jdk15on-158.tar.gz")
+ (sha256
+ (base32
+ "0is7qay02803s9f7lhnfcjlz61ni3hq5d7apg0iil7nbqkbfbcq2"))))
+ (build-system ant-build-system)
+ (arguments
+ `(#:jar-name "bouncycastle-bcpkix.jar"
+ #:tests? #f; no tests
+ #:source-dir "src"
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'unzip-src
+ (lambda _
+ (mkdir-p "src")
+ (with-directory-excursion "src"
+ (zero? (system* "unzip" "../src.zip"))))))))
+ (native-inputs
+ `(("unzip" ,unzip)
+ ("junit" ,java-junit)))
+ (inputs
+ `(("bcprov" ,java-bouncycastle-bcprov)))
+ (home-page "https://www.bouncycastle.org")
+ (synopsis "Cryptographic library")
+ (description "Bouncy Castle Java API for PKIX, CMS, EAC, TSP, PKCS, OCSP,
+CMP, and CRMF.")
+ (license license:expat)))
+
+(define-public java-lmax-disruptor
+ (package
+ (name "java-lmax-disruptor")
+ (version "3.3.7")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/LMAX-Exchange/disruptor/"
+ "archive/" version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "17da2gwj5abnlsfgn2xqjk5lgzbg4vkb0hdv2dvc8r2fx4bi7w3g"))))
+ (build-system ant-build-system)
+ (arguments
+ `(#:jar-name "java-lmax-disruptor.jar"
+ #:jdk ,icedtea-8
+ #:tests? #f)); tests hang
+ (inputs
+ `(("junit" ,java-junit)
+ ("java-hdrhistogram" ,java-hdrhistogram)
+ ("java-jmock" ,java-jmock)
+ ("java-jmock-legacy" ,java-jmock-legacy)
+ ("java-jmock-junit4" ,java-jmock-junit4)
+ ("java-hamcrest-all" ,java-hamcrest-all)))
+ (native-inputs
+ `(("cglib" ,java-cglib)
+ ("objenesis" ,java-objenesis)
+ ("asm" ,java-asm)))
+ (home-page "https://www.lmax.com/disruptor")
+ (synopsis "High performance inter-thread communication")
+ (description "LMAX Disruptor is a software pattern and software component
+for high performance inter-thread communication that avoids the need for
+message queues or resource locking.")
+ (license license:asl2.0)))
+
+(define-public java-xerial-core
+ (package
+ (name "java-xerial-core")
+ (version "2.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/xerial/xerial-java/archive/"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0d3g863i41bgalpa4xr3vm1h140l091n8iwgq5qvby5yivns9y8d"))))
+ (build-system ant-build-system)
+ (arguments
+ `(#:jar-name "xerial-core.jar"
+ #:source-dir "xerial-core/src/main/java"
+ #:test-dir "xerial-core/src/test"
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'build 'copy-resources
+ (lambda _
+ (copy-recursively "xerial-core/src/main/resources"
+ "build/classes")
+ #t)))))
+ (native-inputs
+ `(("junit" ,java-junit)
+ ("hamcrest" ,java-hamcrest-core)))
+ (home-page "https://github.com/xerial/xerial-java")
+ (synopsis "Data managment libraries for Java")
+ (description "Xerial is a set of data management libraries for the Java
+programming language. The ulitimate goal of the Xerial project is to manage
+everything as database, including class objects, text format data, data
+streams, etc.")
+ (license license:asl2.0)))
+
+(define-public java-powermock-reflect
+ (package
+ (name "java-powermock-reflect")
+ (version "1.7.3")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/powermock/powermock/"
+ "archive/powermock-" version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0sbgi5vqq7k72wzcdjb20s370vyd4hsbnx71pzb8ishml3gy7fwy"))
+ (patches
+ (search-patches "java-powermock-fix-java-files.patch"))))
+ (build-system ant-build-system)
+ (arguments
+ `(#:jar-name "java-powermock-reflect.jar"
+ #:jdk ,icedtea-8
+ #:source-dir "powermock-reflect/src/main/java"
+ #:test-dir "powermock-reflect/src/test"))
+ (inputs
+ `(("java-objenesis" ,java-objenesis)))
+ (native-inputs
+ `(("junit" ,java-junit)
+ ("cglib" ,java-cglib)
+ ("asm" ,java-asm)
+ ("hamcrest" ,java-hamcrest-core)
+ ("assertj" ,java-assertj)))
+ (home-page "https://github.com/powermock/powermock")
+ (synopsis "Mock library extension framework")
+ (description "PowerMock is a framework that extends other mock libraries
+such as EasyMock with more powerful capabilities. PowerMock uses a custom
+classloader and bytecode manipulation to enable mocking of static methods,
+constructors, final classes and methods, private methods, removal of static
+initializers and more. By using a custom classloader no changes need to be
+done to the IDE or continuous integration servers which simplifies adoption.")
+ (license license:asl2.0)))
+
+(define-public java-powermock-core
+ (package
+ (inherit java-powermock-reflect)
+ (name "java-powermock-core")
+ (arguments
+ `(#:jar-name "java-powermock-core.jar"
+ #:source-dir "powermock-core/src/main/java"
+ #:test-dir "powermock-core/src/test"
+ #:tests? #f; requires powermock-api
+ #:jdk ,icedtea-8))
+ (inputs
+ `(("reflect" ,java-powermock-reflect)
+ ("javassist" ,java-jboss-javassist)))
+ (native-inputs
+ `(("junit" ,java-junit)
+ ("assertj" ,java-assertj)
+ ("mockito" ,java-mockito-1)))))
+
+(define-public java-powermock-api-support
+ (package
+ (inherit java-powermock-reflect)
+ (name "java-powermock-api-support")
+ (build-system ant-build-system)
+ (arguments
+ `(#:jar-name "java-powermock-api-support.jar"
+ #:jdk ,icedtea-8
+ #:source-dir "powermock-api/powermock-api-support/src/main/java"
+ #:tests? #f)); no tests
+ (inputs
+ `(("core" ,java-powermock-core)
+ ("reflect" ,java-powermock-reflect)))))
+
+(define-public java-powermock-modules-junit4-common
+ (package
+ (inherit java-powermock-reflect)
+ (name "java-powermock-modules-junit4-common")
+ (build-system ant-build-system)
+ (arguments
+ `(#:jar-name "java-powermock-modules-junit4-common.jar"
+ #:jdk ,icedtea-8
+ #:source-dir "powermock-modules/powermock-module-junit4-common/src/main/java"
+ #:test-dir "powermock-modules/powermock-module-junit4-common/src/test"))
+ (inputs
+ `(("core" ,java-powermock-core)
+ ("easymock" ,java-easymock)
+ ("reflect" ,java-powermock-reflect)
+ ("hamcrest" ,java-hamcrest-core)
+ ("cglib" ,java-cglib)))))
+
+(define-public java-powermock-modules-junit4
+ (package
+ (inherit java-powermock-reflect)
+ (name "java-powermock-modules-junit4")
+ (build-system ant-build-system)
+ (arguments
+ `(#:jar-name "java-powermock-modules-junit4.jar"
+ #:jdk ,icedtea-8
+ #:source-dir "powermock-modules/powermock-module-junit4/src/main/java"
+ #:test-dir "powermock-modules/powermock-module-junit4/src/test"))
+ (inputs
+ `(("core" ,java-powermock-core)
+ ("reflect" ,java-powermock-reflect)
+ ("common" ,java-powermock-modules-junit4-common)
+ ("cglib" ,java-cglib)))
+ (native-inputs
+ `(("easymock" ,java-easymock)
+ ("hamcrest" ,java-hamcrest-core)
+ ("objenesis" ,java-objenesis)
+ ("asm" ,java-asm)
+ ("junit" ,java-junit)))))
+
+(define-public java-powermock-api-easymock
+ (package
+ (inherit java-powermock-reflect)
+ (name "java-powermock-api-easymock")
+ (build-system ant-build-system)
+ (arguments
+ `(#:jar-name "java-powermock-api-easymock.jar"
+ #:jdk ,icedtea-8
+ #:source-dir "powermock-api/powermock-api-easymock/src/main/java"
+ #:tests? #f; no tests
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'build 'fix-file
+ (lambda _
+ ;; FIXME: This looks wrong, but it fixes a build error.
+ (with-directory-excursion "powermock-api/powermock-api-easymock"
+ (substitute* "src/main/java/org/powermock/api/easymock/PowerMock.java"
+ (("classLoader instanceof MockClassLoader") "false")
+ (("\\(\\(MockClassLoader\\) classLoader\\).*;") ";")))
+ #t)))))
+ (inputs
+ `(("core" ,java-powermock-core)
+ ("easymock" ,java-easymock)
+ ("reflect" ,java-powermock-reflect)
+ ("support" ,java-powermock-api-support)
+ ("cglib" ,java-cglib)))))
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index c854a5a599..b0da39aee0 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -192,14 +192,28 @@ programming languages.")
(define-public units
(package
(name "units")
- (version "2.14")
+ (version "2.16")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/units/units-" version
".tar.gz"))
(sha256 (base32
- "1s421bxm36akjsy3qzg6da1d1g20gh094ac2slqxipgkh8yqjcwx"))))
+ "11hnp3gcmcc5kci2caxw4hs6m08h2mhqs3xzqq7iafx1ha2ggwyw"))))
(build-system gnu-build-system)
+ (inputs
+ `(("readline" ,readline)
+ ("python" ,python-wrapper) ;for 'units_cur' script
+ ("python-requests" ,python-requests)))
+ (arguments
+ `(#:phases (modify-phases %standard-phases
+ (add-after 'install 'wrap-units_cur
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin")))
+ (wrap-program (string-append bin "/units_cur")
+ `("PYTHONPATH" ":" prefix
+ ,(search-path-as-string->list (getenv "PYTHONPATH"))))
+ #t))))))
(synopsis "Conversion between thousands of scales")
(description
"GNU Units converts numeric quantities between units of measure. It
diff --git a/gnu/packages/patches/java-powermock-fix-java-files.patch b/gnu/packages/patches/java-powermock-fix-java-files.patch
new file mode 100644
index 0000000000..6b95818138
--- /dev/null
+++ b/gnu/packages/patches/java-powermock-fix-java-files.patch
@@ -0,0 +1,178 @@
+This patch fixes build issues caused by the java compiler not finding the
+correct types on some statements.
+
+From 1ac84b58b4383fa118d98c35956d722d11cf449e Mon Sep 17 00:00:00 2001
+From: Julien Lepiller <julien@lepiller.eu>
+Date: Tue, 22 Aug 2017 20:40:27 +0200
+Subject: [PATCH] Fix java files.
+
+---
+ .../internal/impl/DelegatingPowerMockRunner.java | 13 +++++++---
+ .../java/org/powermock/reflect/WhiteBoxTest.java | 30 +++++++++++-----------
+ .../reflect/internal/proxy/ClassFactory.java | 6 ++---
+ 3 files changed, 27 insertions(+), 22 deletions(-)
+
+diff --git a/powermock-modules/powermock-module-junit4/src/main/java/org/powermock/modules/junit4/internal/impl/DelegatingPowerMockRunner.java b/powermock-modules/powermock-module-junit4/src/main/java/org/powermock/modules/junit4/internal/impl/DelegatingPowerMockRunner.java
+index 301f854..caecbbd 100644
+--- a/powermock-modules/powermock-module-junit4/src/main/java/org/powermock/modules/junit4/internal/impl/DelegatingPowerMockRunner.java
++++ b/powermock-modules/powermock-module-junit4/src/main/java/org/powermock/modules/junit4/internal/impl/DelegatingPowerMockRunner.java
+@@ -98,12 +98,17 @@ implements PowerMockJUnitRunnerDelegate, Filterable {
+ @Override
+ public Runner call() throws Exception {
+ try {
+- return Whitebox.invokeConstructor(
+- testClass.isAnnotationPresent(PowerMockRunnerDelegate.class)
+- ? testClass.getAnnotation(PowerMockRunnerDelegate.class).value()
+- : PowerMockRunnerDelegate.DefaultJUnitRunner.class,
++ if(testClass.isAnnotationPresent(PowerMockRunnerDelegate.class)) {
++ return Whitebox.invokeConstructor(
++ testClass.getAnnotation(PowerMockRunnerDelegate.class).value(),
+ new Class[] {Class.class},
+ new Object[] {testClass});
++ } else {
++ return Whitebox.invokeConstructor(
++ PowerMockRunnerDelegate.DefaultJUnitRunner.class,
++ new Class[] {Class.class},
++ new Object[] {testClass});
++ }
+ } catch (ConstructorNotFoundException rootProblem) {
+ if (testClass.isAnnotationPresent(PowerMockRunnerDelegate.class)
+ && JUnitVersion.isGreaterThanOrEqualTo("4.5")) {
+diff --git a/powermock-reflect/src/test/java/org/powermock/reflect/WhiteBoxTest.java b/powermock-reflect/src/test/java/org/powermock/reflect/WhiteBoxTest.java
+index bf1e2e3..0d60487 100644
+--- a/powermock-reflect/src/test/java/org/powermock/reflect/WhiteBoxTest.java
++++ b/powermock-reflect/src/test/java/org/powermock/reflect/WhiteBoxTest.java
+@@ -248,7 +248,7 @@ public class WhiteBoxTest {
+
+ @Test
+ public void testMethodWithPrimitiveAndWrappedInt_primtive_wrapped() throws Exception {
+- assertEquals(17, Whitebox.invokeMethod(new ClassWithPrivateMethods(), "methodWithPrimitiveAndWrappedInt",
++ assertEquals((Integer)17, Whitebox.invokeMethod(new ClassWithPrivateMethods(), "methodWithPrimitiveAndWrappedInt",
+ new Class[]{int.class, Integer.class}, 9, Integer.valueOf(8)));
+ }
+
+@@ -257,7 +257,7 @@ public class WhiteBoxTest {
+ int expected = 123;
+ Whitebox.setInternalState(ClassWithInternalState.class, "staticState", expected);
+ assertEquals(expected, ClassWithInternalState.getStaticState());
+- assertEquals(expected, Whitebox.getInternalState(ClassWithInternalState.class, "staticState"));
++ assertEquals(expected, (int)Whitebox.getInternalState(ClassWithInternalState.class, "staticState"));
+ }
+
+ @Test
+@@ -334,25 +334,25 @@ public class WhiteBoxTest {
+ @Test
+ public void testInvokeVarArgsMethod_multipleValues() throws Exception {
+ ClassWithPrivateMethods tested = new ClassWithPrivateMethods();
+- assertEquals(6, Whitebox.invokeMethod(tested, "varArgsMethod", 1, 2, 3));
++ assertEquals(6, (int)Whitebox.invokeMethod(tested, "varArgsMethod", 1, 2, 3));
+ }
+
+ @Test
+ public void testInvokeVarArgsMethod_noArguments() throws Exception {
+ ClassWithPrivateMethods tested = new ClassWithPrivateMethods();
+- assertEquals(0, Whitebox.invokeMethod(tested, "varArgsMethod"));
++ assertEquals(0, (int)Whitebox.invokeMethod(tested, "varArgsMethod"));
+ }
+
+ @Test
+ public void testInvokeVarArgsMethod_oneArgument() throws Exception {
+ ClassWithPrivateMethods tested = new ClassWithPrivateMethods();
+- assertEquals(4, Whitebox.invokeMethod(tested, "varArgsMethod", 2));
++ assertEquals(4, (int)Whitebox.invokeMethod(tested, "varArgsMethod", 2));
+ }
+
+ @Test
+ public void testInvokeVarArgsMethod_invokeVarArgsWithOneArgument() throws Exception {
+ ClassWithPrivateMethods tested = new ClassWithPrivateMethods();
+- assertEquals(1, Whitebox.invokeMethod(tested, "varArgsMethod", new Class<?>[]{int[].class}, 1));
++ assertEquals(1, (int)Whitebox.invokeMethod(tested, "varArgsMethod", new Class<?>[]{int[].class}, 1));
+ }
+
+ @Test
+@@ -376,7 +376,7 @@ public class WhiteBoxTest {
+ ClassWithChildThatHasInternalState tested = new ClassWithChildThatHasInternalState() {
+ };
+ Whitebox.setInternalState(tested, fieldName, value);
+- assertEquals(value, Whitebox.getInternalState(tested, fieldName));
++ assertEquals(value, (int)Whitebox.getInternalState(tested, fieldName));
+ }
+
+ @Test
+@@ -387,8 +387,8 @@ public class WhiteBoxTest {
+ ClassWithChildThatHasInternalState tested = new ClassWithChildThatHasInternalState() {
+ };
+ Whitebox.setInternalState(tested, fieldName, value);
+- assertEquals(value, Whitebox.getInternalState(tested, fieldName));
+- assertEquals(-1, Whitebox.getInternalState(tested, fieldName, ClassWithInternalState.class));
++ assertEquals(value, (int)Whitebox.getInternalState(tested, fieldName));
++ assertEquals(-1, (int)Whitebox.getInternalState(tested, fieldName, ClassWithInternalState.class));
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+@@ -398,7 +398,7 @@ public class WhiteBoxTest {
+ ClassWithChildThatHasInternalState tested = new ClassWithChildThatHasInternalState() {
+ };
+ Whitebox.setInternalState(tested, fieldName, new Object());
+- assertEquals(value, Whitebox.getInternalState(tested, fieldName));
++ assertEquals(value, (int)Whitebox.getInternalState(tested, fieldName));
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+@@ -408,7 +408,7 @@ public class WhiteBoxTest {
+ ClassWithChildThatHasInternalState tested = new ClassWithChildThatHasInternalState() {
+ };
+ Whitebox.setInternalState(tested, fieldName, (Object) null);
+- assertEquals(value, Whitebox.getInternalState(tested, fieldName));
++ assertEquals(value, (int)Whitebox.getInternalState(tested, fieldName));
+ }
+
+ @Test
+@@ -417,8 +417,8 @@ public class WhiteBoxTest {
+ ClassWithChildThatHasInternalState tested = new ClassWithChildThatHasInternalState();
+ Whitebox.setInternalState(tested, int.class, value);
+ assertEquals(value, (int) Whitebox.getInternalState(tested, int.class));
+- assertEquals(value, Whitebox.getInternalState(tested, "anotherInternalState"));
+- assertEquals(value, Whitebox.getInternalState(tested, "anotherInternalState",
++ assertEquals(value, (int)Whitebox.getInternalState(tested, "anotherInternalState"));
++ assertEquals(value, (int)Whitebox.getInternalState(tested, "anotherInternalState",
+ ClassWithChildThatHasInternalState.class));
+ }
+
+@@ -429,7 +429,7 @@ public class WhiteBoxTest {
+ Whitebox.setInternalState(tested, int.class, value, ClassWithInternalState.class);
+ assertEquals(42, (int) Whitebox.getInternalState(tested, int.class));
+ assertEquals(value, (int) Whitebox.getInternalState(tested, int.class, ClassWithInternalState.class));
+- assertEquals(value, Whitebox.getInternalState(tested, "staticState", ClassWithInternalState.class));
++ assertEquals(value, (int)Whitebox.getInternalState(tested, "staticState", ClassWithInternalState.class));
+ }
+
+ @Test
+@@ -619,7 +619,7 @@ public class WhiteBoxTest {
+ @Test
+ public void testInvokeMethodWithBothNormalAndVarArgsParameter() throws Exception {
+ ClassWithPrivateMethods tested = new ClassWithPrivateMethods();
+- assertEquals(4, Whitebox.invokeMethod(tested, "varArgsMethod2", 1, 2, 3));
++ assertEquals(4, (int)Whitebox.invokeMethod(tested, "varArgsMethod2", 1, 2, 3));
+ }
+
+ @Test
+diff --git a/powermock-reflect/src/test/java/org/powermock/reflect/internal/proxy/ClassFactory.java b/powermock-reflect/src/test/java/org/powermock/reflect/internal/proxy/ClassFactory.java
+index a5e5fda..14b8bbe 100644
+--- a/powermock-reflect/src/test/java/org/powermock/reflect/internal/proxy/ClassFactory.java
++++ b/powermock-reflect/src/test/java/org/powermock/reflect/internal/proxy/ClassFactory.java
+@@ -1,8 +1,8 @@
+ package org.powermock.reflect.internal.proxy;
+
+-import net.sf.cglib.asm.ClassWriter;
+-import net.sf.cglib.asm.MethodVisitor;
+-import net.sf.cglib.asm.Opcodes;
++import org.objectweb.asm.ClassWriter;
++import org.objectweb.asm.MethodVisitor;
++import org.objectweb.asm.Opcodes;
+
+ class ClassFactory implements Opcodes {
+
+--
+2.14.1
+
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index 7225336c7c..196541a2e3 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -7622,6 +7622,28 @@ namespace::autoclean or namespace::clean and are therefore available to be
called as methods, which usually isn't want you want.")
(license (package-license perl))))
+(define-public perl-test-command
+ (package
+ (name "perl-test-command")
+ (version "0.11")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://cpan/authors/id/D/DA/DANBOO/Test-Command-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0cwm3c4d49mdrbm6vgh78b3x8mk730l0zg8i7xb9z8bkx9pzr8r8"))))
+ (build-system perl-build-system)
+ (native-inputs
+ `(("perl-module-build" ,perl-module-build)))
+ (home-page "https://github.com/danboo/perl-test-command")
+ (synopsis "Test routines for external commands")
+ (description
+ "This module provides routines for testing the exit status, standard
+output and standard error of external commands.")
+ (license perl-license)))
+
(define-public perl-test-cpan-meta
(package
(name "perl-test-cpan-meta")
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index bb66fabc4c..fcd012d894 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -238,6 +238,7 @@ required structures.")
(package
(name "openssl")
(version "1.0.2l")
+ (replacement openssl-1.0.2m)
(source (origin
(method url-fetch)
(uri (list (string-append "ftp://ftp.openssl.org/source/"
@@ -380,14 +381,35 @@ required structures.")
(license license:openssl)
(home-page "http://www.openssl.org/")))
+;; Fixes CVE-2017-3735 and CVE-2017-3736.
+;; See <https://www.openssl.org/news/cl102.txt>.
+(define-public openssl-1.0.2m
+ (package
+ (inherit openssl)
+ (version "1.0.2m")
+ (source (origin
+ (inherit (package-source openssl))
+ (uri (list (string-append "https://www.openssl.org/source/openssl-"
+ version ".tar.gz")
+ (string-append "ftp://ftp.openssl.org/source/openssl-"
+ version ".tar.gz")
+ (string-append "ftp://ftp.openssl.org/source/old/"
+ (string-trim-right version char-set:letter)
+ "/openssl-" version ".tar.gz")))
+ (sha256
+ (base32
+ "03vvlfnxx4lhxc83ikfdl6jqph4h52y7lb7li03va6dkqrgg2vwc"))))))
+
(define-public openssl-next
(package
(inherit openssl)
(name "openssl")
- (version "1.1.0f")
+ (version "1.1.0g")
(source (origin
(method url-fetch)
- (uri (list (string-append "ftp://ftp.openssl.org/source/"
+ (uri (list (string-append "https://www.openssl.org/source/openssl-"
+ version ".tar.gz")
+ (string-append "ftp://ftp.openssl.org/source/"
name "-" version ".tar.gz")
(string-append "ftp://ftp.openssl.org/source/old/"
(string-trim-right version char-set:letter)
@@ -395,7 +417,7 @@ required structures.")
(patches (search-patches "openssl-1.1.0-c-rehash-in.patch"))
(sha256
(base32
- "0r97n4n552ns571diz54qsgarihrxvbn7kvyv8wjyfs9ybrldxqj"))))
+ "1bvka2wf33w2vxv7yw578nnjqyhz2b3chvfb0l4k2ffscw950kfy"))))
(outputs '("out"
"doc" ;1.3MiB of man3 pages
"static")) ; 5.5MiB of .a files
diff --git a/gnu/packages/upnp.scm b/gnu/packages/upnp.scm
index 3c449937da..8fa62c9896 100644
--- a/gnu/packages/upnp.scm
+++ b/gnu/packages/upnp.scm
@@ -28,14 +28,14 @@
(define-public miniupnpc
(package
(name "miniupnpc")
- (version "2.0.20170509")
+ (version "2.0.20171102")
(source
(origin
(method url-fetch)
(uri (string-append "https://miniupnp.tuxfamily.org/files/"
name "-" version ".tar.gz"))
(sha256
- (base32 "0spi75q6nafxp3ndnrhrlqagzmjlp8wwlr5x7rnvdpswgxi6ihyk"))))
+ (base32 "1m1552kkdxkyyb5gyykp0j8falxwf1424cm55y50q9l10l11g18l"))))
(build-system gnu-build-system)
(native-inputs
`(("python" ,python-2)))
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index d03f5b58d3..af880c29ff 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -124,14 +124,14 @@ as well as the classic centralized workflow.")
(name "git")
;; XXX When updating Git, check if the special 'git:src' input to cgit needs
;; to be updated as well.
- (version "2.14.3")
+ (version "2.15.0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://kernel.org/software/scm/git/git-"
version ".tar.xz"))
(sha256
(base32
- "078m0za5gyzcah5iaxdwx663yvdp8byvjc8rpzjzcrr4sl6rcc2k"))))
+ "0siyxg1ppg6szjp8xp37zfq1fj97kbdxpigi3asmidqhkx41cw8h"))))
(build-system gnu-build-system)
(native-inputs
`(("native-perl" ,perl)
@@ -145,7 +145,7 @@ as well as the classic centralized workflow.")
(sha256
(base32
- "00dh878pwl94p6syh6zgwn7f0zv2bl5xny3pnr390lzxpa9ks3jv"))))))
+ "0xqwfg9xz5nw3ifaki87ahbz0xk5zmkgqs0ig357pxwh2i20kb92"))))))
(inputs
`(("curl" ,curl)
("expat" ,expat)
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 42a15340ea..8310df7097 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -21,6 +21,7 @@
;;; Copyright © 2017 Ethan R. Jones <doubleplusgood23@gmail.com>
;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2017 Gregor Giesen <giesen@zaehlwerk.net>
+;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -405,7 +406,7 @@ designed to encode video or images into an H.265 / HEVC encoded bitstream.")
(define-public libass
(package
(name "libass")
- (version "0.13.7")
+ (version "0.14.0")
(source (origin
(method url-fetch)
(uri (string-append
@@ -413,11 +414,11 @@ designed to encode video or images into an H.265 / HEVC encoded bitstream.")
version "/libass-" version ".tar.xz"))
(sha256
(base32
- "17byv926w1mxn56n896sxvdq4m0yv1l7qbm688h6zr3nzgsyarbh"))))
+ "18iqznl4mabhj9ywfsz4kwvbsplcv1jjxq50nxssvbj8my1267w8"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)
- ("yasm" ,yasm)))
+ ("nasm" ,nasm)))
(propagated-inputs
`(("freetype" ,freetype)
("fribidi" ,fribidi)
@@ -1006,7 +1007,7 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
`(("perl" ,perl) ; for zsh completion file
("pkg-config" ,pkg-config)
("python-docutils" ,python-docutils)))
- ;; Missing features: libguess, Wayland, V4L2
+ ;; Missing features: libguess, V4L2
(inputs
`(("alsa-lib" ,alsa-lib)
("enca" ,enca)
@@ -1038,6 +1039,8 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
("pulseaudio" ,pulseaudio)
("rsound" ,rsound)
("waf" ,python-waf)
+ ("wayland" ,wayland)
+ ("libxkbcommon", libxkbcommon)
("youtube-dl" ,youtube-dl)
("zlib" ,zlib)))
(arguments
diff --git a/gnu/system/shadow.scm b/gnu/system/shadow.scm
index 236807c70a..b66239787e 100644
--- a/gnu/system/shadow.scm
+++ b/gnu/system/shadow.scm
@@ -157,13 +157,15 @@ if [ -f ~/.bashrc ]; then . ~/.bashrc; fi\n"))
# honor it and otherwise use /bin/sh.
export SHELL
-if [ -n \"$SSH_CLIENT\" -a -z \"`type -P cat`\" ]
+if [[ $- != *i* ]]
then
- # We are being invoked from a non-interactive SSH session
- # (as in \"ssh host command\") but 'cat' cannot be found
- # in $PATH. Source /etc/profile so we get $PATH and other
- # essential variables.
- source /etc/profile
+ # We are being invoked from a non-interactive shell. If this
+ # is an SSH session (as in \"ssh host command\"), source
+ # /etc/profile so we get PATH and other essential variables.
+ [[ -n \"$SSH_CLIENT\" ]] && source /etc/profile
+
+ # Don't do anything else.
+ return
fi
# Adjust the prompt depending on whether we're in 'guix environment'.
diff --git a/gnu/tests/ssh.scm b/gnu/tests/ssh.scm
index 41be360355..6abc6c2501 100644
--- a/gnu/tests/ssh.scm
+++ b/gnu/tests/ssh.scm
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
+;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -169,6 +170,33 @@ root with an empty password."
(call-with-remote-input-file sftp-session witness
read)))))
+ ;; Connect to the guest over SSH. Make sure we can run commands
+ ;; from the system profile.
+ (test-equal "run executables from system profile"
+ #t
+ (call-with-connected-session/auth
+ (lambda (session)
+ (let ((channel (make-channel session)))
+ (channel-open-session channel)
+ (channel-request-exec
+ channel
+ (string-append
+ "mkdir -p /root/.guix-profile/bin && "
+ "touch /root/.guix-profile/bin/path-witness && "
+ "chmod 755 /root/.guix-profile/bin/path-witness"))
+ (zero? (channel-get-exit-status channel))))))
+
+ ;; Connect to the guest over SSH. Make sure we can run commands
+ ;; from the user profile.
+ (test-equal "run executable from user profile"
+ #t
+ (call-with-connected-session/auth
+ (lambda (session)
+ (let ((channel (make-channel session)))
+ (channel-open-session channel)
+ (channel-request-exec channel "path-witness")
+ (zero? (channel-get-exit-status channel))))))
+
(test-end)
(exit (= (test-runner-fail-count (test-runner-current)) 0)))))