Patchwork [bitbake-devel] lib/bb/fetch2: don't skip checksums when local mirror enabled

login
register
mail settings
Submitter Paul Eggleton
Date April 5, 2012, 5:07 p.m.
Message ID <1333645638-9195-1-git-send-email-paul.eggleton@linux.intel.com>
Download mbox | patch
Permalink /patch/25217/
State New
Headers show

Comments

Paul Eggleton - April 5, 2012, 5:07 p.m.
If you have PREMIRRORS set up to point to a local directory, the local
download function does nothing and always succeeds and the mirror code
was writing a .done stamp regardless, thus the checksum verification was
being skipped even if the file wasn't actually copied from the mirror.

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
---
 lib/bb/fetch2/__init__.py |    7 ++++---
 1 files changed, 4 insertions(+), 3 deletions(-)
Richard Purdie - April 10, 2012, 11:25 p.m.
On Thu, 2012-04-05 at 18:07 +0100, Paul Eggleton wrote:
> If you have PREMIRRORS set up to point to a local directory, the local
> download function does nothing and always succeeds and the mirror code
> was writing a .done stamp regardless, thus the checksum verification was
> being skipped even if the file wasn't actually copied from the mirror.
> 
> Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
> ---
>  lib/bb/fetch2/__init__.py |    7 ++++---
>  1 files changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/lib/bb/fetch2/__init__.py b/lib/bb/fetch2/__init__.py
> index e5c4b34..414cc2b 100644
> --- a/lib/bb/fetch2/__init__.py
> +++ b/lib/bb/fetch2/__init__.py
> @@ -476,9 +476,10 @@ def try_mirrors(d, origud, mirrors, check = False):
>  
>              if not os.path.exists(ud.donestamp) or ud.method.need_update(newuri, ud, ld):
>                  ud.method.download(newuri, ud, ld)
> -                open(ud.donestamp, 'w').close()
> -                if hasattr(ud.method,"build_mirror_data"):
> -                    ud.method.build_mirror_data(newuri, ud, ld)
> +                if os.path.exists(ud.localpath):
> +                    open(ud.donestamp, 'w').close()
> +                    if hasattr(ud.method,"build_mirror_data"):
> +                        ud.method.build_mirror_data(newuri, ud, ld)
>  
>              if not ud.localpath or not os.path.exists(ud.localpath):
>                  continue

I messed up some commands and this ended up merged with the following
commit I manipulated:

http://git.openembedded.org/bitbake/commit/?id=c9eed04c6275ef2c694f89e047f85c7de76f89b6

Since its pushed at this point I'm not sure what options I have to undo
it. Sorry :(

Richard
Richard Purdie - April 10, 2012, 11:39 p.m.
On Thu, 2012-04-05 at 18:07 +0100, Paul Eggleton wrote:
> If you have PREMIRRORS set up to point to a local directory, the local
> download function does nothing and always succeeds and the mirror code
> was writing a .done stamp regardless, thus the checksum verification was
> being skipped even if the file wasn't actually copied from the mirror.
> 
> Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
> ---
>  lib/bb/fetch2/__init__.py |    7 ++++---
>  1 files changed, 4 insertions(+), 3 deletions(-)

Merged to master, thanks.

Richard
Paul Eggleton - April 11, 2012, 9:11 a.m.
On Wednesday 11 April 2012 00:25:24 Richard Purdie wrote:
> On Thu, 2012-04-05 at 18:07 +0100, Paul Eggleton wrote:
> > If you have PREMIRRORS set up to point to a local directory, the local
> > download function does nothing and always succeeds and the mirror code
> > was writing a .done stamp regardless, thus the checksum verification was
> > being skipped even if the file wasn't actually copied from the mirror.
> > 
> > Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
> > ---
> > 
> >  lib/bb/fetch2/__init__.py |    7 ++++---
> >  1 files changed, 4 insertions(+), 3 deletions(-)
> > 
> > diff --git a/lib/bb/fetch2/__init__.py b/lib/bb/fetch2/__init__.py
> > index e5c4b34..414cc2b 100644
> > --- a/lib/bb/fetch2/__init__.py
> > +++ b/lib/bb/fetch2/__init__.py
> > 
> > @@ -476,9 +476,10 @@ def try_mirrors(d, origud, mirrors, check = False):
> >              if not os.path.exists(ud.donestamp) or 
ud.method.need_update(newuri, ud, ld):
> >                  ud.method.download(newuri, ud, ld)
> > 
> > -                open(ud.donestamp, 'w').close()
> > -                if hasattr(ud.method,"build_mirror_data"):
> > -                    ud.method.build_mirror_data(newuri, ud, ld)
> > +                if os.path.exists(ud.localpath):
> > +                    open(ud.donestamp, 'w').close()
> > +                    if hasattr(ud.method,"build_mirror_data"):
> > +                        ud.method.build_mirror_data(newuri, ud, ld)
> > 
> >              if not ud.localpath or not os.path.exists(ud.localpath):
> >                  continue
> 
> I messed up some commands and this ended up merged with the following
> commit I manipulated:
> 
> http://git.openembedded.org/bitbake/commit/?id=c9eed04c6275ef2c694f89e047f85
> c7de76f89b6
> 
> Since its pushed at this point I'm not sure what options I have to undo
> it. Sorry :(

No worries - but does this fix in any way help with the problem Gary was 
seeing?

Cheers,
Paul
Gary Thomas - April 11, 2012, 10:47 a.m.
On 2012-04-11 03:11, Paul Eggleton wrote:
> On Wednesday 11 April 2012 00:25:24 Richard Purdie wrote:
>> On Thu, 2012-04-05 at 18:07 +0100, Paul Eggleton wrote:
>>> If you have PREMIRRORS set up to point to a local directory, the local
>>> download function does nothing and always succeeds and the mirror code
>>> was writing a .done stamp regardless, thus the checksum verification was
>>> being skipped even if the file wasn't actually copied from the mirror.
>>>
>>> Signed-off-by: Paul Eggleton<paul.eggleton@linux.intel.com>
>>> ---
>>>
>>>   lib/bb/fetch2/__init__.py |    7 ++++---
>>>   1 files changed, 4 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/lib/bb/fetch2/__init__.py b/lib/bb/fetch2/__init__.py
>>> index e5c4b34..414cc2b 100644
>>> --- a/lib/bb/fetch2/__init__.py
>>> +++ b/lib/bb/fetch2/__init__.py
>>>
>>> @@ -476,9 +476,10 @@ def try_mirrors(d, origud, mirrors, check = False):
>>>               if not os.path.exists(ud.donestamp) or
> ud.method.need_update(newuri, ud, ld):
>>>                   ud.method.download(newuri, ud, ld)
>>>
>>> -                open(ud.donestamp, 'w').close()
>>> -                if hasattr(ud.method,"build_mirror_data"):
>>> -                    ud.method.build_mirror_data(newuri, ud, ld)
>>> +                if os.path.exists(ud.localpath):
>>> +                    open(ud.donestamp, 'w').close()
>>> +                    if hasattr(ud.method,"build_mirror_data"):
>>> +                        ud.method.build_mirror_data(newuri, ud, ld)
>>>
>>>               if not ud.localpath or not os.path.exists(ud.localpath):
>>>                   continue
>>
>> I messed up some commands and this ended up merged with the following
>> commit I manipulated:
>>
>> http://git.openembedded.org/bitbake/commit/?id=c9eed04c6275ef2c694f89e047f85
>> c7de76f89b6
>>
>> Since its pushed at this point I'm not sure what options I have to undo
>> it. Sorry :(
>
> No worries - but does this fix in any way help with the problem Gary was
> seeing?

No, it does not.  See https://lists.yoctoproject.org/pipermail/poky/2012-April/007752.html

Patch

diff --git a/lib/bb/fetch2/__init__.py b/lib/bb/fetch2/__init__.py
index e5c4b34..414cc2b 100644
--- a/lib/bb/fetch2/__init__.py
+++ b/lib/bb/fetch2/__init__.py
@@ -476,9 +476,10 @@  def try_mirrors(d, origud, mirrors, check = False):
 
             if not os.path.exists(ud.donestamp) or ud.method.need_update(newuri, ud, ld):
                 ud.method.download(newuri, ud, ld)
-                open(ud.donestamp, 'w').close()
-                if hasattr(ud.method,"build_mirror_data"):
-                    ud.method.build_mirror_data(newuri, ud, ld)
+                if os.path.exists(ud.localpath):
+                    open(ud.donestamp, 'w').close()
+                    if hasattr(ud.method,"build_mirror_data"):
+                        ud.method.build_mirror_data(newuri, ud, ld)
 
             if not ud.localpath or not os.path.exists(ud.localpath):
                 continue