From 74b671b94d16db2f21c1df02672fef0b5228a08a Mon Sep 17 00:00:00 2001 From: Andrew Tropin Date: Thu, 18 Aug 2022 17:43:14 +0300 Subject: [PATCH 1/3] build-system: emacs: Add documentation-files argument. Allows to build info files from texinfo or org. * guix/build-system/emacs.scm (default-texinfo): New variable. * guix/build-system/emacs.scm (lower): New arguments. * guix/build/emacs-build-system.scm (generate-docs): New variable. --- guix/build-system/emacs.scm | 11 +++++++++++ guix/build/emacs-build-system.scm | 17 +++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/guix/build-system/emacs.scm b/guix/build-system/emacs.scm index 3df68789ff..632ba2ddb3 100644 --- a/guix/build-system/emacs.scm +++ b/guix/build-system/emacs.scm @@ -56,8 +56,16 @@ (define (default-emacs) (let ((emacs-mod (resolve-interface '(gnu packages emacs)))) (module-ref emacs-mod 'emacs-minimal))) +(define (default-texinfo) + "Return the default texinfo package." + ;; Lazily resolve the binding to avoid a circular dependency. + (let ((texinfo-mod (resolve-interface '(gnu packages texinfo)))) + (module-ref texinfo-mod 'texinfo))) + (define* (lower name #:key source inputs native-inputs outputs system target + documentation-files + (texinfo (default-texinfo)) (emacs (default-emacs)) #:allow-other-keys #:rest arguments) @@ -77,6 +85,7 @@ (define private-keywords ;; Keep the standard inputs of 'gnu-build-system'. ,@(standard-packages))) (build-inputs `(("emacs" ,emacs) + ,@(if (null? documentation-files) '() `(("texinfo" ,texinfo))) ,@native-inputs)) (outputs outputs) (build emacs-build) @@ -87,6 +96,7 @@ (define* (emacs-build name inputs (tests? #f) (parallel-tests? #t) (test-command ''("make" "check")) + (documentation-files ''()) (phases '%standard-phases) (outputs '("out")) (include (quote %default-include)) @@ -109,6 +119,7 @@ (define builder #:test-command #$test-command #:tests? #$tests? #:parallel-tests? #$parallel-tests? + #:documentation-files #$documentation-files #:phases #$phases #:outputs #$(outputs->gexp outputs) #:include #$include diff --git a/guix/build/emacs-build-system.scm b/guix/build/emacs-build-system.scm index 6a6918bfdd..08c61ddfd8 100644 --- a/guix/build/emacs-build-system.scm +++ b/guix/build/emacs-build-system.scm @@ -274,6 +274,22 @@ (define (match-stripped-file action regex) (install-file? file stat #:verbose? #t))) #f)))) +(define* (generate-docs #:key outputs documentation-files #:allow-other-keys) + "Convert texinfo or org files specified in DOCUMENTATION-FILES argument to +info files." + (map + (lambda (path) + (if (or (string-suffix? ".texi" path) + (string-suffix? ".texinfo" path) + (string-suffix? ".txi" path)) + (invoke "makeinfo" path) + (emacs-batch-script ; else org file + `(progn + (require 'ox-texinfo) + (find-file ,path) + (org-texinfo-export-to-info))))) + documentation-files)) + (define* (move-doc #:key outputs #:allow-other-keys) "Move info files from the ELPA package directory to the info directory." (let* ((out (assoc-ref outputs "out")) @@ -343,6 +359,7 @@ (define %standard-phases (modify-phases gnu:%standard-phases (replace 'unpack unpack) (add-after 'unpack 'expand-load-path expand-load-path) + (add-after 'expand-load-path 'generate-docs generate-docs) (delete 'bootstrap) (delete 'configure) (delete 'build) -- 2.37.1