From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp0 ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id WDcBBsHSx2DNDQEAgWs5BA (envelope-from ) for ; Tue, 15 Jun 2021 00:05:53 +0200 Received: from aspmx1.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp0 with LMTPS id 6J5yAcHSx2CASgAA1q6Kng (envelope-from ) for ; Mon, 14 Jun 2021 22:05:53 +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 9832215BBC for ; Tue, 15 Jun 2021 00:05:52 +0200 (CEST) Received: from localhost ([::1]:60428 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lsuiN-00058I-Hk for larch@yhetil.org; Mon, 14 Jun 2021 18:05:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:38450) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lsui9-00057q-5j for guix-devel@gnu.org; Mon, 14 Jun 2021 18:05:37 -0400 Received: from mailrelay.tugraz.at ([129.27.2.202]:8491) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lsui4-0001Ox-Pv; Mon, 14 Jun 2021 18:05:36 -0400 Received: from [10.0.0.4] (62-116-34-49.adsl.highway.telekom.at [62.116.34.49]) by mailrelay.tugraz.at (Postfix) with ESMTPSA id 4G3lr53wDXz1LLyL; Tue, 15 Jun 2021 00:05:25 +0200 (CEST) DKIM-Filter: OpenDKIM Filter v2.11.0 mailrelay.tugraz.at 4G3lr53wDXz1LLyL DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tugraz.at; s=mailrelay; t=1623708325; bh=JBNHTjaQa0npiD48+l3gt54hoEh1HbmlVNbiyVA+tt0=; h=Subject:From:To:Cc:Date:In-Reply-To:References:From; b=fHhfFC6+44vdL8d8aFx9td6UYXZN5FF57Sf5Bvx78Kz+xOdWoC/H8xWv7rULOAz6v N5cIfyXWzFDG42874aN/mI2r26vRWBFTyvqK2ZXtNk0xwiE4J0idKylZxkw+b/FP3u /ots99EIZbstioNxG8bKBtm2Lixuig/1ZfOgoP3s= Message-ID: <35dd481ec1c8c2e8f1f65b74bcdbe1980da3b5b0.camel@student.tugraz.at> Subject: Re: Idea: a meta language for (language) build systems - npm, Racket, Rust cargo From: Leo Prikler To: Pjotr Prins , Ludovic =?ISO-8859-1?Q?Court=E8s?= Date: Tue, 15 Jun 2021 00:04:59 +0200 In-Reply-To: <20210614142923.tp23ba6htoao4vfv@thebird.nl> References: <20210530083847.o5ej63obqnzpwnbd@thebird.nl> <20210531174748.mhaelcqwmo7degfc@thebird.nl> <87y2bkfqm4.fsf@gnu.org> <20210614142923.tp23ba6htoao4vfv@thebird.nl> Content-Type: text/plain; charset="UTF-8" User-Agent: Evolution 3.34.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-TUG-Backscatter-control: bt4lQm5Tva3SBgCuw0EnZw X-Spam-Scanner: SpamAssassin 3.003001 X-Spam-Score-relay: -1.9 X-Scanned-By: MIMEDefang 2.74 on 129.27.10.117 Received-SPF: pass client-ip=129.27.2.202; envelope-from=leo.prikler@student.tugraz.at; helo=mailrelay.tugraz.at X-Spam_score_int: -42 X-Spam_score: -4.3 X-Spam_bar: ---- X-Spam_report: (-4.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, 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: , 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=1623708352; 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=JBNHTjaQa0npiD48+l3gt54hoEh1HbmlVNbiyVA+tt0=; b=pCqXcyO54j76tdPZQjs+6xxSUztRc0K0v6noyaH2zA5XM4bpoLtrq0gZARkbqpGdc1GmoB TkI0u7icXr+OQa4THEAU10lSDWZ+hC3cnxiIRlvz4fKuLqD6oy6E3zWLLeKt80a/WWdO5H jsQ9J5gKdUVOHo2VtlERAN2bx/r6PROppHYf3WFElnEfWHmL3GpDfSO3HmUW4XUeVnOLWA VdpVD0GcTfN5D9Fd9lMt/vqe6ZDIKaSO5wd6/Wd1bSO/NuSvy+TPG+ip0fvKj1u8+goyOP fcdxYZVATI3jZgf+qUd0aE60r2K8Vr8mNF6CicHJJJt2e5cHxVqgnO03xP2x2w== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1623708352; a=rsa-sha256; cv=none; b=dJt5ngLbIidtQNPjEsA2ypKaD6hE6StHXMu+2XXFgJSM2vi6k3+zogdTMhNBahYNV9130o jbTNyovDuOxJavbrbPOFDsrltbUXmsaw5phWUPWOJw0uJdLMSzTN6QY0J+kfVW+diOpKZ9 dAYcXXildNYrGQaifaDAn1zEHzSpwTTYBydR3mM15lTmbN2kne2lc3GwEQTtMlBNtDwdP+ kfiVHP5V/yhUpMfJYTRje9htevYkoOsZhnxjO2uY+5hplBCg+clXw1MeDgTbq5brwMtKBx QNdsSGFRpeLnnjfW8va730eS+bRRsRfog9rx0Mnbhjr2+GwdS0MHbG8eUm3E0A== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=tugraz.at header.s=mailrelay header.b=fHhfFC6+; dmarc=pass (policy=none) header.from=student.tugraz.at; 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: -3.12 Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=tugraz.at header.s=mailrelay header.b=fHhfFC6+; dmarc=pass (policy=none) header.from=student.tugraz.at; 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: 9832215BBC X-Spam-Score: -3.12 X-Migadu-Scanner: scn1.migadu.com X-TUID: 8d0Ua+OB+yy6 Am Montag, den 14.06.2021, 16:29 +0200 schrieb Pjotr Prins: > 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). This is really something that's true rather for cargo than for most other builders, though. gnu-build-system, meson-build-system etc. are – in my opinion – appropriately sized and a hypothetical cargo-ninja- build-system could just reuse most of meson-build-system but creating the ninja files from cargo rather than meson (i.e. swapping the configure phase). As for "rapid development", `guix environment` provides the things you need in an environment (heh), that is simple to set up. The missing link when that is already given is to set up the build system that you'd use anyway. I think most modern tools have a --generate-me-some- generic-hello-world-template, whereas for the GNU Build System you simply copy amhello. > > 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. There never was that much to do for a build system. All they're supposed to do is to simplify a sequence of compiler and linker calls, so that you can write `make all' instead of having to type out 500 invocations of GCC. They were never meant to be package managers and those who think they are will be doomed to reinvent the wheel over and over again. They instead provide an interface to package managers, that interface being e.g. the locations in which they will generally look for certain headers (though reasonable build systems and package managers use pkg-config to solve this issue as well). > 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 ;) How build systems proliferate Situation: There are 14 competing build systems Developer: 14?! Ridiculous! We need to develop one universal standard, that covers everyone's use cases. Developer with a ponytail: Yeah! Soon: There are 15 competing build systems Guix as a build system, with or without GWL, is fine as long as it's just fun and games, but it comes with the serious downside of not being compatible with any other distro out there. Perhaps that works out for those, who pray towards our lord and saviour Flatpak, but if you want to be able to ship to traditional distros through normal channels, you will need a reasonable build system like make or ninja and perhaps something that generates you the nitty gritty stuff like Autotools, Meson, etc. What we need in order to make packages written in Rust less of a PITA is more widespread usage of generic build systems like make or meson. We won't get there with cargo cult programming. On a somewhat related note, I find it amusing, that Rust folk dread the usage of Rust without cargo, as if the Rust standard library on its own was somehow worthless or something :P Regards, Leo