[OE-core] [opkg-devel] [opkg-utils PATCH] opkg-make-index: use ctime instead of mtime

Alejandro Del Castillo alejandro.delcastillo at ni.com
Mon Oct 22 14:45:37 UTC 2018


makes sense, sounds like this is going to fix a bunch of nasty 
intermittent failures, thanks!

merged

On 10/19/18 10:38 AM, Stefan Agner wrote:
> From: Stefan Agner <stefan.agner at toradex.com>
> 
> When using sstate, two parallel builds can produce two packages
> with the same mtime but different checksums. When later one of
> those two builds fetches the others ipk, the package index does
> not get udpated properly (since mtime matches). This ends up with
> messages such as:
>    Downloading file:/../tmp/work/../image/...ipk.
>    Removing corrupt package file /../sysroot/../var/cache/opkg/volatile/...ipk
> 
> However, in that case, ctime is different. Use ctime instead of
> mtime to prevent failures like this.
> 
> Suggested-by: Khem Raj <raj.khem at gmail.com>
> Signed-off-by: Stefan Agner <stefan.agner at toradex.com>
> ---
> This addresses the issue discussed here:
> https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.openembedded.org_pipermail_openembedded-2Dcore_2018-2DOctober_156348.html&d=DwIBaQ&c=I_0YwoKy7z5LMTVdyO6YCiE2uzI1jjZZuIPelcSjixA&r=wNcrL2akRn6jfxhHaKavUrJB_C9JAMXtynjLd8ZzgXQ&m=Innit37H69hUyZPGuuhwO6R5CbUNNTfXQwxbqsEA2NE&s=oFvqASrFTgasDqZ901HeIBFSsf6Cn4FcBieOOBU4MdI&e=
> 
>   opkg-make-index | 6 +++---
>   1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/opkg-make-index b/opkg-make-index
> index 3227fc0..db7bf64 100755
> --- a/opkg-make-index
> +++ b/opkg-make-index
> @@ -115,12 +115,12 @@ for abspath in files:
>        pkg = None
>        fnameStat = os.stat(abspath)
>        if filename in old_pkg_hash:
> -          if filename in pkgsStamps and int(fnameStat.st_mtime) == pkgsStamps[filename]:
> +          if filename in pkgsStamps and int(fnameStat.st_ctime) == pkgsStamps[filename]:
>               if (verbose):
>                  sys.stderr.write("Found %s in Packages\n" % (filename,))
>               pkg = old_pkg_hash[filename]
>             else:
> -               sys.stderr.write("Found %s in Packages, but mtime differs - re-reading\n" % (filename,))
> +               sys.stderr.write("Found %s in Packages, but ctime differs - re-reading\n" % (filename,))
>   
>        if not pkg:
>             if (verbose):
> @@ -137,7 +137,7 @@ for abspath in files:
>        else:
>             old_filename = ""
>        s = packages.add_package(pkg, opt_a)
> -     pkgsStamps[filename] = fnameStat.st_mtime
> +     pkgsStamps[filename] = fnameStat.st_ctime
>        if s == 0:
>             if old_filename:
>                  # old package was displaced by newer
> 

-- 
Cheers,

Alejandro


More information about the Openembedded-core mailing list