Merge branch 'master' into core-updates

This commit is contained in:
Marius Bakke 2020-03-04 23:16:17 +01:00
commit ebb7cf9e21
No known key found for this signature in database
GPG key ID: A2A06DF2A33A54FA
237 changed files with 18974 additions and 4698 deletions

View file

@ -9,6 +9,7 @@
;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2019 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@ -716,7 +717,7 @@ to be passed to the @code{udev} service.")
(define-public git-repo
(package
(name "git-repo")
(version "1.12.37")
(version "2.4.1")
(source
(origin
(method git-fetch)
@ -725,61 +726,66 @@ to be passed to the @code{udev} service.")
(commit (string-append "v" version))))
(file-name (string-append "git-repo-" version "-checkout"))
(sha256
(base32 "0qp7jqhblv7xblfgpcq4n18dyjdv8shz7r60c3vnjxx2fngkj2jd"))))
(base32 "0khg1731927gvin73dcbw1657kbfq4k7agla5rpzqcnwkk5agzg3"))))
(build-system python-build-system)
(arguments
`(#:python ,python-2 ; code says: "Python 3 support is … experimental."
#:phases
`(#:phases
(modify-phases %standard-phases
(add-before 'build 'set-executable-paths
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(git (assoc-ref inputs "git"))
(gpg (assoc-ref inputs "gnupg"))
(ssh (assoc-ref inputs "ssh")))
(substitute* '("repo" "git_command.py")
(("^GIT = 'git' ")
(string-append "GIT = '" git "/bin/git' ")))
(substitute* "repo"
((" cmd = \\['gpg',")
(string-append " cmd = ['" gpg "/bin/gpg',")))
(("^GIT = 'git'")
(string-append "GIT = '" git "/bin/git'")))
(substitute* "git_config.py"
((" command_base = \\['ssh',")
(string-append " command_base = ['" ssh "/bin/ssh',")))
#t)))
(add-before 'build 'do-not-clone-this-source
(add-before 'build 'do-not-self-update
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(repo-dir (string-append out "/share/" ,name)))
(substitute* "repo"
(("^def _FindRepo\\(\\):.*")
(format #f "
def _FindRepo():
'''Look for a repo installation, starting at the current directory.'''
# Use the installed version of git-repo.
repo_main = '~a/main.py'
curdir = os.getcwd()
olddir = None
while curdir != '/' and curdir != olddir:
dot_repo = os.path.join(curdir, repodir)
if os.path.isdir(dot_repo):
return (repo_main, dot_repo)
else:
olddir = curdir
curdir = os.path.dirname(curdir)
return None, ''
;; Setting the REPO_MAIN variable to an absolute file name is
;; enough to have _FindRepo return the store main.py file. The
;; self update mechanism is activated with the call to _Init() in
;; main(), so we bypass it.
# The remaining of this function is dead code. It was used to
# find a git-checked-out version in the local project.\n" repo-dir))
;; Neither clone, check out, nor verify the git repository
(("(^\\s+)_Clone\\(.*\\)") "")
(("(^\\s+)_Checkout\\(.*\\)") "")
((" rev = _Verify\\(.*\\)") " rev = None"))
#t)))
;; Ticket requesting upstream to provide a mean to disable the
;; self update mechanism:
;; https://bugs.chromium.org/p/gerrit/issues/detail?id=12407.
(let* ((out (assoc-ref outputs "out"))
(repo-main (string-append out "/share/git-repo/main.py")))
(substitute* "repo"
(("^REPO_MAIN = .*")
(format #f "REPO_MAIN = ~s~%" repo-main))
((" _Init\\(args, gitc_init=\\(cmd ==.*" all)
(string-append "True #" all)))
;; Prevent repo from trying to git describe its version from
;; the (disabled) self updated copy.
(substitute* "git_command.py"
(("ver = getattr\\(RepoSourceVersion.*")
(format #f "ver = ~s~%" ,version)))
(substitute* "subcmds/version.py"
(("rp_ver = .*")
(format #f "rp_ver = ~s~%" ,version)))
;; Prevent repo from adding its (disabled) self update copy to
;; the list of projects to fetch when using 'repo sync'.
(substitute* "subcmds/sync.py"
(("to_fetch\\.extend\\(all_projects\\).*" all)
(string-append "#" all))
(("self\\._Fetch\\(to_fetch")
"self._Fetch(all_projects")
(("_PostRepoFetch\\(rp, opt\\.repo_verify).*" all)
(string-append "#" all))))))
(delete 'build) ; nothing to build
(add-before 'check 'configure-git
(lambda _
(setenv "HOME" (getcwd))
(invoke "git" "config" "--global" "user.email" "you@example.com")
(invoke "git" "config" "--global" "user.name" "Your Name")))
(replace 'check
(lambda _
(invoke "python" "-m" "nose")))
(invoke "./run_tests")))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
@ -795,10 +801,9 @@ def _FindRepo():
(inputs
;; TODO: Add git-remote-persistent-https once it is available in guix
`(("git" ,git)
("gnupg" ,gnupg)
("ssh" ,openssh)))
(native-inputs
`(("nose" ,python2-nose)))
`(("pytest" ,python-pytest)))
(home-page "https://code.google.com/p/git-repo/")
(synopsis "Helps to manage many Git repositories.")
(description "Repo is a tool built on top of Git. Repo helps manage many