merge of '07a342693675fe2b1daacf0eb62302579d9fade3'
[org.openembedded.dev.git] / classes / rootfs_ipk.bbclass
blob02c5e691fc086dab6f070c975f9645457f162851
2 # Creates a root filesystem out of IPKs
4 # This rootfs can be mounted via root-nfs or it can be put into an cramfs/jffs etc.
5 # See image.bbclass for a usage of this.
8 do_rootfs[depends] += "opkg-native:do_populate_staging ipkg-utils-native:do_populate_staging"
9 do_rootfs[recrdeptask] += "do_package_write_ipk"
11 IPKG_ARGS = "-f ${IPKGCONF_TARGET} -o ${IMAGE_ROOTFS} ${@base_conditional("PACKAGE_INSTALL_NO_DEPS", "1", "-nodeps", "", d)}"
13 DISTRO_EXTRA_RDEPENDS += " opkg opkg-collateral "
14 PACKAGE_INSTALL_NO_DEPS ?= "0"
16 fakeroot rootfs_ipk_do_rootfs () {
17         set -x
19         package_update_index_ipk
20         package_generate_ipkg_conf
22         mkdir -p ${T}
24         opkg-cl ${IPKG_ARGS} update
26         # Uclibc builds don't provide this stuff...
27         if [ x${TARGET_OS} = "xlinux" ] || [ x${TARGET_OS} = "xlinux-gnueabi" ] ; then 
28                 if [ ! -z "${LINGUAS_INSTALL}" ]; then
29                         opkg-cl ${IPKG_ARGS} install glibc-localedata-i18n
30                         for i in ${LINGUAS_INSTALL}; do
31                                 opkg-cl ${IPKG_ARGS} install $i 
32                         done
33                 fi
34         fi
35         if [ ! -z "${PACKAGE_INSTALL}" ]; then
36                 opkg-cl ${IPKG_ARGS} install ${PACKAGE_INSTALL}
37         fi
39         export D=${IMAGE_ROOTFS}
40         export OFFLINE_ROOT=${IMAGE_ROOTFS}
41         export IPKG_OFFLINE_ROOT=${IMAGE_ROOTFS}
42         export OPKG_OFFLINE_ROOT=${IPKG_OFFLINE_ROOT}
43         
44         mkdir -p ${IMAGE_ROOTFS}${sysconfdir}/opkg/
45         grep "^arch" ${IPKGCONF_TARGET} >${IMAGE_ROOTFS}${sysconfdir}/opkg/arch.conf
47         for i in ${IMAGE_ROOTFS}${libdir}/opkg/info/*.preinst; do
48                 if [ -f $i ] && ! sh $i; then
49                         opkg-cl ${IPKG_ARGS} flag unpacked `basename $i .preinst`
50                 fi
51         done
52         for i in ${IMAGE_ROOTFS}${libdir}/opkg/info/*.postinst; do
53                 if [ -f $i ] && ! sh $i configure; then
54                         opkg-cl ${IPKG_ARGS} flag unpacked `basename $i .postinst`
55                 fi
56         done
58         install -d ${IMAGE_ROOTFS}/${sysconfdir}
59         echo ${BUILDNAME} > ${IMAGE_ROOTFS}/${sysconfdir}/version
61         rm -f ${IMAGE_ROOTFS}${libdir}/opkg/lists/*
62         
63         # Keep these lines until package manager selection is implemented
64         ln -s opkg ${IMAGE_ROOTFS}${sysconfdir}/ipkg
65         ln -s opkg ${IMAGE_ROOTFS}${libdir}/ipkg
66         
67         ${ROOTFS_POSTPROCESS_COMMAND}
68         
69         log_check rootfs        
72 rootfs_ipk_log_check() {
73         target="$1"
74         lf_path="$2"
76         lf_txt="`cat $lf_path`"
77         for keyword_die in "Cannot find package" "exit 1" ERR Fail
78         do                              
79                 if (echo "$lf_txt" | grep -v log_check | grep "$keyword_die") >/dev/null 2>&1
80                 then
81                         echo "log_check: There were error messages in the logfile"
82                         printf "log_check: Matched keyword: [$keyword_die]\n"
83                         echo "$lf_txt" | grep -v log_check | grep -i "$keyword_die" -C1
84                         echo ""
85                         do_exit=1                               
86                 fi
87         done
88         test "$do_exit" = 1 && exit 1
89         true
92 remove_packaging_data_files() {
93         rm -rf ${IMAGE_ROOTFS}${libdir}/opkg/