From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp0 ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id 6Mj4KL71NGGtYgEAgWs5BA (envelope-from ) for ; Sun, 05 Sep 2021 18:52:14 +0200 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp0 with LMTPS id OICWJL71NGHuDAAA1q6Kng (envelope-from ) for ; Sun, 05 Sep 2021 16:52:14 +0000 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 3D1E23704 for ; Sun, 5 Sep 2021 18:52:14 +0200 (CEST) Received: from localhost ([::1]:55684 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mMvNN-0000k2-Ak for larch@yhetil.org; Sun, 05 Sep 2021 12:52:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45570) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mMvLc-00078w-9Y for guix-devel@gnu.org; Sun, 05 Sep 2021 12:50:26 -0400 Received: from mail-wm1-x342.google.com ([2a00:1450:4864:20::342]:55936) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mMvLZ-0005cs-El for guix-devel@gnu.org; Sun, 05 Sep 2021 12:50:24 -0400 Received: by mail-wm1-x342.google.com with SMTP id g135so2884388wme.5 for ; Sun, 05 Sep 2021 09:50:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=message-id:subject:from:to:date:in-reply-to:references:user-agent :mime-version:content-transfer-encoding; bh=TApPCK+JwpebOKK0Rr7niSUAHTyaqA+yzk7omUdW0ks=; b=QnHl6DLmAlb0Piw90WCX2euZuxxyVAf1kCn36d0NCeUDSxh37aSDJGV1Yk6+LyHv7N FYATqU8aquP0JrAkqQDfCtHu1K2BMHime4rIsdmI1RQ19rSVsbq2RY9HjlyaRreWfc5A pZ+S46Udzd7RjVY5K77FMG3LP6b4z2y9eIN/wDtkBhGRrRuRvOF7FleDmAnjU+2IMXeB Q/6rmV8yT/k4QX62g2kQWW3DXXVmY5fIuZjwN/ANL0qjzn9QA0IUh1mZ+/KSHtskWLdJ /eAkTIfjmdZYWP5peG1Yu007a9yFr0fThg+SNvN+Ph+mDzO590NzzJGs5/VFC5lkraZl Lw9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:subject:from:to:date:in-reply-to :references:user-agent:mime-version:content-transfer-encoding; bh=TApPCK+JwpebOKK0Rr7niSUAHTyaqA+yzk7omUdW0ks=; b=D/naepgb9LZwAdwIdqbt7sVJ+qdZdtdEeR0SiL7m5JGJ31MBB2QnpliIyjsw5In+bw dpPWjIDta5kafnkUhRw4hFcav1ITG9dM7w/EbBtPE5HvY3giiMQCHou/3wwfSpNLN+x6 SqZ17d10Xo+mpNNqM0cARNhUhmLK9cg51ruBvyVSS5JJYeso9/EtQrtJNrA4IPtxVqqy vMtzAz/d/d3fTbOWqP2hmqxdARsZURHnNDs87FX17vX5QTn44jOFsHv+GpndoCPRqB5G BRSSutIoEqa4ohnMjL+ReVD/seXUA3VSQKZnAW07kj0HRWibu5G90l3/qAdC+4qjQ7pZ k0ZQ== X-Gm-Message-State: AOAM533phEpEr89KYFX+g418yG0ptXh6W2fonhbCz1TNDmiARcTxGygO TavD0o4fvPbabnKztDH3U2M= X-Google-Smtp-Source: ABdhPJwLw6xGgp89VAAmkaNPokK+3KZS85aNys1z41v1RmX8TN+rH5rrIvde6uzg8EoNPtqiUpZqfw== X-Received: by 2002:a1c:c911:: with SMTP id f17mr7648536wmb.190.1630860616718; Sun, 05 Sep 2021 09:50:16 -0700 (PDT) Received: from nijino.local (194-118-34-199.adsl.highway.telekom.at. [194.118.34.199]) by smtp.gmail.com with ESMTPSA id y24sm5920416wma.9.2021.09.05.09.50.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Sep 2021 09:50:16 -0700 (PDT) Message-ID: <5ba200792813bb0967e388911320b741cf98d90d.camel@gmail.com> Subject: Re: Rethinking propagated inputs? From: Liliana Marie Prikler To: Maxime Devos , guix-devel@gnu.org Date: Sun, 05 Sep 2021 18:50:14 +0200 In-Reply-To: References: <045891c151c74e0d66d91973c9e55e0194272df5.camel@gmail.com> Content-Type: text/plain; charset="UTF-8" User-Agent: Evolution 3.34.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Received-SPF: pass client-ip=2a00:1450:4864:20::342; envelope-from=liliana.prikler@gmail.com; helo=mail-wm1-x342.google.com 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, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: guix-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list 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+larch=yhetil.org@gnu.org Sender: "Guix-devel" X-Migadu-Flow: FLOW_IN ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1630860734; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to: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=TApPCK+JwpebOKK0Rr7niSUAHTyaqA+yzk7omUdW0ks=; b=WnH0ReQQ3PdBMGzCUDA2DjvTQ0fojzMA0VNplv2qOM9o5CNerfNl7VDGyPSBU3dr3k5/jx fvX7yNh9/SEqGTGXyT2Zc8/5tBqMIj8smCoBJsb/z5c0gyHxM9yl28mljWA8owljFlhMHX zz7EvmmRjjH5im0Q0D7h2jNV7NqF/mKYoxxymX1AwABQHfexT3jg93gmpJq9uWhJotu1/H sBRzP0xHAg44DsJExMOaNroVfYURTwWM2mIsl44X96TFx5mRz3KuMQD/+vUQE37mrD6NrU 9xZ1k04vd5K+QwBmppDLBykQeL7HDKfINICdpTWLSQ4B3hwAcbLidLZF6aCkWg== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1630860734; a=rsa-sha256; cv=none; b=Zhwvig6FPekSnA3qrT0rw3c6i6W4tAj8HfGZlei3FY3b4UI4oLqQHYrTxMisWfH7otHSkj W22yTKmK8yMduxZAxdc8ZJ1uRC4HMWmM1QoBkF6Z0Qzu1ZioFlfOkUUhToPj0TWGh+lMr1 49AYHFkC11JmQCdJ4Gk4z6P/caSMsGIFUhtfFh4PWhJ/SMzE5qc8Bo4kV6IKOstJzIpTja Zt5bzs9KIcaBox3Fx9hL16vdhpJjUd0g1BdCcjX5Ty0twTP46ooh/Fzl4f0kl2qURbeUHr JnrBOURtgbym7cjRDxR5rsTkCmMYNa23/0ahLuU/r2RZu5vraKAqLG3gsylPaA== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=QnHl6DLm; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (aspmx1.migadu.com: domain of guix-devel-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=guix-devel-bounces@gnu.org X-Migadu-Spam-Score: -2.11 Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=QnHl6DLm; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (aspmx1.migadu.com: domain of guix-devel-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=guix-devel-bounces@gnu.org X-Migadu-Queue-Id: 3D1E23704 X-Spam-Score: -2.11 X-Migadu-Scanner: scn1.migadu.com X-TUID: TfQDHs/t00Xl Hi Am Sonntag, den 05.09.2021, 18:17 +0200 schrieb Maxime Devos: > Liliana Marie Prikler schreef op za 04-09-2021 om 20:24 [+0200]: > > Hi Guix, > > > > some while ago we made the decision to propagate inputs, that are > > mentioned in pkg-config files, the rationale being that those > > propagated inputs will be needed in packages in order to > > compile. This > > has saved us some typing, but at a cost. For instance, it is now > > no > > longer possible to upgrade "zile" > > Zile doesn't propagate glib: it's in inputs, not propagated-inputs: > https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/zile.scm#n84. Oops, what a blunder. It turns out my mistake was > > " and "icecat" independently, because > > both propagate glib. "libreoffice" and "telegram-desktop", two > > packages that have failed us loudly before, are also in that list. > > libreoffice doesn't propagate anything. Neither does icecat. > > > To > > see what else is in here, you might want to use the following > > snippet > > in a guix repl: > > > > --8<---------------cut here---------------start------------->8--- > > (use-modules (guix packages) > > (gnu packages) > > (guix discovery) > > (srfi srfi-1) > > (srfi srfi-26)) > > > > (display > > (fold-packages > > (lambda (p s) > > (if (any (compose (lambda (input) > > (and (package? input) > > (string=? "glib" (package-name > > input)))) > > cadr) > > (package-transitive-inputs p)) > > (cons (package-name p) s) > > s)) > > '() > > (all-modules %default-package-module-path))) > > --8<---------------cut here---------------end--------------->8--- (package-transitive-inputs p) should be (package-transitive-propagated- inputs p). With that, telegram-desktop is still in the list, as is gst-plugins-base (why?), rhythmbox, polari, and some others. > > It returns more than 1400 packages – a bit less than 10% of Guix. > > Needless to say, that's a bad thing and I think we should do > > something about it, particularly when it comes to leaf packages, > > that users are likely to install. > > > > Does anyone have an idea how we should handle propagations for the > > sake of pkg-config? Perhaps we could add "linked-inputs", which > > are added when building packages and environments when not using -- > > ad-hoc, but not when union-building profiles. WDYT? > > For packages using pkg-config, I had the following scheme in mind: > > A package that has .pc files puts them into a separate "build" > output. The code handling 'propagated-inputs' is modified such that > an entry in 'propagated-inputs' can have an additional 'propagated- > for-output' component. > > (Feel free to suggest a more concise name.) Since "propagated" is already given by propagated-inputs, what about simply having #:by? E.g. something like: (define glib (package (name "glib") (outputs '("out" ; everything "bin")) ; glib-mkenums ... depends on Python (propagated-inputs `(("pcre" ,pcre #:by ("out")) ; future-proof #:by ("libffi" ,libffi #:by ("out")) ; have it be a list [...])) I'm not sure whether we need to necessarily add a new "build" output for pkg-config, that'd lead to a lot of doubly-propagated includes. (Imagine both libffi and libffi:build etc.) I think the more meaningful division here would be to add "bin" or "lib" outputs to those packages, where we don't want propagation to continue indefinitely. This does cause problems with language bindings though, e.g. pygobject, as those also propagate the package in question and can't be neatly separated. > Now, imagine the "build" output of "zile" had glib:build in > propagated-inputs, using the scheme described above. Then, if the > "out" output of zile is installed in a profile, that doesn't cause > glib to appear in the profile as well, because glib > is only propagated for the "build" output of zile, and not for "out" > output of zile. > > However, if "build" is installed in the profile (e.g. because someone > runs "guix environment --ad-hoc zile:build various compilation tools" > to create an application using the zile library), then the .pc > becomes available in the profile. I must admit that this solution appears to have some surface elegance, but what exactly would go in the "build" output of a package? You mentioned pkg-config files (obviously), but those don't suffice to actually build a package, do they? Would we need an extra syntax to e.g. propagate the "out" output by "build" (and in some cases the "lib" output instead)? Greetings