[yocto] how to set up PREMIRRORS_prepend to avoid constant git clones?

David Nyström david.nystrom at enea.com
Mon Mar 12 01:28:32 PDT 2012


On 03/10/2012 04:51 PM, Gary Thomas wrote:
> On 2012-03-10 08:46, Robert P. J. Day wrote:
>> On Sat, 10 Mar 2012, Gary Thomas wrote:
>>
>>> On 2012-03-10 08:29, Robert P. J. Day wrote:
>>>> On Sat, 10 Mar 2012, Gary Thomas wrote:
>>>>
>>>>> On 2012-03-10 06:39, Robert P. J. Day wrote:
>>>>
>>>> ... snip ...
>>>>
>>>>>>      $ bitbake -c fetchall core-image-minimal
>>>>>>
>>>>>> and got something unexpected:
>>>>>>
>>>>>> NOTE: package bash-4.2-r1: task do_fetch: Started
>>>>>> ERROR: Function failed: Network access disabled through 
>>>>>> BB_NO_NETWORK
>>>>>> but access rquested with command /usr/bin/env wget -t 5 -nv
>>>>>> --passive-ftp --no-check-certificate -P
>>>>>> /home/rpjday/yocto/builds/beag2/downloads
>>>>>> 'ftp://ftp.gnu.org/gnu/bash/bash-4.2-patches/bash42-001' (for url
>>>>>> None)
>>>>>> ERROR: Logfile of failure stored in:
>>>>>> /home/rpjday/yocto/builds/beag2/tmp/work/armv7a-vfp-neon-poky-linux-gnueabi/bash-4.2-r1/temp/log.do_fetch.32479 
>>>>>>
>>>>>> Log data follows:
>>>>>> | DEBUG: Trying PREMIRRORS
>>>>>> ... snip ...
>>>>>>
>>>>>>      i can clearly see the problem -- while i have the bash tarball
>>>>>> itself in my own mirror, i don't have the patches to go with it, as
>>>>>> defined in the recipes file:
>>>>>>
>>>>>> SRC_URI = "${GNU_MIRROR}/bash/${BPN}-${PV}.tar.gz;name=tarball \
>>>>>>
>>>>>> ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-001;apply=yes;striplevel=0;name=patch001 
>>>>>>
>>>>>> \
>>>>>> ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-002;apply=yes;striplevel=0;name=patch002 
>>>>>>
>>>>>> \
>>>>>> ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-003;apply=yes;striplevel=0;name=patch003 
>>>>>>
>>>>>> \
>>>>>> ... etc etc ...
>>>>>>
>>>>>>      when i went looking for actual downloads in step 1, i just 
>>>>>> searched
>>>>>> for sizable tarballs or zip files, it never occurred to me to check
>>>>>> for patch files.  so i guess i just have to be more observant and
>>>>>> check for patch files as well (or anything else a recipe might 
>>>>>> want to
>>>>>> download).
>>>>>>
>>>>>>      so far, so good?
>>>>>
>>>>> I didn't check but this is often the recipe's fault.  It must specify
>>>>> an exact git SRCREV, not a tag, for the NO_NETWORK to be successful.
>>>>
>>>>     i'm not sure what you're saying here.  the patches are simple 
>>>> files,
>>>> nothing to do with git.  the bash source itself is properly being
>>>> fetched from my mirror -- it's the numerous patch files i was unaware
>>>> of that still require network access; that is, until i manually copied
>>>> them over to my mirror directory, and that solved the problem.
>>>>
>>>>     i just had to notice that the bash recipe downloaded a number of
>>>> patch files, then add them to my local mirror.
>>>
>>> Sorry, I misread.  Yes, you do need those patch files in your local 
>>> mirror.
>>> In fact, if you look at ${BUILD}/downloads, every _file_ (not 
>>> symlink) that's
>>> at the top level needs to be copied.  I manage this by running a script
>>> like this:
>>>    (cd downloads;find . -type f -maxdepth 1 | tar -cT - | tar -x -C 
>>> ${DL_DIR})
>>
>>    but doesn't that pick up all the ".done" files as well?  doesn't
>> hurt, but certainly unnecessary.
>
> I said "something like" - add in "| grep -v .done" if you want to skip 
> those.
> I actually use a more complex script as there are some things I simply 
> never
> want to copy...
>
I added a small how-do-i on this subject, since I have not found it 
documented elsewhere.
https://wiki.yoctoproject.org/wiki/How_do_I

Please remove/add if something is incorrect.

Br,
David



More information about the yocto mailing list