Subject: [bug#29897] [PATCH core-updates] gnu: java-aqute-libg: Fix compilation on java8.

From: Chris Marusich <[email-masked]>
Date: Thu, 25 Jan 2018 01:30:22 -0800

Gábor Boskovits <[email-masked]> writes:

> Thanks for the corrections.
> Looks good to me,
> I won't send an updated patch then.
> Please commit with the modifications.

I made the modifications and also tried to enable the tests (see
attached patch), but I discovered that some of the tests are failing
(and some are passing).  Perhaps we should try fixing the tests while
we're here?  If you do

  /pre-inst-env guix build --keep-failed java-aqute-libg

you can see the failures.  The build directory will be kept.  If we go
to it, we can find a report of the test failures under the path:

  bnd-3.4.0.REL/aQute.libg/test/test-reports

Unfortunately, the ant-build-system doesn't compile the classes with
debug info by default.  To enable line numbers etc. in the stack traces,
we'll need to add

  debug="true"

to the relevant <javac> tags, as described here:

https://ant.apache.org/manual/Tasks/javac.html

If you could help debug the failures, that would be nice.  I will also
look as I get time.

-- 
Chris
From ff975ea3c3e26a57bd97e13f20e7b8aa380b91e6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?G=C3=A1bor=20Boskovits?= <[email-masked]>
Date: Fri, 29 Dec 2017 20:17:00 +0100
Subject: [PATCH] gnu: java-aqute-libg: Explicitly build for Java 7.

* gnu/packages/java.scm (java-aqute-libg)[arguments]: Add keyword make-flags
  to use source and target 1.7.

Co-authored-by: Chris Marusich <[email-masked]>
---
 gnu/packages/java.scm | 23 ++++++++++++++++++++++-
 1 file changed, 22 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 2724f0f20..ae7e98977 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -6003,7 +6003,28 @@ it manages project dependencies, gives diffs jars, and much more.")
     (arguments
      `(#:jar-name "java-aqute-libg.jar"
        #:source-dir "aQute.libg/src"
-       #:tests? #f)); FIXME: tests are in "aQute.libg/test", not in a java directory
+       ;; The build fails when source/target are more recent than 1.7.  This
+       ;; is a known issue.  See: https://github.com/bndtools/bnd/issues/1327
+       ;;
+       ;; It is closed as won't fix. There is no way to change the source so
+       ;; that is works on 1.8, and it still works on 1.6, the upstream
+       ;; target. It works fine on 1.7, however, so we use 1.7.
+       #:make-flags (list "-Dant.build.javac.source=1.7"
+                          "-Dant.build.javac.target=1.7")
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'create-java-test-dir
+           ;; Move the test directory into test/java, since that's where
+           ;; ant-build-system's default project in build.xml expects to find
+           ;; the test classes.
+           (lambda _
+             (rename-file "aQute.libg/test" "aQute.libg/test.tmp")
+             (mkdir "aQute.libg/test")
+             (rename-file "aQute.libg/test.tmp" "aQute.libg/test/java"))))
+       #:test-dir "aQute.libg/test"))
+    (native-inputs
+     `(("hamcrest" ,java-hamcrest-core)
+       ("java-junit" ,java-junit)))
     (inputs
      `(("slf4j" ,java-slf4j-api)
        ("osgi-annot" ,java-osgi-annotation)
-- 
2.15.1