[bug#77873,v2] gnu: git-repo: Update to 2.54.
Commit Message
* gnu/packages/android.scm (git-repo): Update to 2.54.
Change-Id: I241ba0acb19c72272780500b593ea4d3b5b9ddf6
---
gnu/packages/android.scm | 118 +++++++++++++--------------------------
1 file changed, 39 insertions(+), 79 deletions(-)
base-commit: cc4b392a8303788762ed9adb9c5635cf227e58a2
Comments
Hi,
Jakob Kirsch <jakob.kirsch@web.de> writes:
> * gnu/packages/android.scm (git-repo): Update to 2.54.
>
> Change-Id: I241ba0acb19c72272780500b593ea4d3b5b9ddf6
Please mention all the changes made in the commit log: phases
added/remove, use of gexps, etc.
> - (lambda* (#:key outputs #:allow-other-keys)
> - ;; 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.
> -
> - ;; Ticket requesting upstream to provide a mean to disable the
> - ;; self update mechanism:
> - ;; https://bugs.chromium.org/p/gerrit/issues/detail?id=12407.
Did this become unnecessary?
> + #~(modify-phases %standard-phases
> + (add-before 'build 'set-executable-paths
> + (lambda* (#:key inputs outputs #:allow-other-keys)
> + (begin
You can remove ‘begin’.
> + (substitute* '("repo" "git_command.py")
> + (("^GIT = 'git'")
> + (string-append "GIT = '"
> + #$git "/bin/git'")))
Instead, write: (search-input-file inputs "/bin/git").
> + (substitute* "git_config.py"
> + ((" command_base = \\['ssh',")
> + (string-append " command_base = ['"
> + #$openssh "/bin/ssh',"))) #t)))
Likewise.
Please also remove the trailing #t.
> + (wrap-program (string-append bin-dir "/repo")
> + '("REPO_SKIP_SELF_UPDATE" =
> + ("1"))
> + '("REPO_TRACE" =
> + ("0")))
> + #t))))))
Please remove the trailing #t as well.
Could you send an updated patch?
Thanks,
Ludo’.
> Did this become unnecessary?
>
> > + #~(modify-phases %standard-phases
> > + (add-before 'build 'set-executable-paths
> > + (lambda* (#:key inputs outputs #:allow-other-keys)
> > + (begin
Yes as there is now an environment variable named REPO_SKIP_SELF_UPDATE that is set in the 'install phase.
Hi,
Jakob Kirsch <jakob.kirsch@web.de> writes:
>> Did this become unnecessary?
>>
>> > + #~(modify-phases %standard-phases
>> > + (add-before 'build 'set-executable-paths
>> > + (lambda* (#:key inputs outputs #:allow-other-keys)
>> > + (begin
>
> Yes as there is now an environment variable named REPO_SKIP_SELF_UPDATE that is set in the 'install phase.
I don't think that's sufficient. Repo will then update at runtime. We
should wrap the repo binary with REPO_SKIP_SELF_UPDATE=1. Guix packages
should not mutate themselves like git-repo does out of the box.
Hi,
> I don't think that's sufficient. Repo will then update at runtime. We
> should wrap the repo binary with REPO_SKIP_SELF_UPDATE=1. Guix packages
> should not mutate themselves like git-repo does out of the box.
OK, I had missed that this package didn't provide an initial working
copy:
--8<---------------cut here---------------start------------->8---
$ /gnu/store/0s3amrgdl6is2bjb3k7zbwi6fwklbldb-git-repo-2.54/bin/repo --help
usage: repo COMMAND [ARGS]
repo is not yet installed. Use "repo init" to install it here.
The most commonly used repo commands are:
init Install repo in the current working directory
help Display detailed help on a command
For access to the full online help, install repo ("repo init").
Bug reports: https://issues.gerritcodereview.com/issues/new?component=1370071
--8<---------------cut here---------------end--------------->8---
The goal should be that install 'git-repo' with Guix gives you a fully
working command, not just an updater that wants to fetch an online copy
and put it somewhere in your HOME.
I'll revert this. If you manage to fix this, please submit a new
PR to Codeberg.
@@ -13,6 +13,7 @@
;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
;;; Copyright © 2021 Petr Hodina <phodina@protonmail.com>
;;; Copyright © 2023 Camilo Q.S. (Distopico) <distopico@riseup.net>
+;;; Copyright © 2025 Jakob Kirsch <jakob.kirsch@web.de>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -45,6 +46,7 @@ (define-module (gnu packages android)
#:use-module (guix build-system trivial)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (gnu packages)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages check)
#:use-module (gnu packages compression)
#:use-module (gnu packages docker)
@@ -922,7 +924,7 @@ (define-public etc1tool
(define-public git-repo
(package
(name "git-repo")
- (version "2.4.1")
+ (version "2.54")
(source
(origin
(method git-fetch)
@@ -931,87 +933,45 @@ (define-public git-repo
(commit (string-append "v" version))))
(file-name (string-append "git-repo-" version "-checkout"))
(sha256
- (base32 "0khg1731927gvin73dcbw1657kbfq4k7agla5rpzqcnwkk5agzg3"))))
+ (base32 "0a1qa7gq3ink0cfgdxx3l3p26jm2w5vsifqs9xdvb98kkswak45d"))))
(build-system python-build-system)
(arguments
- `(#: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"))
- (ssh (assoc-ref inputs "ssh")))
- (substitute* '("repo" "git_command.py")
- (("^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-self-update
- (lambda* (#:key outputs #:allow-other-keys)
- ;; 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.
-
- ;; 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 "./run_tests")))
- (replace 'install
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (bin-dir (string-append out "/bin"))
- (repo-dir (string-append out "/share/" ,name)))
- (mkdir-p bin-dir)
- (mkdir-p repo-dir)
- (copy-recursively "." repo-dir)
- (delete-file-recursively (string-append repo-dir "/tests"))
- (symlink (string-append repo-dir "/repo")
- (string-append bin-dir "/repo"))
- #t))))))
- (inputs
- ;; TODO: Add git-remote-persistent-https once it is available in guix
- `(("git" ,git)
- ("ssh" ,openssh)))
- (native-inputs
- `(("pytest" ,python-pytest)))
- (home-page "https://code.google.com/p/git-repo/")
+ (list
+ #:tests? #f ;tests consist of just formatting the code
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-before 'build 'set-executable-paths
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (begin
+ (substitute* '("repo" "git_command.py")
+ (("^GIT = 'git'")
+ (string-append "GIT = '"
+ #$git "/bin/git'")))
+ (substitute* "git_config.py"
+ ((" command_base = \\['ssh',")
+ (string-append " command_base = ['"
+ #$openssh "/bin/ssh',"))) #t)))
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((bin-dir (string-append #$output "/bin"))
+ (repo-dir (string-append #$output "/share/git-repo")))
+ (mkdir-p bin-dir)
+ (mkdir-p repo-dir)
+ (copy-recursively "." repo-dir)
+ (delete-file-recursively (string-append repo-dir "/tests"))
+ (symlink (string-append repo-dir "/repo")
+ (string-append bin-dir "/repo"))
+ (wrap-program (string-append bin-dir "/repo")
+ '("REPO_SKIP_SELF_UPDATE" =
+ ("1"))
+ '("REPO_TRACE" =
+ ("0")))
+ #t))))))
+ (inputs (list git openssh bash-minimal))
+ (home-page "https://gerrit.googlesource.com/git-repo/")
(synopsis "Helps to manage many Git repositories")
- (description "Repo is a tool built on top of Git. Repo helps manage many
+ (description
+ "Repo is a tool built on top of Git. Repo helps manage many
Git repositories, does the uploads to revision control systems, and automates
parts of the development workflow. Repo is not meant to replace Git, only to
make it easier to work with Git. The repo command is an executable Python