Subject: [PATCH 0/4] Improve the crate importer.
From: David Elsing <[email-masked]>
To: [email-masked]
Cc: David Elsing <[email-masked]>
Date: Thu, 21 Dec 2023 21:59:02 +0000
List-Id: <debbugs-submit.debbugs.gnu.org>

This patch series contains improvements to the crate importer.

The first patch fixes the memoization in crate-recursive-import.

The second patch allows for including the cargo-development-inputs also in
recursively imported crates by specifying --recursive-dev-dependencies, such
that the tests of all imported crates can be run.

The third patch removes the dependency of a test in tests/crate.scm on an
existing crate in gnu/packages/crates.io.

Sometimes, it can happen that a crate requires a dependency for which only a
yanked version exists, which is addressed in the fourth patch. Instead of
simply failing, I changed the behavior to also import yanked versions if no
non-yanked version exists. Then, they can be used anyway or be manually
patched out from the dependent packages. Their packages obtain a different
package name (including the full version) and a package property marking them
as yanked. The logic to decide which version to use naturally became more
complicated as a result.

David Elsing (4):
  gnu: import: Fix memoization in crate-recursive-import.
  import: crate: Optionally import dev-dependencies recursively.
  tests: Mock find-packages-by-name in crate importer test.
  guix: import: Optionally import necessary yanked crates.

 doc/guix.texi                 |   7 +
 guix/import/crate.scm         | 161 +++++++---
 guix/read-print.scm           |   1 +
 guix/scripts/import/crate.scm |  24 +-
 tests/crate.scm               | 576 +++++++++++++++++++++++++++++-----
 5 files changed, 653 insertions(+), 116 deletions(-)

-- 
2.41.0