Subject: bug#35318: closed (Re: [bug#35318] [PATCH] Update cargo-build-system to expand package inputs)

From: [email-masked] (GNU bug Tracking System)
Date: Wed, 12 Jun 2019 01:15:02 +0000

Your bug report

#35318: [PATCH] Update cargo-build-system to expand package inputs

which was filed against the guix-patches package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
35318: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=35318
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: [bug#35318] [PATCH] Update cargo-build-system to expand package inputs
From: Chris Marusich <[email-masked]>
To: Ivan Petkov <[email-masked]>
Cc: Danny Milosavljevic <[email-masked]>, Chris Marusich <[email-masked]>, [email-masked]
Date: Tue, 11 Jun 2019 18:14:03 -0700
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi Ivan,

I've merged your changes as 2444abd9c124cc55f8f19a0462e06a2094f25a9d.
Thank you for taking the time to write this patch series!  Now let's
start importing some crates!  :-)

Some minor feedback for next time (I've made these minor changes on your
behalf already):

- In the ChangeLog, we generally capitalize the heading and add a
  period.
- In the manual, we put two spaces after periods, not one.
- The tests/crate.scm began failing when you changed the importer logic;
  I have taken the liberty of fixing it.
- When listing many parts that changed, you can write it like this,
  instead of listing it on 3 separate lines:

    (maybe-cargo-inputs, maybe-cargo-development-inputs)
    (maybe-arguments): Add them.

That's all.  Thanks again!  I'm closing this now.

-- 
Chris

Subject: [PATCH] Update cargo-build-system to expand package inputs
From: Ivan Petkov <[email-masked]>
To: [email-masked]
Cc: Danny Milosavljevic <[email-masked]>, Chris Marusich <[email-masked]>
Date: Thu, 18 Apr 2019 22:34:05 -0700
List-Id: <debbugs-submit.debbugs.gnu.org>

When building, cargo requires the source of all transitive dependencies to be present in its index.
Rather than force package definitions to list out all transitive inputs, the build system will
automatically expand the inputs as necessary.

Because it is possible for crates to have apparent cycles in their native dependencies,
the build system must take some measures to work around potential cycles. This patch series
takes an initial naive stab at resolving the problem, by never building native-inputs.

I plan on revisiting this sometime soon and making the system a bit more intelligent
(namely building native-inputs where possible and breaking any cycles). But for now this should
unblock working on package definitions.

I’ve also included three rust crates as a proof of concept that the system works and it handles
potential native-input cycles. These crates do nothing on their own, but they’re heavily depended
upon by the rest of the crates ecosystem, so they will eventually be useful to have in guix.

—Ivan