[yocto] Git and http problem.

Nikolay Dimitrov picmaster at mail.bg
Mon Apr 13 08:28:48 PDT 2015


Hi Francois,

On 04/13/2015 03:43 PM, Paul Eggleton wrote:
> Hi Francois,
>
> On Monday 13 April 2015 11:53:25 Francois P. Gallichand wrote:
>> I'm working behind a firewall, on which I have absolutely no
>> control, and it does not allows the git protocol to go through. So
>> I patch the recipes to replace the git protocol by the http
>> protocol and it works most of the time. However one specific
>> package, linux-yocto, does not seem to work even If I use the http
>> protocol. It either times-out during the fetch, of the fetch goes
>> on forever.
>
> Assuming there's no infrastructure issue on our end, it sounds a bit
> like your firewall might be proxying the http fetch completely, and
> the fetch takes longer than the configured timeout.
>
> You could set up a local mirror to work around this and set up the
> system to point to it using PREMIRRORS. Note that you can also use
> PREMIRRORS to effectively add ;protocol=http to git URIs as well,
> you shouldn't need to patch each recipe.
>
>> Frustrated with that situation, I tried various things to realize
>> that if I tried to manually clone the git repository, it doesn't
>> work with a "git clone git://...;protocol=http;..." but if I use
>> "git clone http://...;protocol=http; ...",it is working fine. But
>> the  http:// form is not supported by bitbake as if I use it in a
>> recipe as the SRC_URI, bitbake gives me an error.
>>
>> Is it a bug with bitbake or am I doing something wrong?
>
> It's not a bug - git and bitbake's fetcher expect different URI
> formats - bitbake has support for multiple fetch types and therefore
> needs a hint to tell it which fetcher module should handle the URI
> and that's the prefix, so anything that should be fetched by the git
> fetcher module needs to be prefixed with git:// even if the actual
> protocol ends up being http (in which case it would be
> git://...;protocol=http). If you are then going back to git on the
> command line you'd need to translate that back into http://.. form
> (note that protocol= is something our git fetcher understands; git
> itself does not so you would not specify that on the git command
> line).

The reason for this behavior is that the git and http contents are
served via different servers - git vs apache+cgit. So the URLs are not
always 1:1 as in this specific case, and you need to change more then
the URL scheme:

git://git.yoctoproject.org/linux-yocto-3.14
http://git.yoctoproject.org/git/linux-yocto-3.14

Please note the additional "git/" in the 2nd URL.

Regards,
Nikolay



More information about the yocto mailing list