summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMariano Lopez <mariano.lopez@linux.intel.com>2016-03-11 07:29:17 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-03-12 22:11:47 +0000
commit36bf66654a557c570011db0b06f2084ee2ccf9cc (patch)
treea51485172e169325ff355245663819e47c721f50
parent35be67951305950ba797dc2efddbc7d88fc0556a (diff)
downloadopenembedded-core-contrib-36bf66654a557c570011db0b06f2084ee2ccf9cc.tar.gz
openembedded-core-contrib-36bf66654a557c570011db0b06f2084ee2ccf9cc.tar.bz2
openembedded-core-contrib-36bf66654a557c570011db0b06f2084ee2ccf9cc.zip
package_manager.py: Fix race condition in OpkgIndexer.write_index()
When writing the index using ipk packages there could be a race condition when populate the index. This happens because the architectures are repeated (specially all) and the commands generated to write the index run in parallel. This change avoid the duplication of commands using a set instead of a list. [YOCTO #8924] (From OE-Core rev: 74adb14b0002e20099cc2c34e01862e8ddb8e013) Signed-off-by: Mariano Lopez <mariano.lopez@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/lib/oe/package_manager.py8
1 files changed, 4 insertions, 4 deletions
diff --git a/meta/lib/oe/package_manager.py b/meta/lib/oe/package_manager.py
index 607e7c6eaa..919104f107 100644
--- a/meta/lib/oe/package_manager.py
+++ b/meta/lib/oe/package_manager.py
@@ -164,8 +164,8 @@ class OpkgIndexer(Indexer):
if not os.path.exists(os.path.join(self.deploy_dir, "Packages")):
open(os.path.join(self.deploy_dir, "Packages"), "w").close()
- index_cmds = []
- index_sign_files = []
+ index_cmds = set()
+ index_sign_files = set()
for arch_var in arch_vars:
archs = self.d.getVar(arch_var, True)
if archs is None:
@@ -181,10 +181,10 @@ class OpkgIndexer(Indexer):
if not os.path.exists(pkgs_file):
open(pkgs_file, "w").close()
- index_cmds.append('%s -r %s -p %s -m %s' %
+ index_cmds.add('%s -r %s -p %s -m %s' %
(opkg_index_cmd, pkgs_file, pkgs_file, pkgs_dir))
- index_sign_files.append(pkgs_file)
+ index_sign_files.add(pkgs_file)
if len(index_cmds) == 0:
bb.note("There are no packages in %s!" % self.deploy_dir)