diff --git a/gnu/packages/javascript.scm b/gnu/packages/javascript.scm index 8434836c6f..e6ff5d619d 100644 --- a/gnu/packages/javascript.scm +++ b/gnu/packages/javascript.scm @@ -27,6 +27,7 @@ #:use-module (gnu packages base) #:use-module (gnu packages compression) #:use-module (gnu packages lisp-xyz) + #:use-module (gnu packages node) #:use-module (gnu packages readline) #:use-module (gnu packages web) #:use-module (guix packages) @@ -270,6 +271,95 @@ of wicked-good-xpath together with xmldom.") (license (list license:expat license:lgpl2.0))))) +(define-public js-mathjax-3 + (package + (name "js-mathjax") + (version "3.1.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/mathjax/MathJax-src") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0kqcb6pl0zfs4hf8zqb4l50kkfq7isv35vpy05m0lg0yr9w0w4ai")))) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils) + (ice-9 match)) + (set-path-environment-variable + "PATH" '("bin") (map (match-lambda + ((_ . input) + input)) + %build-inputs)) + (copy-recursively (assoc-ref %build-inputs "source") + "source") + (chdir "source") + + ;; TODO: we can't build this because it depends on + ;; speech-rule-engine. + ;;(delete-file-recursively "ts/a11y") + (delete-file-recursively "components/src/a11y") + + ;;(delete-file-recursively "components/src/sre") + ;; This file copies a11y files, which we don't build (see above). + (delete-file "components/src/node-main/copy.json") + + (substitute* '("components/bin/build" + "components/bin/pack" + "components/bin/copy" + "components/bin/makeAll") + (("/usr/bin/env node") + (which "node"))) + + ;; Make the compiled files of the context menu available. + (mkdir-p "mj-context-menu/js") + (copy-recursively (string-append (assoc-ref %build-inputs "js-context-menu") + "/share/javascript/context-menu") + "mj-context-menu/js") + + (let ((esbuild (string-append (assoc-ref %build-inputs "esbuild") + "/bin/esbuild")) + (node (string-append (assoc-ref %build-inputs "node") + "/bin/node")) + (target (string-append %output "/share/javascript/mathjax"))) + + ;; Transpile TypeScript + (apply invoke esbuild + "--bundle" + "--tsconfig=tsconfig.json" + "--platform=node" + "--outdir=js" + (find-files "ts" "\\.ts$")) + + (setenv "HOME" "/tmp") + (with-directory-excursion "components" + ;; This requires network access + (substitute* "bin/makeAll" + (("processDir\\(fulldir, webpackLib\\);") "")) + (invoke node "bin/makeAll" "src")) + + ;; Build components + (invoke esbuild + "components/src/tex-chtml-full/tex-chtml-full.js" + "--bundle" + "--minify" + "--platform=node" + (string-append "--outfile=" target "/es5/mml-chtml.js")))))) + (native-inputs + `(("esbuild" ,esbuild) + ("node" ,node-10.22) + ("js-context-menu" ,js-context-menu))) + (home-page "https://www.mathjax.org/") + (synopsis "TODO") + (description "TODO") + (license license:asl2.0))) + (define-public js-respond (package (name "js-respond")