Subject: [bug#42885] [PATCH 2/4] gnu: Add mathjax-bin (MathJax 3).

From: Arun Isaac <[email-masked]>
Date: Mon, 21 Sep 2020 16:06:35 +0530

I have pushed my commits to a new wip-swc branch. A few questions and
discussion points below.

Considering that only the source of rust dependencies is used, should
those packages successfully build on their own? In the wip-swc branch, I
have only verified that the rust-swc package builds. There may be some
dependencies which fail to build on their own.
  
Related to the previous question, what is the purpose of the
#:skip-build? argument? Should it be set to #t for all dependency
packages?

While working on this patchset, I hacked the crate importer a bit to
make my life easier. In particular, I modified it to correctly append
the version to the package variable name. This requires a slightly more
general recursive importer than we have currently. The current recursive
importer assumes that we will package only one version for each
package. That assumption does not stand for rust crates.

We also don't always need to put the minor version into the package
variable name. For example, rust-syn-1 is sufficient. rust-syn-1.0 is
not required. The exact rules follow from
https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html
I improved the crate importer to better understand these version
requirement rules and put packages of the correct version into the
#:cargo-inputs and #:cargo-development-inputs fields.

I will send patches for these crate importer improvements separately
after this patchset is approved.

We also need some automated way to "garbage collect" old versions of
packages in crates-io.scm. crates-io.scm is getting quite large, and I
suspect many packages in there are old versions that are not really
necessary.

> I expected as much, but I was hoping that we could invoke it some other
> way, much like we invoke uglify-js (the Common Lisp package) with a
> little custom wrapper.

That is a good idea. But, I have never written any rust. Perhaps someone
who is more familiar with rust should write it.