~ruther/guix-local

97922804161ee9d95680d891ad23f45a88bb6be9 — Nicolas Graves 4 months ago 364c45bb
gnu: python-mkdoc-material: Unbundle js-lunr-* packages.

* gnu/packages/python-xyz.scm (python-mkdocs-material)
[source]<snippet>: Unbundle js-lunr-* assets.  Add a warning comment:
there are other unbundled minified assets!
[build-system]: Switch to pyproject-build-system.
[arguments]<#:tests?>: Disable them.
<#:phases>: Add phase 'inject-javascript-assets and
'replace-javascript-assets.
[native-inputs]: Add python-setuptools.

Change-Id: Ie04b8d2e885f549fe756a433f4beb16ef0053128
Signed-off-by: Sharlatan Hellseher <sharlatanus@gmail.com>
1 files changed, 64 insertions(+), 11 deletions(-)

M gnu/packages/python-xyz.scm
M gnu/packages/python-xyz.scm => gnu/packages/python-xyz.scm +64 -11
@@ 243,6 243,7 @@
  #:use-module (gnu packages inkscape)
  #:use-module (gnu packages iso-codes)
  #:use-module (gnu packages java)
  #:use-module (gnu packages javascript)
  #:use-module (gnu packages jupyter)
  #:use-module (gnu packages kerberos)
  #:use-module (gnu packages less)


@@ 3498,18 3499,70 @@ commits.")
       (uri
        (pypi-uri "mkdocs-material" version))
       (sha256
        (base32 "0ci9xiasq9nfn09v11m7p49vzazdbgslw7rpzjd6y3hsmn9vljz3"))))
    (build-system python-build-system)
        (base32 "0ci9xiasq9nfn09v11m7p49vzazdbgslw7rpzjd6y3hsmn9vljz3"))
       (modules '((guix build utils)))
       (snippet
        ;; TODO There are still bundled assets and minified JS.
        #~(delete-file-recursively "material/assets/javascripts/lunr/min"))))
    (build-system pyproject-build-system)
    (arguments
     `(#:phases
       (modify-phases %standard-phases
         ;; Requirement mkdocs-material-extensions
         ;; in-turn requires mkdocs-material. This causes
         ;; circular dependency, so we remove this requirement.
         (add-after 'unpack 'patch-requirements
           (lambda _
             (substitute* "requirements.txt"
               (("mkdocs-material-extensions.*$") "")))))))
     (list
      #:tests? #f                       ; No tests.
      #:phases
      #~(let ((symlink-js
               (lambda (inputs)
                 (for-each
                  (lambda (lang)
                    (let* ((filename (string-append "lunr." lang ".min.js"))
                           (file (string-append "share/javascript/" filename)))
                      (symlink (search-input-file inputs file) filename)))
                  (list "ar" "da" "de" "es" "fi" "fr" "hu" "it" "ja" "multi"
                        "nl" "no" "pt" "ro" "ru" "stemmer.support" "sv" "tr"
                        "vi")))))
          (modify-phases %standard-phases
          ;; Requirement mkdocs-material-extensions
          ;; in-turn requires mkdocs-material. This causes
          ;; circular dependency, so we remove this requirement.
          (add-after 'unpack 'patch-requirements
            (lambda _
              (substitute* "requirements.txt"
                (("mkdocs-material-extensions.*$")
                 ""))))
          (add-after 'ensure-no-mtimes-pre-1980 'inject-javascript-assets
            (lambda* (#:key inputs #:allow-other-keys)
              (mkdir-p "material/assets/javascripts/min/")
              (with-directory-excursion "material/assets/javascripts/min/"
                (symlink-js inputs))))
          (add-after 'wrap 'replace-javascript-assets
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let* ((site (site-packages inputs outputs))
                     (js-assets (string-append site "/material/"
                                               "assets/javascripts")))
                (with-directory-excursion js-assets
                  (delete-file-recursively "min")
                  (mkdir-p "min")
                  (with-directory-excursion "min"
                    (symlink-js inputs))))))))))
    (native-inputs (list python-setuptools))
    (inputs (list js-lunr-ar
                  js-lunr-da
                  js-lunr-de
                  js-lunr-es
                  js-lunr-fi
                  js-lunr-fr
                  js-lunr-hu
                  js-lunr-it
                  js-lunr-ja
                  js-lunr-nl
                  js-lunr-no
                  js-lunr-pt
                  js-lunr-ro
                  js-lunr-ru
                  js-lunr-sv
                  js-lunr-tr
                  js-lunr-vi
                  js-lunr-multi
                  js-lunr-stemmer-support))
    (propagated-inputs
     (list python-markdown python-mkdocs python-pygments
           python-pymdown-extensions))