maint: Implement translation thresholds.
[jackhill/guix/guix.git] / Makefile.am
index 042cf28..8bc6697 100644 (file)
@@ -1,5 +1,5 @@
 # GNU Guix --- Functional package management for GNU
-# Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
+# Copyright © 2012-2022 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>
@@ -15,6 +15,7 @@
 # Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
 # Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
 # Copyright © 2021 Chris Marusich <cmmarusich@gmail.com>
+# Copyright © 2021 Andrew Tropin <andrew@trop.in>
 #
 # This file is part of GNU Guix.
 #
@@ -80,6 +81,7 @@ MODULES =                                     \
   guix/base64.scm                              \
   guix/ci.scm                                  \
   guix/cpio.scm                                        \
+  guix/cpu.scm                                 \
   guix/deprecation.scm                         \
   guix/docker.scm                              \
   guix/records.scm                             \
@@ -95,8 +97,10 @@ MODULES =                                    \
   guix/discovery.scm                           \
   guix/android-repo-download.scm               \
   guix/bzr-download.scm                        \
+  guix/extracting-download.scm                 \
   guix/git-download.scm                                \
   guix/hg-download.scm                         \
+  guix/hash.scm                                        \
   guix/swh.scm                                 \
   guix/monads.scm                              \
   guix/monad-repl.scm                          \
@@ -227,7 +231,6 @@ MODULES =                                   \
   guix/build/union.scm                         \
   guix/build/profiles.scm                      \
   guix/build/compile.scm                       \
-  guix/build/rpath.scm                         \
   guix/build/cvs.scm                           \
   guix/build/svn.scm                           \
   guix/build/syscalls.scm                       \
@@ -238,6 +241,7 @@ MODULES =                                   \
   guix/build/emacs-utils.scm                   \
   guix/build/java-utils.scm                    \
   guix/build/lisp-utils.scm                    \
+  guix/build/meson-configuration.scm           \
   guix/build/maven/java.scm                    \
   guix/build/maven/plugin.scm                  \
   guix/build/maven/pom.scm                     \
@@ -292,9 +296,12 @@ MODULES =                                  \
   guix/scripts/refresh.scm                     \
   guix/scripts/repl.scm                                \
   guix/scripts/describe.scm                    \
+  guix/scripts/style.scm                       \
   guix/scripts/system.scm                      \
   guix/scripts/system/search.scm               \
   guix/scripts/system/reconfigure.scm          \
+  guix/scripts/home.scm                        \
+  guix/scripts/home/import.scm                 \
   guix/scripts/lint.scm                                \
   guix/scripts/challenge.scm                   \
   guix/scripts/import/crate.scm                        \
@@ -312,6 +319,7 @@ MODULES =                                   \
   guix/scripts/import/stackage.scm             \
   guix/scripts/import/texlive.scm              \
   guix/scripts/environment.scm                 \
+  guix/scripts/shell.scm                       \
   guix/scripts/publish.scm                     \
   guix/scripts/edit.scm                                \
   guix/scripts/size.scm                                \
@@ -371,10 +379,18 @@ 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.14-arm.conf     \
-  gnu/packages/aux-files/linux-libre/5.14-arm64.conf   \
-  gnu/packages/aux-files/linux-libre/5.14-i686.conf    \
-  gnu/packages/aux-files/linux-libre/5.14-x86_64.conf  \
+  gnu/packages/aux-files/linux-libre/5.17-arm.conf     \
+  gnu/packages/aux-files/linux-libre/5.17-arm64.conf   \
+  gnu/packages/aux-files/linux-libre/5.17-i686.conf    \
+  gnu/packages/aux-files/linux-libre/5.17-x86_64.conf  \
+  gnu/packages/aux-files/linux-libre/5.16-arm.conf     \
+  gnu/packages/aux-files/linux-libre/5.16-arm64.conf   \
+  gnu/packages/aux-files/linux-libre/5.16-i686.conf    \
+  gnu/packages/aux-files/linux-libre/5.16-x86_64.conf  \
+  gnu/packages/aux-files/linux-libre/5.15-arm.conf     \
+  gnu/packages/aux-files/linux-libre/5.15-arm64.conf   \
+  gnu/packages/aux-files/linux-libre/5.15-i686.conf    \
+  gnu/packages/aux-files/linux-libre/5.15-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    \
@@ -395,6 +411,9 @@ AUX_FILES =                                         \
   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/python/sanity-check.py                \
+  gnu/packages/aux-files/python/sitecustomize.py       \
+  gnu/packages/aux-files/renpy/renpy.in        \
   gnu/packages/aux-files/run-in-namespace.c
 
 # Templates, examples.
@@ -470,7 +489,10 @@ SCM_TESTS =                                        \
   tests/graph.scm                              \
   tests/gremlin.scm                            \
   tests/hackage.scm                            \
+  tests/home-import.scm                                \
+  tests/http-client.scm                                \
   tests/import-git.scm                         \
+  tests/import-github.scm                      \
   tests/import-utils.scm                       \
   tests/inferior.scm                           \
   tests/lint.scm                               \
@@ -508,6 +530,7 @@ SCM_TESTS =                                 \
   tests/swh.scm                                \
   tests/syscalls.scm                           \
   tests/system.scm                             \
+  tests/style.scm                              \
   tests/texlive.scm                            \
   tests/transformations.scm                    \
   tests/ui.scm                                 \
@@ -543,10 +566,12 @@ SH_TESTS =                                        \
   tests/guix-package-aliases.sh                        \
   tests/guix-package-net.sh                    \
   tests/guix-system.sh                         \
+  tests/guix-home.sh                           \
   tests/guix-archive.sh                                \
   tests/guix-authenticate.sh                   \
   tests/guix-environment.sh                    \
   tests/guix-environment-container.sh          \
+  tests/guix-shell.sh                          \
   tests/guix-graph.sh                          \
   tests/guix-describe.sh                       \
   tests/guix-repl.sh                           \
@@ -635,21 +660,24 @@ EXTRA_DIST +=                                             \
   build-aux/check-final-inputs-self-contained.scm      \
   build-aux/check-channel-news.scm                     \
   build-aux/compile-as-derivation.scm                  \
+  build-aux/convert-xref.scm                   \
   build-aux/generate-authors.scm                       \
   build-aux/test-driver.scm                            \
   build-aux/update-guix-package.scm                    \
   build-aux/update-NEWS.scm                            \
   tests/test.drv                                       \
-  tests/signing-key.pub                                        \
-  tests/signing-key.sec                                        \
   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                                 \
+  tests/keys/signing-key.pub                           \
+  tests/keys/signing-key.sec                           \
+  tests/keys/civodul.pub                               \
+  tests/keys/rsa.pub                                   \
+  tests/keys/dsa.pub                                   \
+  tests/keys/ed25519.pub                               \
+  tests/keys/ed25519.sec                               \
+  tests/keys/ed25519-2.pub                             \
+  tests/keys/ed25519-2.sec                             \
+  tests/keys/ed25519-3.pub                             \
+  tests/keys/ed25519-3.sec                             \
   build-aux/config.rpath                               \
   bootstrap                                            \
   doc/build.scm                                                \
@@ -694,8 +722,6 @@ $(1): $(2)
          --completed $(3)                                      \
          $$(filter %.scm,$$^)
 
-.PHONY: $(1)
-
 endef
 
 # Split compilation in several steps, each of which building a subset of
@@ -707,22 +733,31 @@ MODULES_CORE     = guix.scm $(filter-out guix/scripts/%,$(filter guix/%,$(MODULE
 MODULES_PACKAGES = $(filter gnu/packages/%,$(MODULES))
 MODULES_SYSTEM   = gnu.scm $(filter-out gnu/packages/%,$(filter gnu/%,$(MODULES)))
 MODULES_CLI      = $(filter guix/scripts/%,$(MODULES))
+MODULES_PO       = guix/build/po.scm
 
 $(eval $(call guile-compilation-rule,make-core-go,     \
   $(MODULES_CORE) guix/config.scm $(dist_noinst_DATA), \
   0))
+.PHONY: make-core-go
 
 $(eval $(call guile-compilation-rule,make-packages-go, \
   $(MODULES_PACKAGES) make-core-go,                    \
   $(words $(MODULES_CORE))))
+.PHONY: make-packages-go
 
 $(eval $(call guile-compilation-rule,make-system-go,   \
   $(MODULES_SYSTEM) make-packages-go make-core-go,     \
   $(words $(MODULES_CORE) $(MODULES_PACKAGES))))
+.PHONY: make-system-go
 
 $(eval $(call guile-compilation-rule,make-cli-go,                      \
   $(MODULES_CLI) make-system-go make-packages-go make-core-go,         \
   $(words $(MODULES_CORE) $(MODULES_PACKAGES) $(MODULES_SYSTEM))))
+.PHONY: make-cli-go
+
+$(eval $(call guile-compilation-rule,guix/build/po.go,                 \
+  $(MODULES_PO),                                                       \
+  0))
 
 SUFFIXES = .go
 
@@ -941,7 +976,7 @@ release: dist-with-updated-version all
             --system=$$system --fallback                                               \
            gnu/system/install.scm` ;                                                   \
          if [ ! -f "$$image" ] ; then                                                  \
-           echo "failed to produced Guix installation image for $$system" >&2 ;        \
+           echo "failed to produce Guix installation image for $$system" >&2 ; \
            exit 1 ;                                                                    \
          fi ;                                                                          \
          cp "$$image" "$(releasedir)/$(GUIX_SYSTEM_IMAGE_BASE).$$system.iso.tmp" ;     \
@@ -956,7 +991,7 @@ release: dist-with-updated-version all
            --system=$$system --fallback                                                \
            gnu/system/examples/vm-image.tmpl` ;                                        \
          if [ ! -f "$$image" ] ; then                                                  \
-           echo "failed to produced Guix VM image for $$system" >&2 ;                  \
+           echo "failed to produce Guix VM image for $$system" >&2 ;                   \
            exit 1 ;                                                                    \
          fi ;                                                                          \
          cp "$$image" "$(releasedir)/$(GUIX_SYSTEM_VM_IMAGE_BASE).$$system.qcow2";     \
@@ -996,10 +1031,12 @@ assert-no-store-file-names:
          exit 1 ;                                                              \
        fi
 
-# Make sure important substitutes are available.
+# Make sure important substitutes are available.  Check only the primary
+# server so that '--display-missing' doesn't print two lists.
 assert-binaries-available: $(GOBJECTS)
        $(AM_V_at)$(top_builddir)/pre-inst-env                          \
          guix weather -m "$(top_srcdir)/etc/release-manifest.scm"      \
+                       --substitute-urls="https://ci.guix.gnu.org"     \
                        --display-missing
 
 # Make sure the final inputs don't refer to bootstrap tools.
@@ -1035,21 +1072,35 @@ WEBLATE_REPO = https://framagit.org/tyreunom/guix-translations
 # form.
 download-po:
        dir=$$(mktemp -d); \
-       git clone --depth 1 "$(WEBLATE_REPO)" "$$dir/translations"; \
+       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' '); \
+               untranslated=$$(LANG=en_US.UTF-8 msgfmt --statistics "$$po" 2>&1 | rev | cut -f3 -d' ' | rev); \
+               untranslated=$${untranslated:-0}; \
+               total=$$(($$translated+$$untranslated)); \
                target=$$(basename "$$po"); \
                target="$$domain/$$target"; \
-               if msgfmt -c "$$po" && [ "$$translated" != "0" ]; then \
+               msgfmt -c "$$po"; \
+               if msgfmt -c "$$po" && [ "$$translated" != "0" ] && ([ "$$domain" != "po/doc" ] || [ "$$translated" -gt $$(($$total/10)) ] || [ -f $$target ]); 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."; \
+                   echo "WARN: $$target ($$translated translated messages ($$((translated/total*100))%)) was not added/updated."; \
                fi; \
            done; \
        done; \
+       for po in po/doc/*.po; do \
+           translated=$$(LANG=en_US.UTF-8 msgfmt --statistics "$$po" 2>&1 | cut -f1 -d' '); \
+           untranslated=$$(LANG=en_US.UTF-8 msgfmt --statistics "$$po" 2>&1 | rev | cut -f3 -d' ' | rev); \
+           untranslated=$${untranslated:-0}; \
+           total=$$(($$translated + $$untranslated)); \
+           if [ "$$translated" -lt "$$(($$total/20))" ]; then \
+               echo "WARN: $$po was removed because it is below the 5% threshold: $$((translated/total*100))%"; \
+               rm $$po; \
+           fi; \
+       done; \
        rm -rf "$$dir"
 .PHONY: download-po