Subject: [bug#72060] [PATCH v2] gnu: Add xml-namespace-xsd.

From: gemmaro <[email-masked]>
Date: Sun, 21 Jul 2024 11:46:34 +0900

Liliana Marie Prikler <[email-masked]> writes:

> Am Freitag, dem 12.07.2024 um 21:50 +0900 schrieb gemmaro:
>> * gnu/packages/xml.scm (xml-namespace-xsd): New variable.
>> 
>> Change-Id: Iec2d68f1d9190ba9e1723ca10adf1de0dfd2d722
>> ---
>> I forgot to add copy-build-system in the first revision.
>> 
>>  gnu/packages/xml.scm | 39 +++++++++++++++++++++++++++++++++++++++
>>  1 file changed, 39 insertions(+)
>> 
>> diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm
>> index c6ddae50ae..71344dea0f 100644
>> --- a/gnu/packages/xml.scm
>> +++ b/gnu/packages/xml.scm
>> @@ -33,6 +33,7 @@
>>  ;;; Copyright © 2021 Guillaume Le Vaillant <[email-masked]>
>>  ;;; Copyright © 2021 David Larsson <[email-masked]>
>>  ;;; Copyright © 2021 Matthew James Kraai <[email-masked]>
>> +;;; Copyright © 2024 gemmaro <[email-masked]>
>>  ;;;
>>  ;;; This file is part of GNU Guix.
>>  ;;;
>> @@ -76,6 +77,7 @@ (define-module (gnu packages xml)
>>    #:use-module (guix download)
>>    #:use-module (guix git-download)
>>    #:use-module (guix build-system cmake)
>> +  #:use-module (guix build-system copy)
>>    #:use-module (guix build-system gnu)
>>    #:use-module (guix build-system meson)
>>    #:use-module (guix build-system perl)
>> @@ -1953,3 +1955,40 @@ (define-public python-xmltodict
>>      (description "This package provides a Python library to convert
>> XML to
>>  @code{OrderedDict}.")
>>      (license license:expat)))
>> +
>> +(define-public xml-namespace-xsd
>> +  (package
>> +    (name "xml-namespace-xsd")
>> +    (version "2009-01")
>> +    (source
>> +     (origin
>> +       (method url-fetch)
>> +       (uri "https://www.w3.org/2009/01/xml.xsd")
> It's a good idea to formulate URI in terms of version.  In this case,
> replacing the dash with a slash.
>> +       (sha256
>> +        (base32
>> "0agqmxbhk2q9xa38m02z7ggbb124z6avnqyhz8k43iicqhv1fw6c"))))
>> +    (build-system copy-build-system)
>> +    (arguments
>> +     (list
>> +      #:install-plan #~'(("xml.xsd" "/xml/dtd/namespace/xml.xsd"))
>> +      #:phases #~(modify-phases %standard-phases
>> +                   (add-before 'install 'create-catalog
>> +                     (lambda* (#:key inputs #:allow-other-keys)
>> +                       (let ((out (string-append #$output
>> "/xml/dtd/namespace")))
>> +                         (mkdir-p out)
>> +                         (invoke (search-input-file inputs
>> "/bin/xmlcatalog")
> You can probably invoke the command by command name.  Otherwise you'd
> need to go through (or native-inputs inputs)
>> +                                 "--noout"
>> +                                 "--create"
>> +                                 "--add"
>> +                                 "uri"
>> +                                 "http://www.w3.org/2001/xml.xsd"
>> +                                 (string-append out "/xml.xsd")
>> +                                 (string-append out
>> "/catalog.xml"))))))))
> Don't forget that you can write to the local directory.  You should
> also do so and reflect the added file in the install-plan.
>> +    (native-inputs (list libxml2))
>> +    (home-page "https://www.w3.org/XML/1998/namespace")
>> +    (synopsis "XML Schema for XML namespace")
>> +    (description
>> +     "This package provides an XML Schema fragment and its catalog.
> An XML Schema fragment?
>>   The schema
>> +constrains the syntax of @code{xml:lang}, @code{xml:spec},
>> @code{xml:base}, and
>> +@code{xml:id} in the schema language defined by the XML Schema
>> Recommendation Second
>> +Edition of 28 October 2004.")
>> +    (license license:w3c)))
> Cheers

Thank you for your review.
I sent revision 3 [1].

I may have forgotten to include your email address in X-Debbugs-Cc.
If that is the case, I apologise for the inconvenience.

[1] https://issues.guix.gnu.org/72060#3

Regards,
gemmaro.