Many node packages currently skip the configure phase, because they lack
both dependencies and a convenient way to build without all of them, e.g.
for the purposes of bootstrapping. This patch adds a big hammer to flatten
these nails.
* guix/build/node-build-system.scm (delete-dependencies): New variable.
Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
Packages with native addons currently try to write to store paths
when used as dependecies. This patch adds a phase to replace that
behaviour with a no-op.
* guix/build/node-build-system.scm (avoid-node-gyp-rebuild): New
variable.
(%standard-phases): Add 'avoid-node-gyp-rebuild' after 'install'.
Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
This commit adds several utility functions for non-destructive
transformation of the JSON representation used by (guix build json),
particularly for purely functional update of JSON objects. They ought
to eventually be exported from their own module, but for now are kept
private to allow experimentation.
* guix/build/node-build-system.scm (assoc-ref*, jsobject-ref, alist-pop)
(alist-update, jsobject-update*, jsobject-union): New variables.
(with-atomic-json-file-replacement): New public variable.
(module-name, build, patch-dependencies): Use them. Do not resort to
unsafe alist primitives from Guile core.
Co-authored-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
Guix does not use any of these lock files to determine the package versions
used during the build, so they only serve to cause problems.
* guix/build/node-build-system.scm (delete-lockfiles): New variable.
(%standard-phases): Add 'delete-lockfiles' after 'patch-dependencies'.
Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
package.json records two hashes of package.tgz, which change for each
build, resulting in non-reproducible builds.
* guix/build/node-build-system.scm (repack): Add reproducibility options
to tar command.
The effect of this change was to import the (json parser) from the host
side into the build side. The solution here would be to do the equivalent
of ‘with-extensions’ for gexps. Since we don't use gexps for build
systems just yet, revert this for now.
This reverts commit 8eb0ba532e.
* guix/build/node-build-system.scm: New file.
* guix/build-system/node.scm: New file.
* guix/build/json.scm: New file.
* doc/guix.texi: Document it.
* Makefile.am: Added new files.
Co-Authored-By: Julien Lepiller <julien@lepiller.eu>