]> code.ossystems Code Review - openembedded-core.git/commitdiff
package_manager.py: Fix race condition in OpkgIndexer.write_index()
authorMariano Lopez <mariano.lopez@linux.intel.com>
Fri, 11 Mar 2016 07:29:17 +0000 (07:29 +0000)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Sat, 12 Mar 2016 22:11:20 +0000 (22:11 +0000)
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>
meta/lib/oe/package_manager.py

index 607e7c6eaa2dadf3f596540349f9924d865288b1..919104f1070f65032ee1f15732c42f9f7bc983e1 100644 (file)
@@ -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)