diff options
author | Danny Milosavljevic <dannym@scratchpost.org> | 2018-03-25 12:19:18 +0200 |
---|---|---|
committer | Danny Milosavljevic <dannym@scratchpost.org> | 2018-05-06 19:39:54 +0200 |
commit | bc65332a38c908cab86c51bd53ae25a5e40ec374 (patch) | |
tree | 21ee43b797d59b1ed5888a28fe86a7536147cf5d | |
parent | 12bd588346f8b2fb3709acfe0ee89d153da2db34 (diff) | |
download | guix-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.scm | 17 |
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) |