Revert "gnu: libvirt: Support ZFS."
[jackhill/guix/guix.git] / Makefile.am
index de32a0a..46414b0 100644 (file)
@@ -220,6 +220,7 @@ MODULES =                                   \
   guix/build/linux-module-build-system.scm     \
   guix/build/store-copy.scm                    \
   guix/build/json.scm                          \
+  guix/build/pack.scm                          \
   guix/build/utils.scm                         \
   guix/build/union.scm                         \
   guix/build/profiles.scm                      \
@@ -248,6 +249,7 @@ MODULES =                                   \
   guix/import/cpan.scm                         \
   guix/import/cran.scm                         \
   guix/import/crate.scm                                \
+  guix/import/egg.scm                          \
   guix/import/elpa.scm                         \
   guix/import/gem.scm                          \
   guix/import/github.scm                       \
@@ -293,6 +295,7 @@ MODULES =                                   \
   guix/scripts/challenge.scm                   \
   guix/scripts/import/crate.scm                        \
   guix/scripts/import/cran.scm                 \
+  guix/scripts/import/egg.scm                  \
   guix/scripts/import/elpa.scm                 \
   guix/scripts/import/gem.scm                  \
   guix/scripts/import/gnu.scm                  \
@@ -363,10 +366,10 @@ AUX_FILES =                                               \
   gnu/packages/aux-files/chromium/master-preferences.json              \
   gnu/packages/aux-files/emacs/guix-emacs.el           \
   gnu/packages/aux-files/guix.vim                      \
-  gnu/packages/aux-files/linux-libre/5.11-arm.conf     \
-  gnu/packages/aux-files/linux-libre/5.11-arm64.conf   \
-  gnu/packages/aux-files/linux-libre/5.11-i686.conf    \
-  gnu/packages/aux-files/linux-libre/5.11-x86_64.conf  \
+  gnu/packages/aux-files/linux-libre/5.12-arm.conf     \
+  gnu/packages/aux-files/linux-libre/5.12-arm64.conf   \
+  gnu/packages/aux-files/linux-libre/5.12-i686.conf    \
+  gnu/packages/aux-files/linux-libre/5.12-x86_64.conf  \
   gnu/packages/aux-files/linux-libre/5.10-arm.conf     \
   gnu/packages/aux-files/linux-libre/5.10-arm64.conf   \
   gnu/packages/aux-files/linux-libre/5.10-i686.conf    \
@@ -449,6 +452,7 @@ SCM_TESTS =                                 \
   tests/debug-link.scm                         \
   tests/derivations.scm                        \
   tests/discovery.scm                          \
+  tests/egg.scm                                \
   tests/elpa.scm                               \
   tests/file-systems.scm                       \
   tests/gem.scm                                \
@@ -457,7 +461,6 @@ SCM_TESTS =                                 \
   tests/git-authenticate.scm                   \
   tests/glob.scm                               \
   tests/gnu-maintenance.scm                    \
-  tests/go.scm                                 \
   tests/grafts.scm                             \
   tests/graph.scm                              \
   tests/gremlin.scm                            \
@@ -484,6 +487,7 @@ SCM_TESTS =                                 \
   tests/search-paths.scm                       \
   tests/services.scm                           \
   tests/services/file-sharing.scm              \
+  tests/services/configuration.scm             \
   tests/services/linux.scm                     \
   tests/sets.scm                               \
   tests/size.scm                               \
@@ -505,6 +509,10 @@ SCM_TESTS =                                        \
   tests/uuid.scm                               \
   tests/workers.scm
 
+if HAVE_GUILE_LIB
+SCM_TESTS += tests/go.scm
+endif
+
 if BUILD_DAEMON_OFFLOAD
 SCM_TESTS  += tests/offload.scm
 else
@@ -579,7 +587,8 @@ check-system: $(GOBJECTS)
 dist_pkgdata_DATA =                            \
   etc/substitutes/berlin.guix.gnu.org.pub      \
   etc/substitutes/ci.guix.gnu.org.pub          \
-  etc/substitutes/ci.guix.info.pub
+  etc/substitutes/ci.guix.info.pub             \
+  etc/substitutes/bordeaux.guix.gnu.org.pub
 
 # Bash completion file.
 dist_bashcompletion_DATA = etc/completion/bash/guix    \
@@ -655,15 +664,53 @@ CLEANFILES =                                      \
 # the whole thing.  Likewise, set 'XDG_CACHE_HOME' to avoid loading possibly
 # stale files from ~/.cache/guile/ccache.
 %.go: make-go ; @:
-make-go: $(MODULES) guix/config.scm $(dist_noinst_DATA)
-       $(AM_V_at)echo "Compiling Scheme modules..." ;                  \
-       unset GUILE_LOAD_COMPILED_PATH ;                                \
-       XDG_CACHE_HOME=/nowhere                                         \
-       host=$(host) srcdir="$(top_srcdir)"                             \
-       $(top_builddir)/pre-inst-env                                    \
-       $(GUILE) -L "$(top_builddir)" -L "$(top_srcdir)"                \
-         --no-auto-compile                                             \
-         -s "$(top_srcdir)"/build-aux/compile-all.scm $^
+make-go: make-core-go make-packages-go make-system-go make-cli-go
+
+# Define a rule to build a subset of the .go files.
+define guile-compilation-rule
+
+$(1): $(2)
+       $(AM_V_at)echo "Compiling Scheme modules..." ;          \
+       unset GUILE_LOAD_COMPILED_PATH ;                        \
+       XDG_CACHE_HOME=/nowhere                                 \
+       host=$(host) srcdir="$(top_srcdir)"                     \
+       $(top_builddir)/pre-inst-env                            \
+       $(GUILE) -L "$(top_builddir)" -L "$(top_srcdir)"        \
+         --no-auto-compile                                     \
+         -s "$(top_srcdir)"/build-aux/compile-all.scm          \
+         --total $(words $(MODULES))                           \
+         --completed $(3)                                      \
+         $$(filter %.scm,$$^)
+
+.PHONY: $(1)
+
+endef
+
+# Split compilation in several steps, each of which building a subset of
+# $(MODULES).  The main goal is to reduce peak memory consumption, as reported
+# in <https://issues.guix.gnu.org/48963>.  Each 'eval' call below creates a
+# 'make-*-go' phony target that builds the corresponding subset.
+
+MODULES_CORE     = guix.scm $(filter-out guix/scripts/%,$(filter guix/%,$(MODULES)))
+MODULES_PACKAGES = $(filter gnu/packages/%,$(MODULES))
+MODULES_SYSTEM   = gnu.scm $(filter-out gnu/packages/%,$(filter gnu/%,$(MODULES)))
+MODULES_CLI      = $(filter guix/scripts/%,$(MODULES))
+
+$(eval $(call guile-compilation-rule,make-core-go,     \
+  $(MODULES_CORE) guix/config.scm $(dist_noinst_DATA), \
+  0))
+
+$(eval $(call guile-compilation-rule,make-packages-go, \
+  $(MODULES_PACKAGES) make-core-go,                    \
+  $(words $(MODULES_CORE))))
+
+$(eval $(call guile-compilation-rule,make-system-go,   \
+  $(MODULES_SYSTEM) make-packages-go make-core-go,     \
+  $(words $(MODULES_CORE) $(MODULES_PACKAGES))))
+
+$(eval $(call guile-compilation-rule,make-cli-go,                      \
+  $(MODULES_CLI) make-system-go make-packages-go make-core-go,         \
+  $(words $(MODULES_CORE) $(MODULES_PACKAGES) $(MODULES_SYSTEM))))
 
 SUFFIXES = .go
 
@@ -840,7 +887,6 @@ system_flags = $(foreach system,$(1),-s $(system))
 # XXX: Depend on 'dist' rather than 'distcheck' to work around the Gettext
 # issue described at <https://savannah.gnu.org/bugs/index.php?51027>.
 release: dist-with-updated-version all
-       cd po; git checkout .
        @if ! git diff-index --quiet HEAD; then                 \
          echo "There are uncommitted changes; stopping." >&2 ; \
          exit 1 ;                                              \
@@ -886,9 +932,9 @@ release: dist-with-updated-version all
            echo "failed to produced Guix installation image for $$system" >&2 ;        \
            exit 1 ;                                                                    \
          fi ;                                                                          \
-         xz < "$$image" > "$(releasedir)/$(GUIX_SYSTEM_IMAGE_BASE).$$system.iso.xz.tmp" ;      \
-         mv "$(releasedir)/$(GUIX_SYSTEM_IMAGE_BASE).$$system.iso.xz.tmp"              \
-            "$(releasedir)/$(GUIX_SYSTEM_IMAGE_BASE).$$system.iso.xz" ;                \
+         cp "$$image" "$(releasedir)/$(GUIX_SYSTEM_IMAGE_BASE).$$system.iso.tmp" ;     \
+         mv "$(releasedir)/$(GUIX_SYSTEM_IMAGE_BASE).$$system.iso.tmp"                 \
+            "$(releasedir)/$(GUIX_SYSTEM_IMAGE_BASE).$$system.iso" ;                   \
        done
 # Generate the VM images.
        for system in $(GUIX_SYSTEM_VM_SYSTEMS) ; do                                    \
@@ -901,9 +947,7 @@ release: dist-with-updated-version all
            echo "failed to produced Guix VM image for $$system" >&2 ;                  \
            exit 1 ;                                                                    \
          fi ;                                                                          \
-         xz < "$$image" > "$(releasedir)/$(GUIX_SYSTEM_VM_IMAGE_BASE).$$system.qcow2.xz.tmp" ; \
-         mv "$(releasedir)/$(GUIX_SYSTEM_VM_IMAGE_BASE).$$system.qcow2.xz.tmp"                 \
-            "$(releasedir)/$(GUIX_SYSTEM_VM_IMAGE_BASE).$$system.qcow2.xz" ;                   \
+         cp "$$image" "$(releasedir)/$(GUIX_SYSTEM_VM_IMAGE_BASE).$$system.qcow2";     \
        done
        @echo
        @echo "Congratulations!  All the release files are now in $(releasedir)."