diff options
Diffstat (limited to 'classes/rootfs_ipk.bbclass')
| -rw-r--r-- | classes/rootfs_ipk.bbclass | 40 |
1 files changed, 26 insertions, 14 deletions
diff --git a/classes/rootfs_ipk.bbclass b/classes/rootfs_ipk.bbclass index f5714bd1a3..77e573c260 100644 --- a/classes/rootfs_ipk.bbclass +++ b/classes/rootfs_ipk.bbclass @@ -5,10 +5,11 @@ # See image.bbclass for a usage of this. # -do_rootfs[depends] += "opkg-native:do_populate_staging ipkg-utils-native:do_populate_staging" -do_rootfs[recrdeptask] += "do_package_write_ipk" +do_rootfs[depends] += "opkg-native:do_populate_sysroot" +do_rootfs[lockfiles] = "${DEPLOY_DIR_IPK}.lock" -IPKG_ARGS = "-f ${IPKGCONF_TARGET} -o ${IMAGE_ROOTFS} ${@base_conditional("PACKAGE_INSTALL_NO_DEPS", "1", "-nodeps", "", d)}" +IPKG_TMP_DIR = "${IMAGE_ROOTFS}-tmp" +IPKG_ARGS = "-f ${IPKGCONF_TARGET} -o ${IMAGE_ROOTFS} -t ${IPKG_TMP_DIR} ${@base_conditional("PACKAGE_INSTALL_NO_DEPS", "1", "-nodeps", "", d)}" PACKAGE_INSTALL_NO_DEPS ?= "0" @@ -29,10 +30,10 @@ PACKAGE_INSTALL_append = " ${@base_conditional("ONLINE_PACKAGE_MANAGEMENT", "non fakeroot rootfs_ipk_do_rootfs () { set -x - package_update_index_ipk package_generate_ipkg_conf mkdir -p ${T} + mkdir -p ${IPKG_TMP_DIR} mkdir -p ${IMAGE_ROOTFS}${libdir}/opkg/ STATUS=${IMAGE_ROOTFS}${libdir}/opkg/status @@ -40,7 +41,7 @@ fakeroot rootfs_ipk_do_rootfs () { for i in ${BAD_RECOMMENDATIONS}; do echo "Package: $i" >> $STATUS echo "Architecture: ${TARGET_ARCH}" >> $STATUS - echo "Status: deinstall ok not-installed" >> $STATUS + echo "Status: deinstall hold not-installed" >> $STATUS echo >> $STATUS done @@ -58,31 +59,37 @@ fakeroot rootfs_ipk_do_rootfs () { if [ ! -z "${PACKAGE_INSTALL}" ]; then opkg-cl ${IPKG_ARGS} install ${PACKAGE_INSTALL} fi + if [ ! -z "${PACKAGE_INSTALL_ATTEMPTONLY}" ]; then + for i in ${PACKAGE_INSTALL_ATTEMPTONLY}; do + opkg-cl ${IPKG_ARGS} install $i 2>&1 || true + done > ${T}/log.do_rootfs-attemptonly.${PID} + fi export D=${IMAGE_ROOTFS} export OFFLINE_ROOT=${IMAGE_ROOTFS} export IPKG_OFFLINE_ROOT=${IMAGE_ROOTFS} export OPKG_OFFLINE_ROOT=${IPKG_OFFLINE_ROOT} - mkdir -p ${IMAGE_ROOTFS}${sysconfdir}/opkg/ - if [ "${ONLINE_PACKAGE_MANAGEMENT}" != "none" ]; then + mkdir -p ${IMAGE_ROOTFS}${sysconfdir}/opkg/ grep "^arch" ${IPKGCONF_TARGET} >${IMAGE_ROOTFS}${sysconfdir}/opkg/arch.conf fi for i in ${IMAGE_ROOTFS}${libdir}/opkg/info/*.preinst; do - if [ -f $i ] && ! sh $i; then + if [ -f $i ] && ! sh -e $i; then opkg-cl ${IPKG_ARGS} flag unpacked `basename $i .preinst` fi done for i in ${IMAGE_ROOTFS}${libdir}/opkg/info/*.postinst; do - if [ -f $i ] && ! sh $i configure; then + if [ -f $i ] && ! sh -e $i configure; then opkg-cl ${IPKG_ARGS} flag unpacked `basename $i .postinst` fi done install -d ${IMAGE_ROOTFS}/${sysconfdir} echo ${BUILDNAME} > ${IMAGE_ROOTFS}/${sysconfdir}/version + + ${ROOTFS_POSTPROCESS_COMMAND} if [ "${ONLINE_PACKAGE_MANAGEMENT}" != "none" ]; then if [ "${ONLINE_PACKAGE_MANAGEMENT}" == "add" ]; then @@ -91,17 +98,21 @@ fakeroot rootfs_ipk_do_rootfs () { else rm -f ${IMAGE_ROOTFS}${libdir}/opkg/lists/* fi - + + # Remove lists, but leave SHR's tmp dir if it exists. + rm -f ${IMAGE_ROOTFS}/var/lib/opkg/* || true + # Keep these lines until package manager selection is implemented ln -s opkg ${IMAGE_ROOTFS}${sysconfdir}/ipkg ln -s opkg ${IMAGE_ROOTFS}${libdir}/ipkg else rm -rf ${IMAGE_ROOTFS}${libdir}/opkg + rm -rf ${IMAGE_ROOTFS}/usr/lib/opkg + rm -rf ${IMAGE_ROOTFS}/var/lib/opkg fi - - ${ROOTFS_POSTPROCESS_COMMAND} - + log_check rootfs + rm -rf ${IPKG_TMP_DIR} } rootfs_ipk_log_check() { @@ -109,7 +120,8 @@ rootfs_ipk_log_check() { lf_path="$2" lf_txt="`cat $lf_path`" - for keyword_die in "Cannot find package" "exit 1" ERR Fail + for keyword_die in "Cannot find package" "Cannot satisfy the following dependencies" \ + "exit 1" ERR Fail do if (echo "$lf_txt" | grep -v log_check | grep -w "$keyword_die") >/dev/null 2>&1 then |
