diff options
author | Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com> | 2014-03-17 09:30:37 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2014-03-19 14:19:07 +0000 |
commit | aec1194c120e5eae12cee18741d368ac3bb11722 (patch) | |
tree | 93a8c12d31ee80bbc704eafcc23c57cc1df23a0c | |
parent | 5baa4d7e684961b1572e3a692fba63beba582d94 (diff) | |
download | poky-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.py | 12 |
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 | ||