diff mbox series

gitsm: tolerate git-lfs in submodules

Message ID 20230819001011.3226247-1-rs@ti.com
State Accepted, archived
Commit 1f8f21fe024b391d3a6670c64b839db0eee083c3
Headers show
Series gitsm: tolerate git-lfs in submodules | expand

Commit Message

Randolph Sapp Aug. 19, 2023, 12:10 a.m. UTC
From: Randolph Sapp <rs@ti.com>

Explicitly pass down the lfs parameter from the source repo URI to
submodules. Add smudge skip to final checkout phase to make sure we
don't access the network here. Everything should have been fetched and
setup from the lfs logic in the git fetcher at this point.

Signed-off-by: Randolph Sapp <rs@ti.com>
---
 lib/bb/fetch2/gitsm.py | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

Comments

Martin Jansa Aug. 19, 2023, 7:28 a.m. UTC | #1
Please add [YOCTO #14938] tag as this might help with that ticket.

On Sat, Aug 19, 2023 at 2:10 AM Randolph Sapp via lists.openembedded.org
<rs=ti.com@lists.openembedded.org> wrote:

> From: Randolph Sapp <rs@ti.com>
>
> Explicitly pass down the lfs parameter from the source repo URI to
> submodules. Add smudge skip to final checkout phase to make sure we
> don't access the network here. Everything should have been fetched and
> setup from the lfs logic in the git fetcher at this point.
>
> Signed-off-by: Randolph Sapp <rs@ti.com>
> ---
>  lib/bb/fetch2/gitsm.py | 11 +++++++----
>  1 file changed, 7 insertions(+), 4 deletions(-)
>
> diff --git a/lib/bb/fetch2/gitsm.py b/lib/bb/fetch2/gitsm.py
> index 47225b97..a87361cc 100644
> --- a/lib/bb/fetch2/gitsm.py
> +++ b/lib/bb/fetch2/gitsm.py
> @@ -123,6 +123,7 @@ class GitSM(Git):
>              url += ";name=%s" % module
>              url += ";subpath=%s" % module
>              url += ";nobranch=1"
> +            url += ";lfs=%s" % self._need_lfs(ud)
>              # Note that adding "user=" here to give credentials to the
>              # submodule is not supported. Since using SRC_URI to give
> git://
>              # URL a password is not supported, one have to use one of the
> @@ -242,10 +243,12 @@ class GitSM(Git):
>          ret = self.process_submodules(ud, ud.destdir, unpack_submodules,
> d)
>
>          if not ud.bareclone and ret:
> -            # All submodules should already be downloaded and configured
> in the tree.  This simply sets
> -            # up the configuration and checks out the files.  The main
> project config should remain
> -            # unmodified, and no download from the internet should occur.
> -            runfetchcmd("%s submodule update --recursive --no-fetch" %
> (ud.basecmd), d, quiet=True, workdir=ud.destdir)
> +            # All submodules should already be downloaded and configured
> in the tree.  This simply
> +            # sets up the configuration and checks out the files.  The
> main project config should
> +            # remain unmodified, and no download from the internet should
> occur. As such, lfs smudge
> +            # should also be skipped as these files were already smudged
> in the fetch stage if lfs
> +            # was enabled.
> +            runfetchcmd("GIT_LFS_SKIP_SMUDGE=1 %s submodule update
> --recursive --no-fetch" % (ud.basecmd), d, quiet=True, workdir=ud.destdir)
>
>      def implicit_urldata(self, ud, d):
>          import shutil, subprocess, tempfile
> --
> 2.41.0
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#14953):
> https://lists.openembedded.org/g/bitbake-devel/message/14953
> Mute This Topic: https://lists.openembedded.org/mt/100831879/3617156
> Group Owner: bitbake-devel+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/bitbake-devel/unsub [
> Martin.Jansa@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
>
diff mbox series

Patch

diff --git a/lib/bb/fetch2/gitsm.py b/lib/bb/fetch2/gitsm.py
index 47225b97..a87361cc 100644
--- a/lib/bb/fetch2/gitsm.py
+++ b/lib/bb/fetch2/gitsm.py
@@ -123,6 +123,7 @@  class GitSM(Git):
             url += ";name=%s" % module
             url += ";subpath=%s" % module
             url += ";nobranch=1"
+            url += ";lfs=%s" % self._need_lfs(ud)
             # Note that adding "user=" here to give credentials to the
             # submodule is not supported. Since using SRC_URI to give git://
             # URL a password is not supported, one have to use one of the
@@ -242,10 +243,12 @@  class GitSM(Git):
         ret = self.process_submodules(ud, ud.destdir, unpack_submodules, d)
 
         if not ud.bareclone and ret:
-            # All submodules should already be downloaded and configured in the tree.  This simply sets
-            # up the configuration and checks out the files.  The main project config should remain
-            # unmodified, and no download from the internet should occur.
-            runfetchcmd("%s submodule update --recursive --no-fetch" % (ud.basecmd), d, quiet=True, workdir=ud.destdir)
+            # All submodules should already be downloaded and configured in the tree.  This simply
+            # sets up the configuration and checks out the files.  The main project config should
+            # remain unmodified, and no download from the internet should occur. As such, lfs smudge
+            # should also be skipped as these files were already smudged in the fetch stage if lfs
+            # was enabled.
+            runfetchcmd("GIT_LFS_SKIP_SMUDGE=1 %s submodule update --recursive --no-fetch" % (ud.basecmd), d, quiet=True, workdir=ud.destdir)
 
     def implicit_urldata(self, ud, d):
         import shutil, subprocess, tempfile