merge of '178eac00dc5aa8338d42e8e203633bec7817bbf6'
[vuplus_openembedded] / classes / rootfs_ipk.bbclass
1 #
2 # Creates a root filesystem out of IPKs
3 #
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.
6 #
7
8 do_rootfs[depends] += "opkg-native:do_populate_staging ipkg-utils-native:do_populate_staging"
9 do_rootfs[recrdeptask] += "do_package_write_ipk"
10
11 IPKG_ARGS = "-f ${IPKGCONF_TARGET} -o ${IMAGE_ROOTFS} ${@base_conditional("PACKAGE_INSTALL_NO_DEPS", "1", "-nodeps", "", d)}"
12
13 DISTRO_EXTRA_RDEPENDS += " opkg opkg-collateral "
14 PACKAGE_INSTALL_NO_DEPS ?= "0"
15
16 fakeroot rootfs_ipk_do_rootfs () {
17         set -x
18
19         package_update_index_ipk
20         package_generate_ipkg_conf
21
22         mkdir -p ${T}
23
24         opkg-cl ${IPKG_ARGS} update
25
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
38
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
46
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
57
58         install -d ${IMAGE_ROOTFS}/${sysconfdir}
59         echo ${BUILDNAME} > ${IMAGE_ROOTFS}/${sysconfdir}/version
60
61         rm -f ${IMAGE_ROOTFS}${libdir}/opkg/lists/*
62         
63         ${ROOTFS_POSTPROCESS_COMMAND}
64         
65         log_check rootfs        
66 }
67
68 rootfs_ipk_log_check() {
69         target="$1"
70         lf_path="$2"
71
72         lf_txt="`cat $lf_path`"
73         for keyword_die in "Cannot find package" "exit 1" ERR Fail
74         do                              
75                 if (echo "$lf_txt" | grep -v log_check | grep "$keyword_die") >/dev/null 2>&1
76                 then
77                         echo "log_check: There were error messages in the logfile"
78                         printf "log_check: Matched keyword: [$keyword_die]\n"
79                         echo "$lf_txt" | grep -v log_check | grep -i "$keyword_die" -C1
80                         echo ""
81                         do_exit=1                               
82                 fi
83         done
84         test "$do_exit" = 1 && exit 1
85         true
86 }
87
88 remove_packaging_data_files() {
89         rm -rf ${IMAGE_ROOTFS}${libdir}/opkg/
90 }