[OE-core] [thud][PATCH] opkg-utils: backport a patch to fix a sstate timestamp issue
Stefan Agner
stefan at agner.ch
Thu Apr 25 13:08:49 UTC 2019
On 05.04.2019 16:22, liu.ming50 at gmail.com wrote:
> From: Ming Liu <liu.ming50 at gmail.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.
FWIW,
Acked-by Stefan Agner <stefan.agner at toradex.com>
I fixed this in master, and it actually helps us resolving issues we see
on CI on thud branch.
--
Stefan
>
> Signed-off-by: Ming Liu <liu.ming50 at gmail.com>
> ---
> ...pkg-make-index-use-ctime-instead-of-mtime.patch | 59 ++++++++++++++++++++++
> .../opkg-utils/opkg-utils_0.3.6.bb | 1 +
> 2 files changed, 60 insertions(+)
> create mode 100644
> meta/recipes-devtools/opkg-utils/opkg-utils/0001-opkg-make-index-use-ctime-instead-of-mtime.patch
>
> diff --git
> a/meta/recipes-devtools/opkg-utils/opkg-utils/0001-opkg-make-index-use-ctime-instead-of-mtime.patch
> b/meta/recipes-devtools/opkg-utils/opkg-utils/0001-opkg-make-index-use-ctime-instead-of-mtime.patch
> new file mode 100644
> index 0000000..19778ac
> --- /dev/null
> +++
> b/meta/recipes-devtools/opkg-utils/opkg-utils/0001-opkg-make-index-use-ctime-instead-of-mtime.patch
> @@ -0,0 +1,59 @@
> +From 0cd38bb1bdcdbfc091014a1f39d015a1586a33e6 Mon Sep 17 00:00:00 2001
> +From: Stefan Agner <stefan.agner at toradex.com>
> +Date: Fri, 19 Oct 2018 17:38:21 +0200
> +Subject: [PATCH] opkg-make-index: use ctime instead of mtime
> +
> +Upstream-Status: Backport
> +
> +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>
> +Acked-by: Khem Raj <raj.khem at gmail.com>
> +Signed-off-by: Alejandro del Castillo <alejandro.delcastillo at ni.com>
> +Signed-off-by: Ming Liu <liu.ming50 at gmail.com>
> +---
> + 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
> +--
> +2.7.4
> +
> diff --git a/meta/recipes-devtools/opkg-utils/opkg-utils_0.3.6.bb
> b/meta/recipes-devtools/opkg-utils/opkg-utils_0.3.6.bb
> index 4c41774..41cf11c 100644
> --- a/meta/recipes-devtools/opkg-utils/opkg-utils_0.3.6.bb
> +++ b/meta/recipes-devtools/opkg-utils/opkg-utils_0.3.6.bb
> @@ -14,6 +14,7 @@ SRC_URI =
> "http://git.yoctoproject.org/cgit/cgit.cgi/${BPN}/snapshot/${BPN}-${PV
> file://threaded-xz.patch \
> file://pigz.patch \
> file://0001-update-alternatives-Fix-link-relocation-support.patch \
> + file://0001-opkg-make-index-use-ctime-instead-of-mtime.patch \
> "
> SRC_URI_append_class-native = " file://tar_ignore_error.patch"
> UPSTREAM_CHECK_URI =
> "http://git.yoctoproject.org/cgit/cgit.cgi/opkg-utils/refs/"
> --
> 2.7.4
More information about the Openembedded-core
mailing list