;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016 Hartmut Goebel ;;; ;;; This file is part of GNU Guix. ;;; ;;; GNU Guix is free software; you can redistribute it and/or modify it ;;; under the terms of the GNU General Public License as published by ;;; the Free Software Foundation; either version 3 of the License, or (at ;;; your option) any later version. ;;; ;;; GNU Guix is distributed in the hope that it will be useful, but ;;; WITHOUT ANY WARRANTY; without even the implied warranty of ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;;; GNU General Public License for more details. ;;; ;;; You should have received a copy of the GNU General Public License ;;; along with GNU Guix. If not, see . (define-module (guix build java-utils) #:use-module (guix build utils) #:export (ant-build-javadoc install-jars install-javadoc)) (define (package-name-version store-dir) ; copied from haskell-build-system.scm - seeking for a more general solution "Given a store directory STORE-DIR return 'name-version' of the package." (let* ((base (basename store-dir))) (string-drop base (+ 1 (string-index base #\-))))) (define* (ant-build-javadoc #:key (target "javadoc") (make-flags '()) #:allow-other-keys) (zero? (apply system* `("ant" ,target ,@make-flags)))) (define* (install-jars jars-dir) "Helper for the case the build.xml does not include an install target." (lambda* (#:key outputs #:allow-other-keys) (let ((share (string-append (assoc-ref outputs "out") "/share/java"))) (for-each (lambda (f) (install-file f share)) (find-files jars-dir "\\.jar$"))))) (define* (install-javadoc apidocs-dir) "Helper to install the javadocs." (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (docs (string-append (assoc-ref outputs "doc") "/share/doc/" (package-name-version out) "/"))) (mkdir-p docs) (copy-recursively apidocs-dir docs))))