merge of '76e1e69496801009ea0aa69c84f76e858978ab99'
[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
10 IPKG_ARGS = "-f ${T}/ipkg.conf -o ${IMAGE_ROOTFS} ${@base_conditional("PACKAGE_INSTALL_NO_DEPS", "1", "-nodeps", "", d)}"
11
12 DISTRO_EXTRA_RDEPENDS += " ipkg ipkg-collateral "
13 PACKAGE_INSTALL_NO_DEPS ?= "0"
14
15 rootfs_ipk_do_indexes () {
16         set -x
17
18         ipkgarchs="${PACKAGE_ARCHS}"
19
20         if [ -z "${DEPLOY_KEEP_PACKAGES}" ]; then
21                 touch ${DEPLOY_DIR_IPK}/Packages
22                 ipkg-make-index -r ${DEPLOY_DIR_IPK}/Packages -p ${DEPLOY_DIR_IPK}/Packages -l ${DEPLOY_DIR_IPK}/Packages.filelist -m ${DEPLOY_DIR_IPK}
23         fi
24
25         for arch in $ipkgarchs; do
26                 if [ -z "${DEPLOY_KEEP_PACKAGES}" ]; then
27                         if [ -e ${DEPLOY_DIR_IPK}/$arch/ ] ; then 
28                                 touch ${DEPLOY_DIR_IPK}/$arch/Packages
29                                 ipkg-make-index -r ${DEPLOY_DIR_IPK}/$arch/Packages -p ${DEPLOY_DIR_IPK}/$arch/Packages -l ${DEPLOY_DIR_IPK}/$arch/Packages.filelist -m ${DEPLOY_DIR_IPK}/$arch/
30                         fi
31                 fi
32         done
33 }
34
35 fakeroot rootfs_ipk_do_rootfs () {
36         set -x
37
38         rootfs_ipk_do_indexes
39
40         mkdir -p ${IMAGE_ROOTFS}/dev
41         mkdir -p ${T}
42
43         #Add deploy/ipk as well for backward compat
44         echo "src oe file:${DEPLOY_DIR_IPK}" > ${T}/ipkg.conf
45         ipkgarchs="${PACKAGE_ARCHS}"
46
47         priority=1
48         for arch in $ipkgarchs; do
49                 echo "arch $arch $priority" >> ${T}/ipkg.conf
50                 priority=$(expr $priority + 5)
51                 if [ -e ${DEPLOY_DIR_IPK}/$arch/Packages ] ; then
52                         echo "src oe-$arch file:${DEPLOY_DIR_IPK}/$arch" >> ${T}/ipkg.conf
53             fi
54         done
55         ipkg-cl ${IPKG_ARGS} update
56         if [ ! -z "${LINGUAS_INSTALL}" ]; then
57                 ipkg-cl ${IPKG_ARGS} install glibc-localedata-i18n
58                 for i in ${LINGUAS_INSTALL}; do
59                         ipkg-cl ${IPKG_ARGS} install $i
60                 done
61         fi
62         if [ ! -z "${PACKAGE_INSTALL}" ]; then
63                 ipkg-cl ${IPKG_ARGS} install ${PACKAGE_INSTALL}
64         fi
65
66         export D=${IMAGE_ROOTFS}
67         export OFFLINE_ROOT=${IMAGE_ROOTFS}
68         export IPKG_OFFLINE_ROOT=${IMAGE_ROOTFS}
69         mkdir -p ${IMAGE_ROOTFS}/etc/ipkg/
70         grep "^arch" ${T}/ipkg.conf >${IMAGE_ROOTFS}/etc/ipkg/arch.conf
71
72         for i in ${IMAGE_ROOTFS}${libdir}/ipkg/info/*.preinst; do
73                 if [ -f $i ] && ! sh $i; then
74                         ipkg-cl ${IPKG_ARGS} flag unpacked `basename $i .preinst`
75                 fi
76         done
77         for i in ${IMAGE_ROOTFS}${libdir}/ipkg/info/*.postinst; do
78                 if [ -f $i ] && ! sh $i configure; then
79                         ipkg-cl ${IPKG_ARGS} flag unpacked `basename $i .postinst`
80                 fi
81         done
82
83         install -d ${IMAGE_ROOTFS}/${sysconfdir}
84         echo ${BUILDNAME} > ${IMAGE_ROOTFS}/${sysconfdir}/version
85
86         ${ROOTFS_POSTPROCESS_COMMAND}
87         
88         log_check rootfs        
89 }
90
91 rootfs_ipk_log_check() {
92         target="$1"
93         lf_path="$2"
94
95         lf_txt="`cat $lf_path`"
96         for keyword_die in "Cannot find package" "exit 1" ERR Fail
97         do                              
98                 if (echo "$lf_txt" | grep -v log_check | grep "$keyword_die") >/dev/null 2>&1
99                 then
100                         echo "log_check: There were error messages in the logfile"
101                         echo -e "log_check: Matched keyword: [$keyword_die]\n"
102                         echo "$lf_txt" | grep -v log_check | grep -i "$keyword_die" -C1
103                         echo ""
104                         do_exit=1                               
105                 fi
106         done
107         test "$do_exit" = 1 && exit 1
108         true
109 }