On Sun, Mar 05, 2017 at 04:24:14PM +0100, Clément Lassieur wrote: > contact.ng0@cryptolab.net writes: > > > + (add-before 'install 'fix-hooks-shebangs > > + (lambda* (#:key inputs #:allow-other-keys) > > + (let ((perl (string-append (assoc-ref inputs "perl") > > + "/bin/perl"))) > > + ;; The files in 'lib/Gitolite/Hooks' keep references to > > + ;; '/usr/bin/perl', without this fix it is impossible to > > + ;; to run gitolite in production. > > + (substitute* (find-files "src/lib/Gitolite/Hooks" ".*") > > + (("/usr/bin/perl") > > + perl)) > > + #t))) > > This patch introduces references to the store in files installed by > "gitolite setup" command. Those files are installed once and for all. > So for example .gitolite/hooks/common/update's shebang is > #!/gnu/store/vcjvzmdy5091bklv73rx9nc0yvlk12yv-perl-5.24.0/bin/perl. But > then what happens when perl is upgraded, and Guix garbage collected? My > understanding is that the shebang won't work anymore, and gitolite will > be broken. > > One can use instead special-files-service-type, which allows to have > /usr/bin/perl working. But it won't work anymore with this patch. Ah, seems like the same issue as with the Git hooks. > I suggest we revert it, but I might be wrong. WDYT? If these hooks are intended to be copied out of /gnu/store, then the change should be reverted until we have a better solution. I think it's better for the hook scripts to fail the first time than for them to fail later, after a seemingly unrelated action like `guix gc`.