All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/1] fetch2/git.py: Try without '.git' suffix firstly
@ 2024-05-15  9:26 liezhi.yang
  2024-05-15  9:26 ` [PATCH 1/1] " liezhi.yang
  0 siblings, 1 reply; 6+ messages in thread
From: liezhi.yang @ 2024-05-15  9:26 UTC (permalink / raw)
  To: bitbake-devel

From: Robert Yang <liezhi.yang@windriver.com>

The following changes since commit 79ab2413e082838291157445038476f9d8edb586:

  cpio: mark CVE-2023-7216 as disputed (2024-05-14 12:43:23 +0100)

are available in the Git repository at:

  https://github.com/robertlinux/yocto rbt/fetch
  https://github.com/robertlinux/yocto/tree/rbt/fetch

Robert Yang (1):
  fetch2/git.py: Try without '.git' suffix firstly

 bitbake/lib/bb/fetch2/git.py | 23 +++++++++++++++++++++--
 1 file changed, 21 insertions(+), 2 deletions(-)

-- 
2.35.5



^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 1/1] fetch2/git.py: Try without '.git' suffix firstly
  2024-05-15  9:26 [PATCH 0/1] fetch2/git.py: Try without '.git' suffix firstly liezhi.yang
@ 2024-05-15  9:26 ` liezhi.yang
  2024-05-15  9:35   ` [bitbake-devel] " Quentin Schulz
  0 siblings, 1 reply; 6+ messages in thread
From: liezhi.yang @ 2024-05-15  9:26 UTC (permalink / raw)
  To: bitbake-devel

From: Robert Yang <liezhi.yang@windriver.com>

If the repo on server is foo.git, both of the following commands
will work:
1) $ git clone <url>/foo.git
2) $ git clone <url>/foo
But only the second command works if the repo server is foo
(without .git suffix), so try without '.git' suffix firstly.

Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
---
 bitbake/lib/bb/fetch2/git.py | 23 +++++++++++++++++++++--
 1 file changed, 21 insertions(+), 2 deletions(-)

diff --git a/bitbake/lib/bb/fetch2/git.py b/bitbake/lib/bb/fetch2/git.py
index c7ff769fdfe..0134344cdf3 100644
--- a/bitbake/lib/bb/fetch2/git.py
+++ b/bitbake/lib/bb/fetch2/git.py
@@ -442,11 +442,30 @@ class Git(FetchMethod):
                 objects = os.path.join(repourl_path, 'objects')
                 if os.path.isdir(objects) and not os.path.islink(objects):
                     repourl = repourl_path
-            clone_cmd = "LANG=C %s clone --bare --mirror %s %s --progress" % (ud.basecmd, shlex.quote(repourl), ud.clonedir)
+            clone_cmd_pre = "LANG=C %s clone --bare --mirror --progress" % ud.basecmd
+            clone_cmd = "%s %s %s" % (clone_cmd_pre, shlex.quote(repourl), ud.clonedir)
             if ud.proto.lower() != 'file':
                 bb.fetch2.check_network_access(d, clone_cmd, ud.url)
             progresshandler = GitProgressHandler(d)
-            runfetchcmd(clone_cmd, d, log=progresshandler)
+            # If the repo on server is foo.git, both of the following commands
+            # will work:
+            # 1) $ git clone <url>/foo.git
+            # 2) $ git clone <url>/foo
+            # But only the second command works if the repo server is foo
+            # (without .git suffix), so try without '.git' suffix firstly
+            cloned_no_git = False
+            if repourl.endswith('.git'):
+                repourl_no_git = repourl[0:-4]
+                clone_cmd_no_git = "%s %s %s" % (clone_cmd_pre, shlex.quote(repourl_no_git), ud.clonedir)
+                try:
+                    runfetchcmd(clone_cmd_no_git, d, log=progresshandler)
+                    cloned_no_git = True
+                except bb.fetch2.FetchError:
+                    # The error messages have already been saved in the log, so
+                    # just pass to next cmd.
+                    pass
+            if not cloned_no_git:
+                runfetchcmd(clone_cmd, d, log=progresshandler)
 
         # Update the checkout if needed
         if self.clonedir_need_update(ud, d):
-- 
2.35.5



^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [bitbake-devel] [PATCH 1/1] fetch2/git.py: Try without '.git' suffix firstly
  2024-05-15  9:26 ` [PATCH 1/1] " liezhi.yang
@ 2024-05-15  9:35   ` Quentin Schulz
  2024-05-15  9:57     ` Robert Yang
  0 siblings, 1 reply; 6+ messages in thread
From: Quentin Schulz @ 2024-05-15  9:35 UTC (permalink / raw)
  To: liezhi.yang, bitbake-devel

Hi Robert,

On 5/15/24 11:26 AM, Robert Yang via lists.openembedded.org wrote:
> From: Robert Yang <liezhi.yang@windriver.com>
> 
> If the repo on server is foo.git, both of the following commands
> will work:
> 1) $ git clone <url>/foo.git
> 2) $ git clone <url>/foo
> But only the second command works if the repo server is foo
> (without .git suffix), so try without '.git' suffix firstly.
> 

Shouldn't the SRC_URI in the recipe be fixed instead of the git fetcher? 
Which use case do we need to support here? Something to do with 
mirroring maybe?

Cheers,
Quentin


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [bitbake-devel] [PATCH 1/1] fetch2/git.py: Try without '.git' suffix firstly
  2024-05-15  9:35   ` [bitbake-devel] " Quentin Schulz
@ 2024-05-15  9:57     ` Robert Yang
  2024-05-15 10:15       ` Quentin Schulz
  2024-05-15 15:47       ` Richard Purdie
  0 siblings, 2 replies; 6+ messages in thread
From: Robert Yang @ 2024-05-15  9:57 UTC (permalink / raw)
  To: Quentin Schulz, bitbake-devel

Hi Quentin,

On 5/15/24 17:35, Quentin Schulz wrote:
> Hi Robert,
> 
> On 5/15/24 11:26 AM, Robert Yang via lists.openembedded.org wrote:
>> From: Robert Yang <liezhi.yang@windriver.com>
>>
>> If the repo on server is foo.git, both of the following commands
>> will work:
>> 1) $ git clone <url>/foo.git
>> 2) $ git clone <url>/foo
>> But only the second command works if the repo server is foo
>> (without .git suffix), so try without '.git' suffix firstly.
>>
> 
> Shouldn't the SRC_URI in the recipe be fixed instead of the git fetcher? Which 
> use case do we need to support here? Something to do with mirroring maybe
The usage is related to repo command + http/https mirror:

* The foo.git on http/https MIRROR works with do_fetch
* But 'repo' command always add a '.git' suffix to the reponame, the foo.git
will be saved as foo.git.git on local disk, and do_fetch would not work with
the local mirror.

Our solution is rename foo.git to foo on http/https mirror, and apply this patch
to make both http(s) and local mirror work with repo command.

It's a little special to our Wind River Linux, and we need send the patch to
mailing list for Yocto compliance.

// Robert

> 
> Cheers,
> Quentin


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [bitbake-devel] [PATCH 1/1] fetch2/git.py: Try without '.git' suffix firstly
  2024-05-15  9:57     ` Robert Yang
@ 2024-05-15 10:15       ` Quentin Schulz
  2024-05-15 15:47       ` Richard Purdie
  1 sibling, 0 replies; 6+ messages in thread
From: Quentin Schulz @ 2024-05-15 10:15 UTC (permalink / raw)
  To: liezhi.yang, bitbake-devel

Hi Robert,

On 5/15/24 11:57 AM, Robert Yang via lists.openembedded.org wrote:
> Hi Quentin,
> 
> On 5/15/24 17:35, Quentin Schulz wrote:
>> Hi Robert,
>>
>> On 5/15/24 11:26 AM, Robert Yang via lists.openembedded.org wrote:
>>> From: Robert Yang <liezhi.yang@windriver.com>
>>>
>>> If the repo on server is foo.git, both of the following commands
>>> will work:
>>> 1) $ git clone <url>/foo.git
>>> 2) $ git clone <url>/foo
>>> But only the second command works if the repo server is foo
>>> (without .git suffix), so try without '.git' suffix firstly.
>>>
>>
>> Shouldn't the SRC_URI in the recipe be fixed instead of the git 
>> fetcher? Which use case do we need to support here? Something to do 
>> with mirroring maybe
> The usage is related to repo command + http/https mirror:
> 
> * The foo.git on http/https MIRROR works with do_fetch
> * But 'repo' command always add a '.git' suffix to the reponame, the 
> foo.git
> will be saved as foo.git.git on local disk, and do_fetch would not work 
> with
> the local mirror.
> 
> Our solution is rename foo.git to foo on http/https mirror, and apply 
> this patch
> to make both http(s) and local mirror work with repo command.
> 
> It's a little special to our Wind River Linux, and we need send the 
> patch to
> mailing list for Yocto compliance.
> 

I'm not sure this is something we should fix in BitBake since it's 
related to the use of some external setup tool? I'll let more 
knowledgeable people discuss this :)

In any case, I would suggest to really provide more info (the one as 
above for example) at the very least in the commit log, and even better 
in-code comment so that we don't remove it the day we want to de-clutter 
code. The issue is that this looks very much like code we don't need, 
without proper explanation of the use case (which you now provided).

Cheers,
Quentin

> // Robert
> 
>>
>> Cheers,
>> Quentin
> 
> 
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#16222): https://lists.openembedded.org/g/bitbake-devel/message/16222
> Mute This Topic: https://lists.openembedded.org/mt/106110992/6293953
> Group Owner: bitbake-devel+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/bitbake-devel/unsub [quentin.schulz@cherry.de]
> -=-=-=-=-=-=-=-=-=-=-=-
> 


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [bitbake-devel] [PATCH 1/1] fetch2/git.py: Try without '.git' suffix firstly
  2024-05-15  9:57     ` Robert Yang
  2024-05-15 10:15       ` Quentin Schulz
@ 2024-05-15 15:47       ` Richard Purdie
  1 sibling, 0 replies; 6+ messages in thread
From: Richard Purdie @ 2024-05-15 15:47 UTC (permalink / raw)
  To: liezhi.yang, Quentin Schulz, bitbake-devel

On Wed, 2024-05-15 at 17:57 +0800, Robert Yang via lists.openembedded.org wrote:
> Hi Quentin,
> 
> On 5/15/24 17:35, Quentin Schulz wrote:
> > Hi Robert,
> > 
> > On 5/15/24 11:26 AM, Robert Yang via lists.openembedded.org wrote:
> > > From: Robert Yang <liezhi.yang@windriver.com>
> > > 
> > > If the repo on server is foo.git, both of the following commands
> > > will work:
> > > 1) $ git clone <url>/foo.git
> > > 2) $ git clone <url>/foo
> > > But only the second command works if the repo server is foo
> > > (without .git suffix), so try without '.git' suffix firstly.
> > > 
> > 
> > Shouldn't the SRC_URI in the recipe be fixed instead of the git fetcher? Which 
> > use case do we need to support here? Something to do with mirroring maybe
> The usage is related to repo command + http/https mirror:
> 
> * The foo.git on http/https MIRROR works with do_fetch
> * But 'repo' command always add a '.git' suffix to the reponame, the foo.git
> will be saved as foo.git.git on local disk, and do_fetch would not work with
> the local mirror.
> 
> Our solution is rename foo.git to foo on http/https mirror, and apply this patch
> to make both http(s) and local mirror work with repo command.
> 
> It's a little special to our Wind River Linux, and we need send the patch to
> mailing list for Yocto compliance.

I'm with Quentin, the SRC_URIs should be fixed or this should be in
repo specific codepaths. We're not adding a workaround like that into
the git fetcher.

Cheers,

Richard


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2024-05-15 15:47 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-05-15  9:26 [PATCH 0/1] fetch2/git.py: Try without '.git' suffix firstly liezhi.yang
2024-05-15  9:26 ` [PATCH 1/1] " liezhi.yang
2024-05-15  9:35   ` [bitbake-devel] " Quentin Schulz
2024-05-15  9:57     ` Robert Yang
2024-05-15 10:15       ` Quentin Schulz
2024-05-15 15:47       ` Richard Purdie

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.