X-Git-Url: http://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/b3f4df3f71ea655d08c96a692b2ad189d8be784b..febfd4ce0d86aa44b3b57c2a661a467178a8323b:/Makefile.am diff --git a/Makefile.am b/Makefile.am index 5600bd5503..3e72c3ebd0 100644 --- a/Makefile.am +++ b/Makefile.am @@ -248,6 +248,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 \ @@ -261,7 +262,6 @@ MODULES = \ guix/import/opam.scm \ guix/import/print.scm \ guix/import/pypi.scm \ - guix/import/snix.scm \ guix/import/stackage.scm \ guix/import/texlive.scm \ guix/import/utils.scm \ @@ -294,13 +294,13 @@ 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 \ guix/scripts/import/go.scm \ guix/scripts/import/hackage.scm \ guix/scripts/import/json.scm \ - guix/scripts/import/nix.scm \ guix/scripts/import/opam.scm \ guix/scripts/import/pypi.scm \ guix/scripts/import/stackage.scm \ @@ -365,10 +365,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 \ @@ -451,6 +451,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 \ @@ -459,7 +460,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 \ @@ -486,10 +486,10 @@ 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 \ - tests/snix.scm \ tests/status.scm \ tests/store-database.scm \ tests/store-deduplication.scm \ @@ -508,6 +508,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 @@ -733,22 +737,19 @@ AM_DISTCHECK_CONFIGURE_FLAGS = \ --enable-daemon \ ac_cv_guix_test_root="$(GUIX_TEST_ROOT)" -# Name of the 'guix' package shipped in the binary tarball. -GUIX_FOR_BINARY_TARBALL = guix - # The self-contained tarball. guix-binary.%.tar.xz: $(AM_V_GEN)GUIX_PACKAGE_PATH= \ tarball=`$(top_builddir)/pre-inst-env guix pack -C xz \ --fallback \ -s "$*" --localstatedir --profile-name=current-guix \ - $(GUIX_FOR_BINARY_TARBALL)` ; \ + guix` ; \ cp "$$tarball" "$@.tmp" ; mv "$@.tmp" "$@" -# The dependency on doc-po-update is to generate the .pot files, which are not -# checked in. -dist: doc-po-update +# The dependency on doc-pot-update is to generate the .pot files, which are +# not checked in. +dist: doc-pot-update dist-hook: gen-ChangeLog gen-AUTHORS gen-tarball-version dist-hook: assert-no-store-file-names @@ -832,21 +833,20 @@ system_flags = $(foreach system,$(1),-s $(system)) # The release process works in several phases: # -# 0. We assume the developer created a 'vX.Y' tag. +# 0. We assume the developer created a 'vX.Y.Z' tag. # 1. Build the source tarball. -# 2. Update the 'guix' package so that it corresponds to the 'vX.Y' tag. +# 2. Update the 'guix' package so that it corresponds to the 'vX.Y.Z' tag. # 3. Build the binary tarballs for that 'guix' package. # 4. Update the 'guix' package again. -# 5. Build the installation images. The images will run 'guix' -# corresponding to 'vX.Y' + 1 commit, and they will install 'vX.Y'. +# 5. Build the installation and VM images. The images will run 'guix' +# corresponding to 'vX.Y.Z' + 1 commit, and they will install 'vX.Y.Z'. # # 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 . -release: dist-with-updated-version - cd po; git checkout . +release: dist-with-updated-version all @if ! git diff-index --quiet HEAD; then \ echo "There are uncommitted changes; stopping." >&2 ; \ exit 1 ; \ @@ -854,21 +854,24 @@ release: dist-with-updated-version $(MKDIR_P) "$(releasedir)" rm -f "$(releasedir)"/* mv $(SOURCE_TARBALLS) "$(releasedir)" +# Bump the Guix package version and build it. GUIX_ALLOW_ME_TO_USE_PRIVATE_COMMIT=yes \ $(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)." - $(top_builddir)/pre-inst-env guix build $(GUIX_FOR_BINARY_TARBALL) \ + $(top_builddir)/pre-inst-env guix build guix \ $(call system_flags,$(SUPPORTED_SYSTEMS)) \ -v1 --no-grafts --fallback +# Generate the binary release tarballs. 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 +# Bump the Guix package version and build it (again). GUIX_ALLOW_ME_TO_USE_PRIVATE_COMMIT=yes \ $(top_builddir)/pre-inst-env "$(GUILE)" \ $(top_srcdir)/build-aux/update-guix-package.scm \ @@ -878,9 +881,10 @@ release: dist-with-updated-version $(top_builddir)/pre-inst-env guix build guix \ $(call system_flags,$(GUIX_SYSTEM_SUPPORTED_SYSTEMS)) \ -v1 --no-grafts --fallback +# Generate the ISO installation images. for system in $(GUIX_SYSTEM_SUPPORTED_SYSTEMS) ; do \ image=`$(top_builddir)/pre-inst-env \ - guix system disk-image -t iso9660 \ + guix system image -t iso9660 \ --label="GUIX_$${system}_$(VERSION)" \ --system=$$system --fallback \ gnu/system/install.scm` ; \ @@ -888,13 +892,14 @@ release: dist-with-updated-version 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 \ image=`$(top_builddir)/pre-inst-env \ - guix system vm-image $(GUIX_SYSTEM_VM_IMAGE_FLAGS) \ + guix system image -t qcow2 $(GUIX_SYSTEM_VM_IMAGE_FLAGS) \ --save-provenance \ --system=$$system --fallback \ gnu/system/examples/vm-image.tmpl` ; \ @@ -902,9 +907,7 @@ release: dist-with-updated-version echo "failed to produced Guix VM image for $$system" >&2 ; \ exit 1 ; \ fi ; \ - 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" ; \ + cp "$$image" "$(releasedir)/$(GUIX_SYSTEM_VM_IMAGE_BASE).$$system.qcow2"; \ done @echo @echo "Congratulations! All the release files are now in $(releasedir)." @@ -972,76 +975,32 @@ cuirass-jobs: $(GOBJECTS) # Downloading up-to-date PO files. -# make-download-po-rule DOMAIN DIRECTORY [FILE-NAME-PREFIX] -define make-download-po-rule - -download-po.$(1): - if [ -f "$(top_srcdir)/$(2)/LINGUAS" ]; then \ - LINGUAS="`grep -v '^[[:blank:]]*#' < $(top_srcdir)/$(2)/LINGUAS`" ; \ - else \ - LINGUAS="`(cd $(top_srcdir)/$(2); \ - for i in *.po; do echo $$$$i; done) | cut -d . -f 2`" ; \ - fi ; \ - for lang in $$$$LINGUAS; do \ - if wget -nv -O "$(top_srcdir)/$(2)/$(3)$$$$lang.po.tmp" \ - "https://translate.fedoraproject.org/api/translations/guix/$(1)/$$$$lang/file/" ; \ - then \ - msgfilter --no-wrap -i "$(top_srcdir)/$(2)/$(3)$$$$lang.po.tmp" \ - cat > "$(top_srcdir)/$(2)/$(3)$$$$lang.po.tmp2" ; \ - rm "$(top_srcdir)/$(2)/$(3)$$$$lang.po.tmp" ; \ - mv "$(top_srcdir)/$(2)/$(3)$$$$lang.po"{.tmp2,} ; \ - else \ - rm "$(top_srcdir)/$(2)/$(3)$$$$lang.po.tmp" ; \ - fi ; \ - done - -.PHONY: download-po.$(1) - -endef - -# Checking po files for issues. This is useful to run after downloading new -# po files. - -# make-check-po-rule DOMAIN DIRECTORY [FILE-NAME-PREFIX] -define make-check-po-rule - -check-po.$(1): - if [ -f "$(top_srcdir)/$(2)/LINGUAS" ]; then \ - LINGUAS="`grep -v '^[[:blank:]]*#' < $(top_srcdir)/$(2)/LINGUAS`" ; \ - else \ - LINGUAS="`(cd $(top_srcdir)/$(2); \ - for i in *.po; do echo $$$$i; done) | cut -d . -f 2`" ; \ - fi ; \ - for lang in $$$$LINGUAS; do \ - if [ -f "$(top_srcdir)/$(2)/$(3)$$$$lang.po" ]; \ - then \ - if ! msgfmt -c "$(top_srcdir)/$(2)/$(3)$$$$lang.po" ; \ - then \ - exit 1 ; \ - fi ; \ - fi ; \ - done - -.PHONY: check-po.$(1) - -endef - -$(eval $(call make-download-po-rule,documentation-cookbook,po/doc,guix-cookbook.)) -$(eval $(call make-download-po-rule,documentation-manual,po/doc,guix-manual.)) -$(eval $(call make-download-po-rule,guix,po/guix)) -$(eval $(call make-download-po-rule,packages,po/packages)) - -$(eval $(call make-check-po-rule,documentation-cookbook,po/doc,guix-cookbook.)) -$(eval $(call make-check-po-rule,documentation-manual,po/doc,guix-manual.)) -$(eval $(call make-check-po-rule,guix,po/guix)) -$(eval $(call make-check-po-rule,packages,po/packages)) - -download-po: $(foreach domain,guix packages documentation-manual documentation-cookbook,download-po.$(domain)) +WEBLATE_REPO = https://framagit.org/tyreunom/guix-translations + +# Shallow clone the Git repository behind Weblate and copy files from it if +# they contain at least one translation, and they are well-formed (Scheme +# format only), warn otherwise. Copied files are converted to a canonical +# form. +download-po: + dir=$$(mktemp -d); \ + git clone --depth 1 "$(WEBLATE_REPO)" "$$dir/translations"; \ + for domain in po/doc po/guix po/packages; do \ + for po in "$$dir/translations/$$domain"/*.po; do \ + translated=$$(LANG=en_US.UTF-8 msgfmt --statistics "$$po" 2>&1 | cut -f1 -d' '); \ + target=$$(basename "$$po"); \ + target="$$domain/$$target"; \ + if msgfmt -c "$$po" && [ "$$translated" != "0" ]; then \ + msgfilter --no-wrap -i "$$po" cat > "$$po".tmp; \ + mv "$$po".tmp "$$target"; \ + echo "copied $$target."; \ + else \ + echo "WARN: $$target ($$translated translated messages) was not added/updated."; \ + fi; \ + done; \ + done; \ + rm -rf "$$dir" .PHONY: download-po -check-po: $(foreach domain,guix packages documentation-manual documentation-cookbook,check-po.$(domain)) -.PHONY: check-po - ## -------------- ## ## Silent rules. ## ## -------------- ##