summary refs log tree commit diff
diff options
context:
space:
mode:
authorHartmut Goebel <h.goebel@crazy-compilers.com>2022-06-30 10:22:32 +0200
committerHartmut Goebel <h.goebel@crazy-compilers.com>2022-06-30 11:19:21 +0200
commitae51a1d1fc5323d7222ea7c99fc096c5d0b8325e (patch)
tree20ce68780f9cbe7ee7063572959fbd36bc8e5a60
parent7035eb7a41bdce953afe8d70d3d7a74b67d177fc (diff)
downloadguix-ae51a1d1fc5323d7222ea7c99fc096c5d0b8325e.tar.gz
import: git: Restrict to non-github origins.
'guix refresh -t generic-git' reported a lot of packages which are hosted at
github and are already handled by the github updater.  So whether the package
is updates using the github updater or the generic-git updater would be
non-deterministic.

And indeed 'guix refresh --list-updaters' without this change reported 31.2%
for the github updater and 34.9% for the generic-git updater.  With this
patch, it's only 3.7% for the generic-git updater.  (Still the sum of the
percent-values is 112%, anyhow better then the 146% prior to this change.)

Beside these statistical issues, this patch has another effect:  If the github
updater fails to pick a (later) version the generic-git updater was
triggered.  Anyhow: Why should the generic-git updater be able to find
a (later) version, if the github updater did not?

* guix/import/github.scm: Export 'github-package?'.
* guix/import/git.scm(git-package?): Also check for not github-package?.
-rw-r--r--guix/import/git.scm4
-rw-r--r--guix/import/github.scm2
2 files changed, 4 insertions, 2 deletions
diff --git a/guix/import/git.scm b/guix/import/git.scm
index 4cf404677c..8fd5d70af9 100644
--- a/guix/import/git.scm
+++ b/guix/import/git.scm
@@ -24,6 +24,7 @@
   #:use-module (guix git)
   #:use-module (guix git-download)
   #:use-module (guix i18n)
+  #:use-module ((guix import github)  #:select (github-package?))
   #:use-module (guix packages)
   #:use-module (guix upstream)
   #:use-module (guix utils)
@@ -203,7 +204,8 @@ tag, or #false and #false if the latest version could not be determined."
   (match (package-source package)
     ((? origin? origin)
      (and (eq? (origin-method origin) git-fetch)
-          (git-reference? (origin-uri origin))))
+          (git-reference? (origin-uri origin))
+          (not (github-package? package))))
     (_ #f)))
 
 (define (latest-git-release package)
diff --git a/guix/import/github.scm b/guix/import/github.scm
index e1a1af7133..32b9d36f2a 100644
--- a/guix/import/github.scm
+++ b/guix/import/github.scm
@@ -42,7 +42,7 @@
   #:use-module (guix http-client)
   #:use-module (web uri)
   #:use-module (web response)
-  #:export (%github-api %github-updater))
+  #:export (%github-api %github-updater github-package?))
 
 ;; For tests.
 (define %github-api (make-parameter "https://api.github.com"))