[poky] SRC checksum checking broken
Gary Thomas
gary at mlbassoc.com
Tue Apr 17 09:59:45 PDT 2012
On 2012-04-17 10:19, Richard Purdie wrote:
> 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.
Well, it seems that the checksums are encouraged, if not required, these days.
I was just making sure that they actually work & in my opinion, it shouldn't
matter how you got the file, the checksums should still be checked and match.
>
> 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:
Sadly, this is much worse. It even [somehow] reached "through" my
mirror setup and deleted the file on the backing store (i.e. the
file /work/misc/Poky/sources/busybox-1.19.4.tar.bz2 gets deleted
when the checksum fails even though it's part of the own-mirror)
--
------------------------------------------------------------
Gary Thomas | Consulting for the
MLB Associates | Embedded world
------------------------------------------------------------
More information about the poky
mailing list