From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Gregory Heytings Newsgroups: gmane.emacs.devel Subject: Re: [PROPOSAL] Builder, a build system integration for Emacs Date: Thu, 25 May 2023 14:36:40 +0000 Message-ID: References: <95980ffc-86e7-ad54-4a20-539d8c6ea5d0@mailo.com> <3f68f4bc-d426-0bcc-1329-674c12b29386@mailo.com> <76e12f7c-335f-476b-ffb3-fd8e8e4ab5d0@mailo.com> <87pm6rx4ea.fsf@yahoo.com> <87wn0ytefw.fsf@gmail.com> <83h6s0n95y.fsf@gnu.org> <83edn4myz4.fsf@gnu.org> <83a5xsmuc0.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain; format=flowed; charset=us-ascii Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="7444"; mail-complaints-to="usenet@ciao.gmane.io" Cc: tomas@tuxteam.de, emacs-devel@gnu.org To: Eli Zaretskii Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Thu May 25 16:37:33 2023 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1q2C5s-0001lN-VU for ged-emacs-devel@m.gmane-mx.org; Thu, 25 May 2023 16:37:33 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1q2C5P-0006vl-U3; Thu, 25 May 2023 10:37:06 -0400 Original-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 1q2C58-0006sa-UO for emacs-devel@gnu.org; Thu, 25 May 2023 10:36:51 -0400 Original-Received: from heytings.org ([95.142.160.155]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q2C57-0003Vm-0V; Thu, 25 May 2023 10:36:46 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20220101; t=1685025400; bh=pruA5L62aigGQQ/8SIFUUpDto/1PdvrLjoa3F6cAC3s=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=NlRYKy0tJt8n3e5w6O4RYx6TTsakDGuPnRj02G7BAUFyh/iwnqAMjyftrpIDU0m2B Aa95p3wGI1jm9HobdqEQ8iYEcS4yBfOQCTrA/hb27xuZf/gZOGbwE8Zh5SfXd0f6Ml LnxdITLNqyWnrwITt92o75w/fty5iNjqgMhW5pohz1tYf+ID7NTlI/8u0187ZDnO4Q sE+JZWMNN/bMDge+NktRHG9xQ4nkZIit4zDzedYzmI3223LroXbMoEKBhDNORxyXKv ncQZYQnZEhHanaqUvwPTMKVxjEfURaeoGsFv/NhyK3F3SN51IHaTEE2+DqDDLxrTZY Exjup5a+lwwXQ== In-Reply-To: <83a5xsmuc0.fsf@gnu.org> Received-SPF: pass client-ip=95.142.160.155; envelope-from=gregory@heytings.org; helo=heytings.org 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, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.devel:306334 Archived-At: > > The answers were clear, but they didn't present any solutions to the > issues I brought up. None of the tools I'm aware of, including Cargo, > support interactive selection of dependencies based on their features > and requirements, nor provide any decision support for the kind of > decisions I described. They allow you to specify a version, but leave > the actual decision process to you. And if that is the case, why do I > need them? I can easily build stuff myself once I've figured out which > versions of what dependencies I need. > > And there's no need for you to work hard to try to represent the > problems as having their solutions. Those build tools do not intend to > solve those problems, they don't even consider them problems. They > "know better". The facilities you described are nothing more than lip > service. > Then I guess I don't understand what these problems are, and what kind of solution you are after. Let's take a concrete example of a popular Rust program: ripgrep. All you need to build it is: git clone https://github.com/BurntSushi/ripgrep cargo build --release or (even simpler): cargo install ripgrep That (relatively simple) program depends on no less than 37 Rust libraries, and has two optional build options, "pcre2" and "simd-accel". If you activate these two options the program depends on 45 libraries. What would you want do do with those 45 libraries? What do you mean in this concrete case by "interactive selection of dependencies based on their features and requirements"? Another popular (slightly more complex) Rust program is Alacritty (a terminal emulator). That one depends on 131 Rust libraries. Again, what would you want to do with all those libraries? Why would you want to build that program with a version of a Rust library that is different from what the authors of that program recommend? One thing that might be unclear in this discussion is that Rust libraries are compiled in the program, they are not dynamic libraries. A Rust program can of course also depend on non-Rust libraries, e.g. Alacritty depends on the Freetype library (and on other libraries). These non-Rust dependencies are not managed by Cargo.