From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?utf-8?Q?Ludovic_Court=C3=A8s?= Subject: Re: 02/02: gnu: next: Compress the executable. Date: Wed, 11 Sep 2019 22:37:43 +0200 Message-ID: <87h85ipo14.fsf@gnu.org> References: <20190905095602.15524.75425@vcs0.savannah.gnu.org> <20190905095603.AC57A209A5@vcs0.savannah.gnu.org> <874l1qgc1j.fsf@elephly.net> <871rwuc3es.fsf@ambrevar.xyz> <87blvu32qm.fsf@gnu.org> <878sqxq4ga.fsf@ambrevar.xyz> <875zm0co0t.fsf@ambrevar.xyz> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([2001:470:142:3::10]:46927) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i89N4-0006bM-O7 for guix-devel@gnu.org; Wed, 11 Sep 2019 16:37:47 -0400 In-Reply-To: <875zm0co0t.fsf@ambrevar.xyz> (Pierre Neidhardt's message of "Tue, 10 Sep 2019 14:51:46 +0200") List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: Pierre Neidhardt Cc: guix-devel@gnu.org Hi Pierre, Pierre Neidhardt skribis: > Hmm, reading myself again I realize this was poorly phrased. Allow me > to explain that again. In > > ./pre-inst-env guix gc --references /gnu/store/sypf1iq80b2i192jp0mxm43bk6= dj6fcc-next-1.3.1 > /gnu/store/4sqps8dczv3g7rwbdibfz6rf5jlk7w90-gcc-5.5.0-lib > /gnu/store/a0rffysgyr66q5fjgm1iibjm4ma1jbk3-next-1.3.1-lib > /gnu/store/h2j8gy8d2yrmrklavrik1y864zg7qwqd-sbcl-1.5.6 > /gnu/store/h90vnqw0nwd0hhm1l5dgxsdrigddfmq4-glibc-2.28 > /gnu/store/nq4lsyipmfb0q7g26ra45rwwqrh3x8zw-zlib-1.2.11 > /gnu/store/sypf1iq80b2i192jp0mxm43bk6dj6fcc-next-1.3.1 > > we see that next-1.3.1-lib is a dependency, which holds references to > all the other libraries. > > So my question is, why would `guix gc` collect sqlite, libfixposix, > etc. if they are indirect dependencies? > > In other words? Wasn't I right to check for dependencies with `guix > size` (or `guix gc -R`) instead of `guix gc --references`? =E2=80=98guix size=E2=80=99 and =E2=80=98guix gc -R=E2=80=99 show you the w= hole closure of the store item, so you might not realize that some of the things that ought to be direct dependencies are now in fact indirect dependencies. If sqlite ought to be a direct dependency and is now, in fact, an indirect dependency, things won=E2=80=99t break right away: sqlite won=E2= =80=99t be deleted as long as next is live. But you=E2=80=99ll already run into problems: grafting will yield a broken = next, as in . Furthermore, sqlite might eventually vanish entirely from the closure of next, as a consequence of changes in a dependency, and at that point running the GC may remove sqlite and thus break next. =E2=80=98guix pack= =E2=80=99 would also produce an incomplete pack. To draw a parallel, it=E2=80=99s as if SBCL=E2=80=99s GC were unable to see= some of the pointers to the heap, unpredictably: your code might keep running for a while, but sooner or later, it=E2=80=99ll break badly. :-) HTH, Ludo=E2=80=99.