From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Soo Subject: Re: rust (build system) deficits Date: Sat, 7 Mar 2020 10:41:03 -0800 Message-ID: <543D2B96-0DD4-4274-BAF4-1761897DF812@asu.edu> References: <6d384619-25a9-5699-bda5-5f4bf9380976@crazy-compilers.com> Mime-Version: 1.0 (1.0) Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([2001:470:142:3::10]:34467) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jAeNp-0004Tc-6q for guix-devel@gnu.org; Sat, 07 Mar 2020 13:41:10 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1jAeNn-0001Wa-3i for guix-devel@gnu.org; Sat, 07 Mar 2020 13:41:08 -0500 Received: from mail-oi1-x22c.google.com ([2607:f8b0:4864:20::22c]:36540) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1jAeNm-0001TN-Kx for guix-devel@gnu.org; Sat, 07 Mar 2020 13:41:07 -0500 Received: by mail-oi1-x22c.google.com with SMTP id t24so6083147oij.3 for ; Sat, 07 Mar 2020 10:41:06 -0800 (PST) In-Reply-To: <6d384619-25a9-5699-bda5-5f4bf9380976@crazy-compilers.com> 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+gcggd-guix-devel=m.gmane-mx.org@gnu.org Sender: "Guix-devel" To: Hartmut Goebel Cc: Guix-devel Hi Hartmut, I agree with you. It seems like a problem for cargo to solve to me. Efraim t= ried to use the .rlib files to make library files and found it was not reall= y an option. There are more problems, too. The way inputs are done doesn=E2=80=99t fit we= ll with the rest of guix tooling and doesn=E2=80=99t really follow functiona= l package management concepts. One possibility to try is to rethink the cargo-{development-}inputs fields a= nd only require the source from rust library inputs. Then to build the execu= tables, it would only require one compile and we could keep ci checking the c= urrent libraries. The cargo build system also has a specialized transitive closure computation= . I believe the reason cargo-{development-}inputs are specified in arguments= is for the special purpose of that closure computation. Can someone tell me= if I=E2=80=99m wrong on that? As far as I can tell, the point of the specialized transitive closure comput= ation is to deal with cyclic dependencies. Again, please someone correct me= if I=E2=80=99m wrong on that. If the rust closure functions successfully deal with cyclic dependencies, th= en wouldn=E2=80=99t the other closure computations benefit from the same fun= ction? I would like to take a stab at bringing the rust build system package defini= tions closer to others. My proposal is to: * move cargo-{development-}inputs into inputs, requiring only the source fro= m libraries. * either: - move the rust closure function so all packages use it Or - adjust the transitive closure function such that it works on normal inpu= ts rather than arguments * Do not build rust packages by default. Only run tests. * as a corollary to the previous item: Default skip-build? to #f but do run t= ests even if skip-build is #f and tests? is #t What do you all think, Hartmut, guix? - John=20=