summaryrefslogtreecommitdiffstats
path: root/meta/classes/rootfs_deb.bbclass
diff options
context:
space:
mode:
authorPaul Eggleton <paul.eggleton@linux.intel.com>2012-07-09 14:15:08 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2012-07-29 10:16:14 +0100
commitfa5640d143beea4be101d6622d3fa133d04272f2 (patch)
tree7ca77430c1531399bdde6caec441bae40ac69568 /meta/classes/rootfs_deb.bbclass
parenta73c25d2ded3a72159f2ce527e7307808c734686 (diff)
downloadpoky-fa5640d143beea4be101d6622d3fa133d04272f2.tar.gz
Rework installation of dev, dbg, doc, and locale packages
Use a similar mechanism that was previously used to install locales at rootfs generation time to install other "complementary" packages (e.g. *-dev packages) - i.e. install all of the explicitly requested packages and their dependencies, then get a list of the packages that were installed, and use that list to install the complementary packages. This has been implemented by using a list of globs which should make it easier to extend in future. The previous locale package installation code assumed that the locale packages did not have any dependencies that were not already installed; now that we are installing non-locale packages this is no longer correct. In practice only the rpm backend actually made use of this assumption, so it needed to be changed to call into the existing package backend code to do the complementary package installation rather than calling rpm directly. This fixes the doc-pkgs IMAGE_FEATURES feature to work correctly, and also ensures that all dev/dbg packages get installed for dev-pkgs/dbg-pkgs respectively even if the dependency chains between those packages was not ensuring that already. The code has also been adapted to work correctly with the new SDK-from-image functionality. To that end, an SDKIMAGE_FEATURES variable has been added to allow specifying what extra image features should go into the SDK (extra, because by virtue of installing all of the packages in the image into the target part of the SDK, we already include all of IMAGE_FEATURES) with a default value of "dev-pkgs dbg-pkgs". Fixes [YOCTO #2614]. (From OE-Core rev: 72d1048a8381fa4a8c4c0d082047536727b4be47) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/classes/rootfs_deb.bbclass')
-rw-r--r--meta/classes/rootfs_deb.bbclass27
1 files changed, 14 insertions, 13 deletions
diff --git a/meta/classes/rootfs_deb.bbclass b/meta/classes/rootfs_deb.bbclass
index 67871a9087..a002b1ec02 100644
--- a/meta/classes/rootfs_deb.bbclass
+++ b/meta/classes/rootfs_deb.bbclass
@@ -10,7 +10,7 @@ do_rootfs[recrdeptask] += "do_package_write_deb"
10 10
11do_rootfs[lockfiles] += "${WORKDIR}/deb.lock" 11do_rootfs[lockfiles] += "${WORKDIR}/deb.lock"
12 12
13DEB_POSTPROCESS_COMMANDS = "rootfs_install_all_locales; " 13DEB_POSTPROCESS_COMMANDS = ""
14 14
15opkglibdir = "${localstatedir}/lib/opkg" 15opkglibdir = "${localstatedir}/lib/opkg"
16 16
@@ -42,6 +42,8 @@ fakeroot rootfs_deb_do_rootfs () {
42 package_install_internal_deb 42 package_install_internal_deb
43 ${DEB_POSTPROCESS_COMMANDS} 43 ${DEB_POSTPROCESS_COMMANDS}
44 44
45 rootfs_install_complementary
46
45 export D=${IMAGE_ROOTFS} 47 export D=${IMAGE_ROOTFS}
46 export OFFLINE_ROOT=${IMAGE_ROOTFS} 48 export OFFLINE_ROOT=${IMAGE_ROOTFS}
47 export IPKG_OFFLINE_ROOT=${IMAGE_ROOTFS} 49 export IPKG_OFFLINE_ROOT=${IMAGE_ROOTFS}
@@ -87,10 +89,16 @@ remove_packaging_data_files() {
87 rm -rf ${IMAGE_ROOTFS}/usr/dpkg/ 89 rm -rf ${IMAGE_ROOTFS}/usr/dpkg/
88} 90}
89 91
90DPKG_QUERY_COMMAND = "${STAGING_BINDIR_NATIVE}/dpkg --admindir=${IMAGE_ROOTFS}/var/lib/dpkg" 92# This will of course only work after rootfs_deb_do_rootfs has been called
93DPKG_QUERY_COMMAND = "${STAGING_BINDIR_NATIVE}/dpkg-query --admindir=$INSTALL_ROOTFS_DEB/var/lib/dpkg"
91 94
92list_installed_packages() { 95list_installed_packages() {
93 ${DPKG_QUERY_COMMAND} -l | grep ^ii | awk '{ print $2 }' 96 if [ "$1" = "arch" ] ; then
97 # Here we want the PACKAGE_ARCH not the deb architecture
98 ${DPKG_QUERY_COMMAND} -W -f='${Package} ${PackageArch}\n'
99 else
100 ${DPKG_QUERY_COMMAND} -W -f='${Package}\n'
101 fi
94} 102}
95 103
96get_package_filename() { 104get_package_filename() {
@@ -110,16 +118,9 @@ list_package_recommends() {
110 ${DPKG_QUERY_COMMAND} -s $1 | grep ^Recommends | sed -e 's/^Recommends: //' -e 's/,//g' -e 's:([=<>]* [^ )]*)::g' 118 ${DPKG_QUERY_COMMAND} -s $1 | grep ^Recommends | sed -e 's/^Recommends: //' -e 's/,//g' -e 's:([=<>]* [^ )]*)::g'
111} 119}
112 120
113rootfs_check_package_exists() {
114 if [ `apt-cache policy $1 | wc -l` -gt 4 ]; then
115 echo $1
116 fi
117}
118
119rootfs_install_packages() { 121rootfs_install_packages() {
120 ${STAGING_BINDIR_NATIVE}/apt-get install $@ --force-yes --allow-unauthenticated 122 ${STAGING_BINDIR_NATIVE}/apt-get install `cat $1` --force-yes --allow-unauthenticated
121 123
122 for pkg in $@ ; do 124 # Mark all packages installed
123 deb_package_setflag installed $pkg 125 sed -i -e "s/Status: install ok unpacked/Status: install ok installed/;" $INSTALL_ROOTFS_DEB/var/lib/dpkg/status
124 done
125} 126}