diff options
Diffstat (limited to 'Makefile.am')
-rw-r--r-- | Makefile.am | 206 |
1 files changed, 181 insertions, 25 deletions
diff --git a/Makefile.am b/Makefile.am index c713d9a3f6..c2fc2642a7 100644 --- a/Makefile.am +++ b/Makefile.am @@ -4,6 +4,8 @@ # Copyright © 2015, 2017 Alex Kost <alezost@gmail.com> # Copyright © 2016 Mathieu Lirzin <mthl@gnu.org> # Copyright © 2016, 2017 Mark H Weaver <mhw@netris.org> +# Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> +# Copyright © 2017 Leo Famulari <leo@famulari.name> # # This file is part of GNU Guix. # @@ -27,6 +29,10 @@ nodist_noinst_SCRIPTS = \ pre-inst-env \ test-env +# Modules that are not compiled but are installed nonetheless, such as +# build-side modules with unusual dependencies. +MODULES_NOT_COMPILED = + include gnu/local.mk MODULES = \ @@ -45,6 +51,7 @@ MODULES = \ guix/sets.scm \ guix/modules.scm \ guix/download.scm \ + guix/discovery.scm \ guix/git-download.scm \ guix/hg-download.scm \ guix/monads.scm \ @@ -59,7 +66,9 @@ MODULES = \ guix/upstream.scm \ guix/licenses.scm \ guix/graph.scm \ + guix/cache.scm \ guix/cve.scm \ + guix/workers.scm \ guix/zlib.scm \ guix/build-system.scm \ guix/build-system/ant.scm \ @@ -116,6 +125,7 @@ MODULES = \ guix/build/syscalls.scm \ guix/build/gremlin.scm \ guix/build/emacs-utils.scm \ + guix/build/java-utils.scm \ guix/build/lisp-utils.scm \ guix/build/graft.scm \ guix/build/bournish.scm \ @@ -151,7 +161,6 @@ MODULES = \ guix/scripts/import/gnu.scm \ guix/scripts/import/nix.scm \ guix/scripts/import/hackage.scm \ - guix/scripts/import/stackage.scm \ guix/scripts/import/elpa.scm \ guix/scripts/environment.scm \ guix/scripts/publish.scm \ @@ -176,7 +185,8 @@ MODULES += \ guix/import/stackage.scm \ guix/scripts/import/crate.scm \ guix/scripts/import/gem.scm \ - guix/scripts/import/pypi.scm + guix/scripts/import/pypi.scm \ + guix/scripts/import/stackage.scm endif @@ -184,7 +194,8 @@ if HAVE_GUILE_SSH MODULES += \ guix/ssh.scm \ - guix/scripts/copy.scm + guix/scripts/copy.scm \ + guix/store/ssh.scm endif HAVE_GUILE_SSH @@ -201,8 +212,8 @@ dist_noinst_DATA = guix/tests.scm guix/tests/http.scm # Auxiliary files for packages. AUX_FILES = \ gnu/packages/aux-files/emacs/guix-emacs.el \ - gnu/packages/aux-files/linux-libre/4.10-i686.conf \ - gnu/packages/aux-files/linux-libre/4.10-x86_64.conf \ + gnu/packages/aux-files/linux-libre/4.11-i686.conf \ + gnu/packages/aux-files/linux-libre/4.11-x86_64.conf \ gnu/packages/aux-files/linux-libre/4.9-i686.conf \ gnu/packages/aux-files/linux-libre/4.9-x86_64.conf \ gnu/packages/aux-files/linux-libre/4.4-i686.conf \ @@ -214,12 +225,13 @@ AUX_FILES = \ EXAMPLES = \ gnu/system/examples/bare-bones.tmpl \ gnu/system/examples/desktop.tmpl \ - gnu/system/examples/lightweight-desktop.tmpl + gnu/system/examples/lightweight-desktop.tmpl \ + gnu/system/examples/vm-image.tmpl GOBJECTS = $(MODULES:%.scm=%.go) guix/config.go $(dist_noinst_DATA:%.scm=%.go) -nobase_dist_guilemodule_DATA = \ - $(MODULES) $(AUX_FILES) $(EXAMPLES) \ +nobase_dist_guilemodule_DATA = \ + $(MODULES) $(MODULES_NOT_COMPILED) $(AUX_FILES) $(EXAMPLES) \ $(MISC_DISTRO_FILES) nobase_nodist_guilemodule_DATA = guix/config.scm nobase_nodist_guileobject_DATA = $(GOBJECTS) @@ -271,6 +283,7 @@ SCM_TESTS = \ tests/records.scm \ tests/upstream.scm \ tests/combinators.scm \ + tests/discovery.scm \ tests/utils.scm \ tests/build-utils.scm \ tests/packages.scm \ @@ -294,7 +307,9 @@ SCM_TESTS = \ tests/size.scm \ tests/graph.scm \ tests/challenge.scm \ + tests/cache.scm \ tests/cve.scm \ + tests/workers.scm \ tests/zlib.scm \ tests/file-systems.scm \ tests/system.scm \ @@ -373,14 +388,16 @@ check-local: endif !CAN_RUN_TESTS -check-system: $(GOBJECTS) +check-system: $(GOBJECTS) $(BOOTSTRAP_GUILE_TARBALLS) $(AM_V_at)$(top_builddir)/pre-inst-env \ $(GUILE) --no-auto-compile \ -e '(@@ (run-system-tests) run-system-tests)' \ $(top_srcdir)/build-aux/run-system-tests.scm -# Public key used to sign substitutes from hydra.gnu.org. -dist_pkgdata_DATA = hydra.gnu.org.pub +# Public key used to sign substitutes from hydra.gnu.org & co. +dist_pkgdata_DATA = \ + hydra.gnu.org.pub \ + bayfront.guixsd.org.pub # Bash completion file. dist_bashcompletion_DATA = etc/completion/bash/guix @@ -398,13 +415,14 @@ EXTRA_DIST = \ build-aux/compile-all.scm \ build-aux/hydra/evaluate.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/generate-authors.scm \ build-aux/test-driver.scm \ + build-aux/update-guix-package.scm \ + build-aux/update-NEWS.scm \ build-aux/run-system-tests.scm \ d3.v3.js \ graph.js \ @@ -481,32 +499,42 @@ endif BUILD_DAEMON ACLOCAL_AMFLAGS = -I m4 # Pass an explicit '--localstatedir' so that configure does not error out if -# it finds an existing installation with a different localstatedir. +# it finds an existing installation with a different localstatedir. Inherit +# 'ac_cv_guix_test_root' so that "make check" in $(distdir) does not have to +# repopulate the whole store, and to make sure $(GUIX_TEST_ROOT) is short +# enough for shebangs. AM_DISTCHECK_CONFIGURE_FLAGS = \ --localstatedir="$$dc_install_base/var" \ --with-libgcrypt-prefix="$(LIBGCRYPT_PREFIX)" \ --with-libgcrypt-libdir="$(LIBGCRYPT_LIBDIR)" \ --with-nix-prefix="$(NIX_PREFIX)" \ - --enable-daemon + --enable-daemon \ + ac_cv_guix_test_root="$(GUIX_TEST_ROOT)" -# The self-contained tarball. +# The self-contained tarball. Add 'glibc-utf8-locales' along with glibc just +# so 'etc/profile' defines 'GUIX_LOCPATH' pointing to a valid set of locales. guix-binary.%.tar.xz: - $(AM_V_GEN)GUIX_PACKAGE_PATH= \ - tarball=`$(top_builddir)/pre-inst-env guix pack -C xz \ - -s "$*" --localstatedir guix` ; \ + $(AM_V_GEN)GUIX_PACKAGE_PATH= \ + tarball=`$(top_builddir)/pre-inst-env guix pack -K -C xz \ + -s "$*" --localstatedir guix glibc-utf8-locales \ + -e '(@@ (gnu packages commencement) glibc-final)'` ; \ cp "$$tarball" "$@.tmp" ; mv "$@.tmp" "$@" -dist-hook: sync-descriptions gen-ChangeLog gen-AUTHORS +dist-hook: $(distdir)/ChangeLog gen-AUTHORS gen-tarball-version dist-hook: assert-no-store-file-names distcheck-hook: assert-binaries-available assert-final-inputs-self-contained -sync-descriptions: - $(AM_V_at)GUIX_PACKAGE_PATH= \ - $(top_builddir)/pre-inst-env guix lint --checkers=gnu-description +EXTRA_DIST += $(top_srcdir)/.version +BUILT_SOURCES += $(top_srcdir)/.version +$(top_srcdir)/.version: + echo $(VERSION) > "$@-t" && mv "$@-t" "$@" + +gen-tarball-version: + echo $(VERSION) > "$(distdir)/.tarball-version" -gen-ChangeLog: +gen-ChangeLog $(distdir)/ChangeLog: $(AM_V_GEN)if test -d .git; then \ $(top_srcdir)/build-aux/gitlog-to-changelog \ > $(distdir)/cl-t; \ @@ -522,8 +550,134 @@ gen-AUTHORS: "$(top_srcdir)" "$(distdir)/AUTHORS"; \ fi + +# +# Release management. +# + +releasedir = release-$(PACKAGE_VERSION) + +PACKAGE_FULL_TARNAME = $(PACKAGE_TARNAME)-$(PACKAGE_VERSION) + +# List of source tarballs produced. This must be kept in sync with the +# 'dist-' options of 'AM_INIT_AUTOMAKE' in 'configure.ac'. +SOURCE_TARBALLS = \ + $(foreach ext,tar.gz,$(PACKAGE_FULL_TARNAME).$(ext)) + +# Systems supported by Guix. +SUPPORTED_SYSTEMS ?= x86_64-linux i686-linux armhf-linux + +# Guix binary tarballs. +BINARY_TARBALLS = \ + $(foreach system,$(SUPPORTED_SYSTEMS),guix-binary.$(system).tar.xz) + +# Systems supported by GuixSD. +GUIXSD_SUPPORTED_SYSTEMS ?= x86_64-linux i686-linux + +# Systems for which we build GuixSD VMs. +GUIXSD_VM_SYSTEMS ?= x86_64-linux + +# Prefix of the GuixSD installation image file name. +GUIXSD_IMAGE_BASE = guixsd-usb-install-$(PACKAGE_VERSION) + +# Prefix of the GuixSD VM image file name. +GUIXSD_VM_IMAGE_BASE = guixsd-vm-image-$(PACKAGE_VERSION) + +# Size of the installation image (for x86_64 typically). +GUIXSD_INSTALLATION_IMAGE_SIZE ?= 950MiB + +# Size of the VM image (for x86_64 typically). +GUIXSD_VM_IMAGE_SIZE ?= 2GiB + +# The release process works in several phases: +# +# 0. We assume the developer created a 'vX.Y' tag. +# 1. Build the source tarball. +# 2. Update the 'guix' package so that it corresponds to the 'vX.Y' tag. +# 3. Build the binary tarballs for that 'guix' package. +# 4. Update the 'guix' package again. +# 5. Build the GuixSD installation images. The images will run 'guix' +# corresponding to 'vX.Y' + 1 commit, and they will install 'vX.Y'. +# +# This 'release' target takes care of everything and copies the resulting +# files to $(releasedir). +# +# 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 + cd po; git checkout . + @if ! git diff-index --quiet HEAD; then \ + echo "There are uncommitted changes; stopping." >&2 ; \ + exit 1 ; \ + fi + $(MKDIR_P) "$(releasedir)" + rm -f "$(releasedir)"/* + mv $(SOURCE_TARBALLS) "$(releasedir)" + $(top_builddir)/pre-inst-env "$(GUILE)" \ + $(top_srcdir)/build-aux/update-guix-package.scm \ + "`git rev-parse HEAD`" "$(PACKAGE_VERSION)" + git add $(top_srcdir)/gnu/packages/package-management.scm + git commit -m "gnu: guix: Update to $(PACKAGE_VERSION)." + rm -f $(BINARY_TARBALLS) + $(MAKE) $(BINARY_TARBALLS) + for system in $(SUPPORTED_SYSTEMS) ; do \ + mv "guix-binary.$$system.tar.xz" \ + "$(releasedir)/guix-binary-$(PACKAGE_VERSION).$$system.tar.xz" ; \ + done + $(top_builddir)/pre-inst-env "$(GUILE)" \ + $(top_srcdir)/build-aux/update-guix-package.scm \ + "`git rev-parse HEAD`" + git add $(top_srcdir)/gnu/packages/package-management.scm + git commit -m "gnu: guix: Update to `git rev-parse HEAD | cut -c1-7`." + for system in $(GUIXSD_SUPPORTED_SYSTEMS) ; do \ + image=`$(top_builddir)/pre-inst-env \ + guix system disk-image \ + --system=$$system \ + --image-size=$(GUIXSD_INSTALLATION_IMAGE_SIZE) \ + gnu/system/install.scm` ; \ + if [ ! -f "$$image" ] ; then \ + echo "failed to produced GuixSD installation image for $$system" >&2 ; \ + exit 1 ; \ + fi ; \ + xz < "$$image" > "$(releasedir)/$(GUIXSD_IMAGE_BASE).$$system.xz.tmp" ; \ + mv "$(releasedir)/$(GUIXSD_IMAGE_BASE).$$system.xz.tmp" \ + "$(releasedir)/$(GUIXSD_IMAGE_BASE).$$system.xz" ; \ + done + for system in $(GUIXSD_VM_SYSTEMS) ; do \ + image=`$(top_builddir)/pre-inst-env \ + guix system vm-image \ + --system=$$system \ + --image-size=$(GUIXSD_VM_IMAGE_SIZE) \ + gnu/system/examples/vm-image.tmpl` ; \ + if [ ! -f "$$image" ] ; then \ + echo "failed to produced GuixSD VM image for $$system" >&2 ; \ + exit 1 ; \ + fi ; \ + xz < "$$image" > "$(releasedir)/$(GUIXSD_VM_IMAGE_BASE).$$system.xz.tmp" ; \ + mv "$(releasedir)/$(GUIXSD_VM_IMAGE_BASE).$$system.xz.tmp" \ + "$(releasedir)/$(GUIXSD_VM_IMAGE_BASE).$$system.xz" ; \ + done + @echo + @echo "Congratulations! All the release files are now in $(releasedir)." + @echo + +update-guix-package: + git rev-parse HEAD + $(top_builddir)/pre-inst-env "$(GUILE)" \ + $(top_srcdir)/build-aux/update-guix-package.scm \ + "`git rev-parse HEAD`" + +# Location of a checkout of <git://git.savannah.gnu.org/guix/maintenance.git>. +# Package data from this checkout is used by 'update-NEWS.scm'. +GUIX_MAINTENANCE_DIRECTORY ?= $(top_srcdir)/../guix-maintenance + +update-NEWS: $(GOBJECTS) + $(top_builddir)/pre-inst-env "$(GUILE)" \ + $(top_srcdir)/build-aux/update-NEWS.scm \ + $(top_srcdir)/NEWS "$(GUIX_MAINTENANCE_DIRECTORY)/data" + # Make sure we're not shipping a file that embeds a local /gnu/store file name. -assert-no-store-file-names: +assert-no-store-file-names: $(distdir)/ChangeLog $(AM_V_at)if grep -r --exclude=*.texi --exclude=*.info \ --exclude=*.info-[0-9] --exclude=*.dot \ --exclude=*.eps --exclude-dir=bootstrap \ @@ -553,9 +707,11 @@ hydra-jobs.scm: $(GOBJECTS) "$(top_srcdir)/build-aux/hydra/gnu-system.scm" > "$@.tmp" $(AM_V_at)mv "$@.tmp" "$@" -.PHONY: sync-descriptions gen-ChangeLog gen-AUTHORS clean-go make-go +.PHONY: gen-ChangeLog gen-AUTHORS gen-tarball-version .PHONY: assert-no-store-file-names assert-binaries-available .PHONY: assert-final-inputs-self-contained +.PHONY: clean-go make-go +.PHONY: update-guix-package update-NEWS release ## -------------- ## ## Silent rules. ## |