GNU bug report logs -
#53292
[PATCH] build: clojure-build-system: Support compiling Java sources.
Previous Next
Reported by: Reily Siegel <mail <at> reilysiegel.com>
Date: Sun, 16 Jan 2022 01:32:01 UTC
Severity: normal
Tags: patch
Done: Ludovic Courtès <ludo <at> gnu.org>
Bug is archived. No further changes may be made.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 53292 in the body.
You can then email your comments to 53292 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
guix-patches <at> gnu.org
:
bug#53292
; Package
guix-patches
.
(Sun, 16 Jan 2022 01:32:01 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
Reily Siegel <mail <at> reilysiegel.com>
:
New bug report received and forwarded. Copy sent to
guix-patches <at> gnu.org
.
(Sun, 16 Jan 2022 01:32:01 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
* guix/build/clojure-build-system.scm (compile-java): New variable.
* guix/build/clojure-build-system.scm (build): Copy classes compiled from Java
and optionally Java sources to the final jar.
* guix/build/clojure-build-system.scm (%standard-phases): Add compile-java
phase before build.
* guix/build/clojure-utils.scm (%java-source-dirs): New variable.
* guix/build/clojure-utils.scm (%java-compile-dir): New variable.
* guix/build-system/clojure.scm (clojure-build): Include %java-source-dirs and
%java-compile-dir.
* guix/build-system/clojure.scm (builder): Include %java-source-dirs and
%java-compile-dir.
---
guix/build-system/clojure.scm | 6 ++++-
guix/build/clojure-build-system.scm | 36 +++++++++++++++++++++++------
guix/build/clojure-utils.scm | 10 ++++++++
3 files changed, 44 insertions(+), 8 deletions(-)
diff --git a/guix/build-system/clojure.scm b/guix/build-system/clojure.scm
index 634854cf1b..2a0713d297 100644
--- a/guix/build-system/clojure.scm
+++ b/guix/build-system/clojure.scm
@@ -107,8 +107,10 @@ (define* (clojure-build name inputs
#:key
source
(source-dirs `',%source-dirs)
+ (java-source-dirs `',%java-source-dirs)
(test-dirs `',%test-dirs)
(compile-dir %compile-dir)
+ (java-compile-dir %java-compile-dir)
(jar-names `',(package-name->jar-names name))
(main-class %main-class)
@@ -142,9 +144,11 @@ (define builder
#:source #+source
#:source-dirs #$source-dirs
+ #:java-source-dirs #$java-source-dirs
#:test-dirs #$test-dirs
#:compile-dir #$compile-dir
-
+ #:java-compile-dir #$java-compile-dir
+
#:jar-names #$jar-names
#:main-class #$main-class
#:omit-source? #$omit-source?
diff --git a/guix/build/clojure-build-system.scm b/guix/build/clojure-build-system.scm
index dd01f95de8..22e90581a5 100644
--- a/guix/build/clojure-build-system.scm
+++ b/guix/build/clojure-build-system.scm
@@ -34,8 +34,24 @@ (define-module (guix build clojure-build-system)
;;
;; Code:
+(define* (compile-java #:key
+ java-source-dirs java-compile-dir
+ #:allow-other-keys)
+ "Compile java sources for use in clojure-build-system."
+ (let ((java-files (append-map (lambda (dir)
+ (find-files dir "\\.java$"))
+ java-source-dirs)))
+ (mkdir-p java-compile-dir)
+ (when (not (eq? java-files '()))
+ (apply invoke
+ "javac"
+ "-verbose"
+ "-d" java-compile-dir
+ java-files))))
+
(define* (build #:key
- source-dirs compile-dir
+ source-dirs java-source-dirs
+ compile-dir java-compile-dir
jar-names main-class omit-source?
aot-include aot-exclude
#:allow-other-keys)
@@ -46,19 +62,24 @@ (define* (build #:key
#:all-list libs)))
(mkdir-p compile-dir)
(eval-with-clojure `(run! compile ',libs*)
- source-dirs)
+ (cons* compile-dir
+ java-compile-dir
+ source-dirs))
(let ((source-dir-files-alist (map (lambda (dir)
(cons dir (find-files* dir)))
- source-dirs))
+ (append source-dirs
+ java-source-dirs)))
;; workaround transitive compilation in Clojure
(classes (filter (lambda (class)
(any (cut compiled-from? class <>)
libs*))
(find-files* compile-dir))))
- (for-each (cut create-jar <> (cons (cons compile-dir classes)
- (if omit-source?
- '()
- source-dir-files-alist))
+ (for-each (cut create-jar <> (cons* (cons compile-dir classes)
+ (cons java-compile-dir
+ (find-files* java-compile-dir))
+ (if omit-source?
+ '()
+ source-dir-files-alist))
#:main-class main-class)
jar-names)
#t)))
@@ -94,6 +115,7 @@ (define-with-docs install
(define-with-docs %standard-phases
"Standard build phases for clojure-build-system."
(modify-phases %standard-phases <at> ant
+ (add-before 'build 'compile-java compile-java)
(replace 'build build)
(replace 'check check)
(replace 'install install)
diff --git a/guix/build/clojure-utils.scm b/guix/build/clojure-utils.scm
index 8817cab52a..c5322141d3 100644
--- a/guix/build/clojure-utils.scm
+++ b/guix/build/clojure-utils.scm
@@ -32,8 +32,10 @@ (define-module (guix build clojure-utils)
install-doc
%source-dirs
+ %java-source-dirs
%test-dirs
%compile-dir
+ %java-compile-dir
package-name->jar-names
%main-class
%omit-source?
@@ -101,6 +103,10 @@ (define-with-docs %source-dirs
"A default list of source directories."
'("src/"))
+(define-with-docs %java-source-dirs
+ "A default list of java source directories."
+ '())
+
(define-with-docs %test-dirs
"A default list of test directories."
'("test/"))
@@ -109,6 +115,10 @@ (define-with-docs %compile-dir
"Default directory for holding class files."
"classes/")
+(define-with-docs %java-compile-dir
+ "Default directory for holding java class files."
+ "java-classes/")
+
(define (package-name->jar-names name)
"Given NAME, a package name like \"foo-0.9.1b\",
return the list of default jar names: (\"foo-0.9.1b.jar\" \"foo.jar\")."
--
2.34.0
Information forwarded
to
guix-patches <at> gnu.org
:
bug#53292
; Package
guix-patches
.
(Sun, 16 Jan 2022 10:48:02 GMT)
Full text and
rfc822 format available.
Message #8 received at 53292 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
Hi,
Reily Siegel schreef op za 15-01-2022 om 20:31 [-0500]:
> + (when (not (eq? java-files '()))
Maybe use the procedure 'null?' instead?
(when (not (null? java-files))
[...])
Greetings,
Maxime.
[signature.asc (application/pgp-signature, inline)]
Information forwarded
to
guix-patches <at> gnu.org
:
bug#53292
; Package
guix-patches
.
(Tue, 18 Jan 2022 18:18:01 GMT)
Full text and
rfc822 format available.
Message #11 received at 53292 <at> debbugs.gnu.org (full text, mbox):
* guix/build/clojure-build-system.scm (compile-java): New variable.
* guix/build/clojure-build-system.scm (build): Copy classes compiled from Java
and optionally Java sources to the final jar.
* guix/build/clojure-build-system.scm (%standard-phases): Add compile-java
phase before build.
* guix/build/clojure-utils.scm (%java-source-dirs): New variable.
* guix/build/clojure-utils.scm (%java-compile-dir): New variable.
* guix/build-system/clojure.scm (clojure-build): Include %java-source-dirs and
%java-compile-dir.
* guix/build-system/clojure.scm (builder): Include %java-source-dirs and
%java-compile-dir.
---
guix/build-system/clojure.scm | 6 ++++-
guix/build/clojure-build-system.scm | 36 +++++++++++++++++++++++------
guix/build/clojure-utils.scm | 10 ++++++++
3 files changed, 44 insertions(+), 8 deletions(-)
diff --git a/guix/build-system/clojure.scm b/guix/build-system/clojure.scm
index 634854cf1b..2a0713d297 100644
--- a/guix/build-system/clojure.scm
+++ b/guix/build-system/clojure.scm
@@ -107,8 +107,10 @@ (define* (clojure-build name inputs
#:key
source
(source-dirs `',%source-dirs)
+ (java-source-dirs `',%java-source-dirs)
(test-dirs `',%test-dirs)
(compile-dir %compile-dir)
+ (java-compile-dir %java-compile-dir)
(jar-names `',(package-name->jar-names name))
(main-class %main-class)
@@ -142,9 +144,11 @@ (define builder
#:source #+source
#:source-dirs #$source-dirs
+ #:java-source-dirs #$java-source-dirs
#:test-dirs #$test-dirs
#:compile-dir #$compile-dir
-
+ #:java-compile-dir #$java-compile-dir
+
#:jar-names #$jar-names
#:main-class #$main-class
#:omit-source? #$omit-source?
diff --git a/guix/build/clojure-build-system.scm b/guix/build/clojure-build-system.scm
index dd01f95de8..7d494078ea 100644
--- a/guix/build/clojure-build-system.scm
+++ b/guix/build/clojure-build-system.scm
@@ -34,8 +34,24 @@ (define-module (guix build clojure-build-system)
;;
;; Code:
+(define* (compile-java #:key
+ java-source-dirs java-compile-dir
+ #:allow-other-keys)
+ "Compile java sources for use in clojure-build-system."
+ (let ((java-files (append-map (lambda (dir)
+ (find-files dir "\\.java$"))
+ java-source-dirs)))
+ (mkdir-p java-compile-dir)
+ (when (not (null? java-files))
+ (apply invoke
+ "javac"
+ "-verbose"
+ "-d" java-compile-dir
+ java-files))))
+
(define* (build #:key
- source-dirs compile-dir
+ source-dirs java-source-dirs
+ compile-dir java-compile-dir
jar-names main-class omit-source?
aot-include aot-exclude
#:allow-other-keys)
@@ -46,19 +62,24 @@ (define* (build #:key
#:all-list libs)))
(mkdir-p compile-dir)
(eval-with-clojure `(run! compile ',libs*)
- source-dirs)
+ (cons* compile-dir
+ java-compile-dir
+ source-dirs))
(let ((source-dir-files-alist (map (lambda (dir)
(cons dir (find-files* dir)))
- source-dirs))
+ (append source-dirs
+ java-source-dirs)))
;; workaround transitive compilation in Clojure
(classes (filter (lambda (class)
(any (cut compiled-from? class <>)
libs*))
(find-files* compile-dir))))
- (for-each (cut create-jar <> (cons (cons compile-dir classes)
- (if omit-source?
- '()
- source-dir-files-alist))
+ (for-each (cut create-jar <> (cons* (cons compile-dir classes)
+ (cons java-compile-dir
+ (find-files* java-compile-dir))
+ (if omit-source?
+ '()
+ source-dir-files-alist))
#:main-class main-class)
jar-names)
#t)))
@@ -94,6 +115,7 @@ (define-with-docs install
(define-with-docs %standard-phases
"Standard build phases for clojure-build-system."
(modify-phases %standard-phases <at> ant
+ (add-before 'build 'compile-java compile-java)
(replace 'build build)
(replace 'check check)
(replace 'install install)
diff --git a/guix/build/clojure-utils.scm b/guix/build/clojure-utils.scm
index 8817cab52a..c5322141d3 100644
--- a/guix/build/clojure-utils.scm
+++ b/guix/build/clojure-utils.scm
@@ -32,8 +32,10 @@ (define-module (guix build clojure-utils)
install-doc
%source-dirs
+ %java-source-dirs
%test-dirs
%compile-dir
+ %java-compile-dir
package-name->jar-names
%main-class
%omit-source?
@@ -101,6 +103,10 @@ (define-with-docs %source-dirs
"A default list of source directories."
'("src/"))
+(define-with-docs %java-source-dirs
+ "A default list of java source directories."
+ '())
+
(define-with-docs %test-dirs
"A default list of test directories."
'("test/"))
@@ -109,6 +115,10 @@ (define-with-docs %compile-dir
"Default directory for holding class files."
"classes/")
+(define-with-docs %java-compile-dir
+ "Default directory for holding java class files."
+ "java-classes/")
+
(define (package-name->jar-names name)
"Given NAME, a package name like \"foo-0.9.1b\",
return the list of default jar names: (\"foo-0.9.1b.jar\" \"foo.jar\")."
--
2.34.0
Reply sent
to
Ludovic Courtès <ludo <at> gnu.org>
:
You have taken responsibility.
(Mon, 24 Jan 2022 09:20:02 GMT)
Full text and
rfc822 format available.
Notification sent
to
Reily Siegel <mail <at> reilysiegel.com>
:
bug acknowledged by developer.
(Mon, 24 Jan 2022 09:20:02 GMT)
Full text and
rfc822 format available.
Message #16 received at 53292-done <at> debbugs.gnu.org (full text, mbox):
Reily Siegel <mail <at> reilysiegel.com> skribis:
> * guix/build/clojure-build-system.scm (compile-java): New variable.
> * guix/build/clojure-build-system.scm (build): Copy classes compiled from Java
> and optionally Java sources to the final jar.
> * guix/build/clojure-build-system.scm (%standard-phases): Add compile-java
> phase before build.
> * guix/build/clojure-utils.scm (%java-source-dirs): New variable.
> * guix/build/clojure-utils.scm (%java-compile-dir): New variable.
> * guix/build-system/clojure.scm (clojure-build): Include %java-source-dirs and
> %java-compile-dir.
> * guix/build-system/clojure.scm (builder): Include %java-source-dirs and
> %java-compile-dir.
I tweaked the commit log (no need to repeat file names) and applied it.
Thank you, and thanks Maxime!
Ludo’.
bug archived.
Request was from
Debbugs Internal Request <help-debbugs <at> gnu.org>
to
internal_control <at> debbugs.gnu.org
.
(Mon, 21 Feb 2022 12:24:17 GMT)
Full text and
rfc822 format available.
This bug report was last modified 2 years and 62 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.