unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: John Soo <jsoo1@asu.edu>
To: Hartmut Goebel <h.goebel@crazy-compilers.com>
Cc: Guix-devel <guix-devel@gnu.org>
Subject: Re: rust (build system) deficits
Date: Sat, 7 Mar 2020 10:41:03 -0800	[thread overview]
Message-ID: <543D2B96-0DD4-4274-BAF4-1761897DF812@asu.edu> (raw)
In-Reply-To: <6d384619-25a9-5699-bda5-5f4bf9380976@crazy-compilers.com>

Hi Hartmut,

I agree with you. It seems like a problem for cargo to solve to me.  Efraim tried to use the .rlib files to make library files and found it was not really an option.

There are more problems, too. The way inputs are done doesn’t fit well with the rest of guix tooling and doesn’t really follow functional package management concepts.

One possibility to try is to rethink the cargo-{development-}inputs fields and only require the source from rust library inputs. Then to build the executables, it would only require one compile and we could keep ci checking the current 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’m wrong on that?

As far as I can tell, the point of the specialized transitive closure computation is to deal with cyclic dependencies.  Again, please someone correct me if I’m wrong on that.

If the rust closure functions successfully deal with cyclic dependencies, then wouldn’t the other closure computations benefit from the same function?

I would like to take a stab at bringing the rust build system package definitions closer to others.

My proposal is to:
* move cargo-{development-}inputs into inputs, requiring only the source from libraries.
* either:
  - move the rust closure function so all packages use it
Or
  - adjust the transitive closure function such that it works on normal inputs 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 tests even if skip-build is #f and tests? is #t

What do you all think, Hartmut, guix?

- John 

  reply	other threads:[~2020-03-07 18:41 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-07 13:46 rust (build system) deficits Hartmut Goebel
2020-03-07 18:41 ` John Soo [this message]
2020-03-08 17:16   ` Hartmut Goebel
2020-03-08 20:10     ` John Soo
2020-03-08 20:20       ` John Soo
2020-03-09  9:26       ` Hartmut Goebel
2020-03-09 11:17         ` Efraim Flashner
2020-03-09 14:00         ` John Soo
2020-03-09 14:50           ` Hartmut Goebel
2020-03-09 17:48             ` John Soo
2020-03-11 17:55               ` Hartmut Goebel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=543D2B96-0DD4-4274-BAF4-1761897DF812@asu.edu \
    --to=jsoo1@asu.edu \
    --cc=guix-devel@gnu.org \
    --cc=h.goebel@crazy-compilers.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).