# GNU Guix --- Functional package management for GNU
-# Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
+# Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 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 © 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, 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
# Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
-# Copyright © 2018 ng0 <ng0@n0.is>
+# Copyright © 2018 Nikita <nikita@n0.is>
# Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
# Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
# Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
guix/docker.scm \
guix/json.scm \
guix/records.scm \
+ guix/openpgp.scm \
guix/pki.scm \
guix/progress.scm \
guix/combinators.scm \
guix/repl.scm \
guix/inferior.scm \
guix/describe.scm \
+ guix/quirks.scm \
guix/channels.scm \
guix/gnu-maintenance.scm \
guix/self.scm \
guix/lint.scm \
guix/glob.scm \
guix/git.scm \
+ guix/git-authenticate.scm \
guix/graph.scm \
guix/cache.scm \
guix/cve.scm \
guix/build-system/meson.scm \
guix/build-system/minify.scm \
guix/build-system/asdf.scm \
+ guix/build-system/copy.scm \
guix/build-system/glib-or-gtk.scm \
guix/build-system/gnu.scm \
guix/build-system/guile.scm \
guix/build-system/haskell.scm \
guix/build-system/julia.scm \
guix/build-system/linux-module.scm \
+ guix/build-system/maven.scm \
guix/build-system/node.scm \
guix/build-system/perl.scm \
guix/build-system/python.scm \
guix/build-system/ocaml.scm \
+ guix/build-system/qt.scm \
guix/build-system/waf.scm \
guix/build-system/r.scm \
guix/build-system/rakudo.scm \
guix/build/go-build-system.scm \
guix/build/asdf-build-system.scm \
guix/build/bzr.scm \
+ guix/build/copy-build-system.scm \
guix/build/git.scm \
guix/build/hg.scm \
guix/build/glib-or-gtk-build-system.scm \
+ guix/build/gnu-bootstrap.scm \
guix/build/gnu-build-system.scm \
guix/build/gnu-dist.scm \
guix/build/guile-build-system.scm \
+ guix/build/maven-build-system.scm \
guix/build/node-build-system.scm \
guix/build/perl-build-system.scm \
guix/build/python-build-system.scm \
guix/build/ocaml-build-system.scm \
+ guix/build/qt-build-system.scm \
guix/build/r-build-system.scm \
guix/build/rakudo-build-system.scm \
guix/build/ruby-build-system.scm \
guix/build/emacs-utils.scm \
guix/build/java-utils.scm \
guix/build/lisp-utils.scm \
+ guix/build/maven/java.scm \
+ guix/build/maven/plugin.scm \
+ guix/build/maven/pom.scm \
guix/build/graft.scm \
guix/build/bournish.scm \
guix/build/qt-utils.scm \
guix/scripts/publish.scm \
guix/scripts/edit.scm \
guix/scripts/size.scm \
+ guix/scripts/git.scm \
+ guix/scripts/git/authenticate.scm \
guix/scripts/graph.scm \
guix/scripts/weather.scm \
guix/scripts/container.scm \
guix/scripts/container/exec.scm \
guix/scripts/deploy.scm \
+ guix/scripts/time-machine.scm \
guix.scm \
$(GNU_SYSTEM_MODULES)
dist_noinst_DATA = \
guix/tests.scm \
guix/tests/http.scm \
- guix/tests/git.scm
+ guix/tests/git.scm \
+ guix/tests/gnupg.scm
# 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.2-arm.conf \
- gnu/packages/aux-files/linux-libre/5.2-arm-veyron.conf \
- gnu/packages/aux-files/linux-libre/5.2-arm64.conf \
- gnu/packages/aux-files/linux-libre/5.2-i686.conf \
- gnu/packages/aux-files/linux-libre/5.2-x86_64.conf \
+ gnu/packages/aux-files/linux-libre/5.4-arm.conf \
+ gnu/packages/aux-files/linux-libre/5.4-arm64.conf \
+ gnu/packages/aux-files/linux-libre/5.4-i686.conf \
+ gnu/packages/aux-files/linux-libre/5.4-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 \
gnu/packages/aux-files/linux-libre/4.9-x86_64.conf \
gnu/packages/aux-files/linux-libre/4.4-i686.conf \
gnu/packages/aux-files/linux-libre/4.4-x86_64.conf \
+ gnu/packages/aux-files/pack-audit.c \
gnu/packages/aux-files/run-in-namespace.c
# Templates, examples.
EXAMPLES = \
gnu/system/examples/asus-c201.tmpl \
gnu/system/examples/bare-bones.tmpl \
+ gnu/system/examples/bare-hurd.tmpl \
gnu/system/examples/beaglebone-black.tmpl \
gnu/system/examples/desktop.tmpl \
gnu/system/examples/lightweight-desktop.tmpl \
tests/gem.scm \
tests/gexp.scm \
tests/git.scm \
+ tests/git-authenticate.scm \
tests/glob.scm \
tests/gnu-maintenance.scm \
tests/grafts.scm \
tests/nar.scm \
tests/networking.scm \
tests/opam.scm \
+ tests/openpgp.scm \
tests/packages.scm \
tests/pack.scm \
tests/pki.scm \
tests/scripts-build.scm \
tests/search-paths.scm \
tests/services.scm \
+ tests/services/linux.scm \
tests/sets.scm \
tests/size.scm \
tests/snix.scm \
tests/guix-build-branch.sh \
tests/guix-download.sh \
tests/guix-gc.sh \
+ tests/guix-git-authenticate.sh \
tests/guix-hash.sh \
tests/guix-pack.sh \
tests/guix-pack-localstatedir.sh \
tests/guix-environment-container.sh \
tests/guix-graph.sh \
tests/guix-describe.sh \
+ tests/guix-repl.sh \
tests/guix-lint.sh
TESTS = $(SCM_TESTS) $(SH_TESTS)
check-system: $(GOBJECTS)
$(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
+ guix build -m $(top_srcdir)/etc/system-tests.scm -K
# Public keys used to sign substitutes.
dist_pkgdata_DATA = \
- etc/substitutes/berlin.guixsd.org.pub \
+ etc/substitutes/berlin.guix.gnu.org.pub \
etc/substitutes/ci.guix.gnu.org.pub \
etc/substitutes/ci.guix.info.pub
scripts/guix.in \
etc/guix-install.sh \
etc/news.scm \
+ etc/release-manifest.scm \
+ etc/system-tests.scm \
+ etc/historical-authorizations \
build-aux/build-self.scm \
build-aux/compile-all.scm \
build-aux/hydra/evaluate.scm \
build-aux/cuirass/gnu-system.scm \
build-aux/cuirass/guix-modular.scm \
build-aux/cuirass/hydra-to-cuirass.scm \
- build-aux/check-available-binaries.scm \
build-aux/check-final-inputs-self-contained.scm \
+ build-aux/check-channel-news.scm \
build-aux/compile-as-derivation.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 \
tests/test.drv \
tests/signing-key.pub \
tests/signing-key.sec \
- tests/cve-sample.xml \
+ tests/cve-sample.json \
+ tests/civodul.key \
+ tests/rsa.key \
+ tests/dsa.key \
+ tests/ed25519.key \
+ tests/ed25519.sec \
+ tests/ed25519bis.key \
+ tests/ed25519bis.sec \
build-aux/config.rpath \
bootstrap \
doc/build.scm \
install-data-hook:
touch "$(DESTDIR)$(guileobjectdir)/guix/config.go"
+# Commit corresponding to the 'v1.0.0' tag.
+commit_v1_0_0 = 6298c3ffd9654d3231a6f25390b056483e8f407c
+
+# Introduction of the 'guix' channel. Keep in sync with (guix channels)!
+channel_intro_commit = 9edb3f66fd807b096b48283debdcddccfea34bad
+channel_intro_signer = BBB0 2DDF 2CEA F6A8 0D1D E643 A2A0 6DF2 A33A 54FA
+
+# Authenticate the current Git checkout by checking signatures on every commit
+# starting from $(commit_v1_0_0).
+authenticate: guix/openpgp.go guix/git-authenticate.go guix/git.go
+ $(AM_V_at)echo "Authenticating Git checkout..." ; \
+ "$(top_builddir)/pre-inst-env" guix git authenticate \
+ --cache-key=channels/guix --stats \
+ "$(channel_intro_commit)" "$(channel_intro_signer)"
+
# Assuming Guix is already installed and the daemon is up and running, this
# rule builds from $(srcdir), creating and building derivations.
as-derivation:
--enable-daemon \
ac_cv_guix_test_root="$(GUIX_TEST_ROOT)"
+# Name of the 'guix' package shipped in the binary tarball.
+GUIX_FOR_BINARY_TARBALL = guile3.0-guix
+
# The self-contained tarball.
guix-binary.%.tar.xz:
$(AM_V_GEN)GUIX_PACKAGE_PATH= \
- tarball=`$(top_builddir)/pre-inst-env guix pack -K -C xz \
- -s "$*" --localstatedir --profile-name=current-guix guix` ; \
+ tarball=`$(top_builddir)/pre-inst-env guix pack -C xz \
+ --fallback \
+ -s "$*" --localstatedir --profile-name=current-guix \
+ $(GUIX_FOR_BINARY_TARBALL)` ; \
cp "$$tarball" "$@.tmp" ; mv "$@.tmp" "$@"
"$(top_srcdir)" "$(distdir)/AUTHORS"; \
fi
+# Like 'dist', but regenerate 'configure' so we get an up-to-date
+# 'PACKAGE_VERSION' string. (In Gnulib, 'GNUmakefile' has a special trick to
+# do that whenever a 'dist' target is used.)
+dist-with-updated-version:
+ @echo "Running './bootstrap' for new version string..."
+ $(top_srcdir)/bootstrap
+ $(MAKE) $(AM_MAKEFLAGS) $(top_srcdir)/.version dist
+
+.PHONY: dist-with-updated-version
+
\f
#
# Release management.
#
# 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
+release: dist-with-updated-version
cd po; git checkout .
@if ! git diff-index --quiet HEAD; then \
echo "There are uncommitted changes; stopping." >&2 ; \
"`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 \
+ $(top_builddir)/pre-inst-env guix build $(GUIX_FOR_BINARY_TARBALL) \
$(call system_flags,$(SUPPORTED_SYSTEMS)) \
- -v1 --no-grafts -K
+ -v1 --no-grafts --fallback
rm -f $(BINARY_TARBALLS)
$(MAKE) $(BINARY_TARBALLS)
for system in $(SUPPORTED_SYSTEMS) ; do \
git commit -m "gnu: guix: Update to `git rev-parse HEAD | cut -c1-7`."
$(top_builddir)/pre-inst-env guix build guix \
$(call system_flags,$(GUIX_SYSTEM_SUPPORTED_SYSTEMS)) \
- -v1 --no-grafts -K
+ -v1 --no-grafts --fallback
for system in $(GUIX_SYSTEM_SUPPORTED_SYSTEMS) ; do \
image=`$(top_builddir)/pre-inst-env \
guix system disk-image \
--file-system-type=iso9660 \
- --system=$$system \
+ --system=$$system --fallback \
gnu/system/install.scm` ; \
if [ ! -f "$$image" ] ; then \
echo "failed to produced Guix installation image for $$system" >&2 ; \
for system in $(GUIX_SYSTEM_VM_SYSTEMS) ; do \
image=`$(top_builddir)/pre-inst-env \
guix system vm-image $(GUIX_SYSTEM_VM_IMAGE_FLAGS) \
- --system=$$system \
+ --save-provenance \
+ --system=$$system --fallback \
gnu/system/examples/vm-image.tmpl` ; \
if [ ! -f "$$image" ] ; then \
echo "failed to produced Guix VM image for $$system" >&2 ; \
# 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"
+ $(AM_V_at)$(top_builddir)/pre-inst-env \
+ guix weather -m "$(top_srcdir)/etc/release-manifest.scm" \
+ --display-missing
# Make sure the final inputs don't refer to bootstrap tools.
assert-final-inputs-self-contained: $(GOBJECTS)
$(AM_V_at)$(top_builddir)/pre-inst-env "$(GUILE)" \
"$(top_srcdir)/build-aux/check-final-inputs-self-contained.scm"
+# Validate channel news.
+check-channel-news: $(GOBJECTS)
+ $(AM_V_at)$(top_builddir)/pre-inst-env "$(GUILE)" \
+ "$(top_srcdir)/build-aux/check-channel-news.scm"
+
# Compute the Hydra jobs and write them in the target file.
hydra-jobs.scm: $(GOBJECTS)
$(AM_V_at)$(MKDIR_P) "`dirname "$@"`"
.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 as-derivation
+.PHONY: assert-final-inputs-self-contained check-channel-news
+.PHONY: clean-go make-go as-derivation authenticate
.PHONY: update-guix-package update-NEWS release
# Downloading up-to-date PO files.