From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp1.migadu.com ([2001:41d0:403:58f0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms13.migadu.com with LMTPS id gPcSJRGL6mbmewEA62LTzQ:P1 (envelope-from ) for ; Wed, 18 Sep 2024 08:10:57 +0000 Received: from aspmx1.migadu.com ([2001:41d0:403:58f0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp1.migadu.com with LMTPS id gPcSJRGL6mbmewEA62LTzQ (envelope-from ) for ; Wed, 18 Sep 2024 10:10:57 +0200 X-Envelope-To: larch@yhetil.org Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=proton.me header.s=jpsabjc5ufcodojsds6nzp2hiy.protonmail header.b=hksvcFnK; spf=pass (aspmx1.migadu.com: domain of "help-guix-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="help-guix-bounces+larch=yhetil.org@gnu.org"; dmarc=pass (policy=quarantine) header.from=proton.me ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1726647057; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post:dkim-signature; bh=pTR5t5rySJflRbc+D2Qo8PYApuzRtL6wScSDAxiKbzU=; b=XUgO3mBACUbNnOuqKY1pG+SEiE1U0Sn30ZjhAzQ46ehkwNCbGGq6ulqPhd4+eXUYQQ37KQ 6SwXRO8srZyEWG8OZ4JIgKT8rHmszKi5zJz5qItm//NwzkINH/HFj0AHYGH1F8mkg8Be2d qaLxxjmIS3vmqIGuQn2hbGtv1PDfQTI4uWWNe+AMVkY0UxU2k24tef/luiUC5wPkDhSp33 PuCnHCljgsM1FNPsAHutkDKNiagNZUE8YI3DdoSy6DV8q6UybkYXggV5tev5cnopINGPN2 co8rPPEhzZw/yh2O6shA62KNnJVp9jSvcAQtfbblHtxocKPpaPk/P0H+BSIXAg== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=proton.me header.s=jpsabjc5ufcodojsds6nzp2hiy.protonmail header.b=hksvcFnK; spf=pass (aspmx1.migadu.com: domain of "help-guix-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="help-guix-bounces+larch=yhetil.org@gnu.org"; dmarc=pass (policy=quarantine) header.from=proton.me ARC-Seal: i=1; s=key1; d=yhetil.org; t=1726647057; a=rsa-sha256; cv=none; b=DiFG1t1+utUBw1cAYM8OGdw+icjpLUoso6xKTqzYIw/bc411GD+y77nFZDG2uYkLsrsl50 2rMX/Qyx2ZJl62oA+tSeBm01LqJ1q6kmt9AsDNVj5w5JKk18gQ9NFMpfNr7DYP9ZLwVR0y BLOLNKMYnOLXdNFymbDP75Nz4Nt+cXx+5KCzm011mdxOVQDzNLY81A4qXm1FsBPsSfGHXu kQrdsYiZCg7+gBc8dUfcEzGll1Whgqgeu3gsCaGhT4HX4NAJFdIAeYYISOWKtB57A3XkPQ icifWtyFukSt2bZ8QDo/5zwu9lI1Vyn7wAkdhYtuFVYTfT868JkGOr/1IfvcgQ== Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 2AA036B6CF for ; Wed, 18 Sep 2024 10:10:57 +0200 (CEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sqplY-0008Rw-8v; Wed, 18 Sep 2024 04:10:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sqplQ-0008Qt-8p for help-guix@gnu.org; Wed, 18 Sep 2024 04:10:17 -0400 Received: from mail-40130.protonmail.ch ([185.70.40.130]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sqplM-00057I-Jw for help-guix@gnu.org; Wed, 18 Sep 2024 04:10:16 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=proton.me; s=jpsabjc5ufcodojsds6nzp2hiy.protonmail; t=1726647009; x=1726906209; bh=pTR5t5rySJflRbc+D2Qo8PYApuzRtL6wScSDAxiKbzU=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=hksvcFnK3V0BBZCgKHA7D8kchNCOaiO3YAoXpHrzqtPRuLefFVuC/2UrBvIKJBZ6j EYa0lJtTGzsOx7YVuKmvRVb7z3LwLHmmjAnRYghPpn0cGIFuwEav1RJFUSqmzUv/xx RmRlrwgSV4YFZ0mj/tz0YxmZNQ1hpH3adhvKV1AUd2eL0eu3u/m8XSGgqk3iGtC3yX QzaAUFEVVKKfVrEdU2ch6Uey9J6BAiAIirVl0/RuxBj6dUtcm3JUn/YuNlwa079dUu sw1/EysMVxU7iSf+vntTeC2dveEnMhsqG/nMZpr6hEixsWzsP3VMKB/5nyHEvI9Nte 4XqDU5nHWDl1w== Date: Wed, 18 Sep 2024 08:10:04 +0000 To: Adam Faiz From: "amano.kenji" Cc: help-guix@gnu.org Subject: Re: Direct symlink farm for transitive dependencies vs search paths Message-ID: In-Reply-To: References: Feedback-ID: 48725158:user:proton X-Pm-Message-ID: 9a1f2608924059a416f8bc42eb145a45efb70b90 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Received-SPF: pass client-ip=185.70.40.130; envelope-from=amano.kenji@proton.me; helo=mail-40130.protonmail.ch X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: help-guix@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-guix-bounces+larch=yhetil.org@gnu.org Sender: help-guix-bounces+larch=yhetil.org@gnu.org X-Migadu-Flow: FLOW_IN X-Migadu-Country: US X-Migadu-Queue-Id: 2AA036B6CF X-Migadu-Scanner: mx11.migadu.com X-Spam-Score: -7.75 X-Migadu-Spam-Score: -7.75 X-TUID: EBCGdoJWPCF2 But, aren't search paths slower than symlinks when there are many transitiv= e dependencies? What about interpreted scripts that have many transitive dependencies? Are symlinks to transitive dependencies sometimes used in guix channel? On Wednesday, September 18th, 2024 at 5:49 AM, Adam Faiz wrote: > > Let's say that A depends on B, and B depends on C. > >=20 > > With search paths, A doesn't have symlinks to B, and B doesn't have sym= links to > > C. Thus, disk space is saved. > >=20 > > However, adding search path patches to existing softwares is cumbersome= , and a > > long list of search paths results in inefficient searches. > >=20 > > Let's assume that B has symlinks to C, and A has symlinks to everything= in B. > > This means A has symlinks to symlinks in B. Transitive symlink is proba= bly more > > efficient than search path. If A just copies symlinks from B and has sy= mlinks > > to plain files in B, then A ends up with only direct symlinks. Direct s= ymlinks > > are more efficient than transitive symlinks. > >=20 > > It seems that search paths are preferred over symlinks to transitive > > dependencies in gnu guix. Why? >=20 > Search paths are preferred because their purpose is to provide a list of = places to look for extensions/plugins/mods of a package. Essentially, searc= h paths are a way to provide runtime dependencies that are optional. >=20 > Packages usually link directly to their dependencies at compile time, exc= ept for scripting programming languages(which aren't expected to have linki= ng functionality). Propagated inputs are used for the transitive dependenci= es you mention, but they should only be used for required dependencies that= have to be installed with the package for it to detect them. >=20 > Packages shouldn't need to have symlinks in their output to another packa= ge when it could just directly reference it instead. More information on ho= w native-inputs, inputs and propagated-inputs are different is explained in= the Guix manual: > https://guix.gnu.org/manual/devel/en/html_node/package-Reference.html#ind= ex-inputs_002c-of-packages