diff options
author | Paul Eggleton <paul.eggleton@linux.intel.com> | 2011-12-22 14:46:32 +0000 |
---|---|---|
committer | Saul Wold <sgw@linux.intel.com> | 2012-01-02 20:26:25 -0800 |
commit | c0fc36f8629a6abb9a7b542df8a2857526547a31 (patch) | |
tree | e93356851c58b384242fbc3d766d7ca967d6ba16 /meta/classes/rootfs_deb.bbclass | |
parent | e0ebe12541a6628b7629a9be5918d0e7ea92aa33 (diff) | |
download | openembedded-core-c0fc36f8629a6abb9a7b542df8a2857526547a31.tar.gz openembedded-core-c0fc36f8629a6abb9a7b542df8a2857526547a31.tar.bz2 openembedded-core-c0fc36f8629a6abb9a7b542df8a2857526547a31.tar.xz openembedded-core-c0fc36f8629a6abb9a7b542df8a2857526547a31.zip |
classes/image: implement generic locale package installation
Let each package-specific rootfs implementation provide basic functions
to query the existence of a package and install a list of packages and
then have a generic install function so this logic is in one place.
Note: unlike previous versions of this code in OE-Core this uses the
IMAGE_LINGUAS variable and not IMAGE_LOCALES - note that IMAGE_LINGUAS
was what was used in OE-Classic and it is already used in OE-Core in
order to install locale-base-*. This will mean that if IMAGE_LINGUAS is
left at the default you will now get more packages installed. If you
don't want these language support packages then you should set
IMAGE_LINGUAS explicitly.
This restores locale installation to the same state as OE-Classic, only
we now support all the packaging backends.
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Diffstat (limited to 'meta/classes/rootfs_deb.bbclass')
-rw-r--r-- | meta/classes/rootfs_deb.bbclass | 37 |
1 files changed, 27 insertions, 10 deletions
diff --git a/meta/classes/rootfs_deb.bbclass b/meta/classes/rootfs_deb.bbclass index bef055c6f..b6c706c58 100644 --- a/meta/classes/rootfs_deb.bbclass +++ b/meta/classes/rootfs_deb.bbclass @@ -8,8 +8,18 @@ ROOTFS_PKGMANAGE_BOOTSTRAP = "run-postinsts" do_rootfs[depends] += "dpkg-native:do_populate_sysroot apt-native:do_populate_sysroot" do_rootfs[recrdeptask] += "do_package_write_deb" +DEB_POSTPROCESS_COMMANDS = "rootfs_install_all_locales; " + opkglibdir = "${localstatedir}/lib/opkg" +deb_package_setflag() { + sed -i -e "/^Package: $2\$/{n; s/Status: install ok .*/Status: install ok $1/;}" ${IMAGE_ROOTFS}/var/lib/dpkg/status +} + +deb_package_getflag() { + cat ${IMAGE_ROOTFS}/var/lib/dpkg/status | sed -n -e "/^Package: $2\$/{n; s/Status: install ok .*/$1/; p}" +} + fakeroot rootfs_deb_do_rootfs () { set +e @@ -28,25 +38,18 @@ fakeroot rootfs_deb_do_rootfs () { export INSTALL_TASK_DEB="rootfs" package_install_internal_deb - + ${DEB_POSTPROCESS_COMMANDS} export D=${IMAGE_ROOTFS} export OFFLINE_ROOT=${IMAGE_ROOTFS} export IPKG_OFFLINE_ROOT=${IMAGE_ROOTFS} export OPKG_OFFLINE_ROOT=${IMAGE_ROOTFS} - _flag () { - sed -i -e "/^Package: $2\$/{n; s/Status: install ok .*/Status: install ok $1/;}" ${IMAGE_ROOTFS}/var/lib/dpkg/status - } - _getflag () { - cat ${IMAGE_ROOTFS}/var/lib/dpkg/status | sed -n -e "/^Package: $2\$/{n; s/Status: install ok .*/$1/; p}" - } - # Attempt to run preinsts # Mark packages with preinst failures as unpacked for i in ${IMAGE_ROOTFS}/var/lib/dpkg/info/*.preinst; do if [ -f $i ] && ! sh $i; then - _flag unpacked `basename $i .preinst` + deb_package_setflag unpacked `basename $i .preinst` fi done @@ -54,7 +57,7 @@ fakeroot rootfs_deb_do_rootfs () { # Mark packages with postinst failures as unpacked for i in ${IMAGE_ROOTFS}/var/lib/dpkg/info/*.postinst; do if [ -f $i ] && ! sh $i configure; then - _flag unpacked `basename $i .postinst` + deb_package_setflag unpacked `basename $i .postinst` fi done @@ -104,3 +107,17 @@ list_package_depends() { list_package_recommends() { ${DPKG_QUERY_COMMAND} -s $1 | grep ^Recommends | sed -e 's/^Recommends: //' -e 's/,//g' -e 's:([=<>]* [0-9a-zA-Z.~\-]*)::g' } + +rootfs_check_package_exists() { + if [ `apt-cache showpkg $1 | wc -l` -gt 2 ]; then + echo $1 + fi +} + +rootfs_install_packages() { + ${STAGING_BINDIR_NATIVE}/apt-get install $@ --force-yes --allow-unauthenticated + + for pkg in $@ ; do + deb_package_setflag installed $pkg + done +} |