From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56123) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fcTk8-0002nq-1p for guix-patches@gnu.org; Mon, 09 Jul 2018 06:50:09 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fcTk3-0001Ds-6F for guix-patches@gnu.org; Mon, 09 Jul 2018 06:50:08 -0400 Received: from debbugs.gnu.org ([208.118.235.43]:43851) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fcTk3-0001Di-0D for guix-patches@gnu.org; Mon, 09 Jul 2018 06:50:03 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1fcTk2-0006ue-HA for guix-patches@gnu.org; Mon, 09 Jul 2018 06:50:02 -0400 Subject: [bug#32102] [PATCH] utils: Fix wrap-program filename generation. Resent-Message-ID: From: Arun Isaac In-Reply-To: <87k1q4j1zk.fsf@lassieur.org> References: <20180709013103.26091-1-arunisaac@systemreboot.net> <87k1q4j1zk.fsf@lassieur.org> Date: Mon, 09 Jul 2018 16:19:15 +0530 Message-ID: MIME-Version: 1.0 Content-Type: text/plain List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+kyle=kyleam.com@gnu.org Sender: "Guix-patches" To: =?UTF-8?Q?Cl=C3=A9ment?= Lassieur Cc: 32102@debbugs.gnu.org >> * 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. For a concrete example of what I mean, look at the gajim package. You will find double wrappers such as "bin/..gajim-real-real". This shouldn't have happened. Furthermore, many other packages have similar issues. You might find some if you search through /gnu/store. find /gnu/store -name "*-real-real" > It means that 'foo' and '.foo' will have the same generated file name > '.foo-real'. Wrapping a hidden file and its non-hidden counterpart is > something that probably shouldn't happen, but if for some reason it must > happen, we'll face an annoying bug. WDYT? It's true that we could face an annoying bug in the future. But then, we'll have to find some alternative means to determine alread-wrapped?. Is that worth it? Any ideas?