From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp2 ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms11 with LMTPS id V2IfFWcVtF9xYwAA0tVLHw (envelope-from ) for ; Tue, 17 Nov 2020 18:24:39 +0000 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp2 with LMTPS id gB+0EGcVtF+xYgAAB5/wlQ (envelope-from ) for ; Tue, 17 Nov 2020 18:24:39 +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 0BE4A940546 for ; Tue, 17 Nov 2020 18:24:39 +0000 (UTC) Received: from localhost ([::1]:51448 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kf5eg-0004cU-0Q for larch@yhetil.org; Tue, 17 Nov 2020 13:24:38 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:48656) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kf2ki-0003mU-63 for guix-devel@gnu.org; Tue, 17 Nov 2020 10:18:40 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:55807) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kf2kh-00083S-Fv for guix-devel@gnu.org; Tue, 17 Nov 2020 10:18:39 -0500 Received: from [2a01:e0a:1d:7270:af76:b9b:ca24:c465] (port=60972 helo=ribbon) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1kf2kg-0008AC-RB for guix-devel@gnu.org; Tue, 17 Nov 2020 10:18:39 -0500 Resent-To: guix-devel@gnu.org Resent-From: =?utf-8?Q?Ludovic_Court=C3=A8s?= Resent-Date: Tue, 17 Nov 2020 16:18:37 +0100 Resent-Message-ID: <87ima4qaeq.fsf@gnu.org> Received: from solo.fdn.fr ([unix socket]) by solo (Cyrus 2.5.10-Debian-2.5.10-3.2) with LMTPA; Tue, 17 Nov 2020 15:26:00 +0100 X-Sieve: CMU Sieve 2.4 Received: by solo.fdn.fr (Postfix) id 5FF4CD09C2; Tue, 17 Nov 2020 15:26:00 +0100 (CET) Received: from eggs.gnu.org (eggs.gnu.org [IPv6:2001:470:142:3::10]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by solo.fdn.fr (Postfix) with ESMTPS id 496EAD09BA for ; Tue, 17 Nov 2020 15:26:00 +0100 (CET) Received: from fencepost.gnu.org ([2001:470:142:3::e]:54884) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kf1vh-0006f2-Sf for ludovic.courtes@fdn.fr; Tue, 17 Nov 2020 09:25:57 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:39084) by fencepost.gnu.org with esmtps (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1kf1vg-0004wF-Kr for ludo@gnu.org; Tue, 17 Nov 2020 09:25:57 -0500 Received: from mail.ecloud.global ([135.181.85.105]:49292) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kf1ve-0006Wk-5c for ludo@gnu.org; Tue, 17 Nov 2020 09:25:56 -0500 Received: from authenticated-user (mail.ecloud.global [127.0.0.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.ecloud.global (Postfix) with ESMTPSA id 63E081000261D923; Tue, 17 Nov 2020 14:25:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=e.email; s=mail1; t=1605623144; h=from:from: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; bh=MLf7ahg3hjtzTgk1IqsSNBlWbLBaTY5QwzkFPvYgZnQ=; b=MLA3cW1bGBueSu55Co3pHPdtSgIuAEPmgd1I7DmsJ1cBEeO2vXnMRRJEOQ34xVtPsZm1Wv pA/ZCc/lr96nQLePDIXL/k0T/1wQ4MMFY26wql7PgD+PSNsUVeIHnFbb6uYHVH/B1gGh2N /gRhM9UJF4Yir9GjQu6St2bJh0820cg= Date: Tue, 17 Nov 2020 09:25:37 -0500 MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----KU5ZAM5AD65N02REHE40H85ZRGBBA0" Content-Transfer-Encoding: 7bit Subject: Re: A plan for parameterized packages To: ludo@gnu.org,mail@ambrevar.xyz From: Stephen Christie Message-ID: <8BB50B81-762F-4701-8A60-AAC323E4324A@e.email> ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=e.email; s=mail1; t=1605623144; h=from:from: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; bh=MLf7ahg3hjtzTgk1IqsSNBlWbLBaTY5QwzkFPvYgZnQ=; b=r9Mjl56owkNrEVIyrIBQ+B9spoPBPgofzZo1EtRUXgYByvXELMIrkCRx3qYfR0Ury9dPSk zHAszibnQCtxp2yeT3sI48dU/ndCDO3XTi1EpCBGaqFVLb3cROMVEb0KKRsM9rScogzNZg cz4UfCW9H+9fql8dNZP1OnTglOcgeYs= ARC-Seal: i=1; s=mail1; d=e.email; t=1605623144; a=rsa-sha256; cv=none; b=SkQq2ggrxroHIx0OncRzDezyjXYzpUzsbgMUoIi1QRF8PshOFtqH+CnNowy9pt4nixKS7j C0o+vVZAB7sbXMZTa1V1Z3r3porsKh8kAImfuJcnhjetxpZ7cGOcbaRlUkNT0Y8NecFEdF /VhyXrJX2aW3zfqu5G0Hkssz95K4HrA= ARC-Authentication-Results: i=1; mail.ecloud.global; auth=pass smtp.mailfrom=spc@e.email Received-SPF: pass client-ip=135.181.85.105; envelope-from=spc@e.email; helo=mail.ecloud.global X-detected-operating-system: by eggs.gnu.org: First seen = 2020/11/17 09:25:45 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] 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, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Tue, 17 Nov 2020 13:23:18 -0500 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-Scanner: ns3122888.ip-94-23-21.eu Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=e.email header.s=mail1 header.b=MLA3cW1b; arc=pass (e.email:s=mail1:i=1); dmarc=pass (policy=quarantine) header.from=e.email; 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-Spam-Score: -1.71 X-TUID: qLXyRDfLxpeP ------KU5ZAM5AD65N02REHE40H85ZRGBBA0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable > Hi Pierre, > Pierre Neidhardt skribis: > > One of the biggest struggle we had when discussing it was figuring out > > what to do about parameter propagation across dependencies=2E > > For instance, what if we want to build "all packages without X support= "? > > This means that the parameter must traverse all inputs recursively if = we > > don't want to drag X indirectly=2E > > If I understand your change correctly, the patch is only applying > > parameters to the given package and it's not propagated to the inputs, > > is that correct? > That=E2=80=99s correct: in this patch set parameters are per-package, an= d I think it=E2=80=99s easier to start simple, but we could implement what you describe without too much hassle I think=2E > For example, you=E2=80=99d type =E2=80=98--with-parameters=3Dx11=3Dfalse= =E2=80=99, and that=E2=80=99d be applied to all the packages that have an =E2=80=98x11=E2=80=99 parameter= =2E > Ludo=E2=80=99=2E I have done a lot of work with the Conan package manager, a c++ language p= ackage manager, that has grown in capability=2E It is not fully functional,= but works on the hash of the key parameters of the package (name, version,= etc=2E) to find the right reproducible binary=2E Two important parameters = are "options" and "settings"=2E Options are per-package, and generally affect none below it=2E You can spe= cify defaults for the options in the package, and also call for specific op= tions on dependencies in package "recipes"=2E There are also ways to define= incompatibilities and substitutes=2E On the command line, you can specify = options with -o,--options, with no namespace needed for the package you are= installing, and package:option to specify for other packages pulled in=2E = I prefer this syntax to all the equal signs you proposed (though I defer if= this is standard throughout Guix/Guile) Settings are more "system-wide", though being a language package manager, = it does not have a "system"=2E The same settings are applied to the whole t= ree during an install, and are usually things like compiler, architecture, = and build type=2E These settings are chosen through a profile file, of whic= h there is a default generated for a given computer=2E Settings can also be= set at the command line during install with -s,--settings, but of course t= here is no namespacing=2E https://docs=2Econan=2Eio/en/latest/mastering/conditional=2Ehtml I think there is a lot of good stuff in Conan that Guix could learn from= =2E It's a lot closer in architecture than any of the traditional system pa= ckage managers=2E If you would, please forward this to the mailing list that this message wa= s from, as I am not currently on that list=2E Sincerely, Stephen Christie ------KU5ZAM5AD65N02REHE40H85ZRGBBA0 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: quoted-printable

> Hi Pierre,

> Pierre Neidhardt <mail@ambrevar=2Exy= z> skribis:

> > One of the biggest struggle we had when dis= cussing it was figuring out
> > what to do about parameter propaga= tion across dependencies=2E

> > For instance, what if we want = to build "all packages without X support"?
> > This means that the= parameter must traverse all inputs recursively if we
> > don't wa= nt to drag X indirectly=2E

> > If I understand your change cor= rectly, the patch is only applying
> > parameters to the given pac= kage and it's not propagated to the inputs,
> > is that correct?
> That=E2=80=99s correct: in this patch set parameters are per-pac= kage, and I
think it=E2=80=99s easier to start simple, but we could impl= ement what you
describe without too much hassle I think=2E

> F= or example, you=E2=80=99d type =E2=80=98--with-parameters=3Dx11=3Dfalse=E2= =80=99, and that=E2=80=99d be
applied to all the packages that have an = =E2=80=98x11=E2=80=99 parameter=2E

> Ludo=E2=80=99=2E

I ha= ve done a lot of work with the Conan package manager, a c++ language packag= e manager, that has grown in capability=2E It is not fully functional, but = works on the hash of the key parameters of the package (name, version, etc= =2E) to find the right reproducible binary=2E Two important parameters are = "options" and "settings"=2E

Options are per-package, and generally a= ffect none below it=2E You can specify defaults for the options in the pack= age, and also call for specific options on dependencies in package "recipes= "=2E There are also ways to define incompatibilities and substitutes=2E On = the command line, you can specify options with -o,--options, with no namesp= ace needed for the package you are installing, and package:option to specif= y for other packages pulled in=2E I prefer this syntax to all the equal sig= ns you proposed (though I defer if this is standard throughout Guix/Guile)<= br>
Settings are more "system-wide", though being a language package man= ager, it does not have a "system"=2E The same settings are applied to the w= hole tree during an install, and are usually things like compiler, architec= ture, and build type=2E These settings are chosen through a profile file, o= f which there is a default generated for a given computer=2E Settings can a= lso be set at the command line during install with -s,--settings, but of co= urse there is no namespacing=2E

https://docs=2Econan=2Eio/en/lates= t/mastering/conditional=2Ehtml

I think there is a lot of good st= uff in Conan that Guix could learn from=2E It's a lot closer in architectur= e than any of the traditional system package managers=2E

If you woul= d, please forward this to the mailing list that this message was from, as I= am not currently on that list=2E

Sincerely,
Stephen Christie
------KU5ZAM5AD65N02REHE40H85ZRGBBA0--