From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp1 ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id kINyARNox2CZPwAAgWs5BA (envelope-from ) for ; Mon, 14 Jun 2021 16:30:43 +0200 Received: from aspmx1.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp1 with LMTPS id cA18OBJox2BhXgAAbx9fmQ (envelope-from ) for ; Mon, 14 Jun 2021 14:30:42 +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 7981932326 for ; Mon, 14 Jun 2021 16:30:42 +0200 (CEST) Received: from localhost ([::1]:54616 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lsnbt-0002kF-9j for larch@yhetil.org; Mon, 14 Jun 2021 10:30:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37488) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lsnan-0002GI-Od for guix-devel@gnu.org; Mon, 14 Jun 2021 10:29:33 -0400 Received: from mail.thebird.nl ([94.142.245.5]:48736) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lsnal-0005IB-7f; Mon, 14 Jun 2021 10:29:33 -0400 Received: by mail.thebird.nl (Postfix, from userid 1000) id B70A61139; Mon, 14 Jun 2021 16:29:23 +0200 (CEST) Date: Mon, 14 Jun 2021 16:29:23 +0200 From: Pjotr Prins To: Ludovic =?iso-8859-1?Q?Court=E8s?= Subject: Re: Idea: a meta language for (language) build systems - npm, Racket, Rust cargo Message-ID: <20210614142923.tp23ba6htoao4vfv@thebird.nl> References: <20210530083847.o5ej63obqnzpwnbd@thebird.nl> <20210531174748.mhaelcqwmo7degfc@thebird.nl> <87y2bkfqm4.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <87y2bkfqm4.fsf@gnu.org> User-Agent: NeoMutt/20170113 (1.7.2) Received-SPF: pass client-ip=94.142.245.5; envelope-from=pjotr2021@thebird.nl; helo=mail.thebird.nl X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_PASS=-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: , Cc: guix-devel 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=1623681042; 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; bh=mVa+2hSwcRYxVkuLBgpCr/lfNKQpT7ykeZboCNge3oE=; b=fkEcci/+z8Xm5vNrpxBzrLzqNWsK8K0R3UN7WGa/Jg1X031EmWnLxy+rY4U9f8i1i+UheL HvkM3g3W2N/IEiaKSMw7SGNC/cHOoArMbEhVJc8yn+QFH1gxT6pgYopCrxSE9bYoQcmBB7 wW0YxC+GOm41gUunoIgO9/rNDVASPggDv3WIfctax6oWaDmo+PS9u9gQtI8Lr0ZB9Xn9om hgy68b+CEZmSPEG9+vV5DQKqrN+tFSWlU8Y5sqp5tJCEuBrXYC/2822CmwPjXddGrIga2l g3gjPZVccNQhi4WhChplWee7buVxWdVZTM/WN1OmuusgS5WE/lLGFeEoHpr7dg== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1623681042; a=rsa-sha256; cv=none; b=uVoilkOiWBh2xsuynjBW6iK4QMtyiZOCcU/VbNyR+jlNmmBmPSeZKMSp78ZV9xF4lyDZOn 9fy1Y/vYGht0thi7lgV1SKVAkeZoOcbdlUkxXGMIUdh7BtTm2j1a7EUgIBkaXw9nd5EqyG VwPm4h1K3rp1Gwz/sHGtEdRfGkG/jPakasxJgyu6wAJgrPR4G3Zk+r+48rRLGkJ7gw941A QvCMbZiD6xHjODReG1+aH8Pm9Bq/E6leAugYLKH5KsmTu7t3D9r/dmicbk7ID5U159OAoA sO+1YENAVf6JpQn5i0RWRxOsgD2EyModF9t+S+ExPgNC3UKZvi7zaO2HafTCIQ== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=none; 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.43 Authentication-Results: aspmx1.migadu.com; dkim=none; dmarc=none; 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: 7981932326 X-Spam-Score: -2.43 X-Migadu-Scanner: scn0.migadu.com X-TUID: d/WICjPL6Rm3 On Tue, Jun 08, 2021 at 03:11:31PM +0200, Ludovic Courtès wrote: > (I’m late to the party…) Never late :) > > I found a cargo -> ninja converter. It is that kind of idea. Guix > > would use ninja with rustc instead of cargo. A stripped down cargo > > could potentially work too - but cargo is a complex beast. > > In a way, aren’t importers addressing this use case? Importers and build-systems, even guix.scm, don't really create a rapid and dynamic builder for developers to use when developing software. At the same time the builders, such as cargo, are heavy, bloated and misguided. And hard to embed in GNU Guix for multiple reasons. There is a missing link in my opinion. Though it is not a Guix problem (I agree). > In the end, they let everyone develop a package manager/build system > that suits their needs, while still allowing us to have our cake. If you strip out dependency management and cross-platform compiling there is not much left to do for cmake, autotools, cargo etc. Everything Guix is good at. Ninja resolves the build graph, you only need something to generate the build graph for source files. A mini-Guix of sorts for source files. Eelco, at the time, wrote Maak - a builder that would work on NixOS. He wrote it in Haskell, but it is similar thinking. https://en.wikipedia.org/wiki/Maak Ninja fits the bill - but it is something that needs to be generated. Minimalism and simplicity is what I want. I hate it when software starts thinking for me ;). https://github.com/rust-lang/cargo/issues/6584 We need to create another builder that replaces cargo - or maybe just simplifies cargo. I am not programming in Rust or Racket, right now, but when I do (again), I'll try to generate ninja files to define a build as a starting point in a simple way. One thing we can do with Guix is create a parallel build system. An alt-verse for builders ;) Pj.