Subject: Re: [bug#28531] [PATCH] gnu: Add vcsh.

From: [email-masked] (Ludovic Courtès)
Date: Sat, 23 Sep 2017 14:52:14 +0200

Hello,

Stefan Reichör <[email-masked]> skribis:

>> Hi Stefan,
>>
>> Stefan Reichör <[email-masked]> 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:.