guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: git-annex: problematic shebangs in .git/hooks/pre-commit?


From: Timothy Sample
Subject: Re: git-annex: problematic shebangs in .git/hooks/pre-commit?
Date: Sun, 03 Feb 2019 14:47:39 -0500
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux)

Hi Kyle,

Kyle Meyer <address@hidden> writes:

> Timothy Sample <address@hidden> writes:
>
>> Kyle Meyer <address@hidden> writes:
>
> [...]
>
>>> Perhaps I'm just missing something, but to spell out my concern a
>>> little
>>> more: I have /gnu/store/A/git-annex and /gnu/store/X/bash-minimal.  I
>>> set up a repo with 'git annex init', and
>>> /gnu/store/X/bash-minimal/bin/sh is used in the shebang.
>>>
>>> Some time later I am using /gnu/store/B/git-annex, which references
>>> /gnu/store/Y/bash-minimal.  That repo's hook still uses the
>>> X/bash-minimal/bin/sh.  But if /gnu/store/X/bash-minimal is no longer
>>> referenced by any package, it could be garbage collected, leading to
>>> the
>>> hook failing.
>>
>> Ah yes!  That could be a problem indeed.  Good catch.  Following the
>> example of autoconf, it seems it should just be left alone.
>
> Revisiting this, I tried to simply remove the patch-shell phase (diff
> below).  That worked as intended when I tested manually, but it caused
> many test failures with messages like
>
>     fatal: cannot run .git/hooks/pre-commit: No such file or directory
>
> Although the error message isn't too clear, this happens because
> /bin/sh, now used in the hook shebangs, isn't available to the tests
> executed in the build environment.

Thanks for giving this a try!

> Any suggestions on how to deal with this?

I am travelling at the moment, so I can’t dig into it properly.  I
crossed my fingers and tried symlinking /bin/sh to bash, but did not
have permission to make the /bin directory.  (I guessed the build user
would be able to do this from within the build environment, but
apparently not.)  It would be ideal to set up the build environment like
this, but I’m not sure how.

> ---
> diff --git a/gnu/packages/version-control.scm 
> b/gnu/packages/version-control.scm
> index dc2abb0c71..56fe6f5e7a 100644
> --- a/gnu/packages/version-control.scm
> +++ b/gnu/packages/version-control.scm
> @@ -2236,11 +2236,6 @@ (define-public git-annex
>         '("--flags=-Android -Assistant -Pairing -S3 -Webapp -WebDAV")
>         #:phases
>         (modify-phases %standard-phases
> -         (add-before 'configure 'patch-shell
> -           (lambda _
> -             (substitute* "Utility/Shell.hs"
> -               (("/bin/sh") (which "sh")))
> -             #t))
>           (add-before 'configure 'factor-setup
>             (lambda _
>               ;; Factor out necessary build logic from the provided


-- Tim



reply via email to

[Prev in Thread] Current Thread [Next in Thread]