unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#29394] [PATCH 00/12] Add Java dependencies for FastQC
@ 2017-11-22 11:21 Ricardo Wurmus
  2017-11-22 11:30 ` [bug#29394] [PATCH 01/12] gnu: Add java-snappy-1 ricardo.wurmus
  0 siblings, 1 reply; 14+ messages in thread
From: Ricardo Wurmus @ 2017-11-22 11:21 UTC (permalink / raw)
  To: 29394

The following patch series adds dependencies for the popular bioinfo
tool FastQC.

Ricardo Wurmus (12):
  gnu: Add java-snappy-1.
  gnu: Add javacc.
  gnu: Add javacc-4.
  gnu: Add java-commons-jexl-2.
  gnu: java-htsjdk: Update to 2.3.0.
  gnu: Add java-picard.
  gnu: Add java-cofoja.
  gnu: Add java-commons-bcel.
  gnu: Add ant-apache-bcel.
  gnu: Add ant-junit.
  gnu: Add java-picard-1.113.
  gnu: Add java-jbzip2.

 gnu/packages/bioinformatics.scm | 216 +++++++++++++++++++++++++++++++-
 gnu/packages/compression.scm    |  98 +++++++++++++++
 gnu/packages/java.scm           | 268 ++++++++++++++++++++++++++++++++++++++++
 3 files changed, 576 insertions(+), 6 deletions(-)

-- 
2.14.1

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [bug#29394] [PATCH 01/12] gnu: Add java-snappy-1.
  2017-11-22 11:21 [bug#29394] [PATCH 00/12] Add Java dependencies for FastQC Ricardo Wurmus
@ 2017-11-22 11:30 ` ricardo.wurmus
  2017-11-22 11:30   ` [bug#29394] [PATCH 02/12] gnu: Add javacc ricardo.wurmus
                     ` (10 more replies)
  0 siblings, 11 replies; 14+ messages in thread
From: ricardo.wurmus @ 2017-11-22 11:30 UTC (permalink / raw)
  To: 29394; +Cc: Ricardo Wurmus

From: Ricardo Wurmus <rekado@elephly.net>

* gnu/packages/compression.scm (java-snappy-1): New variable.
---
 gnu/packages/compression.scm | 58 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 58 insertions(+)

diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index 748c75a74..193d36797 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -1206,6 +1206,64 @@ install: libbitshuffle.so
 compresser/decompresser.")
     (license license:asl2.0)))
 
+(define-public java-snappy-1
+  (package
+    (inherit java-snappy)
+    (version "1.0.3-rc3")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/xerial/snappy-java/archive/"
+                                  "snappy-java-" version ".tar.gz"))
+              (sha256
+               (base32
+                "08hsxlqidiqck0q57fshwyv3ynyxy18vmhrai9fyc8mz17m7gsa3"))))
+    (arguments
+     `(#:jar-name "snappy.jar"
+       #:source-dir "src/main/java"
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'remove-binaries
+           (lambda _
+             (delete-file "lib/org/xerial/snappy/OSInfo.class")
+             (delete-file-recursively "src/main/resources/org/xerial/snappy/native")
+             #t))
+         (add-before 'build 'build-jni
+           (lambda _
+             ;; Rebuild one of the binaries we removed earlier
+             (system* "javac" "src/main/java/org/xerial/snappy/OSInfo.java"
+                      "-d" "lib")
+             ;; Link to the dynamic snappy, not the static ones
+             (substitute* "Makefile.common"
+               (("-shared") "-shared -lsnappy"))
+             (substitute* "Makefile"
+               ;; Don't download the sources here.
+               (("\\$\\(SNAPPY_UNPACKED\\) ") "")
+               ((": \\$\\(SNAPPY_UNPACKED\\) ") ":")
+               ;; What we actually want to build
+               (("SNAPPY_OBJ:=.*")
+                "SNAPPY_OBJ:=$(addprefix $(SNAPPY_OUT)/, SnappyNative.o)\n")
+               ;; Since we removed the directory structure in "native" during
+               ;; the previous phase, we need to recreate it.
+               (("NAME\\): \\$\\(SNAPPY_OBJ\\)")
+                "NAME): $(SNAPPY_OBJ)\n\t@mkdir -p $(@D)"))
+             ;; Finally we can run the Makefile to build the dynamic library.
+             (zero? (system* "make" "native"))))
+         ;; Once we have built the shared library, we need to place it in the
+         ;; "build" directory so it can be added to the jar file.
+         (add-after 'build-jni 'copy-jni
+           (lambda _
+             (copy-recursively "src/main/resources/org/xerial/snappy/native"
+                               "build/classes/org/xerial/snappy/native")
+             #t))
+         (add-before 'check 'fix-tests
+           (lambda _
+             (mkdir-p "src/test/resources/org/xerial/snappy/")
+             (copy-recursively "src/test/java/org/xerial/snappy/testdata"
+                               "src/test/resources/org/xerial/snappy/testdata")
+             (install-file "src/test/java/org/xerial/snappy/alice29.txt"
+                           "src/test/resources/org/xerial/snappy/")
+             #t)))))))
+
 (define-public java-iq80-snappy
   (package
     (name "java-iq80-snappy")
-- 
2.14.1

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [bug#29394] [PATCH 02/12] gnu: Add javacc.
  2017-11-22 11:30 ` [bug#29394] [PATCH 01/12] gnu: Add java-snappy-1 ricardo.wurmus
@ 2017-11-22 11:30   ` ricardo.wurmus
  2017-11-22 11:30   ` [bug#29394] [PATCH 03/12] gnu: Add javacc-4 ricardo.wurmus
                     ` (9 subsequent siblings)
  10 siblings, 0 replies; 14+ messages in thread
From: ricardo.wurmus @ 2017-11-22 11:30 UTC (permalink / raw)
  To: 29394; +Cc: Ricardo Wurmus

From: Ricardo Wurmus <rekado@elephly.net>

* gnu/packages/java.scm (javacc): New variable.
---
 gnu/packages/java.scm | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index bd6c00365..eae4aa750 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -1893,6 +1893,38 @@ designs.")
                      license:asl2.0
                      license:cpl1.0)))))
 
+(define-public javacc
+  (package
+    (name "javacc")
+    (version "7.0.3")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/javacc/javacc/"
+                                  "archive/" version ".tar.gz"))
+              (file-name (string-append "javacc-" version ".tar.gz"))
+              (sha256
+               (base32
+                "111xc9mnmc5a6qz6x3xbhqc07y1lg2b996ggzw0hrblg42zya9xf"))))
+    (build-system ant-build-system)
+    (arguments
+     `(#:test-target "test"
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'delete-bundled-libs
+           (lambda _
+             (delete-file-recursively "lib") #t))
+         (replace 'install (install-jars "target")))))
+    (home-page "https://javacc.org/")
+    (synopsis "Java parser generator")
+    (description "Java Compiler Compiler (JavaCC) is the most popular parser
+generator for use with Java applications.  A parser generator is a tool that
+reads a grammar specification and converts it to a Java program that can
+recognize matches to the grammar.  In addition to the parser generator itself,
+JavaCC provides other standard capabilities related to parser generation such
+as tree building (via a tool called JJTree included with JavaCC), actions,
+debugging, etc.")
+    (license license:bsd-3)))
+
 (define-public java-classpathx-servletapi
   (package
     (name "java-classpathx-servletapi")
-- 
2.14.1

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [bug#29394] [PATCH 03/12] gnu: Add javacc-4.
  2017-11-22 11:30 ` [bug#29394] [PATCH 01/12] gnu: Add java-snappy-1 ricardo.wurmus
  2017-11-22 11:30   ` [bug#29394] [PATCH 02/12] gnu: Add javacc ricardo.wurmus
@ 2017-11-22 11:30   ` ricardo.wurmus
  2017-11-22 11:30   ` [bug#29394] [PATCH 04/12] gnu: Add java-commons-jexl-2 ricardo.wurmus
                     ` (8 subsequent siblings)
  10 siblings, 0 replies; 14+ messages in thread
From: ricardo.wurmus @ 2017-11-22 11:30 UTC (permalink / raw)
  To: 29394; +Cc: Ricardo Wurmus

From: Ricardo Wurmus <rekado@elephly.net>

* gnu/packages/java.scm (javacc-4): New variable.
---
 gnu/packages/java.scm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index eae4aa750..2691f2f39 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -1925,6 +1925,30 @@ as tree building (via a tool called JJTree included with JavaCC), actions,
 debugging, etc.")
     (license license:bsd-3)))
 
+(define-public javacc-4
+  (package (inherit javacc)
+    (version "4.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/javacc/javacc.git")
+                    (commit "release_41")))
+              (file-name (string-append "javacc-" version "-checkout"))
+              (sha256
+               (base32
+                "07ysav7j8r1c6h8qxrgqk6lwdp74ly0ad1935lragxml0qqc3ka0"))))
+    ;; Tests fail with
+    ;; /tmp/guix-build-javacc-4.1.drv-0/source/test/javacodeLA/build.xml:60:
+    ;; JAVACODE failed
+    (arguments
+     `(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'delete-bundled-libs
+           (lambda _
+             (delete-file-recursively "lib") #t))
+         (replace 'install (install-jars "bin/lib")))))))
+
 (define-public java-classpathx-servletapi
   (package
     (name "java-classpathx-servletapi")
-- 
2.14.1

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [bug#29394] [PATCH 04/12] gnu: Add java-commons-jexl-2.
  2017-11-22 11:30 ` [bug#29394] [PATCH 01/12] gnu: Add java-snappy-1 ricardo.wurmus
  2017-11-22 11:30   ` [bug#29394] [PATCH 02/12] gnu: Add javacc ricardo.wurmus
  2017-11-22 11:30   ` [bug#29394] [PATCH 03/12] gnu: Add javacc-4 ricardo.wurmus
@ 2017-11-22 11:30   ` ricardo.wurmus
  2017-11-22 11:30   ` [bug#29394] [PATCH 05/12] gnu: java-htsjdk: Update to 2.3.0 ricardo.wurmus
                     ` (7 subsequent siblings)
  10 siblings, 0 replies; 14+ messages in thread
From: ricardo.wurmus @ 2017-11-22 11:30 UTC (permalink / raw)
  To: 29394; +Cc: Ricardo Wurmus

From: Ricardo Wurmus <rekado@elephly.net>

* gnu/packages/java.scm (java-commons-jexl-2): New variable.
---
 gnu/packages/java.scm | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 57 insertions(+)

diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 2691f2f39..f78f63c72 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -6991,6 +6991,63 @@ In addition to the expression language, MVEL serves as a templating language for
 configuration and string construction.")
     (license license:asl2.0)))
 
+(define-public java-commons-jexl-2
+  (package
+    (name "java-commons-jexl")
+    (version "2.1.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://apache/commons/jexl/source/"
+                                  "commons-jexl-" version "-src.tar.gz"))
+              (sha256
+               (base32
+                "1ai7632bwwaxglb0nbpblpr2jw5g20afrsaq372ipkphi3ncy1jz"))))
+    (build-system ant-build-system)
+    (arguments
+     `(#:jar-name "commons-jexl-2.jar"
+       #:jdk ,icedtea-8
+       #:source-dir "src/main/java"
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'disable-broken-tests
+           (lambda* (#:key inputs #:allow-other-keys)
+             (with-directory-excursion "src/test/java/org/apache/commons/jexl2/"
+               (substitute* "ArithmeticTest.java"
+                 (("asserter.assertExpression\\(\"3 / 0\"") "//")
+                 (("asserter.assertExpression\\(\"imanull") "//"))
+               ;; This test fails with "ambiguous method invocation"
+               (delete-file "CacheTest.java")
+               ;; This test doesn't have access to the temp directory
+               (substitute* "ClassCreatorTest.java"
+                 (("java.io.tmpdir") "user.dir"))
+               ;; This test fails in trying to detect whether it can run.
+               (substitute* "ClassCreator.java"
+                 (("boolean canRun =.*") "boolean canRun = false;\n"))
+               ;; ...and these tests depend on it.
+               (delete-file "scripting/JexlScriptEngineOptionalTest.java")
+               (delete-file "scripting/JexlScriptEngineTest.java"))
+             #t))
+         (add-before 'build 'run-javacc
+           (lambda _
+             (with-directory-excursion "src/main/java/org/apache/commons/jexl2/parser/"
+               (and (zero? (system* "java" "jjtree" "Parser.jjt"))
+                    (zero? (system* "java" "javacc" "Parser.jj")))))))))
+    (inputs
+     `(("java-commons-logging-minimal" ,java-commons-logging-minimal)))
+    (native-inputs
+     `(("java-junit" ,java-junit)
+       ("java-hamcrest-core" ,java-hamcrest-core)
+       ("javacc" ,javacc-4)))
+    (home-page "https://commons.apache.org/proper/commons-jexl/")
+    (synopsis "Java Expression Language ")
+    (description "JEXL is a library intended to facilitate the implementation
+of dynamic and scripting features in applications and frameworks written in
+Java.  JEXL implements an Expression Language based on some extensions to the
+JSTL Expression Language supporting most of the constructs seen in
+shell-script or ECMAScript.  Its goal is to expose scripting features usable
+by technical operatives or consultants working with enterprise platforms.")
+    (license license:asl2.0)))
+
 (define-public java-lz4
   (package
     (name "java-lz4")
-- 
2.14.1

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [bug#29394] [PATCH 05/12] gnu: java-htsjdk: Update to 2.3.0.
  2017-11-22 11:30 ` [bug#29394] [PATCH 01/12] gnu: Add java-snappy-1 ricardo.wurmus
                     ` (2 preceding siblings ...)
  2017-11-22 11:30   ` [bug#29394] [PATCH 04/12] gnu: Add java-commons-jexl-2 ricardo.wurmus
@ 2017-11-22 11:30   ` ricardo.wurmus
  2017-11-22 11:30   ` [bug#29394] [PATCH 06/12] gnu: Add java-picard ricardo.wurmus
                     ` (6 subsequent siblings)
  10 siblings, 0 replies; 14+ messages in thread
From: ricardo.wurmus @ 2017-11-22 11:30 UTC (permalink / raw)
  To: 29394; +Cc: Ricardo Wurmus

From: Ricardo Wurmus <rekado@elephly.net>

* gnu/packages/bioinformatics.scm (java-htsjdk): Update to 2.3.0.
[arguments]: Build with JDK 8.
[inputs]: Add java-ngs, java-snappy, java-commons-compress,
java-commons-logging-minimal, java-commons-jexl-2, and java-xz.
[native-inputs]: Add java-testng.
---
 gnu/packages/bioinformatics.scm | 24 ++++++++++++++++++------
 1 file changed, 18 insertions(+), 6 deletions(-)

diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index a8d7361ff..6c71d7362 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -2961,7 +2961,7 @@ from high-throughput sequencing assays.")
 (define-public java-htsjdk
   (package
     (name "java-htsjdk")
-    (version "1.129")
+    (version "2.3.0") ; last version without build dependency on gradle
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2970,15 +2970,18 @@ from high-throughput sequencing assays.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "0asdk9b8jx2ij7yd6apg9qx03li8q7z3ml0qy2r2qczkra79y6fw"))
+                "1ibhzzxsfc38nqyk9r8zqj6blfc1kh26iirypd4q6n90hs2m6nyq"))
               (modules '((guix build utils)))
-              ;; remove build dependency on git
-              (snippet '(substitute* "build.xml"
-                          (("failifexecutionfails=\"true\"")
-                           "failifexecutionfails=\"false\"")))))
+              (snippet
+               ;; Delete pre-built binaries
+               '(begin
+                  (delete-file-recursively "lib")
+                  (mkdir-p "lib")
+                  #t))))
     (build-system ant-build-system)
     (arguments
      `(#:tests? #f ; test require Internet access
+       #:jdk ,icedtea-8
        #:make-flags
        (list (string-append "-Ddist=" (assoc-ref %outputs "out")
                             "/share/java/htsjdk/"))
@@ -2987,6 +2990,15 @@ from high-throughput sequencing assays.")
        (modify-phases %standard-phases
          ;; The build phase also installs the jars
          (delete 'install))))
+    (inputs
+     `(("java-ngs" ,java-ngs)
+       ("java-snappy-1" ,java-snappy-1)
+       ("java-commons-compress" ,java-commons-compress)
+       ("java-commons-logging-minimal" ,java-commons-logging-minimal)
+       ("java-commons-jexl-2" ,java-commons-jexl-2)
+       ("java-xz" ,java-xz)))
+    (native-inputs
+     `(("java-testng" ,java-testng)))
     (home-page "http://samtools.github.io/htsjdk/")
     (synopsis "Java API for high-throughput sequencing data (HTS) formats")
     (description
-- 
2.14.1

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [bug#29394] [PATCH 06/12] gnu: Add java-picard.
  2017-11-22 11:30 ` [bug#29394] [PATCH 01/12] gnu: Add java-snappy-1 ricardo.wurmus
                     ` (3 preceding siblings ...)
  2017-11-22 11:30   ` [bug#29394] [PATCH 05/12] gnu: java-htsjdk: Update to 2.3.0 ricardo.wurmus
@ 2017-11-22 11:30   ` ricardo.wurmus
  2017-11-22 11:30   ` [bug#29394] [PATCH 07/12] gnu: Add java-cofoja ricardo.wurmus
                     ` (5 subsequent siblings)
  10 siblings, 0 replies; 14+ messages in thread
From: ricardo.wurmus @ 2017-11-22 11:30 UTC (permalink / raw)
  To: 29394; +Cc: Ricardo Wurmus

From: Ricardo Wurmus <rekado@elephly.net>

* gnu/packages/bioinformatics.scm (java-picard): New variable.
---
 gnu/packages/bioinformatics.scm | 78 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 78 insertions(+)

diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 6c71d7362..0896edf25 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -3008,6 +3008,84 @@ sequencing (HTS) data.  There are also an number of useful utilities for
 manipulating HTS data.")
     (license license:expat)))
 
+;; This version matches java-htsjdk 2.3.0.  Later versions also require a more
+;; recent version of java-htsjdk, which depends on gradle.
+(define-public java-picard
+  (package
+    (name "java-picard")
+    (version "2.3.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/broadinstitute/picard.git")
+                    (commit version)))
+              (file-name (string-append "java-picard-" version "-checkout"))
+              (sha256
+               (base32
+                "1ll7mf4r3by92w2nhlmpa591xd1f46xlkwh59mq6fvbb5pdwzvx6"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  ;; Delete pre-built binaries.
+                  (delete-file-recursively "lib")
+                  (mkdir-p "lib")
+                  (substitute* "build.xml"
+                    ;; Remove build-time dependency on git.
+                    (("failifexecutionfails=\"true\"")
+                     "failifexecutionfails=\"false\"")
+                    ;; Use our htsjdk.
+                    (("depends=\"compile-htsjdk, ")
+                     "depends=\"")
+                    (("depends=\"compile-htsjdk-tests, ")
+                     "depends=\"")
+                    ;; Build picard-lib.jar before building picard.jar
+                    (("name=\"picard-jar\" depends=\"" line)
+                     (string-append line "picard-lib-jar, ")))
+                  #t))))
+    (build-system ant-build-system)
+    (arguments
+     `(#:build-target "picard-jar"
+       #:test-target "test"
+       ;; Tests require jacoco:coverage.
+       #:tests? #f
+       #:make-flags
+       (list (string-append "-Dhtsjdk_lib_dir="
+                            (assoc-ref %build-inputs "java-htsjdk")
+                            "/share/java/htsjdk/")
+             "-Dhtsjdk-classes=dist/tmp"
+             (string-append "-Dhtsjdk-version="
+                            ,(package-version java-htsjdk)))
+       #:jdk ,icedtea-8
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'use-our-htsjdk
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "build.xml"
+               (("\\$\\{htsjdk\\}/lib")
+                (string-append (assoc-ref inputs "java-htsjdk")
+                               "/share/java/htsjdk/")))
+             #t))
+         (add-after 'unpack 'make-test-target-independent
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "build.xml"
+               (("name=\"test\" depends=\"compile, ")
+                "name=\"test\" depends=\""))
+             #t))
+         (replace 'install (install-jars "dist")))))
+    (inputs
+     `(("java-htsjdk" ,java-htsjdk)
+       ("java-guava" ,java-guava)))
+    (native-inputs
+     `(("java-testng" ,java-testng)))
+    (home-page "http://broadinstitute.github.io/picard/")
+    (synopsis "Tools for manipulating high-throughput sequencing data and formats")
+    (description "Picard is a set of Java command line tools for manipulating
+high-throughput sequencing (HTS) data and formats.  Picard is implemented
+using the HTSJDK Java library to support accessing file formats that are
+commonly used for high-throughput sequencing data such as SAM, BAM, CRAM and
+VCF.")
+    (license license:expat)))
+
 (define-public htslib
   (package
     (name "htslib")
-- 
2.14.1

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [bug#29394] [PATCH 07/12] gnu: Add java-cofoja.
  2017-11-22 11:30 ` [bug#29394] [PATCH 01/12] gnu: Add java-snappy-1 ricardo.wurmus
                     ` (4 preceding siblings ...)
  2017-11-22 11:30   ` [bug#29394] [PATCH 06/12] gnu: Add java-picard ricardo.wurmus
@ 2017-11-22 11:30   ` ricardo.wurmus
  2017-11-22 11:30   ` [bug#29394] [PATCH 08/12] gnu: Add java-commons-bcel ricardo.wurmus
                     ` (4 subsequent siblings)
  10 siblings, 0 replies; 14+ messages in thread
From: ricardo.wurmus @ 2017-11-22 11:30 UTC (permalink / raw)
  To: 29394; +Cc: Ricardo Wurmus

From: Ricardo Wurmus <rekado@elephly.net>

* gnu/packages/java.scm (java-cofoja): New variable.
---
 gnu/packages/java.scm | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 56 insertions(+)

diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index f78f63c72..0cc9adf19 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -6515,6 +6515,62 @@ provides control over value quantization behavior across the value range and
 the subsequent value resolution at any given level.")
     (license license:public-domain)))
 
+(define-public java-cofoja
+  (package
+    (name "java-cofoja")
+    (version "1.3")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/nhatminhle/cofoja.git")
+                    (commit (string-append "v" version))))
+              (file-name (string-append "java-cofoja-" version "-checkout"))
+              (sha256
+               (base32
+                "0p7sz8y5xgpi5rx1qwn6587fkd52qr3ha3ybh14gqcyxhikl525w"))))
+    (build-system ant-build-system)
+    (arguments
+     `(#:build-target "dist"
+       #:test-target "test"
+       #:jdk ,icedtea-8
+       #:make-flags
+       (list "-Ddist.dir=dist")
+       #:modules ((guix build ant-build-system)
+                  (guix build java-utils)
+                  (guix build utils)
+                  (srfi srfi-1)
+                  (ice-9 match))
+       #:phases
+       (modify-phases %standard-phases
+         ;; The bulid system ignores the class path the ant-build-system sets
+         ;; up and instead expects to find all dependencies in the "lib"
+         ;; directory.
+         (add-after 'unpack 'create-libdir
+           (lambda* (#:key inputs #:allow-other-keys)
+             (mkdir-p "lib")
+             (for-each
+              (lambda (file)
+                (let ((target (string-append "lib/" (basename file))))
+                  (unless (file-exists? target)
+                    (symlink file target))))
+              (append-map (match-lambda
+                            ((label . dir)
+                             (find-files dir "\\.jar$")))
+                          inputs))
+             #t))
+         (replace 'install (install-jars "dist")))))
+    (inputs
+     `(("java-asm" ,java-asm)))
+    (native-inputs
+     `(("java-junit" ,java-junit)))
+    (home-page "https://github.com/nhatminhle/cofoja")
+    (synopsis "Contracts for Java")
+    (description "Contracts for Java, or Cofoja for short, is a contract
+programming framework and test tool for Java, which uses annotation processing
+and bytecode instrumentation to provide run-time checking. (In particular,
+this is not a static analysis tool.)")
+    (license license:lgpl3+)))
+
 (define-public java-aopalliance
   (package
     (name "java-aopalliance")
-- 
2.14.1

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [bug#29394] [PATCH 08/12] gnu: Add java-commons-bcel.
  2017-11-22 11:30 ` [bug#29394] [PATCH 01/12] gnu: Add java-snappy-1 ricardo.wurmus
                     ` (5 preceding siblings ...)
  2017-11-22 11:30   ` [bug#29394] [PATCH 07/12] gnu: Add java-cofoja ricardo.wurmus
@ 2017-11-22 11:30   ` ricardo.wurmus
  2017-11-22 11:30   ` [bug#29394] [PATCH 09/12] gnu: Add ant-apache-bcel ricardo.wurmus
                     ` (3 subsequent siblings)
  10 siblings, 0 replies; 14+ messages in thread
From: ricardo.wurmus @ 2017-11-22 11:30 UTC (permalink / raw)
  To: 29394; +Cc: Ricardo Wurmus

From: Ricardo Wurmus <rekado@elephly.net>

* gnu/packages/java.scm (java-commons-bcel): New variable.
---
 gnu/packages/java.scm | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 0cc9adf19..d37a76aef 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -7235,6 +7235,41 @@ for high performance inter-thread communication that avoids the need for
 message queues or resource locking.")
     (license license:asl2.0)))
 
+(define-public java-commons-bcel
+  (package
+    (name "java-commons-bcel")
+    (version "6.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://apache/commons/bcel/source/bcel-"
+                                  version "-src.tar.gz"))
+              (sha256
+               (base32
+                "0j3x1rxd673k07psclk8k13rqh0x0mf2yy5qiwkiw4z3afa568jy"))))
+    (build-system ant-build-system)
+    (arguments
+     `(#:jar-name "bcel.jar"
+       #:jdk ,icedtea-8
+       #:source-dir "src/main/java"
+       #:test-dir "src/test/java"
+       ;; FIXME: Tests require the unpackaged jna.
+       #:tests? #f))
+    (home-page "https://commons.apache.org/proper/commons-bcel/")
+    (synopsis "Byte code engineering library")
+    (description "The Byte Code Engineering Library (Apache Commons BCEL) is
+intended to give users a convenient way to analyze, create, and
+manipulate (binary) Java class files.  Classes are represented by objects
+which contain all the symbolic information of the given class: methods, fields
+and byte code instructions, in particular.
+
+Such objects can be read from an existing file, be transformed by a
+program (e.g. a class loader at run-time) and written to a file again.  An
+even more interesting application is the creation of classes from scratch at
+run-time.  The @dfn{Byte Code Engineering Library} (BCEL) may be also useful
+if you want to learn about the @dfn{Java Virtual Machine} (JVM) and the format
+of Java @code{.class} files.")
+    (license license:asl2.0)))
+
 (define-public java-xerial-core
   (package
     (name "java-xerial-core")
-- 
2.14.1

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [bug#29394] [PATCH 09/12] gnu: Add ant-apache-bcel.
  2017-11-22 11:30 ` [bug#29394] [PATCH 01/12] gnu: Add java-snappy-1 ricardo.wurmus
                     ` (6 preceding siblings ...)
  2017-11-22 11:30   ` [bug#29394] [PATCH 08/12] gnu: Add java-commons-bcel ricardo.wurmus
@ 2017-11-22 11:30   ` ricardo.wurmus
  2017-11-22 11:30   ` [bug#29394] [PATCH 10/12] gnu: Add ant-junit ricardo.wurmus
                     ` (2 subsequent siblings)
  10 siblings, 0 replies; 14+ messages in thread
From: ricardo.wurmus @ 2017-11-22 11:30 UTC (permalink / raw)
  To: 29394; +Cc: Ricardo Wurmus

From: Ricardo Wurmus <rekado@elephly.net>

* gnu/packages/java.scm (ant-apache-bcel): New variable.
---
 gnu/packages/java.scm | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index d37a76aef..eca23d9da 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -1752,6 +1752,38 @@ IcedTea build harness.")
     (native-inputs
      `(("jdk" ,icedtea-7 "jdk")))))
 
+(define-public ant-apache-bcel
+  (package
+    (inherit ant/java8)
+    (name "ant-apache-bcel")
+    (arguments
+     (substitute-keyword-arguments (package-arguments ant/java8)
+       ((#:phases phases)
+        `(modify-phases ,phases
+           (add-after 'unpack 'link-bcel
+             (lambda* (#:key inputs #:allow-other-keys)
+               (for-each (lambda (file)
+                           (symlink file
+                                    (string-append "lib/optional/"
+                                                   (basename file))))
+                         (find-files (assoc-ref inputs "java-commons-bcel")
+                                     "\\.jar$"))
+               #t))
+           (add-after 'build 'install
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out   (assoc-ref outputs "out"))
+                      (share (string-append out "/share/java"))
+                      (bin   (string-append out "/bin"))
+                      (lib   (string-append out "/lib")))
+                 (mkdir-p share)
+                 (install-file (string-append lib "/ant-apache-bcel.jar") share)
+                 (delete-file-recursively bin)
+                 (delete-file-recursively lib)
+                 #t)))))))
+    (inputs
+     `(("java-commons-bcel" ,java-commons-bcel)
+       ,@(package-inputs ant/java8)))))
+
 (define-public clojure
   (let* ((remove-archives '(begin
                              (for-each delete-file
-- 
2.14.1

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [bug#29394] [PATCH 10/12] gnu: Add ant-junit.
  2017-11-22 11:30 ` [bug#29394] [PATCH 01/12] gnu: Add java-snappy-1 ricardo.wurmus
                     ` (7 preceding siblings ...)
  2017-11-22 11:30   ` [bug#29394] [PATCH 09/12] gnu: Add ant-apache-bcel ricardo.wurmus
@ 2017-11-22 11:30   ` ricardo.wurmus
  2017-11-22 11:30   ` [bug#29394] [PATCH 11/12] gnu: Add java-picard-1.113 ricardo.wurmus
  2017-11-22 11:30   ` [bug#29394] [PATCH 12/12] gnu: Add java-jbzip2 ricardo.wurmus
  10 siblings, 0 replies; 14+ messages in thread
From: ricardo.wurmus @ 2017-11-22 11:30 UTC (permalink / raw)
  To: 29394; +Cc: Ricardo Wurmus

From: Ricardo Wurmus <rekado@elephly.net>

* gnu/packages/java.scm (ant-junit): New variable.
---
 gnu/packages/java.scm | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index eca23d9da..8cf723074 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -1784,6 +1784,38 @@ IcedTea build harness.")
      `(("java-commons-bcel" ,java-commons-bcel)
        ,@(package-inputs ant/java8)))))
 
+(define-public ant-junit
+  (package
+    (inherit ant/java8)
+    (name "ant-junit")
+    (arguments
+     (substitute-keyword-arguments (package-arguments ant/java8)
+       ((#:phases phases)
+        `(modify-phases ,phases
+           (add-after 'unpack 'link-junit
+             (lambda* (#:key inputs #:allow-other-keys)
+               (for-each (lambda (file)
+                           (symlink file
+                                    (string-append "lib/optional/"
+                                                   (basename file))))
+                         (find-files (assoc-ref inputs "java-junit")
+                                     "\\.jar$"))
+               #t))
+           (add-after 'build 'install
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out   (assoc-ref outputs "out"))
+                      (share (string-append out "/share/java"))
+                      (bin   (string-append out "/bin"))
+                      (lib   (string-append out "/lib")))
+                 (mkdir-p share)
+                 (install-file (string-append lib "/ant-junit.jar") share)
+                 (delete-file-recursively bin)
+                 (delete-file-recursively lib)
+                 #t)))))))
+    (inputs
+     `(("java-junit" ,java-junit)
+       ,@(package-inputs ant/java8)))))
+
 (define-public clojure
   (let* ((remove-archives '(begin
                              (for-each delete-file
-- 
2.14.1

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [bug#29394] [PATCH 11/12] gnu: Add java-picard-1.113.
  2017-11-22 11:30 ` [bug#29394] [PATCH 01/12] gnu: Add java-snappy-1 ricardo.wurmus
                     ` (8 preceding siblings ...)
  2017-11-22 11:30   ` [bug#29394] [PATCH 10/12] gnu: Add ant-junit ricardo.wurmus
@ 2017-11-22 11:30   ` ricardo.wurmus
  2017-11-22 11:30   ` [bug#29394] [PATCH 12/12] gnu: Add java-jbzip2 ricardo.wurmus
  10 siblings, 0 replies; 14+ messages in thread
From: ricardo.wurmus @ 2017-11-22 11:30 UTC (permalink / raw)
  To: 29394; +Cc: Ricardo Wurmus

From: Ricardo Wurmus <rekado@elephly.net>

* gnu/packages/bioinformatics.scm (java-picard-1.113): New variable.
---
 gnu/packages/bioinformatics.scm | 114 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 114 insertions(+)

diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 0896edf25..16e20c189 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -3086,6 +3086,120 @@ commonly used for high-throughput sequencing data such as SAM, BAM, CRAM and
 VCF.")
     (license license:expat)))
 
+;; This is the last version of Picard to provide net.sf.samtools
+(define-public java-picard-1.113
+  (package (inherit java-picard)
+    (name "java-picard")
+    (version "1.113")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/broadinstitute/picard.git")
+                    (commit version)))
+              (file-name (string-append "java-picard-" version "-checkout"))
+              (sha256
+               (base32
+                "0lkpvin2fz3hhly4l02kk56fqy8lmlgyzr9kmvljk6ry6l1hw973"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  ;; Delete pre-built binaries.
+                  (delete-file-recursively "lib")
+                  (mkdir-p "lib")
+                  #t))))
+    (build-system ant-build-system)
+    (arguments
+     `(#:build-target "picard-jar"
+       #:test-target "test"
+       ;; FIXME: the class path at test time is wrong.
+       ;; [testng] Error: A JNI error has occurred, please check your installation and try again
+       ;; [testng] Exception in thread "main" java.lang.NoClassDefFoundError: com/beust/jcommander/ParameterException
+       #:tests? #f
+       #:jdk ,icedtea-8
+       ;; This is only used for tests.
+       #:make-flags
+       (list "-Dsamjdk.intel_deflater_so_path=lib/jni/libIntelDeflater.so")
+       #:phases
+       (modify-phases %standard-phases
+         ;; Do not use bundled ant bzip2.
+         (add-after 'unpack 'use-ant-bzip
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "build.xml"
+               (("\\$\\{lib\\}/apache-ant-1.8.2-bzip2.jar")
+                (string-append (assoc-ref inputs "ant")
+                               "/lib/ant.jar")))
+             #t))
+         (add-after 'unpack 'make-test-target-independent
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "build.xml"
+               (("name=\"test\" depends=\"compile, ")
+                "name=\"test\" depends=\"compile-tests, ")
+               (("name=\"compile\" depends=\"compile-src, compile-tests\"")
+                "name=\"compile\" depends=\"compile-src\""))
+             #t))
+         (add-after 'unpack 'fix-deflater-path
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* "src/java/net/sf/samtools/Defaults.java"
+               (("getStringProperty\\(\"intel_deflater_so_path\", null\\)")
+                (string-append "getStringProperty(\"intel_deflater_so_path\", \""
+                               (assoc-ref outputs "out")
+                               "/lib/jni/libIntelDeflater.so"
+                               "\")")))
+             #t))
+         ;; Build the deflater library, because we've previously deleted the
+         ;; pre-built one.  This can only be built with access to the JDK
+         ;; sources.
+         (add-after 'build 'build-jni
+           (lambda* (#:key inputs #:allow-other-keys)
+             (mkdir-p "lib/jni")
+             (mkdir-p "jdk-src")
+             (and (zero? (system* "tar" "--strip-components=1" "-C" "jdk-src"
+                                  "-xf" (assoc-ref inputs "jdk-src")))
+                  (zero? (system* "javah" "-jni"
+                                  "-classpath" "classes"
+                                  "-d" "lib/"
+                                  "net.sf.samtools.util.zip.IntelDeflater"))
+                  (with-directory-excursion "src/c/inteldeflater"
+                    (zero? (system* "gcc" "-I../../../lib" "-I."
+                                    (string-append "-I" (assoc-ref inputs "jdk")
+                                                   "/include/linux")
+                                    "-I../../../jdk-src/src/share/native/common/"
+                                    "-I../../../jdk-src/src/solaris/native/common/"
+                                    "-c" "-O3" "-fPIC" "IntelDeflater.c"))
+                    (zero? (system* "gcc" "-shared"
+                                    "-o" "../../../lib/jni/libIntelDeflater.so"
+                                    "IntelDeflater.o" "-lz" "-lstdc++"))))))
+         ;; We can only build everything else after building the JNI library.
+         (add-after 'build-jni 'build-rest
+           (lambda* (#:key make-flags #:allow-other-keys)
+             (zero? (apply system* `("ant" "all" ,@make-flags)))))
+         (add-before 'build 'set-JAVA6_HOME
+           (lambda _
+             (setenv "JAVA6_HOME" (getenv "JAVA_HOME"))
+             #t))
+         (replace 'install (install-jars "dist"))
+         (add-after 'install 'install-jni-lib
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((jni (string-append (assoc-ref outputs "out")
+                                       "/lib/jni")))
+               (mkdir-p jni)
+               (install-file "lib/jni/libIntelDeflater.so" jni)
+               #t))))))
+    (inputs
+     `(("java-snappy-1" ,java-snappy-1)
+       ("java-commons-jexl-2" ,java-commons-jexl-2)
+       ("java-cofoja" ,java-cofoja)
+       ("ant" ,ant) ; for bzip2 support at runtime
+       ("zlib" ,zlib)))
+    (native-inputs
+     `(("ant-apache-bcel" ,ant-apache-bcel)
+       ("ant-junit" ,ant-junit)
+       ("java-testng" ,java-testng)
+       ("java-commons-bcel" ,java-commons-bcel)
+       ("java-jcommander" ,java-jcommander)
+       ("jdk" ,icedtea-8 "jdk")
+       ("jdk-src" ,(car (assoc-ref (package-native-inputs icedtea-8) "jdk-drop")))))))
+
 (define-public htslib
   (package
     (name "htslib")
-- 
2.14.1

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [bug#29394] [PATCH 12/12] gnu: Add java-jbzip2.
  2017-11-22 11:30 ` [bug#29394] [PATCH 01/12] gnu: Add java-snappy-1 ricardo.wurmus
                     ` (9 preceding siblings ...)
  2017-11-22 11:30   ` [bug#29394] [PATCH 11/12] gnu: Add java-picard-1.113 ricardo.wurmus
@ 2017-11-22 11:30   ` ricardo.wurmus
  2017-11-27 20:56     ` bug#29394: " Ricardo Wurmus
  10 siblings, 1 reply; 14+ messages in thread
From: ricardo.wurmus @ 2017-11-22 11:30 UTC (permalink / raw)
  To: 29394; +Cc: Ricardo Wurmus

From: Ricardo Wurmus <rekado@elephly.net>

* gnu/packages/compression.scm (java-jbzip2): New variable.
---
 gnu/packages/compression.scm | 40 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index 193d36797..4ea4b105f 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -1314,6 +1314,46 @@ Java.  This compression code produces a byte-for-byte exact copy of the output
 created by the original C++ code, and extremely fast.")
     (license license:asl2.0)))
 
+(define-public java-jbzip2
+  (package
+    (name "java-jbzip2")
+    (version "0.9.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://storage.googleapis.com/"
+                                  "google-code-archive-source/v2/"
+                                  "code.google.com/jbzip2/"
+                                  "source-archive.zip"))
+              (file-name (string-append name "-" version ".zip"))
+              (sha256
+               (base32
+                "0ncmhlqmrfmj96nqf6p77b9ws35lcfsvpfxzwxi2asissc83z1l3"))))
+    (build-system ant-build-system)
+    (native-inputs
+     `(("unzip" ,unzip)
+       ("java-junit" ,java-junit)))
+    (arguments
+     `(#:tests? #f                      ; no tests
+       #:jar-name "jbzip2.jar"
+       #:source-dir "tags/release-0.9.1/src"
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-encoding-problems
+           (lambda _
+             ;; Some of the files we're patching are
+             ;; ISO-8859-1-encoded, so choose it as the default
+             ;; encoding so the byte encoding is preserved.
+             (with-fluids ((%default-port-encoding #f))
+               (substitute* "tags/release-0.9.1/src/org/itadaki/bzip2/HuffmanAllocator.java"
+                 (("Milidi.") "Milidiu")))
+             #t)))))
+    (home-page "https://code.google.com/archive/p/jbzip2/")
+    (synopsis "Java bzip2 compression/decompression library")
+    (description "Jbzip2 is a Java bzip2 compression/decompression library.
+It can be used as a replacement for the Apache @code{CBZip2InputStream} /
+@code{CBZip2OutputStream} classes.")
+    (license license:expat)))
+
 (define-public p7zip
   (package
     (name "p7zip")
-- 
2.14.1

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* bug#29394: [PATCH 12/12] gnu: Add java-jbzip2.
  2017-11-22 11:30   ` [bug#29394] [PATCH 12/12] gnu: Add java-jbzip2 ricardo.wurmus
@ 2017-11-27 20:56     ` Ricardo Wurmus
  0 siblings, 0 replies; 14+ messages in thread
From: Ricardo Wurmus @ 2017-11-27 20:56 UTC (permalink / raw)
  To: 29394-done


Pushed them all to the master branch.

-- 
Ricardo

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2017-11-27 20:57 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-11-22 11:21 [bug#29394] [PATCH 00/12] Add Java dependencies for FastQC Ricardo Wurmus
2017-11-22 11:30 ` [bug#29394] [PATCH 01/12] gnu: Add java-snappy-1 ricardo.wurmus
2017-11-22 11:30   ` [bug#29394] [PATCH 02/12] gnu: Add javacc ricardo.wurmus
2017-11-22 11:30   ` [bug#29394] [PATCH 03/12] gnu: Add javacc-4 ricardo.wurmus
2017-11-22 11:30   ` [bug#29394] [PATCH 04/12] gnu: Add java-commons-jexl-2 ricardo.wurmus
2017-11-22 11:30   ` [bug#29394] [PATCH 05/12] gnu: java-htsjdk: Update to 2.3.0 ricardo.wurmus
2017-11-22 11:30   ` [bug#29394] [PATCH 06/12] gnu: Add java-picard ricardo.wurmus
2017-11-22 11:30   ` [bug#29394] [PATCH 07/12] gnu: Add java-cofoja ricardo.wurmus
2017-11-22 11:30   ` [bug#29394] [PATCH 08/12] gnu: Add java-commons-bcel ricardo.wurmus
2017-11-22 11:30   ` [bug#29394] [PATCH 09/12] gnu: Add ant-apache-bcel ricardo.wurmus
2017-11-22 11:30   ` [bug#29394] [PATCH 10/12] gnu: Add ant-junit ricardo.wurmus
2017-11-22 11:30   ` [bug#29394] [PATCH 11/12] gnu: Add java-picard-1.113 ricardo.wurmus
2017-11-22 11:30   ` [bug#29394] [PATCH 12/12] gnu: Add java-jbzip2 ricardo.wurmus
2017-11-27 20:56     ` bug#29394: " Ricardo Wurmus

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).