tests: Move 'guix package' tests that require networking to a separate file.
[jackhill/guix/guix.git] / Makefile.am
index 84f8eb1..d54e281 100644 (file)
@@ -1,5 +1,5 @@
 # GNU Guix --- Functional package management for GNU
-# Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
+# Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
 # Copyright © 2013 Andreas Enge <andreas@enge.fr>
 #
 # This file is part of GNU Guix.
@@ -30,13 +30,16 @@ MODULES =                                   \
   guix/base32.scm                              \
   guix/base64.scm                              \
   guix/records.scm                             \
+  guix/gcrypt.scm                              \
   guix/hash.scm                                        \
   guix/pk-crypto.scm                           \
   guix/pki.scm                                 \
   guix/utils.scm                               \
+  guix/sets.scm                                        \
   guix/download.scm                            \
   guix/git-download.scm                                \
   guix/monads.scm                              \
+  guix/monad-repl.scm                          \
   guix/gexp.scm                                        \
   guix/profiles.scm                            \
   guix/serialization.scm                       \
@@ -46,35 +49,46 @@ MODULES =                                   \
   guix/licenses.scm                            \
   guix/build-system.scm                                \
   guix/build-system/cmake.scm                  \
+  guix/build-system/glib-or-gtk.scm            \
   guix/build-system/gnu.scm                    \
   guix/build-system/perl.scm                   \
   guix/build-system/python.scm                 \
+  guix/build-system/waf.scm                    \
+  guix/build-system/ruby.scm                   \
   guix/build-system/trivial.scm                        \
   guix/ftp-client.scm                          \
   guix/http-client.scm                         \
   guix/gnupg.scm                               \
+  guix/elf.scm                                 \
   guix/store.scm                               \
+  guix/cvs-download.scm                                \
   guix/svn-download.scm                                \
   guix/ui.scm                                  \
   guix/build/download.scm                      \
   guix/build/cmake-build-system.scm            \
   guix/build/git.scm                           \
+  guix/build/glib-or-gtk-build-system.scm      \
   guix/build/gnu-build-system.scm              \
   guix/build/gnu-dist.scm                      \
-  guix/build/linux-initrd.scm                  \
   guix/build/perl-build-system.scm             \
   guix/build/python-build-system.scm           \
+  guix/build/ruby-build-system.scm             \
+  guix/build/waf-build-system.scm              \
+  guix/build/store-copy.scm                    \
   guix/build/utils.scm                         \
   guix/build/union.scm                         \
   guix/build/pull.scm                          \
   guix/build/rpath.scm                         \
+  guix/build/cvs.scm                           \
   guix/build/svn.scm                           \
-  guix/build/vm.scm                            \
-  guix/build/install.scm                       \
-  guix/build/activation.scm                    \
   guix/build/syscalls.scm                      \
+  guix/build/gremlin.scm                       \
+  guix/build/emacs-utils.scm                   \
+  guix/build/graft.scm                         \
   guix/packages.scm                            \
-  guix/snix.scm                                        \
+  guix/import/utils.scm                                \
+  guix/import/gnu.scm                          \
+  guix/import/snix.scm                         \
   guix/scripts/download.scm                    \
   guix/scripts/build.scm                       \
   guix/scripts/archive.scm                     \
@@ -83,10 +97,15 @@ MODULES =                                   \
   guix/scripts/gc.scm                          \
   guix/scripts/hash.scm                                \
   guix/scripts/pull.scm                                \
-  guix/scripts/substitute-binary.scm           \
+  guix/scripts/substitute.scm                  \
   guix/scripts/authenticate.scm                        \
   guix/scripts/refresh.scm                     \
   guix/scripts/system.scm                      \
+  guix/scripts/lint.scm                                \
+  guix/scripts/import/gnu.scm                  \
+  guix/scripts/import/nix.scm                  \
+  guix/scripts/environment.scm                 \
+  guix/scripts/publish.scm                     \
   guix.scm                                     \
   $(GNU_SYSTEM_MODULES)
 
@@ -97,15 +116,28 @@ MODULES +=                                 \
 
 endif BUILD_DAEMON_OFFLOAD
 
+# Internal module with test suite support.
+dist_noinst_DATA = guix/tests.scm
+
 # Because of the autoload hack in (guix build download), we must build it
 # first to avoid errors on systems where (gnutls) is unavailable.
 guix/scripts/download.go: guix/build/download.go
 guix/download.go: guix/build/download.go
 
+# Linux-Libre configurations.
+KCONFIGS =                                     \
+  gnu/packages/linux-libre-i686.conf           \
+  gnu/packages/linux-libre-x86_64.conf
+
+# Templates, examples.
+EXAMPLES =                                     \
+  gnu/system/os-config.tmpl
 
-GOBJECTS = $(MODULES:%.scm=%.go) guix/config.go
+GOBJECTS = $(MODULES:%.scm=%.go) guix/config.go guix/tests.go
 
-nobase_dist_guilemodule_DATA = $(MODULES)
+nobase_dist_guilemodule_DATA =                  \
+  $(MODULES) $(KCONFIGS) $(EXAMPLES)            \
+  $(MISC_DISTRO_FILES)
 nobase_nodist_guilemodule_DATA = $(GOBJECTS) guix/config.scm
 
 # Do we need to provide our own non-broken (srfi srfi-37) module?
@@ -131,7 +163,8 @@ SCM_TESTS =                                 \
   tests/hash.scm                               \
   tests/pk-crypto.scm                          \
   tests/pki.scm                                        \
-  tests/substitute-binary.scm                  \
+  tests/sets.scm                               \
+  tests/substitute.scm                         \
   tests/builders.scm                           \
   tests/derivations.scm                                \
   tests/ui.scm                                 \
@@ -146,7 +179,25 @@ SCM_TESTS =                                        \
   tests/nar.scm                                        \
   tests/union.scm                              \
   tests/profiles.scm                           \
-  tests/syscalls.scm
+  tests/syscalls.scm                           \
+  tests/gremlin.scm                            \
+  tests/lint.scm                               \
+  tests/publish.scm
+
+if HAVE_GUILE_JSON
+
+MODULES +=                                     \
+  guix/import/json.scm                         \
+  guix/import/pypi.scm                         \
+  guix/scripts/import/pypi.scm                 \
+  guix/import/cpan.scm                         \
+  guix/scripts/import/cpan.scm
+
+SCM_TESTS +=                                   \
+  tests/pypi.scm                               \
+  tests/cpan.scm
+
+endif
 
 SH_TESTS =                                     \
   tests/guix-build.sh                          \
@@ -154,8 +205,11 @@ SH_TESTS =                                 \
   tests/guix-gc.sh                             \
   tests/guix-hash.sh                           \
   tests/guix-package.sh                                \
+  tests/guix-package-net.sh                    \
+  tests/guix-system.sh                         \
   tests/guix-archive.sh                                \
-  tests/guix-authenticate.sh
+  tests/guix-authenticate.sh                   \
+  tests/guix-lint.sh
 
 if BUILD_DAEMON
 
@@ -186,27 +240,28 @@ tests/guix-gc.log:                                                        \
 # Public key used to sign substitutes from hydra.gnu.org.
 dist_pkgdata_DATA = hydra.gnu.org.pub
 
-EXTRA_DIST =                                   \
-  HACKING                                      \
-  ROADMAP                                      \
-  TODO                                         \
-  .dir-locals.el                               \
-  build-aux/hydra/gnu-system.scm               \
-  build-aux/hydra/demo-os.scm                  \
-  build-aux/hydra/guix.scm                     \
-  build-aux/check-available-binaries.scm       \
-  build-aux/download.scm                       \
-  build-aux/list-packages.scm                  \
-  build-aux/sync-descriptions.scm              \
-  srfi/srfi-37.scm.in                          \
-  srfi/srfi-64.scm                             \
-  srfi/srfi-64.upstream.scm                    \
-  tests/test.drv                               \
-  tests/signing-key.pub                                \
-  tests/signing-key.sec                                \
-  build-aux/config.rpath                       \
-  bootstrap                                    \
-  release.nix                                  \
+EXTRA_DIST =                                           \
+  HACKING                                              \
+  ROADMAP                                              \
+  TODO                                                 \
+  .dir-locals.el                                       \
+  build-aux/build-self.scm                             \
+  build-aux/hydra/gnu-system.scm                       \
+  build-aux/hydra/demo-os.scm                          \
+  build-aux/hydra/guix.scm                             \
+  build-aux/check-available-binaries.scm               \
+  build-aux/check-final-inputs-self-contained.scm      \
+  build-aux/download.scm                               \
+  build-aux/list-packages.scm                          \
+  srfi/srfi-37.scm.in                                  \
+  srfi/srfi-64.scm                                     \
+  srfi/srfi-64.upstream.scm                            \
+  tests/test.drv                                       \
+  tests/signing-key.pub                                        \
+  tests/signing-key.sec                                        \
+  build-aux/config.rpath                               \
+  bootstrap                                            \
+  release.nix                                          \
   $(TESTS)
 
 if !BUILD_DAEMON_OFFLOAD
@@ -225,10 +280,18 @@ AM_V_GUILEC = $(AM_V_GUILEC_$(V))
 AM_V_GUILEC_ = $(AM_V_GUILEC_$(AM_DEFAULT_VERBOSITY))
 AM_V_GUILEC_0 = @echo "  GUILEC" $@;
 
+# Unset 'GUILE_LOAD_COMPILED_PATH' altogether while compiling.  Otherwise, if
+# $GUILE_LOAD_COMPILED_PATH contains $(moduledir), we may find .go files in
+# there that are newer than the local .scm files (for instance because the
+# user ran 'make install' recently).  When that happens, we end up loading
+# those previously-installed .go files, which may be stale, thereby breaking
+# the whole thing.
+#
 # XXX: Use the C locale for when Guile lacks
 # <http://git.sv.gnu.org/cgit/guile.git/commit/?h=stable-2.0&id=e2c6bf3866d1186c60bacfbd4fe5037087ee5e3f>.
 .scm.go:
        $(AM_V_GUILEC)$(MKDIR_P) `dirname "$@"` ;                       \
+       unset GUILE_LOAD_COMPILED_PATH ;                                \
        LC_ALL=C                                                        \
        $(top_builddir)/pre-inst-env                                    \
        $(GUILD) compile -L "$(top_builddir)" -L "$(top_srcdir)"        \
@@ -246,7 +309,15 @@ SUFFIXES = .go
 guix_install_go_files = install-nobase_nodist_guilemoduleDATA
 $(guix_install_go_files): install-nobase_dist_guilemoduleDATA
 
-SUBDIRS = po
+# The above trick doesn't work for 'config.go' because both 'config.scm' and
+# 'config.go' are listed in $(nobase_nodist_guilemodule_DATA).  Thus, give it
+# special treatment.
+install-data-hook: set-bootstrap-executable-permissions
+       touch "$(DESTDIR)$(guilemoduledir)/guix/config.go"
+
+
+SUBDIRS = po/guix po/packages
+BUILT_SOURCES =
 
 include doc.am
 
@@ -263,12 +334,16 @@ AM_DISTCHECK_CONFIGURE_FLAGS =                    \
   --with-nix-prefix="$(NIX_PREFIX)"            \
   --enable-daemon
 
+dist_emacsui_DATA = emacs/guix-main.scm
+nodist_emacsui_DATA = emacs/guix-helper.scm
+include emacs.am
+
 dist-hook: sync-descriptions gen-ChangeLog assert-no-store-file-names
-distcheck-hook: assert-binaries-available
+distcheck-hook: assert-binaries-available assert-final-inputs-self-contained
 
 sync-descriptions:
-       -$(top_builddir)/pre-inst-env $(GUILE)          \
-          $(top_srcdir)/build-aux/sync-descriptions.scm
+       -GUIX_PACKAGE_PATH= \
+        $(top_builddir)/pre-inst-env guix lint --checkers=gnu-description
 
 gen-ChangeLog:
        if test -d .git; then                           \
@@ -292,5 +367,11 @@ assert-binaries-available:
        $(top_builddir)/pre-inst-env "$(GUILE)"                         \
          "$(top_srcdir)/build-aux/check-available-binaries.scm"
 
+# Make sure the final inputs don't refer to bootstrap tools.
+assert-final-inputs-self-contained:
+       $(top_builddir)/pre-inst-env "$(GUILE)"                         \
+         "$(top_srcdir)/build-aux/check-final-inputs-self-contained.scm"
+
 .PHONY: sync-descriptions gen-ChangeLog clean-go
 .PHONY: assert-no-store-file-names assert-binaries-available
+.PHONY: assert-final-inputs-self-contained