[PATCH 0/4] Add FastQC

  • Done
  • quality assurance status badge
Details
One participant
  • Ricardo Wurmus
Owner
unassigned
Submitted by
Ricardo Wurmus
Severity
normal
R
R
Ricardo Wurmus wrote on 28 Feb 2018 23:14
(address . guix-patches@gnu.org)(name . Ricardo Wurmus)(address . rekado@elephly.net)
20180228221435.26879-1-rekado@elephly.net
Hi Guix,

this patch adds fastqc, a very popular bioinformatics tool.

This has been in my staging repo for a very long time because it is written in
Java and bundled pre-built third-party jars. I finally managed to build the
last few dependencies from source. These java-cisd-* packages were really not
easy to build and you can tell by how complicated they are.

Both java-cisd-base and java-cisd-jhdf5 include native libraries, which I'm
building from the included C sources. The packages include tests, but unlike
other Java packages these tests are in the form of an application that needs
to be executed. Hence the extra build phase after "check" to actually run the
tests.

FastQC seems to work, but I haven't performed any comprehensive tests yet.

Ricardo Wurmus (4):
gnu: Add java-cisd-base.
gnu: Add java-cisd-args4j.
gnu: Add java-cisd-jhdf5.
gnu: Add fastqc.

gnu/packages/bioinformatics.scm | 79 ++++++++
gnu/packages/java.scm | 439 ++++++++++++++++++++++++++++++++++++++++
2 files changed, 518 insertions(+)

--
2.16.2
R
R
Ricardo Wurmus wrote on 28 Feb 2018 23:38
[PATCH 3/4] gnu: Add java-cisd-jhdf5.
(address . 30658@debbugs.gnu.org)(name . Ricardo Wurmus)(address . rekado@elephly.net)
20180228223854.31118-3-rekado@elephly.net
* gnu/packages/java.scm (java-cisd-jhdf5): New variable.
---
gnu/packages/java.scm | 176 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 176 insertions(+)

Toggle diff (196 lines)
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 7ad0c4126..298874f75 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -59,6 +59,7 @@
#:use-module (gnu packages image)
#:use-module (gnu packages libffi)
#:use-module (gnu packages linux) ;alsa
+ #:use-module (gnu packages maths)
#:use-module (gnu packages web)
#:use-module (gnu packages wget)
#:use-module (gnu packages pkg-config)
@@ -2347,6 +2348,181 @@ libraries from the SIS division at ETH Zurich like jHDF5.")
(description "This package provides a parser for command line arguments.")
(license license:asl2.0))))
+(define-public java-cisd-jhdf5
+ (let ((revision 39162)
+ (base-version "14.12.6"))
+ (package
+ (name "java-cisd-jhdf5")
+ (version (string-append base-version "-" (number->string revision)))
+ (source (origin
+ (method svn-fetch)
+ (uri (svn-reference
+ (url (string-append "http://svnsis.ethz.ch/repos/cisd/"
+ "jhdf5/tags/release/"
+ (version-major+minor base-version)
+ ".x/" base-version "/jhdf5/"))
+ (revision revision)))
+ (file-name (string-append "java-cisd-jhdf5-" version "-checkout"))
+ (sha256
+ (base32
+ "13i17s2hn0q9drdqvp8csy7770p3hdbh9rp30ihln2ldkfawdmz0"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ ;; Delete included gradle jar
+ (delete-file-recursively "gradle/wrapper")
+ ;; Delete pre-built native libraries
+ (delete-file-recursively "libs")
+ #t))))
+ (build-system ant-build-system)
+ (arguments
+ `(#:make-flags '("-file" "build/build.xml")
+ #:build-target "jar-all"
+ #:test-target "jar-test"
+ #:jdk ,icedtea-8
+ #:phases
+ (modify-phases %standard-phases
+ ;; Don't erase results from the build phase when building tests.
+ (add-after 'unpack 'separate-test-target-from-clean
+ (lambda _
+ (substitute* "build/build.xml"
+ (("\"jar-test\" depends=\"clean, ")
+ "\"jar-test\" depends=\""))
+ #t))
+ (add-after 'unpack 'unpack-build-resources
+ (lambda* (#:key inputs #:allow-other-keys)
+ (copy-recursively (assoc-ref inputs "build-resources")
+ "../build_resources")
+ (delete-file-recursively "../build_resources/lib/")
+ (mkdir-p "../build_resources/lib")
+ ;; Remove dependency on classycle
+ (substitute* "../build_resources/ant/build-common.xml"
+ (("<taskdef name=\"dependency-checker.*") "")
+ (("classname=\"classycle.*") "")
+ (("classpath=\"\\$\\{lib\\}/classycle.*") ""))
+ ;; Remove dependency on svn
+ (substitute* "build/build.xml"
+ (("<build-info.*") "")
+ (("\\$\\{revision.number\\}")
+ ,(number->string revision))
+ (("\\$\\{version.number\\}") ,base-version))
+ #t))
+ (add-after 'unpack-build-resources 'fix-dependencies
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "../build_resources/ant/build-common.xml"
+ (("../libraries/testng/testng-jdk15.jar")
+ (string-append (assoc-ref inputs "java-testng")
+ "/share/java/java-testng.jar")))
+ (substitute* "build/build.xml"
+ (("\\$\\{lib\\}/sis-base/sis-base.jar")
+ (string-append (assoc-ref inputs "java-cisd-base")
+ "/share/java/sis-base.jar"))
+ (("\\$\\{lib\\}/cisd-args4j/cisd-args4j.jar")
+ (string-append (assoc-ref inputs "java-cisd-args4j")
+ "/share/java/cisd-args4j.jar"))
+ (("\\$\\{lib\\}/commons-lang/commons-lang.jar")
+ (string-append (assoc-ref inputs "java-commons-lang")
+ "/share/java/commons-lang-"
+ ,(package-version java-commons-lang) ".jar"))
+ (("\\$\\{lib\\}/commons-io/commons-io.jar")
+ (string-append (assoc-ref inputs "java-commons-io")
+ "/share/java/commons-io-"
+ ,(package-version java-commons-io)
+ "-SNAPSHOT.jar"))
+ (("\\$\\{lib\\}/testng/testng-jdk15.jar")
+ (string-append (assoc-ref inputs "java-testng")
+ "/share/java/java-testng.jar"))
+ (("\\$\\{lib\\}/junit4/junit.jar")
+ (string-append (assoc-ref inputs "java-junit")
+ "/share/java/junit.jar"))
+ (("\\$\\{lib\\}/jmock/hamcrest/hamcrest-core.jar")
+ (string-append (assoc-ref inputs "java-hamcrest-core")
+ "/share/java/hamcrest-core.jar")))
+ ;; Remove dependency on ch.rinn.restrictions
+ (with-directory-excursion "source/java/ch/systemsx/cisd/hdf5/"
+ (substitute* '("BitSetConversionUtils.java"
+ "HDF5Utils.java")
+ (("import ch.rinn.restrictions.Private;") "")
+ (("@Private") "")))
+ (with-directory-excursion "sourceTest/java/ch/systemsx/cisd/hdf5/"
+ (substitute* '("BitSetConversionTest.java"
+ "h5ar/HDF5ArchiverTest.java")
+ (("import ch.rinn.restrictions.Friend;") "")
+ (("@Friend.*") ""))
+ ;; Remove leftovers from removing @Friend
+ (substitute* "h5ar/HDF5ArchiverTest.java"
+ (("\\{ HDF5Archiver.class, IdCache.class, LinkRecord.class \\}\\)")
+ "")))
+ #t))
+ (add-before 'configure 'build-native-library
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((jdk (assoc-ref inputs "jdk"))
+ (hdf5 (assoc-ref inputs "hdf5"))
+ (dir ,(match (%current-system)
+ ("i686-linux"
+ "i386-Linux")
+ ((or "armhf-linux" "aarch64-linux")
+ "arm-Linux")
+ ((or "x86_64-linux")
+ "amd64-Linux")
+ (_ "unknown-Linux"))))
+ (with-directory-excursion "source/c"
+ (apply invoke `("gcc" "-shared" "-O3"
+ "-fPIC"
+ "-Wl,--exclude-libs,ALL"
+ ,@(find-files "jhdf5" "\\.c$")
+ ,@(find-files "hdf-java" "\\.c$")
+ ,(string-append "-I" hdf5 "/include")
+ ,(string-append "-I" jdk "/include")
+ ,(string-append "-I" jdk "/include/linux")
+ ,(string-append hdf5 "/lib/libhdf5.a")
+ "-o" "libjhdf5.so" "-lz")))
+ (install-file "source/c/libjhdf5.so"
+ (string-append "libs/native/jhdf5/" dir))
+ #t)))
+ ;; In the "check" phase we only build the test executable.
+ (add-after 'check 'run-tests
+ (lambda _
+ (invoke "java" "-jar" "targets/dist/sis-jhdf5-test.jar")
+ (delete-file "targets/dist/sis-jhdf5-test.jar")
+ #t))
+ (replace 'install
+ (install-jars "targets/dist")))))
+ (inputs
+ `(("java-cisd-base" ,java-cisd-base)
+ ("java-cisd-args4j" ,java-cisd-args4j)
+ ("java-commons-lang" ,java-commons-lang)
+ ("java-commons-io" ,java-commons-io)
+ ("hdf5" ,hdf5)
+ ("zlib" ,zlib)))
+ (native-inputs
+ `(("jdk" ,icedtea-8)
+ ("java-testng" ,java-testng)
+ ("java-junit" ,java-junit)
+ ("java-jmock" ,java-jmock)
+ ("java-hamcrest-core" ,java-hamcrest-core)
+ ("build-resources"
+ ,(origin
+ (method svn-fetch)
+ (uri (svn-reference
+ (url (string-append "http://svnsis.ethz.ch/repos/cisd/"
+ "jhdf5/tags/release/"
+ (version-major+minor base-version)
+ ".x/" base-version
+ "/build_resources/"))
+ (revision revision)))
+ (sha256
+ (base32
+ "0b6335gkm4x895rac6kfg9d3rpq0sy19ph4zpg2gyw6asfsisjhk"))))))
+ (home-page "https://wiki-bsse.ethz.ch/display/JHDF5/")
+ (synopsis "Java binding for HDF5")
+ (description "JHDF5 is a high-level API in Java for reading and writing
+HDF5 files, building on the libraries provided by the HDF Group.")
+ ;; The C sources are under a non-copyleft license, which looks like a
+ ;; variant of the BSD licenses. The whole package is under the ASL2.0.
+ (license (list license:asl2.0
+ (license:non-copyleft "file://source/c/COPYING"))))))
+
(define-public java-classpathx-servletapi
(package
(name "java-classpathx-servletapi")
--
2.16.2
R
R
Ricardo Wurmus wrote on 28 Feb 2018 23:38
[PATCH 4/4] gnu: Add fastqc.
(address . 30658@debbugs.gnu.org)(name . Ricardo Wurmus)(address . rekado@elephly.net)
20180228223854.31118-4-rekado@elephly.net
* gnu/packages/bioinformatics.scm (fastqc): New variable.
---
gnu/packages/bioinformatics.scm | 79 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 79 insertions(+)

Toggle diff (92 lines)
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index c427a6d03..99fcf34f1 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -3211,6 +3211,85 @@ VCF.")
("jdk" ,icedtea-8 "jdk")
("jdk-src" ,(car (assoc-ref (package-native-inputs icedtea-8) "jdk-drop")))))))
+(define-public fastqc
+ (package
+ (name "fastqc")
+ (version "0.11.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "http://www.bioinformatics.babraham.ac.uk/"
+ "projects/fastqc/fastqc_v"
+ version "_source.zip"))
+ (sha256
+ (base32
+ "18rrlkhcrxvvvlapch4dpj6xc6mpayzys8qfppybi8jrpgx5cc5f"))))
+ (build-system ant-build-system)
+ (arguments
+ `(#:tests? #f ; there are no tests
+ #:build-target "build"
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-dependencies
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "build.xml"
+ (("jbzip2-0.9.jar")
+ (string-append (assoc-ref inputs "java-jbzip2")
+ "/share/java/jbzip2.jar"))
+ (("sam-1.103.jar")
+ (string-append (assoc-ref inputs "java-picard-1.113")
+ "/share/java/sam-1.112.jar"))
+ (("cisd-jhdf5.jar")
+ (string-append (assoc-ref inputs "java-cisd-jhdf5")
+ "/share/java/sis-jhdf5.jar")))
+ #t))
+ ;; There is no installation target
+ (replace 'install
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin"))
+ (share (string-append out "/share/fastqc/"))
+ (exe (string-append share "/fastqc")))
+ (for-each mkdir-p (list bin share))
+ (copy-recursively "bin" share)
+ (substitute* exe
+ (("my \\$java_bin = 'java';")
+ (string-append "my $java_bin = '"
+ (assoc-ref inputs "java")
+ "/bin/java';")))
+ (chmod exe #o555)
+ (symlink exe (string-append bin "/fastqc"))
+ #t))))))
+ (inputs
+ `(("java" ,icedtea)
+ ("perl" ,perl) ; needed for the wrapper script
+ ("java-cisd-jhdf5" ,java-cisd-jhdf5)
+ ("java-picard-1.113" ,java-picard-1.113)
+ ("java-jbzip2" ,java-jbzip2)))
+ (native-inputs
+ `(("unzip" ,unzip)))
+ (home-page "http://www.bioinformatics.babraham.ac.uk/projects/fastqc/")
+ (synopsis "Quality control tool for high throughput sequence data")
+ (description
+ "FastQC aims to provide a simple way to do some quality control
+checks on raw sequence data coming from high throughput sequencing
+pipelines. It provides a modular set of analyses which you can use to
+give a quick impression of whether your data has any problems of which
+you should be aware before doing any further analysis.
+
+The main functions of FastQC are:
+
+@itemize
+@item Import of data from BAM, SAM or FastQ files (any variant);
+@item Providing a quick overview to tell you in which areas there may
+ be problems;
+@item Summary graphs and tables to quickly assess your data;
+@item Export of results to an HTML based permanent report;
+@item Offline operation to allow automated generation of reports
+ without running the interactive application.
+@end itemize\n")
+ (license license:gpl3+)))
+
(define-public htslib
(package
(name "htslib")
--
2.16.2
R
R
Ricardo Wurmus wrote on 28 Feb 2018 23:38
[PATCH 1/4] gnu: Add java-cisd-base.
(address . 30658@debbugs.gnu.org)(name . Ricardo Wurmus)(address . rekado@elephly.net)
20180228223854.31118-1-rekado@elephly.net
* gnu/packages/java.scm (java-cisd-base): New variable.
---
gnu/packages/java.scm | 149 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 149 insertions(+)

Toggle diff (162 lines)
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 0f8c04e8b..1e2b30d8d 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -2084,6 +2084,155 @@ Main-Class: org.eclipse.jdt.internal.compiler.batch.Main\n"
(native-inputs
`(("unzip" ,unzip)))))
+(define-public java-cisd-base
+ (let ((revision 38938)
+ (base-version "14.12.0"))
+ (package
+ (name "java-cisd-base")
+ (version (string-append base-version "-" (number->string revision)))
+ (source (origin
+ (method svn-fetch)
+ (uri (svn-reference
+ (url (string-append "http://svnsis.ethz.ch/repos/cisd/"
+ "base/tags/release/"
+ (version-major+minor base-version)
+ ".x/" base-version "/base/"))
+ (revision revision)))
+ (file-name (string-append "java-cisd-base-" version "-checkout"))
+ (sha256
+ (base32
+ "1i5adyf7nzclb0wydgwa1az04qliid8035vpahaandmkmigbnxiy"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ ;; Delete included gradle jar
+ (delete-file-recursively "gradle/wrapper")
+ ;; Delete pre-built native libraries
+ (delete-file-recursively "libs")
+ #t))))
+ (build-system ant-build-system)
+ (arguments
+ `(#:make-flags '("-file" "build/build.xml")
+ #:test-target "jar-test"
+ #:jdk ,icedtea-8
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'unpack-build-resources
+ (lambda* (#:key inputs #:allow-other-keys)
+ (copy-recursively (assoc-ref inputs "build-resources")
+ "../build_resources")
+ #t))
+ (add-after 'unpack-build-resources 'fix-dependencies
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "build/build.xml"
+ (("\\$\\{lib\\}/testng/testng-jdk15.jar")
+ (string-append (assoc-ref inputs "java-testng")
+ "/share/java/java-testng.jar"))
+ (("\\$\\{lib\\}/commons-lang/commons-lang.jar")
+ (string-append (assoc-ref inputs "java-commons-lang")
+ "/share/java/commons-lang-"
+ ,(package-version java-commons-lang) ".jar"))
+ (("\\$\\{lib\\}/commons-io/commons-io.jar")
+ (string-append (assoc-ref inputs "java-commons-io")
+ "/share/java/commons-io-"
+ ,(package-version java-commons-io)
+ "-SNAPSHOT.jar"))
+ ;; Remove dependency on svn
+ (("<build-info.*") "")
+ (("\\$\\{revision.number\\}")
+ ,(number->string revision))
+ (("\\$\\{version.number\\}") ,base-version))
+ ;; Remove dependency on classycle
+ (substitute* "../build_resources/ant/build-common.xml"
+ (("<taskdef name=\"dependency-checker.*") "")
+ (("classname=\"classycle.*") "")
+ (("classpath=\"\\$\\{lib\\}/classycle.*") ""))
+ #t))
+ ;; A few tests fail because of the lack of a proper /etc/groups and
+ ;; /etc/passwd file in the build container.
+ (add-after 'unpack 'disable-broken-tests
+ (lambda _
+ (substitute* "sourceTest/java/ch/systemsx/cisd/base/AllTests.java"
+ (("Unix.isOperational\\(\\)") "false"))
+ #t))
+ ;; These decorators are almost useless and pull in an unpackaged
+ ;; dependency.
+ (add-after 'unpack 'remove-useless-decorators
+ (lambda _
+ (substitute* "source/java/ch/systemsx/cisd/base/unix/Unix.java"
+ (("@Private") "")
+ (("import ch.rinn.restrictions.Private;") ""))
+ (substitute* "sourceTest/java/ch/systemsx/cisd/base/unix/UnixTests.java"
+ (("@Friend.*") "")
+ (("import ch.rinn.restrictions.Friend;") ""))
+ #t))
+ (add-before 'configure 'build-native-code
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((jdk (assoc-ref inputs "jdk"))
+ (dir ,(match (%current-system)
+ ("i686-linux"
+ "i386-Linux")
+ ((or "armhf-linux" "aarch64-linux")
+ "arm-Linux")
+ ((or "x86_64-linux")
+ "amd64-Linux")
+ (_ "unknown-Linux"))))
+ (with-directory-excursion "source/c"
+ (invoke "gcc" "-shared" "-O3" "-fPIC" "unix.c"
+ (string-append "-I" jdk "/include")
+ (string-append "-I" jdk "/include/linux")
+ "-o" "libunix.so")
+ (invoke "gcc" "-shared" "-O3" "-fPIC"
+ "-DMACHINE_BYTE_ORDER=1"
+ "copyCommon.c"
+ "copyByteChar.c"
+ "copyByteDouble.c"
+ "copyByteFloat.c"
+ "copyByteInt.c"
+ "copyByteLong.c"
+ "copyByteShort.c"
+ (string-append "-I" jdk "/include")
+ (string-append "-I" jdk "/include/linux")
+ "-o" "libnativedata.so"))
+ (install-file "source/c/libunix.so"
+ (string-append "libs/native/unix/" dir))
+ (install-file "source/c/libnativedata.so"
+ (string-append "libs/native/nativedata/" dir))
+ #t)))
+ ;; In the "check" phase we only build the test executable.
+ (add-after 'check 'run-tests
+ (lambda _
+ (invoke "java" "-jar" "targets/dist/sis-base-test.jar")
+ (delete-file "targets/dist/sis-base-test.jar")
+ #t))
+ (replace 'install (install-jars "targets/dist")))))
+ (native-inputs
+ `(("jdk" ,icedtea-8)
+ ("java-commons-lang" ,java-commons-lang)
+ ("java-commons-io" ,java-commons-io)
+ ("java-testng" ,java-testng)
+ ("build-resources"
+ ,(origin
+ (method svn-fetch)
+ (uri (svn-reference
+ (url (string-append "http://svnsis.ethz.ch/repos/cisd/"
+ "base/tags/release/"
+ (version-major+minor base-version)
+ ".x/" base-version
+ "/build_resources/"))
+ (revision revision)))
+ (sha256
+ (base32
+ "0b6335gkm4x895rac6kfg9d3rpq0sy19ph4zpg2gyw6asfsisjhk"))))))
+ (home-page "http://svnsis.ethz.ch")
+ (synopsis "Utility classes for libraries from ETH Zurich")
+ (description "This library supplies some utility classes needed for
+libraries from the SIS division at ETH Zurich like jHDF5.")
+ ;; The C sources are under a non-copyleft license, which looks like a
+ ;; variant of the BSD licenses. The whole package is under the ASL2.0.
+ (license (list license:asl2.0
+ (license:non-copyleft "file://source/c/COPYING"))))))
+
(define-public java-classpathx-servletapi
(package
(name "java-classpathx-servletapi")
--
2.16.2
R
R
Ricardo Wurmus wrote on 28 Feb 2018 23:38
[PATCH 2/4] gnu: Add java-cisd-args4j.
(address . 30658@debbugs.gnu.org)(name . Ricardo Wurmus)(address . rekado@elephly.net)
20180228223854.31118-2-rekado@elephly.net
* gnu/packages/java.scm (java-cisd-args4j): New variable.
---
gnu/packages/java.scm | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 114 insertions(+)

Toggle diff (127 lines)
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 1e2b30d8d..7ad0c4126 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -2233,6 +2233,120 @@ libraries from the SIS division at ETH Zurich like jHDF5.")
(license (list license:asl2.0
(license:non-copyleft "file://source/c/COPYING"))))))
+(define-public java-cisd-args4j
+ (let ((revision 39162)
+ (base-version "9.11.2"))
+ (package
+ (name "java-cisd-args4j")
+ (version (string-append base-version "-" (number->string revision)))
+ (source (origin
+ (method svn-fetch)
+ (uri (svn-reference
+ (url (string-append "http://svnsis.ethz.ch/repos/cisd/"
+ "args4j/tags/release/"
+ (version-major+minor base-version)
+ ".x/" base-version "/args4j/"))
+ (revision revision)))
+ (file-name (string-append "java-cisd-args4j-" version "-checkout"))
+ (sha256
+ (base32
+ "0hhqznjaivq7ips7mkwas78z42s6djsm20rrs7g1zd59rcsakxn2"))))
+ (build-system ant-build-system)
+ (arguments
+ `(#:make-flags '("-file" "build/build.xml")
+ #:tests? #f ; there are no tests
+ ;; There are weird build failures with JDK8, such as: "The type
+ ;; java.io.ObjectInputStream cannot be resolved. It is indirectly
+ ;; referenced from required .class files"
+ #:jdk ,icedtea-7
+ #:modules ((guix build ant-build-system)
+ (guix build utils)
+ (guix build java-utils)
+ (sxml simple)
+ (sxml transform)
+ (sxml xpath))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'unpack-build-resources
+ (lambda* (#:key inputs #:allow-other-keys)
+ (mkdir-p "../build_resources")
+ (invoke "tar" "xf" (assoc-ref inputs "build-resources")
+ "-C" "../build_resources"
+ "--strip-components=1")
+ (mkdir-p "../build_resources/lib")
+ #t))
+ (add-after 'unpack-build-resources 'fix-dependencies
+ (lambda* (#:key inputs #:allow-other-keys)
+ ;; FIXME: There should be a more convenient abstraction for
+ ;; editing XML files.
+ (with-directory-excursion "../build_resources/ant/"
+ (chmod "build-common.xml" #o664)
+ (call-with-output-file "build-common.xml.new"
+ (lambda (port)
+ (sxml->xml
+ (pre-post-order
+ (with-input-from-file "build-common.xml"
+ (lambda _ (xml->sxml #:trim-whitespace? #t)))
+ `(;; Remove dependency on classycle and custom ant tasks
+ (taskdef . ,(lambda (tag . kids)
+ (let ((name ((sxpath '(name *text*)) kids)))
+ (if (or (member "build-info" name)
+ (member "dependency-checker" name)
+ (member "build-java-subprojects" name)
+ (member "project-classpath" name))
+ '() ; skip
+ `(,tag ,@kids)))))
+ (typedef . ,(lambda (tag . kids)
+ (let ((name ((sxpath '(name *text*)) kids)))
+ (if (member "recursive-jar" name)
+ '() ; skip
+ `(,tag ,@kids)))))
+ (build-java-subprojects . ,(lambda _ '()))
+ ;; Ignore everything else
+ (*default* . ,(lambda (tag . kids) `(,tag ,@kids)))
+ (*text* . ,(lambda (_ txt) txt))))
+ port)))
+ (rename-file "build-common.xml.new" "build-common.xml"))
+ (substitute* "build/build.xml"
+ (("\\$\\{lib\\}/cisd-base/cisd-base.jar")
+ (string-append (assoc-ref inputs "java-cisd-base")
+ "/share/java/sis-base.jar"))
+ ;; Remove dependency on svn
+ (("<build-info.*") "")
+ (("\\$\\{revision.number\\}")
+ ,(number->string revision))
+ (("\\$\\{version.number\\}") ,base-version)
+ ;; Don't use custom ant tasks.
+ (("recursive-jar") "jar")
+ (("<project-classpath.*") ""))
+ #t))
+ (replace 'install (install-jars "targets/dist")))))
+ (inputs
+ `(("java-cisd-base" ,java-cisd-base)))
+ (native-inputs
+ `(("ecj" ,java-ecj-3.5)
+ ("build-resources"
+ ,(origin
+ (method svn-fetch)
+ (uri (svn-reference
+ (url (string-append "http://svnsis.ethz.ch/repos/cisd/"
+ "args4j/tags/release/"
+ (version-major+minor base-version)
+ ".x/" base-version
+ "/build_resources/"))
+ (revision revision)))
+ (sha256
+ (base32
+ "056cam4k8pll7ass31sy6gwn8g8719njc41yf4l02b0342nilkyf"))
+ (modules '((guix build utils)))
+ ;; Delete bundled pre-built jars.
+ (snippet
+ '(begin (delete-file-recursively "lib/") #t))))))
+ (home-page "http://svnsis.ethz.ch")
+ (synopsis "Command line parser library")
+ (description "This package provides a parser for command line arguments.")
+ (license license:asl2.0))))
+
(define-public java-classpathx-servletapi
(package
(name "java-classpathx-servletapi")
--
2.16.2
R
R
Ricardo Wurmus wrote on 9 Mar 2018 23:18
control message for bug #30658
(address . control@debbugs.gnu.org)
E1euQM2-0003Dk-GG@debbugs.gnu.org
tags 30658 fixed
close 30658
?