# GNU Guix --- Functional package management for GNU
-# Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+# Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
# Copyright © 2013 Andreas Enge <andreas@enge.fr>
# Copyright © 2015, 2017 Alex Kost <alezost@gmail.com>
# Copyright © 2016, 2018 Mathieu Lirzin <mthl@gnu.org>
-# Copyright © 2016, 2017, 2018 Mark H Weaver <mhw@netris.org>
+# Copyright © 2016, 2017, 2018, 2019 Mark H Weaver <mhw@netris.org>
# Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
# Copyright © 2017 Leo Famulari <leo@famulari.name>
# Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
# Copyright © 2017 Jan Nieuwenhuizen <janneke@gnu.org>
# Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
-# Copyright © 2018 Nils Gillmann <ng0@n0.is>
+# Copyright © 2018 ng0 <ng0@n0.is>
# Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
# Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
# Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
+# Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
#
# This file is part of GNU Guix.
#
# Modules that are not compiled but are installed nonetheless, such as
# build-side modules with unusual dependencies.
MODULES_NOT_COMPILED = \
+ guix/build/po.scm \
guix/man-db.scm
include gnu/local.mk
guix/base64.scm \
guix/ci.scm \
guix/cpio.scm \
+ guix/deprecation.scm \
guix/docker.scm \
guix/records.scm \
guix/pki.scm \
guix/modules.scm \
guix/download.scm \
guix/discovery.scm \
+ guix/bzr-download.scm \
guix/git-download.scm \
guix/hg-download.scm \
guix/swh.scm \
guix/cve.scm \
guix/workers.scm \
guix/zlib.scm \
+ guix/lzlib.scm \
guix/build-system.scm \
guix/build-system/android-ndk.scm \
guix/build-system/ant.scm \
guix/build-system/clojure.scm \
guix/build-system/cmake.scm \
guix/build-system/dub.scm \
+ guix/build-system/dune.scm \
guix/build-system/emacs.scm \
guix/build-system/font.scm \
guix/build-system/go.scm \
guix/build-system/gnu.scm \
guix/build-system/guile.scm \
guix/build-system/haskell.scm \
+ guix/build-system/linux-module.scm \
guix/build-system/perl.scm \
guix/build-system/python.scm \
guix/build-system/ocaml.scm \
guix/build-system/waf.scm \
guix/build-system/r.scm \
+ guix/build-system/rakudo.scm \
guix/build-system/ruby.scm \
guix/build-system/scons.scm \
guix/build-system/texlive.scm \
guix/store.scm \
guix/cvs-download.scm \
guix/svn-download.scm \
+ guix/colors.scm \
guix/i18n.scm \
+ guix/diagnostics.scm \
guix/ui.scm \
guix/status.scm \
guix/build/android-ndk-build-system.scm \
guix/build/download.scm \
guix/build/download-nar.scm \
guix/build/cargo-build-system.scm \
+ guix/build/cargo-utils.scm \
guix/build/cmake-build-system.scm \
guix/build/dub-build-system.scm \
+ guix/build/dune-build-system.scm \
guix/build/emacs-build-system.scm \
guix/build/meson-build-system.scm \
guix/build/minify-build-system.scm \
guix/build/font-build-system.scm \
guix/build/go-build-system.scm \
guix/build/asdf-build-system.scm \
+ guix/build/bzr.scm \
guix/build/git.scm \
guix/build/hg.scm \
guix/build/glib-or-gtk-build-system.scm \
guix/build/python-build-system.scm \
guix/build/ocaml-build-system.scm \
guix/build/r-build-system.scm \
+ guix/build/rakudo-build-system.scm \
guix/build/ruby-build-system.scm \
guix/build/scons-build-system.scm \
guix/build/texlive-build-system.scm \
guix/build/waf-build-system.scm \
guix/build/haskell-build-system.scm \
+ guix/build/linux-module-build-system.scm \
guix/build/store-copy.scm \
guix/build/utils.scm \
guix/build/union.scm \
guix/build/profiles.scm \
guix/build/compile.scm \
- guix/build/pull.scm \
guix/build/rpath.scm \
guix/build/cvs.scm \
guix/build/svn.scm \
guix/import/gnu.scm \
guix/import/hackage.scm \
guix/import/json.scm \
+ guix/import/launchpad.scm \
guix/import/opam.scm \
guix/import/print.scm \
guix/import/pypi.scm \
guix/scripts/archive.scm \
guix/scripts/import.scm \
guix/scripts/package.scm \
+ guix/scripts/install.scm \
+ guix/scripts/remove.scm \
+ guix/scripts/upgrade.scm \
+ guix/scripts/search.scm \
guix/scripts/gc.scm \
guix/scripts/hash.scm \
guix/scripts/pack.scm \
# Scheme implementation of the build daemon and related functionality.
STORE_MODULES = \
guix/store/database.scm \
- guix/store/deduplication.scm
+ guix/store/deduplication.scm \
+ guix/store/roots.scm
MODULES += $(STORE_MODULES)
# Auxiliary files for packages.
AUX_FILES = \
+ gnu/packages/aux-files/chromium/master-preferences.json \
gnu/packages/aux-files/emacs/guix-emacs.el \
+ gnu/packages/aux-files/linux-libre/5.1-arm.conf \
+ gnu/packages/aux-files/linux-libre/5.1-arm-veyron.conf \
+ gnu/packages/aux-files/linux-libre/5.1-arm64.conf \
+ gnu/packages/aux-files/linux-libre/5.1-i686.conf \
+ gnu/packages/aux-files/linux-libre/5.1-x86_64.conf \
gnu/packages/aux-files/linux-libre/4.19-arm.conf \
gnu/packages/aux-files/linux-libre/4.19-arm64.conf \
gnu/packages/aux-files/linux-libre/4.19-i686.conf \
# Templates, examples.
EXAMPLES = \
+ gnu/system/examples/asus-c201.tmpl \
gnu/system/examples/bare-bones.tmpl \
gnu/system/examples/beaglebone-black.tmpl \
gnu/system/examples/desktop.tmpl \
gnu/system/examples/lightweight-desktop.tmpl \
+ gnu/system/examples/docker-image.tmpl \
gnu/system/examples/vm-image.tmpl
GOBJECTS = $(MODULES:%.scm=%.go) guix/config.go $(dist_noinst_DATA:%.scm=%.go)
# Handy way to remove the .go files without removing all the rest.
clean-go:
-$(RM) -f $(GOBJECTS)
- @find . -name '*.go' -print | \
+ @find . -path ./test-tmp -prune -o -name '*.go' -print | \
if test -t 1; then \
xargs -r echo -e "\033[31mwarning:\033[0m stray .go files:"; \
else \
tests/base16.scm \
tests/base32.scm \
tests/base64.scm \
+ tests/channels.scm \
tests/cpan.scm \
tests/cpio.scm \
tests/crate.scm \
tests/cve.scm \
tests/workers.scm \
tests/zlib.scm \
+ tests/lzlib.scm \
tests/file-systems.scm \
tests/uuid.scm \
tests/system.scm \
+ tests/accounts.scm \
tests/services.scm \
tests/scripts-build.scm \
tests/containers.scm \
tests/pypi.scm \
tests/import-utils.scm \
tests/store-database.scm \
- tests/store-deduplication.scm
+ tests/store-deduplication.scm \
+ tests/store-roots.scm
SH_TESTS = \
tests/guix-build.sh \
tests/guix-pack-localstatedir.sh \
tests/guix-pack-relocatable.sh \
tests/guix-package.sh \
+ tests/guix-package-aliases.sh \
tests/guix-package-net.sh \
tests/guix-system.sh \
tests/guix-archive.sh \
dist_pkgdata_DATA = \
etc/substitutes/hydra.gnu.org.pub \
etc/substitutes/berlin.guixsd.org.pub \
+ etc/substitutes/ci.guix.gnu.org.pub \
etc/substitutes/ci.guix.info.pub
# Bash completion file.
cp "$$tarball" "$@.tmp" ; mv "$@.tmp" "$@"
-dist-hook: $(distdir)/ChangeLog gen-AUTHORS gen-tarball-version
+dist-hook: gen-ChangeLog gen-AUTHORS gen-tarball-version
dist-hook: assert-no-store-file-names
dist-hook: doc-po-update
gen-tarball-version:
echo $(VERSION) > "$(distdir)/.tarball-version"
-gen-ChangeLog $(distdir)/ChangeLog:
+gen-ChangeLog:
$(AM_V_GEN)if test -d .git; then \
$(top_srcdir)/build-aux/gitlog-to-changelog \
- > $(distdir)/cl-t; \
+ > $(distdir)/ChangeLog.tmp; \
rm -f $(distdir)/ChangeLog; \
- mv $(distdir)/cl-t $(distdir)/ChangeLog; \
+ mv $(distdir)/ChangeLog.tmp $(distdir)/ChangeLog; \
fi
gen-AUTHORS:
BINARY_TARBALLS = \
$(foreach system,$(SUPPORTED_SYSTEMS),guix-binary.$(system).tar.xz)
-# Systems supported by GuixSD.
-GUIXSD_SUPPORTED_SYSTEMS ?= x86_64-linux i686-linux
+# Systems supported by Guix System.
+GUIX_SYSTEM_SUPPORTED_SYSTEMS ?= x86_64-linux i686-linux
-# Systems for which we build GuixSD VMs.
-GUIXSD_VM_SYSTEMS ?= x86_64-linux
+# Systems for which we build Guix VMs.
+GUIX_SYSTEM_VM_SYSTEMS ?= x86_64-linux
-# Prefix of the GuixSD installation image file name.
-GUIXSD_IMAGE_BASE = guixsd-install-$(PACKAGE_VERSION)
+# Prefix of the Guix installation image file name.
+GUIX_SYSTEM_IMAGE_BASE = guix-system-install-$(PACKAGE_VERSION)
-# Prefix of the GuixSD VM image file name.
-GUIXSD_VM_IMAGE_BASE = guixsd-vm-image-$(PACKAGE_VERSION)
+# Prefix of the Guix VM image file name.
+GUIX_SYSTEM_VM_IMAGE_BASE = guix-system-vm-image-$(PACKAGE_VERSION)
+
+# Flags for 'guix system vm-image'. By default create a VM image that appears
+# to have a 20G hard disk.
+GUIX_SYSTEM_VM_IMAGE_FLAGS ?= --image-size=30G
+
+# Return the sequence of '-s' flags for the given systems.
+system_flags = $(foreach system,$(1),-s $(system))
# The release process works in several phases:
#
# 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'
+# 5. Build the 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
"`git rev-parse HEAD`" "$(PACKAGE_VERSION)"
git add $(top_srcdir)/gnu/packages/package-management.scm
git commit -m "gnu: guix: Update to $(PACKAGE_VERSION)."
+ $(top_builddir)/pre-inst-env guix build guix \
+ $(call system_flags,$(SUPPORTED_SYSTEMS)) \
+ -v1 --no-grafts -K
rm -f $(BINARY_TARBALLS)
$(MAKE) $(BINARY_TARBALLS)
for system in $(SUPPORTED_SYSTEMS) ; do \
"`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 \
+ $(top_builddir)/pre-inst-env guix build guix \
+ $(call system_flags,$(GUIX_SYSTEM_SUPPORTED_SYSTEMS)) \
+ -v1 --no-grafts -K
+ for system in $(GUIX_SYSTEM_SUPPORTED_SYSTEMS) ; do \
image=`$(top_builddir)/pre-inst-env \
guix system disk-image \
--file-system-type=iso9660 \
--system=$$system \
gnu/system/install.scm` ; \
if [ ! -f "$$image" ] ; then \
- echo "failed to produced GuixSD installation image for $$system" >&2 ; \
+ echo "failed to produced Guix installation image for $$system" >&2 ; \
exit 1 ; \
fi ; \
- xz < "$$image" > "$(releasedir)/$(GUIXSD_IMAGE_BASE).$$system.iso.xz.tmp" ; \
- mv "$(releasedir)/$(GUIXSD_IMAGE_BASE).$$system.iso.xz.tmp" \
- "$(releasedir)/$(GUIXSD_IMAGE_BASE).$$system.iso.xz" ; \
+ 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" ; \
done
- for system in $(GUIXSD_VM_SYSTEMS) ; do \
+ for system in $(GUIX_SYSTEM_VM_SYSTEMS) ; do \
image=`$(top_builddir)/pre-inst-env \
- guix system vm-image \
+ guix system vm-image $(GUIX_SYSTEM_VM_IMAGE_FLAGS) \
--system=$$system \
gnu/system/examples/vm-image.tmpl` ; \
if [ ! -f "$$image" ] ; then \
- echo "failed to produced GuixSD VM image for $$system" >&2 ; \
+ echo "failed to produced Guix 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" ; \
+ xz < "$$image" > "$(releasedir)/$(GUIX_SYSTEM_VM_IMAGE_BASE).$$system.xz.tmp" ; \
+ mv "$(releasedir)/$(GUIX_SYSTEM_VM_IMAGE_BASE).$$system.xz.tmp" \
+ "$(releasedir)/$(GUIX_SYSTEM_VM_IMAGE_BASE).$$system.xz" ; \
done
@echo
@echo "Congratulations! All the release files are now in $(releasedir)."
$(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: $(distdir)/ChangeLog
+assert-no-store-file-names:
$(AM_V_at)if grep -r --exclude=*.texi --exclude=*.info \
--exclude=*.info-[0-9] --exclude=*.dot \
--exclude=*.eps --exclude-dir=bootstrap \
--exclude=guix-manual.pot --exclude=guix-manual.*.po \
--exclude=guix-prettify.el \
- --exclude=ChangeLog \
+ --exclude=ChangeLog* \
-E "$(storedir)/[a-z0-9]{32}-" $(distdir) ; \
then \
echo "error: store file names embedded in the distribution" >&2 ; \
exit 1 ; \
fi
-# Make sure hydra.gnu.org has the important binaries.
+# Make sure important substitutes are available.
assert-binaries-available: $(GOBJECTS)
$(AM_V_at)$(top_builddir)/pre-inst-env "$(GUILE)" \
"$(top_srcdir)/build-aux/check-available-binaries.scm"