aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDanny Milosavljevic <dannym@scratchpost.org>2018-03-25 12:19:18 +0200
committerDanny Milosavljevic <dannym@scratchpost.org>2018-05-06 19:39:54 +0200
commitbc65332a38c908cab86c51bd53ae25a5e40ec374 (patch)
tree21ee43b797d59b1ed5888a28fe86a7536147cf5d
parent12bd588346f8b2fb3709acfe0ee89d153da2db34 (diff)
downloadguix-bc65332a38c908cab86c51bd53ae25a5e40ec374.tar
guix-bc65332a38c908cab86c51bd53ae25a5e40ec374.tar.gz
guix: ant-build-system: Create INDEX.LIST.
Fixes <https://bugs.gnu.org/31374>. * guix/build/ant-build-system.scm (generate-jar-indices): New procedure. (%standard-phases)[generate-jar-indices]: New phase.
-rw-r--r--guix/build/ant-build-system.scm17
1 files changed, 16 insertions, 1 deletions
diff --git a/guix/build/ant-build-system.scm b/guix/build/ant-build-system.scm
index a6da530dab..d28c2903ae 100644
--- a/guix/build/ant-build-system.scm
+++ b/guix/build/ant-build-system.scm
@@ -172,6 +172,19 @@ to the default GNU unpack strategy."
#:allow-other-keys)
(zero? (apply system* `("ant" ,build-target ,@make-flags))))
+(define* (generate-jar-indices #:key outputs #:allow-other-keys)
+ "Generate file \"META-INF/INDEX.LIST\". This file does not use word wraps
+and is preferred over \"META-INF/MAINFEST.MF\", which does use word wraps,
+by Java when resolving dependencies. So we make sure to create it so that
+grafting works - and so that the garbage collector doesn't collect
+dependencies of this jar file."
+ (define (generate-index jar)
+ (invoke "jar" "-i" jar))
+ (every (match-lambda
+ ((output . directory)
+ (every generate-index (find-files directory "\\.jar$"))))
+ outputs))
+
(define* (strip-jar-timestamps #:key outputs
#:allow-other-keys)
"Unpack all jar archives, reset the timestamp of all contained files, and
@@ -233,7 +246,9 @@ repack them. This is necessary to ensure that archives are reproducible."
(replace 'build build)
(replace 'check check)
(replace 'install install)
- (add-after 'install 'strip-jar-timestamps strip-jar-timestamps)))
+ (add-after 'install 'generate-jar-indices generate-jar-indices)
+ (add-after 'generate-jar-indices 'strip-jar-timestamps
+ strip-jar-timestamps)))
(define* (ant-build #:key inputs (phases %standard-phases)
#:allow-other-keys #:rest args)