[yocto] [opkg-utils PATCH] opkg-make-index: use ctime instead of mtime

Khem Raj raj.khem at gmail.com
Sat Oct 20 07:07:53 PDT 2018


On Sat, Oct 20, 2018 at 10:16 AM <richard.purdie at linuxfoundation.org> wrote:
>
> On Fri, 2018-10-19 at 17:38 +0200, 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>
>
> Acked-by: Richard Purdie <richard.purdie at linuxfoundation.org>
>

Yep, thats for following up with implementing it.

Acked-by: Khem Raj <raj.khem at gmail.com>

> (I've been following this problem and this makes sense to me)
>
> > ---
> > This addresses the issue discussed here:
> >
> http://lists.openembedded.org/pipermail/openembedded-core/2018-October/156348.html
> >
> >  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
>


More information about the yocto mailing list