summaryrefslogtreecommitdiff
path: root/meta/lib
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:20 +0000
commit74adb14b0002e20099cc2c34e01862e8ddb8e013 (patch)
tree81188f69a5b87d62c01fc6edffab33f5d09741df /meta/lib
parent01a242645cc12daed3f4da30d8c49813642d75e6 (diff)
downloadopenembedded-core-74adb14b0002e20099cc2c34e01862e8ddb8e013.tar.gz
openembedded-core-74adb14b0002e20099cc2c34e01862e8ddb8e013.tar.bz2
openembedded-core-74adb14b0002e20099cc2c34e01862e8ddb8e013.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] Signed-off-by: Mariano Lopez <mariano.lopez@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/lib')
-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)