unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#66704] [PATCH 0/1] patman depends on Git
@ 2023-10-23 16:07 Simon Tournier
  2023-10-23 16:26 ` [bug#66704] [PATCH 1/1] gnu: patman: Wrap program with git Simon Tournier
  2023-10-24  1:05 ` [bug#66704] [PATCH 0/1] patman depends on Git Maxim Cournoyer
  0 siblings, 2 replies; 3+ messages in thread
From: Simon Tournier @ 2023-10-23 16:07 UTC (permalink / raw)
  To: 66704; +Cc: Simon Tournier, maxim.cournoyer

Hi,

Assume, I am running in some Git repository, e.g.,

  $ git config --get branch.tmp.remote
  origin

Then, I get this error:

--8<---------------cut here---------------start------------->8---
$ guix shell -C patman -- patman -h
Traceback (most recent call last):
  File "/gnu/store/50q6yz9s0ddfxbwd31sf6lq15hsy97gs-python-u-boot-pylib-2023.07.02/lib/python3.10/site-packages/u_boot_pylib/command.py", line 95, in run_pipe
    last_pipe = cros_subprocess.Popen(cmd, cwd=cwd, **kwargs)
  File "/gnu/store/50q6yz9s0ddfxbwd31sf6lq15hsy97gs-python-u-boot-pylib-2023.07.02/lib/python3.10/site-packages/u_boot_pylib/cros_subprocess.py", line 83, in __init__
    super(Popen, self).__init__(args, stdin=stdin,
  File "/gnu/store/p4x29pa0qjb3r76v2bl0jvhld42l0lkq-python-3.10.7/lib/python3.10/subprocess.py", line 969, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "/gnu/store/p4x29pa0qjb3r76v2bl0jvhld42l0lkq-python-3.10.7/lib/python3.10/subprocess.py", line 1845, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'git'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/gnu/store/znq8klrhn3wwgfvrq0kqm8krx5xi7fpq-patman-2023.07.02/bin/.patman-real", line 47, in <module>
    parser.add_argument('-p', '--project', default=project.detect_project(),
  File "/gnu/store/znq8klrhn3wwgfvrq0kqm8krx5xi7fpq-patman-2023.07.02/lib/python3.10/site-packages/patman/project.py", line 19, in detect_project
    top_level = gitutil.get_top_level()
  File "/gnu/store/znq8klrhn3wwgfvrq0kqm8krx5xi7fpq-patman-2023.07.02/lib/python3.10/site-packages/patman/gitutil.py", line 627, in get_top_level
    return command.output_one_line('git', 'rev-parse', '--show-toplevel')
  File "/gnu/store/50q6yz9s0ddfxbwd31sf6lq15hsy97gs-python-u-boot-pylib-2023.07.02/lib/python3.10/site-packages/u_boot_pylib/command.py", line 128, in output_one_line
    result = run_pipe([cmd], capture=True, oneline=True,
  File "/gnu/store/50q6yz9s0ddfxbwd31sf6lq15hsy97gs-python-u-boot-pylib-2023.07.02/lib/python3.10/site-packages/u_boot_pylib/command.py", line 99, in run_pipe
    raise Exception("Error running '%s': %s" % (user_pipestr, str))
Exception: Error running 'git rev-parse --show-toplevel': <class 'str'>
--8<---------------cut here---------------end--------------->8---

That’s because ’patman’ runs ’git’ via the file gitutils.py, see:

--8<---------------cut here---------------start------------->8---
-*- mode:grep; default-directory: "/tmp/u-boot-2023.07.02/tools/patman/" -*-

20 candidates:
./gitutil.py:29:    cmd = ['git']
./gitutil.py:87:    pipe = ['git', 'name-rev', commit_hash]
./gitutil.py:139:        remote = command.output_one_line('git', '--git-dir', git_dir, 'config',
./gitutil.py:141:        merge = command.output_one_line('git', '--git-dir', git_dir, 'config',
./gitutil.py:231:    pipe = ['git']
./gitutil.py:252:    pipe = ['git', 'clone', git_dir, '.']
./gitutil.py:265:    pipe = ['git']
./gitutil.py:285:    pipe = ['git', '--git-dir', git_dir, 'worktree', 'list']
./gitutil.py:300:    pipe = ['git', '--git-dir', git_dir, 'worktree', 'add', '.', '--detach']
./gitutil.py:315:    pipe = ['git', '--git-dir', git_dir, 'worktree', 'prune']
./gitutil.py:337:    cmd = ['git', 'format-patch', '-M']
./gitutil.py:414:        'git', 'config', 'sendemail.suppresscc', raise_on_error=False)
./gitutil.py:496:        git_config_to = command.output('git', 'config', 'sendemail.to',
./gitutil.py:511:    cmd = ['git', 'send-email', '--annotate']
./gitutil.py:627:    return command.output_one_line('git', 'rev-parse', '--show-toplevel')
./gitutil.py:636:    fname = command.output_one_line('git', 'config', 'sendemail.aliasesfile',
./gitutil.py:654:    uname = command.output_one_line('git', 'config', '--global', 'user.name')
./gitutil.py:664:    uemail = command.output_one_line('git', 'config', '--global', 'user.email')
./gitutil.py:675:        'git', 'config', 'format.subjectprefix', raise_on_error=False)
./gitutil.py:699:    return command.output_one_line('git', 'show', '-s', '--pretty=format:%H')
--8<---------------cut here---------------end--------------->8---

I propose to wrap ’patman’ with ’git’, see patch.

WDYT?

Cheers,
simon


Simon Tournier (1):
  gnu: patman: Wrap program with git.

 gnu/packages/bootloaders.scm | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)


base-commit: a25a492f2b8604de4ebc21298f24891a1a245161
-- 
2.38.1





^ permalink raw reply	[flat|nested] 3+ messages in thread

* [bug#66704] [PATCH 1/1] gnu: patman: Wrap program with git.
  2023-10-23 16:07 [bug#66704] [PATCH 0/1] patman depends on Git Simon Tournier
@ 2023-10-23 16:26 ` Simon Tournier
  2023-10-24  1:05 ` [bug#66704] [PATCH 0/1] patman depends on Git Maxim Cournoyer
  1 sibling, 0 replies; 3+ messages in thread
From: Simon Tournier @ 2023-10-23 16:26 UTC (permalink / raw)
  To: 66704; +Cc: Simon Tournier

* gnu/packages/bootloaders.scm (patman): Replace by 'package/inherit'.
[arguments]: Add 'wrap-program' that uses git-minimal dependency.
[inputs]: Add git-minimal.

Change-Id: Id4ebadd518f271baa087161b10455ec03d6f959b
---
 gnu/packages/bootloaders.scm | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index fb20ba0efa..cdc26a0c9e 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -18,6 +18,7 @@
 ;;; Copyright © 2022 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
 ;;; Copyright © 2021 Stefan <stefan-guix@vodafonemail.de>
 ;;; Copyright © 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2023 Simon Tournier <zimon.toutoune@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -65,6 +66,7 @@ (define-module (gnu packages bootloaders)
   #:use-module (gnu packages serialization)
   #:use-module (gnu packages swig)
   #:use-module (gnu packages valgrind)
+  #:use-module (gnu packages version-control)
   #:use-module (gnu packages virtualization)
   #:use-module (gnu packages xorg)
   #:use-module (gnu packages python-web)
@@ -864,8 +866,7 @@ (define-public python-u-boot-pylib
 ;;; This is packaged separately, as it can be used in other contexts than for
 ;;; U-Boot development.
 (define-public patman
-  (package
-    (inherit u-boot)
+  (package/inherit u-boot
     (name "patman")
     (build-system pyproject-build-system)
     (arguments
@@ -890,8 +891,17 @@ (define-public patman
             (lambda _
               (substitute* "pyproject.toml"
                 (("patman.__main__:run_patman")
-                 "patman.__main__")))))))
-    (inputs (list python-pygit2 python-requests python-u-boot-pylib))
+                 "patman.__main__"))))
+          (add-after 'install 'wrap-program
+            (lambda _
+              (wrap-program (string-append #$output "/bin/patman")
+                `("PATH" ":" suffix
+                  (,(string-append
+                     #$(this-package-input "git-minimal") "/bin")))))))))
+    (inputs (list git-minimal
+                  python-pygit2
+                  python-requests
+                  python-u-boot-pylib))
     (synopsis "Patch automation tool")
     (description "Patman is a patch automation script which:
 @itemize
-- 
2.38.1





^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [bug#66704] [PATCH 0/1] patman depends on Git
  2023-10-23 16:07 [bug#66704] [PATCH 0/1] patman depends on Git Simon Tournier
  2023-10-23 16:26 ` [bug#66704] [PATCH 1/1] gnu: patman: Wrap program with git Simon Tournier
@ 2023-10-24  1:05 ` Maxim Cournoyer
  1 sibling, 0 replies; 3+ messages in thread
From: Maxim Cournoyer @ 2023-10-24  1:05 UTC (permalink / raw)
  To: Simon Tournier; +Cc: 66704

Hi Simon,

Simon Tournier <zimon.toutoune@gmail.com> writes:

> Hi,
>
> Assume, I am running in some Git repository, e.g.,
>
>   $ git config --get branch.tmp.remote
>   origin
>
> Then, I get this error:
>
> $ guix shell -C patman -- patman -h
> Traceback (most recent call last):
>   File "/gnu/store/50q6yz9s0ddfxbwd31sf6lq15hsy97gs-python-u-boot-pylib-2023.07.02/lib/python3.10/site-packages/u_boot_pylib/command.py", line 95, in run_pipe
>     last_pipe = cros_subprocess.Popen(cmd, cwd=cwd, **kwargs)
>   File "/gnu/store/50q6yz9s0ddfxbwd31sf6lq15hsy97gs-python-u-boot-pylib-2023.07.02/lib/python3.10/site-packages/u_boot_pylib/cros_subprocess.py", line 83, in __init__
>     super(Popen, self).__init__(args, stdin=stdin,
>   File "/gnu/store/p4x29pa0qjb3r76v2bl0jvhld42l0lkq-python-3.10.7/lib/python3.10/subprocess.py", line 969, in __init__
>     self._execute_child(args, executable, preexec_fn, close_fds,
>   File "/gnu/store/p4x29pa0qjb3r76v2bl0jvhld42l0lkq-python-3.10.7/lib/python3.10/subprocess.py", line 1845, in _execute_child
>     raise child_exception_type(errno_num, err_msg, err_filename)
> FileNotFoundError: [Errno 2] No such file or directory: 'git'
>
> During handling of the above exception, another exception occurred:
>
> Traceback (most recent call last):
>   File "/gnu/store/znq8klrhn3wwgfvrq0kqm8krx5xi7fpq-patman-2023.07.02/bin/.patman-real", line 47, in <module>
>     parser.add_argument('-p', '--project', default=project.detect_project(),
>   File "/gnu/store/znq8klrhn3wwgfvrq0kqm8krx5xi7fpq-patman-2023.07.02/lib/python3.10/site-packages/patman/project.py", line 19, in detect_project
>     top_level = gitutil.get_top_level()
>   File "/gnu/store/znq8klrhn3wwgfvrq0kqm8krx5xi7fpq-patman-2023.07.02/lib/python3.10/site-packages/patman/gitutil.py", line 627, in get_top_level
>     return command.output_one_line('git', 'rev-parse', '--show-toplevel')
>   File "/gnu/store/50q6yz9s0ddfxbwd31sf6lq15hsy97gs-python-u-boot-pylib-2023.07.02/lib/python3.10/site-packages/u_boot_pylib/command.py", line 128, in output_one_line
>     result = run_pipe([cmd], capture=True, oneline=True,
>   File "/gnu/store/50q6yz9s0ddfxbwd31sf6lq15hsy97gs-python-u-boot-pylib-2023.07.02/lib/python3.10/site-packages/u_boot_pylib/command.py", line 99, in run_pipe
>     raise Exception("Error running '%s': %s" % (user_pipestr, str))
> Exception: Error running 'git rev-parse --show-toplevel': <class 'str'>
>
>
> That’s because ’patman’ runs ’git’ via the file gitutils.py, see:
>
> -*- mode:grep; default-directory: "/tmp/u-boot-2023.07.02/tools/patman/" -*-
>
> 20 candidates:
> ./gitutil.py:29:    cmd = ['git']
> ./gitutil.py:87:    pipe = ['git', 'name-rev', commit_hash]
> ./gitutil.py:139:        remote = command.output_one_line('git', '--git-dir', git_dir, 'config',
> ./gitutil.py:141:        merge = command.output_one_line('git', '--git-dir', git_dir, 'config',
> ./gitutil.py:231:    pipe = ['git']
> ./gitutil.py:252:    pipe = ['git', 'clone', git_dir, '.']
> ./gitutil.py:265:    pipe = ['git']
> ./gitutil.py:285:    pipe = ['git', '--git-dir', git_dir, 'worktree', 'list']
> ./gitutil.py:300:    pipe = ['git', '--git-dir', git_dir, 'worktree', 'add', '.', '--detach']
> ./gitutil.py:315:    pipe = ['git', '--git-dir', git_dir, 'worktree', 'prune']
> ./gitutil.py:337:    cmd = ['git', 'format-patch', '-M']
> ./gitutil.py:414:        'git', 'config', 'sendemail.suppresscc', raise_on_error=False)
> ./gitutil.py:496:        git_config_to = command.output('git', 'config', 'sendemail.to',
> ./gitutil.py:511:    cmd = ['git', 'send-email', '--annotate']
> ./gitutil.py:627:    return command.output_one_line('git', 'rev-parse', '--show-toplevel')
> ./gitutil.py:636:    fname = command.output_one_line('git', 'config', 'sendemail.aliasesfile',
> ./gitutil.py:654:    uname = command.output_one_line('git', 'config', '--global', 'user.name')
> ./gitutil.py:664:    uemail = command.output_one_line('git', 'config', '--global', 'user.email')
> ./gitutil.py:675:        'git', 'config', 'format.subjectprefix', raise_on_error=False)
> ./gitutil.py:699:    return command.output_one_line('git', 'show', '-s', '--pretty=format:%H')
>
> I propose to wrap ’patman’ with ’git’, see patch.

I see 'git send-email' in the above, so you'll also want to wrap with
`(,git "send-email").  Did you test that this suffices to get a fully
self-contained working patman?  Maybe you can send a v2 with patman.

You can add these 'Series-*' git trailers to your commit:

--8<---------------cut here---------------start------------->8---
Change-Id: xxxxxxx
[...]
Series-to: 66704@debbugs.gnu.org
Series-version: 2
Series-changes: 2
 - Also add 'send-email' output of git to wrapper

--8<---------------cut here---------------end--------------->8---

Then to send, you simply do:

$ patman

And it'll annotate the patch for you and you don't need to remember
tracking the '--to' value.

-- 
Thanks,
Maxim




^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2023-10-24  1:06 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-10-23 16:07 [bug#66704] [PATCH 0/1] patman depends on Git Simon Tournier
2023-10-23 16:26 ` [bug#66704] [PATCH 1/1] gnu: patman: Wrap program with git Simon Tournier
2023-10-24  1:05 ` [bug#66704] [PATCH 0/1] patman depends on Git Maxim Cournoyer

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).