Qtopia/X11: Install the right Qtopia XSession start script as well
[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] += "ipkg-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 += " ipkg ipkg-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         ipkg-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                         ipkg-cl ${IPKG_ARGS} install glibc-localedata-i18n
30                         for i in ${LINGUAS_INSTALL}; do
31                                 ipkg-cl ${IPKG_ARGS} install $i 
32                         done
33                 fi
34         fi
35         if [ ! -z "${PACKAGE_INSTALL}" ]; then
36                 ipkg-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         mkdir -p ${IMAGE_ROOTFS}${sysconfdir}/ipkg/
43         grep "^arch" ${IPKGCONF_TARGET} >${IMAGE_ROOTFS}${sysconfdir}/ipkg/arch.conf
44
45         for i in ${IMAGE_ROOTFS}${libdir}/ipkg/info/*.preinst; do
46                 if [ -f $i ] && ! sh $i; then
47                         ipkg-cl ${IPKG_ARGS} flag unpacked `basename $i .preinst`
48                 fi
49         done
50         for i in ${IMAGE_ROOTFS}${libdir}/ipkg/info/*.postinst; do
51                 if [ -f $i ] && ! sh $i configure; then
52                         ipkg-cl ${IPKG_ARGS} flag unpacked `basename $i .postinst`
53                 fi
54         done
55
56         install -d ${IMAGE_ROOTFS}/${sysconfdir}
57         echo ${BUILDNAME} > ${IMAGE_ROOTFS}/${sysconfdir}/version
58
59         ${ROOTFS_POSTPROCESS_COMMAND}
60         
61         log_check rootfs        
62 }
63
64 rootfs_ipk_log_check() {
65         target="$1"
66         lf_path="$2"
67
68         lf_txt="`cat $lf_path`"
69         for keyword_die in "Cannot find package" "exit 1" ERR Fail
70         do                              
71                 if (echo "$lf_txt" | grep -v log_check | grep "$keyword_die") >/dev/null 2>&1
72                 then
73                         echo "log_check: There were error messages in the logfile"
74                         printf "log_check: Matched keyword: [$keyword_die]\n"
75                         echo "$lf_txt" | grep -v log_check | grep -i "$keyword_die" -C1
76                         echo ""
77                         do_exit=1                               
78                 fi
79         done
80         test "$do_exit" = 1 && exit 1
81         true
82 }
83
84 remove_packaging_data_files() {
85         rm -rf ${IMAGE_ROOTFS}${libdir}/ipkg/
86 }