[poky] SRC checksum checking broken

Richard Purdie richard.purdie at linuxfoundation.org
Tue Apr 17 09:19:49 PDT 2012


On Tue, 2012-04-17 at 09:59 -0600, Gary Thomas wrote:
> On 2012-04-17 09:44, Richard Purdie wrote:
> > On Tue, 2012-04-17 at 09:21 -0600, Gary Thomas wrote:
> >> On 2012-04-17 09:01, Richard Purdie wrote:
> >>> On Tue, 2012-04-17 at 06:17 -0600, Gary Thomas wrote:
> >>>> On 2012-04-10 19:36, Gary Thomas wrote:
> >>>> This is still broken, both in master (04d6aa1) and 1.2_M4.rc4 (4d9f4d6)
> >>>> Filed as https://bugzilla.yoctoproject.org/show_bug.cgi?id=2311
> >>>
> >>> Does this help?:
> >>>
> >>> bitbake/fetch2: Ensure directly mirrored files have their checksum validated
> >>>
> >>> Signed-off-by: Richard Purdie<richard.purdie at linuxfoundation.org>
> >>> ---
> >>> diff --git a/bitbake/lib/bb/fetch2/__init__.py b/bitbake/lib/bb/fetch2/__init__.py
> >>> index 414cc2b..e36d3ec 100644
> >>> --- a/bitbake/lib/bb/fetch2/__init__.py
> >>> +++ b/bitbake/lib/bb/fetch2/__init__.py
> >>> @@ -477,7 +477,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)
> >>>                    if os.path.exists(ud.localpath):
> >>> -                    open(ud.donestamp, 'w').close()
> >>> +                    if ud.localpath == origud.localpath:
> >>> +                        update_stamp(newuri, origud, ld)
> >>> +                    else:
> >>> +                        open(ud.donestamp, 'w').close()
> >>>                        if hasattr(ud.method,"build_mirror_data"):
> >>>                            ud.method.build_mirror_data(newuri, ud, ld)
> >>
> >> It does fix the case when using DL_DIR, but own-mirrors is still broken.
> >> Note: both used to work correctly.
> >
> > Can you give more details of the configuration please? Is this using
> > file:// urls?
> 
> Here's what I use.  I've not tried any other transport method:
>    SOURCE_MIRROR_URL ?= "file:///work/misc/Poky/sources/"
>    INHERIT += "own-mirrors"

Part of me wants to argue that its not expected to check checksums for
file:// urls, as indicated for example by the code:

def verify_checksum(u, ud, d):
    [...]
    if not ud.type in ["http", "https", "ftp", "ftps"]:
        return

but I can see a case for wanting to check the checksums I guess.

Perhaps this will work better?

diff --git a/bitbake/lib/bb/fetch2/__init__.py b/bitbake/lib/bb/fetch2/__init__.py
index 414cc2b..329b5bc 100644
--- a/bitbake/lib/bb/fetch2/__init__.py
+++ b/bitbake/lib/bb/fetch2/__init__.py
@@ -477,7 +477,6 @@ 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)
                 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)
 
@@ -492,12 +491,14 @@ def try_mirrors(d, origud, mirrors, check = False):
             dldir = ld.getVar("DL_DIR", True)
             if os.path.basename(ud.localpath) != os.path.basename(origud.localpath):
                 dest = os.path.join(dldir, os.path.basename(ud.localpath))
+                open(ud.donestamp, 'w').close()
                 if not os.path.exists(dest):
                     os.symlink(ud.localpath, dest)
                 return None
             # Otherwise the result is a local file:// and we symlink to it
             if not os.path.exists(origud.localpath):
                  os.symlink(ud.localpath, origud.localpath)
+            update_stamp(newuri, origud, ld)
             return ud.localpath
 
         except bb.fetch2.NetworkAccess:


Cheers,

Richard






More information about the poky mailing list