* bug#26822: [PATCH] gnu: Add git-repo.
2017-05-07 21:41 bug#26822: [PATCH] gnu: Add git-repo Hartmut Goebel
@ 2017-05-07 23:46 ` Leo Famulari
2017-05-08 7:57 ` Marius Bakke
` (3 subsequent siblings)
4 siblings, 0 replies; 9+ messages in thread
From: Leo Famulari @ 2017-05-07 23:46 UTC (permalink / raw)
To: Hartmut Goebel; +Cc: 26822
[-- Attachment #1: Type: text/plain, Size: 871 bytes --]
On Sun, May 07, 2017 at 11:41:07PM +0200, Hartmut Goebel wrote:
> * gnu/packages/android.scm (git-repo): New variable.
Thanks!
> + `(#:python ,python-2
If it only supports Python 2, can you say so in a comment?
> + #:phases
> + (modify-phases %standard-phases
> + (replace 'build
> + (lambda* (#:key outputs #:allow-other-keys)
> + (let* ((out (assoc-ref outputs "out"))
> + (repo-dir (string-append out "/share/" ,name)))
> + (substitute* "repo"
> + (("^repodir = '\\.repo'")
> + (string-append "repodir = '" repo-dir "'"))
> + (("^S_repo = 'repo'") "S_repo = '.'"))
> + #t
> + )))
For clarify, I think it should delete the build phase (since nothing is
built here) and add a new phase for this substitution.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#26822: [PATCH] gnu: Add git-repo.
2017-05-07 21:41 bug#26822: [PATCH] gnu: Add git-repo Hartmut Goebel
2017-05-07 23:46 ` Leo Famulari
@ 2017-05-08 7:57 ` Marius Bakke
2017-05-08 8:03 ` Hartmut Goebel
2017-05-12 11:56 ` Hartmut Goebel
` (2 subsequent siblings)
4 siblings, 1 reply; 9+ messages in thread
From: Marius Bakke @ 2017-05-08 7:57 UTC (permalink / raw)
To: Hartmut Goebel, 26822
[-- Attachment #1: Type: text/plain, Size: 4313 bytes --]
Hartmut Goebel <h.goebel@crazy-compilers.com> writes:
> * gnu/packages/android.scm (git-repo): New variable.
> ---
> gnu/packages/android.scm | 58 ++++++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 58 insertions(+)
>
> diff --git a/gnu/packages/android.scm b/gnu/packages/android.scm
> index e23d0fd..23ffa2b 100644
> --- a/gnu/packages/android.scm
> +++ b/gnu/packages/android.scm
> @@ -3,6 +3,7 @@
> ;;; Copyright © 2015 Kai-Chung Yan <seamlikok@gmail.com>
> ;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
> ;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
> +;;; Copyright © 2017 Hartmut Goebel <h.goebel@crazy-compilers.com>
> ;;;
> ;;; This file is part of GNU Guix.
> ;;;
> @@ -23,8 +24,11 @@
> #:use-module (guix packages)
> #:use-module (guix git-download)
> #:use-module (guix build-system gnu)
> + #:use-module (guix build-system python)
> #:use-module ((guix licenses) #:prefix license:)
> #:use-module (gnu packages)
> + #:use-module (gnu packages python)
> + #:use-module (gnu packages version-control)
> #:use-module (gnu packages tls))
>
> ;; The Makefiles that we add are largely based on the Debian
> @@ -298,3 +302,57 @@ with an emulator instance or connected Android device. It facilitates a variety
> of device actions, such as installing and debugging apps, and it provides access
> to a Unix shell that can run commands on the connected device or emulator.")
> (license license:asl2.0)))
> +
> +(define-public git-repo
> + (package
> + (name "git-repo")
> + (version "1.12.37")
> + (source
> + (origin
> + (method git-fetch)
> + (uri (git-reference
> + (url "https://gerrit.googlesource.com/git-repo")
> + (commit (string-append "v" version))))
> + (file-name (string-append "git-repo-" version "-checkout"))
> + (sha256
> + (base32 "0qp7jqhblv7xblfgpcq4n18dyjdv8shz7r60c3vnjxx2fngkj2jd"))))
The indentation of (sha256.. should align with file-name.
> + (build-system python-build-system)
> + (arguments
> + `(#:python ,python-2
> + #:phases
> + (modify-phases %standard-phases
> + (replace 'build
> + (lambda* (#:key outputs #:allow-other-keys)
> + (let* ((out (assoc-ref outputs "out"))
> + (repo-dir (string-append out "/share/" ,name)))
> + (substitute* "repo"
> + (("^repodir = '\\.repo'")
> + (string-append "repodir = '" repo-dir "'"))
> + (("^S_repo = 'repo'") "S_repo = '.'"))
> + #t
> + )))
These parens want to stay closer to the #t.
> + (replace 'check
> + (lambda _
> + (zero? (system* "python" "-m" "nose"))))
> + (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"))))))))
(symlink* ..) has an unspecified return value, so please return #t here.
Otherwise looks good. Would it make sense to have it in
version-control.scm, or is this tool mostly for doing Android
development?
> + (native-inputs
> + `(("nose" ,python2-nose)
> + ("git" ,git)))
> + (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
> +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
> +script that you can put anywhere in your path.")
> + (license license:asl2.0)))
> --
> 2.7.4
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#26822: [PATCH] gnu: Add git-repo.
2017-05-08 7:57 ` Marius Bakke
@ 2017-05-08 8:03 ` Hartmut Goebel
2017-05-08 9:02 ` Clément Lassieur
0 siblings, 1 reply; 9+ messages in thread
From: Hartmut Goebel @ 2017-05-08 8:03 UTC (permalink / raw)
To: Marius Bakke, 26822
Am 08.05.2017 um 09:57 schrieb Marius Bakke:
> Otherwise looks good. Would it make sense to have it in
> version-control.scm, or is this tool mostly for doing Android
> development?
I've never seen this outside of android development. (And given the poor
quality of the implementation[*], I'd not suggest spreading it.)
[*] The main program also acts as an installer and such.
--
Regards
Hartmut Goebel
| Hartmut Goebel | h.goebel@crazy-compilers.com |
| www.crazy-compilers.com | compilers which you thought are impossible |
^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#26822: [PATCH] gnu: Add git-repo.
2017-05-08 8:03 ` Hartmut Goebel
@ 2017-05-08 9:02 ` Clément Lassieur
0 siblings, 0 replies; 9+ messages in thread
From: Clément Lassieur @ 2017-05-08 9:02 UTC (permalink / raw)
To: Hartmut Goebel; +Cc: 26822
Hi,
Thanks for this patch!
Hartmut Goebel <h.goebel@crazy-compilers.com> writes:
> Am 08.05.2017 um 09:57 schrieb Marius Bakke:
>> Otherwise looks good. Would it make sense to have it in
>> version-control.scm, or is this tool mostly for doing Android
>> development?
>
> I've never seen this outside of android development. (And given the poor
> quality of the implementation[*], I'd not suggest spreading it.)
We use it at work for non-android development. But I'm eager to find an
good alternative...
> [*] The main program also acts as an installer and such.
^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#26822: [PATCH] gnu: Add git-repo.
2017-05-07 21:41 bug#26822: [PATCH] gnu: Add git-repo Hartmut Goebel
2017-05-07 23:46 ` Leo Famulari
2017-05-08 7:57 ` Marius Bakke
@ 2017-05-12 11:56 ` Hartmut Goebel
2017-06-02 16:20 ` Ludovic Courtès
2017-05-12 12:02 ` Hartmut Goebel
2017-06-04 9:45 ` bug#26822: merged Hartmut Goebel
4 siblings, 1 reply; 9+ messages in thread
From: Hartmut Goebel @ 2017-05-12 11:56 UTC (permalink / raw)
To: 26822
* gnu/packages/android.scm (git-repo): New variable.
---
gnu/packages/android.scm | 101 +++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 101 insertions(+)
diff --git a/gnu/packages/android.scm b/gnu/packages/android.scm
index e23d0fd..be3f50a 100644
--- a/gnu/packages/android.scm
+++ b/gnu/packages/android.scm
@@ -3,6 +3,7 @@
;;; Copyright © 2015 Kai-Chung Yan <seamlikok@gmail.com>
;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
+;;; Copyright © 2017 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -23,8 +24,13 @@
#:use-module (guix packages)
#:use-module (guix git-download)
#:use-module (guix build-system gnu)
+ #:use-module (guix build-system python)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (gnu packages)
+ #:use-module (gnu packages gnupg)
+ #:use-module (gnu packages python)
+ #:use-module (gnu packages ssh)
+ #:use-module (gnu packages version-control)
#:use-module (gnu packages tls))
;; The Makefiles that we add are largely based on the Debian
@@ -298,3 +304,98 @@ with an emulator instance or connected Android device. It facilitates a variety
of device actions, such as installing and debugging apps, and it provides access
to a Unix shell that can run commands on the connected device or emulator.")
(license license:asl2.0)))
+
+(define-public git-repo
+ (package
+ (name "git-repo")
+ (version "1.12.37")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://gerrit.googlesource.com/git-repo")
+ (commit (string-append "v" version))))
+ (file-name (string-append "git-repo-" version "-checkout"))
+ (sha256
+ (base32 "0qp7jqhblv7xblfgpcq4n18dyjdv8shz7r60c3vnjxx2fngkj2jd"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:python ,python-2 ; code says: "Python 3 support is … experimental."
+ #: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',")))
+ (substitute* "git_config.py"
+ ((" command_base = \\['ssh',")
+ (string-append " command_base = ['" ssh "/bin/ssh',")))
+ #t)))
+ (add-before 'build 'do-not-clone-this-source
+ (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, ''
+
+ # 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)))
+ (delete 'build) ; nothing to build
+ (replace 'check
+ (lambda _
+ (zero? (system* "python" "-m" "nose"))))
+ (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)
+ ("gnupg" ,gnupg)
+ ("ssh", openssh)))
+ (native-inputs
+ `(("nose" ,python2-nose)))
+ (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
+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
+script that you can put anywhere in your path.")
+ (license license:asl2.0)))
--
2.7.4
^ permalink raw reply related [flat|nested] 9+ messages in thread
* bug#26822: [PATCH] gnu: Add git-repo.
2017-05-07 21:41 bug#26822: [PATCH] gnu: Add git-repo Hartmut Goebel
` (2 preceding siblings ...)
2017-05-12 11:56 ` Hartmut Goebel
@ 2017-05-12 12:02 ` Hartmut Goebel
2017-06-04 9:45 ` bug#26822: merged Hartmut Goebel
4 siblings, 0 replies; 9+ messages in thread
From: Hartmut Goebel @ 2017-05-12 12:02 UTC (permalink / raw)
To: 26822
Hi,
it showed up that I package description was nor good enough: It only
passed my rudimentary first test, but fails just later. So I needed to
update this patch (respecting you prior feedback).
This package no replaced one function (_FindRepo). I decided to *not*
use a patch for this, but to insert the changed code at the beginning of
_FindRepo and keeping the old code as dead code (with an appropriate
comment). I know, this is ugly, but this program is ugly anyway: There
is no "install", but the front-end script downloads the software using
git and installs it. *shiver*
If you have concerns about this, please speak up.
--
Regards
Hartmut Goebel
| Hartmut Goebel | h.goebel@crazy-compilers.com |
| www.crazy-compilers.com | compilers which you thought are impossible |
^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#26822: merged
2017-05-07 21:41 bug#26822: [PATCH] gnu: Add git-repo Hartmut Goebel
` (3 preceding siblings ...)
2017-05-12 12:02 ` Hartmut Goebel
@ 2017-06-04 9:45 ` Hartmut Goebel
4 siblings, 0 replies; 9+ messages in thread
From: Hartmut Goebel @ 2017-06-04 9:45 UTC (permalink / raw)
To: 26822-close
pushed as c1151ecf807ead8e4e220ec17133ec0298f18b5a
^ permalink raw reply [flat|nested] 9+ messages in thread