guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: rust (build system) deficits


From: John Soo
Subject: Re: rust (build system) deficits
Date: Sat, 7 Mar 2020 10:41:03 -0800

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 via email to

[Prev in Thread] Current Thread [Next in Thread]