GNU bug report logs - #28531
[PATCH] gnu: Add vcsh.

Previous Next

Package: guix-patches;

Reported by: Stefan Reichör <stefan <at> xsteve.at>

Date: Wed, 20 Sep 2017 19:39:01 UTC

Severity: normal

Tags: patch

Done: ludo <at> gnu.org (Ludovic Courtès)

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 28531 in the body.
You can then email your comments to 28531 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#28531; Package guix-patches. (Wed, 20 Sep 2017 19:39:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Stefan Reichör <stefan <at> xsteve.at>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Wed, 20 Sep 2017 19:39:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Stefan Reichör <stefan <at> xsteve.at>
To: guix-patches <at> gnu.org
Subject: [PATCH] gnu: Add vcsh.
Date: Wed, 20 Sep 2017 21:37:47 +0200
* gnu/packages/version-control.scm (vcsh): New variable.
---
 gnu/packages/version-control.scm |   36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 235adef..4249073 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -713,6 +713,42 @@ Git repository as normal Git commits, and provides a number of commands to
 manipulate them in various ways.")
     (license license:gpl2)))
 
+(define-public vcsh
+  (package
+    (name "vcsh")
+    (version "1.20151229")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/RichiH/vcsh/archive/v"
+                                  version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1ym3swkh738c3vciffvlr96vqzhwmzkb8ajqzap8f0j9n039a1mf"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("git" ,git)
+       ("which" ,which)
+       ("perl" ,perl)
+       ("perl-test-harness" ,perl-test-harness)
+       ("perl-shell-command" ,perl-shell-command)
+       ("perl-test-most" ,perl-test-most)))
+    (arguments
+     '(#:phases (modify-phases %standard-phases
+                  (delete 'configure)
+                  (delete 'build))
+       #:make-flags (list (string-append "PREFIX="
+                                         (assoc-ref %outputs "out")))
+       #:test-target "test"))
+    (home-page "https://github.com/RichiH/vcsh")
+    (synopsis "Version Control System for $HOME")
+    (description
+     "Maintain several Git repositories in one single directory.  They all
+maintain their working trees without clobbering each other or interfering
+otherwise.  By default, all Git repositories maintained via vcsh store the
+actual files in $HOME.  But this can be overridden.")
+    (license license:gpl2+)))
+
 (define-public git-test-sequence
   (let ((commit "48e5a2f5a13a5f30452647237e23362b459b9c76"))
     (package





Reply sent to ludo <at> gnu.org (Ludovic Courtès):
You have taken responsibility. (Wed, 20 Sep 2017 20:33:02 GMT) Full text and rfc822 format available.

Notification sent to Stefan Reichör <stefan <at> xsteve.at>:
bug acknowledged by developer. (Wed, 20 Sep 2017 20:33:03 GMT) Full text and rfc822 format available.

Message #10 received at 28531-done <at> debbugs.gnu.org (full text, mbox):

From: ludo <at> gnu.org (Ludovic Courtès)
To: Stefan Reichör <stefan <at> xsteve.at>
Cc: 28531-done <at> debbugs.gnu.org
Subject: Re: [bug#28531] [PATCH] gnu: Add vcsh.
Date: Wed, 20 Sep 2017 22:32:09 +0200
[Message part 1 (text/plain, inline)]
Hi Stefan,

Stefan Reichör <stefan <at> xsteve.at> skribis:

> * gnu/packages/version-control.scm (vcsh): New variable.

Pushed with the minor changes below (the first sentence of the
description looked awkward to me).

Note that vcsh takes ‘git’ from $PATH.  I wonder if we should keep it
this way, or if we should hard-code the absolute file name to ‘git’ so
that it always works.

Thoughts?

Ludo’.

[Message part 2 (text/x-patch, inline)]
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 424907332..78e142b29 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -726,9 +726,10 @@ manipulate them in various ways.")
                (base32
                 "1ym3swkh738c3vciffvlr96vqzhwmzkb8ajqzap8f0j9n039a1mf"))))
     (build-system gnu-build-system)
+    (native-inputs
+     `(("which" ,which)))
     (inputs
      `(("git" ,git)
-       ("which" ,which)
        ("perl" ,perl)
        ("perl-test-harness" ,perl-test-harness)
        ("perl-shell-command" ,perl-shell-command)
@@ -741,12 +742,13 @@ manipulate them in various ways.")
                                          (assoc-ref %outputs "out")))
        #:test-target "test"))
     (home-page "https://github.com/RichiH/vcsh")
-    (synopsis "Version Control System for $HOME")
+    (synopsis "Version control system for @code{$HOME}")
     (description
-     "Maintain several Git repositories in one single directory.  They all
-maintain their working trees without clobbering each other or interfering
-otherwise.  By default, all Git repositories maintained via vcsh store the
-actual files in $HOME.  But this can be overridden.")
+     "vcsh version-controls configuration files in several Git repositories,
+all in one single directory.  They all maintain their working trees without
+clobbering each other or interfering otherwise.  By default, all Git
+repositories maintained via vcsh store the actual files in @code{$HOME},
+though this can be overridden.")
     (license license:gpl2+)))
 
 (define-public git-test-sequence

Information forwarded to guix-patches <at> gnu.org:
bug#28531; Package guix-patches. (Sat, 23 Sep 2017 12:53:02 GMT) Full text and rfc822 format available.

Message #13 received at 28531 <at> debbugs.gnu.org (full text, mbox):

From: ludo <at> gnu.org (Ludovic Courtès)
To: Stefan Reichör <stefan <at> xsteve.at>
Cc: 28531 <at> debbugs.gnu.org
Subject: Re: [bug#28531] [PATCH] gnu: Add vcsh.
Date: Sat, 23 Sep 2017 14:52:14 +0200
Hello,

Stefan Reichör <stefan <at> xsteve.at> skribis:

>> Hi Stefan,
>>
>> Stefan Reichör <stefan <at> xsteve.at> skribis:
>>
>>> * gnu/packages/version-control.scm (vcsh): New variable.
>>
>> Pushed with the minor changes below (the first sentence of the
>> description looked awkward to me).
>>
>> Note that vcsh takes ‘git’ from $PATH.  I wonder if we should keep it
>> this way, or if we should hard-code the absolute file name to ‘git’ so
>> that it always works.
>>
>> Thoughts?
>
> I don't think that it is desirable to change all external tool
> invocations for programs in Guix. I am currently preparing the tool
> atool that has to invoke a lot of archivers.

We always have a choice between “static binding” (where we hard-wire a
tool and its dependencies) and “late binding” (where the dependencies
are searched for at run time.)

Most of the time in Guix we favor static binding: it makes sure that (1)
programs work out of the box, regardless of what happens to be already
installed on your system, and (2) that the program will behave the same
on all systems since its behavior does not depend on external state.

There are exceptions where we want dynamic binding, for instance for
plugins or optional/soft dependencies.

The case of ‘vcsh’ is borderline.  I have a slight preference to
hardwire the dependency on Git (after all, someone might want to use
vcsh without having installed Git before), but I’m open to other
arguments.

Thoughts?

Thanks,
Ludo’.

PS: Please preserve Cc:.




Information forwarded to guix-patches <at> gnu.org:
bug#28531; Package guix-patches. (Sat, 23 Sep 2017 18:12:01 GMT) Full text and rfc822 format available.

Message #16 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Stefan Reichör <stefan <at> xsteve.at>
To: guix-patches <at> gnu.org
Subject: Re: [bug#28531] [PATCH] gnu: Add vcsh.
Date: Sat, 23 Sep 2017 20:10:45 +0200
Hi Ludo,

> Hello,
>
> Stefan Reichör <stefan <at> xsteve.at> skribis:
>
>>> Hi Stefan,
>>>
>>> Stefan Reichör <stefan <at> xsteve.at> skribis:
>>>
>>>> * gnu/packages/version-control.scm (vcsh): New variable.
>>>
>>> Pushed with the minor changes below (the first sentence of the
>>> description looked awkward to me).
>>>
>>> Note that vcsh takes ‘git’ from $PATH.  I wonder if we should keep it
>>> this way, or if we should hard-code the absolute file name to ‘git’ so
>>> that it always works.
>>>
>>> Thoughts?
>>
>> I don't think that it is desirable to change all external tool
>> invocations for programs in Guix. I am currently preparing the tool
>> atool that has to invoke a lot of archivers.
>
> We always have a choice between “static binding” (where we hard-wire a
> tool and its dependencies) and “late binding” (where the dependencies
> are searched for at run time.)
>
> Most of the time in Guix we favor static binding: it makes sure that (1)
> programs work out of the box, regardless of what happens to be already
> installed on your system, and (2) that the program will behave the same
> on all systems since its behavior does not depend on external state.
>
> There are exceptions where we want dynamic binding, for instance for
> plugins or optional/soft dependencies.
>
> The case of ‘vcsh’ is borderline.  I have a slight preference to
> hardwire the dependency on Git (after all, someone might want to use
> vcsh without having installed Git before), but I’m open to other
> arguments.
>
> Thoughts?

Thanks for the explaination. I see the benefit of the static binding.
The good thing is that the package versions are reproducable.
However, I am used to the way it works on other systems. There is almost
always the search path used to start other programs.

And to make it even more complicated, I still use Ubuntu and install
some tools using Guix. So it is even possible that I use vcsh from Guix
and git from Ubuntu.

I took a look at the vcsh script. git is hardcoded in many places there.
Patching it to have static binding seems to be complicated. The only
sane solution would be to change the script and make git configurable
and try to make this change upstream. However I am not really keen on
doing this kind of work...

Or do you have another idea how the static binding should be accomplished?

Stefan.

> Thanks,
> Ludo’.
>
> PS: Please preserve Cc:.
o.k. - I interpreted the Cc: "28531-done <at> debbugs.gnu.org" as flag that
the bug is closed and was unsure what will happen when I respond to the
closed bug...




Information forwarded to guix-patches <at> gnu.org:
bug#28531; Package guix-patches. (Mon, 25 Sep 2017 09:52:01 GMT) Full text and rfc822 format available.

Message #19 received at 28531 <at> debbugs.gnu.org (full text, mbox):

From: ludo <at> gnu.org (Ludovic Courtès)
To: Stefan Reichör <stefan <at> xsteve.at>
Cc: 28531 <at> debbugs.gnu.org
Subject: Re: [bug#28531] [PATCH] gnu: Add vcsh.
Date: Mon, 25 Sep 2017 11:50:55 +0200
Hi,

Stefan Reichör <stefan <at> xsteve.at> skribis:

> Thanks for the explaination. I see the benefit of the static binding.
> The good thing is that the package versions are reproducable.
> However, I am used to the way it works on other systems. There is almost
> always the search path used to start other programs.
>
> And to make it even more complicated, I still use Ubuntu and install
> some tools using Guix. So it is even possible that I use vcsh from Guix
> and git from Ubuntu.

Indeed.  From a reproducibility viewpoint, it’s something we’d like to
avoid, because then vcsh might behave completely differently depending
on what the underlying distro is, and that’s clearly not what we expect
from Guix.

> I took a look at the vcsh script. git is hardcoded in many places there.
> Patching it to have static binding seems to be complicated. The only
> sane solution would be to change the script and make git configurable
> and try to make this change upstream. However I am not really keen on
> doing this kind of work...
>
> Or do you have another idea how the static binding should be accomplished?

I think it might be enough to do a regexp substitution matching all
“git” commands in the script:

  (substitute* "vcsh"
    (("\\<git ([a-z-]+)" _ sub-command)
     (string-append (assoc-ref inputs "git") "/bin/git "
                    sub-command)))

Could you give it a try?

Thanks,
Ludo'.




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Mon, 23 Oct 2017 11:24:04 GMT) Full text and rfc822 format available.

This bug report was last modified 7 years and 243 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.