diff options
Diffstat (limited to 'meta/classes/rootfs_deb.bbclass')
| -rw-r--r-- | meta/classes/rootfs_deb.bbclass | 155 |
1 files changed, 28 insertions, 127 deletions
diff --git a/meta/classes/rootfs_deb.bbclass b/meta/classes/rootfs_deb.bbclass index 3989dc333b..10af4b5ff0 100644 --- a/meta/classes/rootfs_deb.bbclass +++ b/meta/classes/rootfs_deb.bbclass @@ -1,136 +1,37 @@ +# +# Copyright 2006-2007 Openedhand Ltd. +# -do_rootfs[depends] += "dpkg-native:do_populate_staging apt-native:do_populate_staging" +ROOTFS_PKGMANAGE = "dpkg apt" -fakeroot rootfs_deb_do_rootfs () { - set +e - mkdir -p ${IMAGE_ROOTFS}/var/dpkg/{info,updates} +do_rootfs[depends] += "dpkg-native:do_populate_sysroot apt-native:do_populate_sysroot" +do_populate_sdk[depends] += "dpkg-native:do_populate_sysroot apt-native:do_populate_sysroot bzip2-native:do_populate_sysroot" +do_rootfs[recrdeptask] += "do_package_write_deb" +do_rootfs[vardeps] += "PACKAGE_FEED_URIS" - rm -f ${STAGING_DIR}/etc/apt/sources.list.rev - rm -f ${STAGING_DIR}/etc/apt/preferences - > ${IMAGE_ROOTFS}/var/dpkg/status - > ${IMAGE_ROOTFS}/var/dpkg/available - # > ${STAGING_DIR}/var/dpkg/status +do_rootfs[lockfiles] += "${DEPLOY_DIR_DEB}/deb.lock" +do_populate_sdk[lockfiles] += "${DEPLOY_DIR_DEB}/deb.lock" - priority=1 - for arch in ${PACKAGE_ARCHS}; do - if [ ! -d ${DEPLOY_DIR_DEB}/$arch ]; then - continue; - fi - cd ${DEPLOY_DIR_DEB}/$arch - # if [ -z "${DEPLOY_KEEP_PACKAGES}" ]; then - rm -f Packages.gz Packages Packages.bz2 - # fi - apt-ftparchive packages . | bzip2 > Packages.bz2 - echo "Label: $arch" > Release - - echo "deb file:${DEPLOY_DIR_DEB}/$arch/ ./" >> ${STAGING_DIR}/etc/apt/sources.list.rev - (echo "Package: *" - echo "Pin: release l=$arch" - echo "Pin-Priority: $((800 + $priority))" - echo) >> ${STAGING_DIR}/etc/apt/preferences - priority=$(expr $priority + 5) - done - - tac ${STAGING_DIR}/etc/apt/sources.list.rev > ${STAGING_DIR}/etc/apt/sources.list - - cat "${STAGING_DIR}/etc/apt/apt.conf.sample" \ - | sed -e 's#Architecture ".*";#Architecture "${TARGET_ARCH}";#' \ - > "${STAGING_DIR}/etc/apt/apt-rootfs.conf" - - export APT_CONFIG="${STAGING_DIR}/etc/apt/apt-rootfs.conf" - export D=${IMAGE_ROOTFS} - export OFFLINE_ROOT=${IMAGE_ROOTFS} - export IPKG_OFFLINE_ROOT=${IMAGE_ROOTFS} - - apt-get update - - _flag () { - sed -i -e "/^Package: $2\$/{n; s/Status: install ok .*/Status: install ok $1/;}" ${IMAGE_ROOTFS}/var/dpkg/status - } - _getflag () { - cat ${IMAGE_ROOTFS}/var/dpkg/status | sed -n -e "/^Package: $2\$/{n; s/Status: install ok .*/$1/; p}" - } - - if [ ! -z "${LINGUAS_INSTALL}" ]; then - apt-get install glibc-localedata-i18n - if [ $? -ne 0 ]; then - exit $? - fi - for i in ${LINGUAS_INSTALL}; do - apt-get install $i - if [ $? -ne 0 ]; then - exit $? - fi - done - fi - - if [ ! -z "${PACKAGE_INSTALL}" ]; then - for i in ${PACKAGE_INSTALL}; do - apt-get install $i - if [ $? -eq 1 ]; then - exit 1 - fi - find ${IMAGE_ROOTFS} -name \*.dpkg-new | for i in `cat`; do - mv $i `echo $i | sed -e's,\.dpkg-new$,,'` - done - done - fi - - install -d ${IMAGE_ROOTFS}/${sysconfdir} - echo ${BUILDNAME} > ${IMAGE_ROOTFS}/${sysconfdir}/version - - # Mark all packages installed - sed -i -e "s/Status: install ok unpacked/Status: install ok installed/;" ${IMAGE_ROOTFS}/var/dpkg/status - - # Attempt to run preinsts - # Mark packages with preinst failures as unpacked - for i in ${IMAGE_ROOTFS}/var/dpkg/info/*.preinst; do - if [ -f $i ] && ! sh $i; then - _flag unpacked `basename $i .preinst` - fi - done - - # Attempt to run postinsts - # Mark packages with postinst failures as unpacked - for i in ${IMAGE_ROOTFS}/var/dpkg/info/*.postinst; do - if [ -f $i ] && ! sh $i configure; then - _flag unpacked `basename $i .postinst` - fi - done - - set -e - - # Hacks to make dpkg/ipkg coexist for now - mv ${IMAGE_ROOTFS}/var/dpkg ${IMAGE_ROOTFS}/usr/ - if [ -e ${IMAGE_ROOTFS}/usr/dpkg/alternatives ]; then - rmdir ${IMAGE_ROOTFS}/usr/dpkg/alternatives - fi - ln -s /usr/lib/ipkg/alternatives ${IMAGE_ROOTFS}/usr/dpkg/alternatives - ln -s /usr/dpkg/info ${IMAGE_ROOTFS}/usr/lib/ipkg/info - ln -s /usr/dpkg/status ${IMAGE_ROOTFS}/usr/lib/ipkg/status - - ${ROOTFS_POSTPROCESS_COMMAND} - - log_check rootfs +python rootfs_deb_bad_recommendations() { + if d.getVar("BAD_RECOMMENDATIONS"): + bb.warn("Debian package install does not support BAD_RECOMMENDATIONS") } +do_rootfs[prefuncs] += "rootfs_deb_bad_recommendations" + +DEB_POSTPROCESS_COMMANDS = "" -rootfs_deb_log_check() { - target="$1" - lf_path="$2" +opkglibdir = "${localstatedir}/lib/opkg" - lf_txt="`cat $lf_path`" - for keyword_die in "E:" - do - if (echo "$lf_txt" | grep -v log_check | grep "$keyword_die") >/dev/null 2>&1 - then - echo "log_check: There were error messages in the logfile" - echo -e "log_check: Matched keyword: [$keyword_die]\n" - echo "$lf_txt" | grep -v log_check | grep -C 5 -i "$keyword_die" - echo "" - do_exit=1 - fi - done - test "$do_exit" = 1 && exit 1 - true +python () { + # Map TARGET_ARCH to Debian's ideas about architectures + darch = d.getVar('SDK_ARCH') + if darch in ["x86", "i486", "i586", "i686", "pentium"]: + d.setVar('DEB_SDK_ARCH', 'i386') + elif darch == "x86_64": + d.setVar('DEB_SDK_ARCH', 'amd64') + elif darch == "arm": + d.setVar('DEB_SDK_ARCH', 'armel') } +# This will of course only work after rootfs_deb_do_rootfs or populate_sdk_deb has been called +DPKG_QUERY_COMMAND = "${STAGING_BINDIR_NATIVE}/dpkg-query --admindir=$INSTALL_ROOTFS_DEB/var/lib/dpkg" |
