GNU bug report logs - #32102
[PATCH] utils: Fix wrap-program filename generation.

Previous Next

Package: guix-patches;

Reported by: Arun Isaac <arunisaac <at> systemreboot.net>

Date: Mon, 9 Jul 2018 01:32:02 UTC

Severity: normal

Tags: patch

Done: Arun Isaac <arunisaac <at> systemreboot.net>

Bug is archived. No further changes may be made.

Full log


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

From: Clément Lassieur <clement <at> lassieur.org>
To: Arun Isaac <arunisaac <at> systemreboot.net>
Cc: 32102 <at> debbugs.gnu.org
Subject: Re: [bug#32102] [PATCH] utils: Fix wrap-program filename generation.
Date: Mon, 09 Jul 2018 16:12:31 +0200
Arun Isaac <arunisaac <at> systemreboot.net> writes:

>>> * guix/build/utils.scm (wrap-program): While generating a new filename for the
>>> wrapped program, trim dots from the left of the basename. This prevents
>>> already wrapped files being wrapped again with two or more dots prepended to
>>> them.
>>
>> Why is it a problem that two or more dots are prepended to them?
>
> (define (wrap-program prog #:rest vars)
>   (define wrapped-file
>     (string-append
>      (dirname prog) "/." (basename prog) "-real"))
>
>   (define already-wrapped?
>     (file-exists? wrapped-file))
>
> ...)
>
> If wrap-program finds that PROG has previously been wrapped, it extends
> the wrapper; it does not create a wrapper around the previously existing
> wrapper (a "double wrapper"). wrap-program detects that PROG has
> previously been wrapped by comparing the expected wrapped filename (see
> code snippet above). Without the string-trim I added, this
> already-wrapped? detection fails and a double wrapper ends up being
> created.

If '.gajim-real' exists and (WRAP-PROGRAM '/path/to/gajim' ...) is
called, PROG is '/path/to/gajim', WRAPPED-FILE is '/path/to/.gajim-real'
and ALREADY-WRAPPED? is #t, so I don't think there is a bug with
WRAP-PROGRAM.

The ..gajim-real-real file comes from the WRAP procedure in
python-build-system.scm: that WRAP procedure wraps every file it finds.
It'll wrap '.gajim-real' and 'gajim'.  Wrapping 'gajim' will work well,
it will be modified because it's already a wrapper, i.e. '.gajim-real'
exists.  But wrapping '.gajim-real' will create '..gajim-real-real'
because '.gajim-real' is not a wrapper.  And I think it's normal too.

So the question is: should WRAP (from python-build-system.scm) wrap
files that already have a wrapper?  I think it shouldn't.

Clément




This bug report was last modified 6 years and 256 days ago.

Previous Next


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