;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2023 宋文武 ;;; ;;; 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 (gnu packages fsf) #:use-module (gnu packages tex) #:use-module (guix build-system copy) #:use-module (guix download) #:use-module (guix gexp) #:use-module (guix packages) #:use-module ((guix licenses) #:prefix license:)) (define-public book-faif (package (name "book-faif") (version "2.0") (source (origin (method url-fetch) (uri (string-append "https://www.fsf.org/faif/faif-" version ".tar.bz2")) (sha256 (base32 "0qf14d0n6k1dn9z0fdnx9qkhn4iq685xd443w7l7w54bm931p7dw")))) (build-system copy-build-system) (native-inputs (list (texlive-updmap.cfg (list texlive-caption texlive-endnotes texlive-fncychap texlive-helvetic texlive-times texlive-ucs)))) (arguments (list #:install-plan #~'(("faif-2.0.pdf" "share/doc/faif/")) #:phases #~(modify-phases %standard-phases (add-before 'install 'build (lambda _ (invoke "pdflatex" "faif-2.0.tex")))))) (home-page "https://www.fsf.org/faif") (synopsis "Free as in Freedom (2.0)") (description "In 2002, Sam Williams wrote Free as in Freedom, a biography of Richard M. Stallman. In its epilogue, Williams expressed hope that choosing to distribute his book under the GNU Free Documentation License would enable and encourage others to share corrections and their own perspectives through modifications to his work. Free as in Freedom (2.0) is Stallman's revision of the original biography. While preserving Williams's viewpoint, it includes factual corrections and extensive new commentary by Stallman, as well as new prefaces by both authors written for the occasion. It is a rare kind of biography, where the reader has the benefit of both the biographer's original words and the subject's response.") (license license:fdl1.3+))) -08-26committer: Avoid // in xpath.Ricardo Wurmus When using // we assume that the package definition's S-expression is a nesting of proper lists. This is not guaranteed to be true, because a package definition may contain alists. By using an explicit path to the field of interest we avoid recursion through all child nodes, thus avoiding child nodes that are more likely to contain improper lists. * etc/committer.scm.in (change-commit-message): Replace // with a path for the PACKAGE symbol. Change-Id: Idefaec9f5c3538484432e15a5865a68fc16e7369 2023-09-24etc/committer: Speed up surrounding-sexp.Ricardo Wurmus The old surrounding-sexp procedure would read all S-expressions from the beginning of the file up to the given line number and then return the last encountered S-expression. This is quite wasteful. Instead we can record all lines that begin with an S-expression and jump straight to the offset closest to the desired line number to read the S-expression there. * etc/committer.scm.in (lines+offsets-with-opening-parens): New procedure. (surrounding-sexp): Use it. 2023-09-24etc/committer: Avoid reading original files more than once.Ricardo Wurmus * etc/committer.scm.in (%original-file-cache): New variable. (read-original-file): New procedure. (read-original-file*): New procedure. (old-sexp): Use it. 2023-09-24etc/committer: Do not record positions when reading from git files.Ricardo Wurmus This gives us a slight performance boost. * etc/committer.scm.in (main): Disable recording of positions. 2023-09-24etc/committer: Do not recompute changes when there are no definitions.Ricardo Wurmus * etc/committer.scm.in (main): Reuse previously computed changes if there are no changes to the number of definitions.