Subject: bug#48540: Non-recursive Git checkout with submodules breaks SWH download

From: Timothy Sample <[email-masked]>
Date: Thu, 20 May 2021 11:50:19 -0400

Hi!

When trying to recover the ‘non-sequencer’ source from SWH, Guix fails
with a hash mismatch:

    expected hash: 1cljkkyi9dxqpqhx8y6l2ja4zjmlya26m26kqxml8gx08vyvddhx
    actual hash:   1xrrczqx4ll276g449nqiq0ip6lpika9hs4z4xgxaa6ayw60v29f

The reason is that the checkout includes submodules, and the way that
Guix treats submodules differs from the way that SWH treats them.  Note
that this is not a recursive checkout (which is also broken, but more
clearly a “known limitation”).  In particular, Guix leaves the submodule
as an empty directory, while SWH turns it into a symlink pointing to the
submodule’s commit hash:

    $ readlink ./f20fa6babec52bbf703bad6c1c92fa845b781f7e/lib/ntk
    1e3f5106d404562902bed2983403301db24a3f78

This is clearly a rare edge case, but it should be pretty easy to fix.
Perhaps it’s as easy as just opening “.gitmodules” and replacing the
symlink at each submodule path with an empty directory.

-- Tim