summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRicardo Ribalda Delgado <ricardo.ribalda@gmail.com>2014-03-17 09:30:37 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2014-03-19 14:19:07 +0000
commitaec1194c120e5eae12cee18741d368ac3bb11722 (patch)
tree93a8c12d31ee80bbc704eafcc23c57cc1df23a0c
parent5baa4d7e684961b1572e3a692fba63beba582d94 (diff)
downloadpoky-aec1194c120e5eae12cee18741d368ac3bb11722.tar.gz
package_manager: Use apt-ftparchive for deb packages
Use apt-ftparchive to create a Release file compatible with SecureApt. apt-ftparchive is also a more efficient replacement of dpkg-scanpackages: root@neopili:~/curro/qtec/qt5022/build-qt5022-cesium/build/tmp/deploy/deb/bobcat _64# time PSEUDO_UNLOAD=1 apt-ftparchive packages . >/tmp/kkk real 0m26.873s user 0m20.968s sys 0m1.212s root@neopili:~/curro/qtec/qt5022/build-qt5022-cesium/build/tmp/deploy/deb/bobcat _64# time PSEUDO_UNLOAD=1 dpkg-scanpackages . >/tmp/kkk dpkg-scanpackages: info: Wrote 6022 entries to output Packages file. real 0m59.721s user 0m16.668s sys 0m11.164s apt-ftparchive is not compatible with libpseudo. The calls to ftw() returns the path in absolute format instead of relative. This produces wrong Packages and Release files. ie: MD5Sum: d20227a958f6870137ce0e41b7b84307 1453 /home/ricardo/curro/qtec/qt5022/build-qt5022-cesium/build/tmp/deploy/deb/all/Release This is why it is called with PSEUDO_UNLOAD. (From OE-Core rev: c9899a7605f15f7f1ae30c4624d53c7da825b00a) Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/lib/oe/package_manager.py12
1 files changed, 9 insertions, 3 deletions
diff --git a/meta/lib/oe/package_manager.py b/meta/lib/oe/package_manager.py
index 1279b50e99..ec96bb3d62 100644
--- a/meta/lib/oe/package_manager.py
+++ b/meta/lib/oe/package_manager.py
@@ -180,7 +180,7 @@ class DpkgIndexer(Indexer):
180 if sdk_pkg_archs is not None: 180 if sdk_pkg_archs is not None:
181 arch_list += sdk_pkg_archs.split() 181 arch_list += sdk_pkg_archs.split()
182 182
183 dpkg_scanpackages = bb.utils.which(os.getenv('PATH'), "dpkg-scanpackages") 183 apt_ftparchive = bb.utils.which(os.getenv('PATH'), "apt-ftparchive")
184 gzip = bb.utils.which(os.getenv('PATH'), "gzip") 184 gzip = bb.utils.which(os.getenv('PATH'), "gzip")
185 185
186 index_cmds = [] 186 index_cmds = []
@@ -190,11 +190,17 @@ class DpkgIndexer(Indexer):
190 if not os.path.isdir(arch_dir): 190 if not os.path.isdir(arch_dir):
191 continue 191 continue
192 192
193 index_cmds.append("cd %s; PSEUDO_UNLOAD=1 %s packages > Packages" %
194 (arch_dir, apt_ftparchive))
195
196 index_cmds.append("cd %s; %s Packages -c > Packages.gz" %
197 (arch_dir, gzip))
198
193 with open(os.path.join(arch_dir, "Release"), "w+") as release: 199 with open(os.path.join(arch_dir, "Release"), "w+") as release:
194 release.write("Label: %s" % arch) 200 release.write("Label: %s" % arch)
195 201
196 index_cmds.append("cd %s; %s . | %s > Packages.gz" % 202 index_cmds.append("cd %s; PSEUDO_UNLOAD=1 %s release >> Release" %
197 (arch_dir, dpkg_scanpackages, gzip)) 203 (arch_dir, apt_ftparchive))
198 204
199 deb_dirs_found = True 205 deb_dirs_found = True
200 206