summaryrefslogtreecommitdiff
path: root/classes/rootfs_ipk.bbclass
diff options
context:
space:
mode:
Diffstat (limited to 'classes/rootfs_ipk.bbclass')
-rw-r--r--classes/rootfs_ipk.bbclass40
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