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 09:33:14 +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> 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="17599"; 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 11:34:24 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 1q27MW-0004MH-HA for ged-emacs-devel@m.gmane-mx.org; Thu, 25 May 2023 11:34:24 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1q27LU-00068e-W8; Thu, 25 May 2023 05:33:21 -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 1q27LS-00067z-Qc for emacs-devel@gnu.org; Thu, 25 May 2023 05:33:18 -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 1q27LQ-00056n-Uv; Thu, 25 May 2023 05:33:18 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20220101; t=1685007194; bh=oPE3AD5uEBvksRv4UiNpQ26rI9/FLt7CTtA+i5A7xAY=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=byTdAn0g9XGq87n6nuiJxQfXUpXkU94ZH21VQg5i9HVMohxtGF6TqUx5KYSao+k+K OkZB0S6FZueh7RH4KpwLBg1O4p4JhDjSesCi2TRslah07qTk1gWaXMDijLahV1JIjx kp3ECWlFX0DFnkWMf9/fF77M7IAhZFSuph0MIUARuXXCnYBFm0cYzvGZa9mLhCPrgs 7sZsdrEAuO/Dku6o4LQeIwRv1TufaZIDPAsvECIMdqbeBV6p+LiJdHwQE8s5COhHOw zvpDb+qeQWM6OnI0LuhpuVEv4Vw7+mDWN/t87cBx0tFtkhhV6KRsEP4Z24sHGgBRU5 7x5kuESxMPiRQ== In-Reply-To: <83h6s0n95y.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:306321 Archived-At: > > FWIW, I don't trust tools that "do all that for me". When building a > package that needs some prerequisite, I want to: > > . understand the reasons for the dependencies, and consider whether I > really need whatever features need each one of them (if they are > optional); > A Rust program can declare optional dependencies, which you can enable with a command line flag to Cargo. Typically these optional dependencies will be documented in the program README. > > . examine the license of each dependency, and see whether it is kosher; > See my previous post: you can easily examine the licences of the optional (and non-optional) dependencies with "cargo tree -f '{p}: {l}'". > > . skim the documentation of each dependency and see whether what it does > is something I'd like to allow on my system; > That's also easy to do: "cargo doc --package --open" builds the documentation of the given package, and opens it in your browser. Another option is "cargo tree -f '{p}: {r}'" which will print the URL of the repository of each dependency, or "cargo tree --package -f '{p}: {r}'" if you only want the dependencies of a specific package. > > . search the Internet for any problems with each dependency on platforms > about which I care, and decide which version of the dependency I want to > download and install, and perhaps also what patches I should apply to > fix those problems proactively > Cargo, like distro package managers, manages versions for you. But you can force a distro package manager to download a specific version of a package, and likewise you can force Cargo to fetch and build a specific version of a library if you want. You are also free to modify the version requirement indicated by the library author in the Cargo.toml file (at your own risk, of course, as this might break the build). > > I'm not aware of any "do-everything-for-me" build tool which will allow > me to do all of the above. > Now you are ;-)