~ruther/guix-local

e96fa0b695689d781e36018218703ee1c6fa086b — Bruno Victal 2 years ago 994fbc0
search-paths: Add $XML_CATALOG_FILES and $SGML_CATALOG_FILES.

These variables are used by some packages for XML/SGML catalog lookups.

* guix/search-paths ($XML_CATALOG_FILES, $SGML_CATALOG_FILES): New variable,
extracted from …
* gnu/packages/xml.scm (libxml2, opensp)[native-search-paths]: … here. Refer
to the variables from (guix search-paths) respectively.
* gnu/packages/perl.scm
(perl-app-xml-docbook-builder)[native-search-paths]: Use $XML_CATALOG_FILES.
* doc/guix.texi (Search Paths): Update documentation to reflect changes.

Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
4 files changed, 49 insertions(+), 35 deletions(-)

M doc/guix.texi
M gnu/packages/perl.scm
M gnu/packages/xml.scm
M guix/search-paths.scm
M doc/guix.texi => doc/guix.texi +20 -13
@@ 11074,17 11074,14 @@ contain a list of @file{catalog.xml} files (not directories), which are
to be found in @file{xml} sub-directories---nothing less.  The search
path specification looks like this:

@c This is defined at (guix search-paths) as $XML_CATALOG_FILES.
@lisp
(package
  (name "libxml2")
  ;; some fields omitted
  (native-search-paths
   (list (search-path-specification
          (variable "XML_CATALOG_FILES")
          (separator " ")
          (files '("xml"))
          (file-pattern "^catalog\\.xml$")
          (file-type 'regular)))))
(search-path-specification
 (variable "XML_CATALOG_FILES")
 (separator " ")
 (files '("xml"))
 (file-pattern "^catalog\\.xml$")
 (file-type 'regular))
@end lisp

Worry not, search path specifications are usually not this tricky.


@@ 11120,15 11117,16 @@ The type of file being matched---@code{'directory} or @code{'regular},
though it can be any symbol returned by @code{stat:type} (@pxref{File
System, @code{stat},, guile, GNU Guile Reference Manual}).

In the libxml2 example above, we would match regular files; in the
Python example, we would match directories.
In the @env{XML_CATALOG_FILES} example above, we would match regular
files; in the Python example, we would match directories.

@item @code{file-pattern} (default: @code{#f})
This must be either @code{#f} or a regular expression specifying
files to be matched @emph{within} the sub-directories specified by the
@code{files} field.

Again, the libxml2 example shows a situation where this is needed.
Again, the @env{XML_CATALOG_FILES} example shows a situation where this
is needed.
@end table
@end deftp



@@ 11136,6 11134,15 @@ Some search paths are not tied by a single package but to many packages.
To reduce duplications, some of them are pre-defined in @code{(guix
search-paths)}.

@defvar $SGML_CATALOG_FILES
@defvarx $XML_CATALOG_FILES
These two search paths indicate where the
@url{https://www.oasis-open.org/specs/a401.htm,TR9401 catalog}@footnote{
Alternatively known as SGML catalog.} or
@url{https://www.oasis-open.org/committees/download.php/14809/xml-catalogs.html,
XML catalog} files can be found.
@end defvar

@defvar $SSL_CERT_DIR
@defvarx $SSL_CERT_FILE
These two search paths indicate where X.509 certificates can be found

M gnu/packages/perl.scm => gnu/packages/perl.scm +1 -6
@@ 602,12 602,7 @@ requires only 10MB of RAM.")
     (list perl-class-xsaccessor perl-test-trap))
    (native-search-paths
     ;; xsltproc's search paths, to avoid propagating libxslt.
     (list (search-path-specification
            (variable "XML_CATALOG_FILES")
            (separator " ")
            (files '("xml"))
            (file-pattern "^catalog\\.xml$")
            (file-type 'regular))))
     (list $XML_CATALOG_FILES))
    (home-page "https://www.shlomifish.org/open-source/projects/docmake/")
    (synopsis "Translate DocBook/XML documentation into other file formats")
    (description

M gnu/packages/xml.scm => gnu/packages/xml.scm +3 -16
@@ 85,6 85,7 @@
  #:use-module (guix build-system python)
  #:use-module (guix deprecation)
  #:use-module (guix utils)
  #:use-module (guix search-paths)
  #:use-module (gnu packages linux)
  #:use-module (gnu packages pkg-config))



@@ 227,14 228,7 @@ hierarchical form with variable field lengths.")
    (inputs (list xz))
    (propagated-inputs (list zlib)) ; libxml2.la says '-lz'.
    (native-inputs (list perl))
    ;; $XML_CATALOG_FILES lists 'catalog.xml' files found in under the 'xml'
    ;; sub-directory of any given package.
    (native-search-paths (list (search-path-specification
                                (variable "XML_CATALOG_FILES")
                                (separator " ")
                                (files '("xml"))
                                (file-pattern "^catalog\\.xml$")
                                (file-type 'regular))))
    (native-search-paths (list $XML_CATALOG_FILES))
    (search-paths native-search-paths)
    (description
     "Libxml2 is the XML C parser and toolkit developed for the Gnome


@@ 1808,14 1802,7 @@ modular implementation of XML-RPC for C and C++.")
                (("^\tOSGMLNORM=`echo osgmlnorm\\|sed '\\$\\(transform\\)'`\\\\")
                 "\tOSGMLNORM=`echo osgmlnorm|sed '$(transform)'`")
                (("^\t\\$\\(SHELL\\)\n") "")))))))
    ;; $SGML_CATALOG_FILES lists 'catalog' or 'CATALOG' or '*.cat' files found
    ;; under the 'sgml' sub-directory of any given package.
    (native-search-paths (list (search-path-specification
                                (variable "SGML_CATALOG_FILES")
                                (separator ":")
                                (files '("sgml"))
                                (file-pattern "^catalog$|^CATALOG$|^.*\\.cat$")
                                (file-type 'regular))))
    (native-search-paths (list $SGML_CATALOG_FILES))
    (home-page "https://openjade.sourceforge.net/")
    (synopsis "Suite of SGML/XML processing tools")
    (description "OpenSP is an object-oriented toolkit for SGML parsing and

M guix/search-paths.scm => guix/search-paths.scm +25 -0
@@ 42,6 42,8 @@
            $SSL_CERT_DIR
            $SSL_CERT_FILE
            $TZDIR
            $SGML_CATALOG_FILES
            $XML_CATALOG_FILES

            %gcc-search-paths



@@ 154,6 156,29 @@
   (files '("share/zoneinfo"))
   (separator #f)))                     ;single entry

;; Some packages (notably libxml2) make use of 'XML_CATALOG_FILES'
;; and 'SGML_CATALOG_FILES' for remapping URI references or public/system
;; identifiers to other URI references.
(define $SGML_CATALOG_FILES
  ;; $SGML_CATALOG_FILES lists 'catalog' or 'CATALOG' or '*.cat' files found
  ;; under the 'sgml' sub-directory of any given package.
  (search-path-specification
   (variable "SGML_CATALOG_FILES")
   (separator ":")
   (files '("sgml"))
   (file-pattern "^catalog$|^CATALOG$|^.*\\.cat$")
   (file-type 'regular)))

(define $XML_CATALOG_FILES
  ;; $XML_CATALOG_FILES lists 'catalog.xml' files found in under the 'xml'
  ;; sub-directory of any given package.
  (search-path-specification
   (variable "XML_CATALOG_FILES")
   (separator " ")
   (files '("xml"))
   (file-pattern "^catalog\\.xml$")
   (file-type 'regular)))

(define (search-path-specification->sexp spec)
  "Return an sexp representing SPEC, a <search-path-specification>.  The sexp
corresponds to the arguments expected by `set-path-environment-variable'."