[OE-core] [opkg-utils PATCH] opkg-make-index: use ctime instead of mtime
richard.purdie at linuxfoundation.org
richard.purdie at linuxfoundation.org
Sat Oct 20 09:16:14 UTC 2018
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>
(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 Openembedded-core
mailing list