merge of '1549b0afc63f5679fb6877ec547a593b858995b3'
[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 ${T}
41
42         #Add deploy/ipk as well for backward compat
43         echo "src oe file:${DEPLOY_DIR_IPK}" > ${T}/ipkg.conf
44         ipkgarchs="${PACKAGE_ARCHS}"
45
46         priority=1
47         for arch in $ipkgarchs; do
48                 echo "arch $arch $priority" >> ${T}/ipkg.conf
49                 priority=$(expr $priority + 5)
50                 if [ -e ${DEPLOY_DIR_IPK}/$arch/Packages ] ; then
51                         echo "src oe-$arch file:${DEPLOY_DIR_IPK}/$arch" >> ${T}/ipkg.conf
52             fi
53         done
54         ipkg-cl ${IPKG_ARGS} update
55         if [ ! -z "${LINGUAS_INSTALL}" ]; then
56                 ipkg-cl ${IPKG_ARGS} install glibc-localedata-i18n
57                 for i in ${LINGUAS_INSTALL}; do
58                         ipkg-cl ${IPKG_ARGS} install $i
59                 done
60         fi
61         if [ ! -z "${PACKAGE_INSTALL}" ]; then
62                 ipkg-cl ${IPKG_ARGS} install ${PACKAGE_INSTALL}
63         fi
64
65         export D=${IMAGE_ROOTFS}
66         export OFFLINE_ROOT=${IMAGE_ROOTFS}
67         export IPKG_OFFLINE_ROOT=${IMAGE_ROOTFS}
68         mkdir -p ${IMAGE_ROOTFS}/etc/ipkg/
69         grep "^arch" ${T}/ipkg.conf >${IMAGE_ROOTFS}/etc/ipkg/arch.conf
70
71         for i in ${IMAGE_ROOTFS}${libdir}/ipkg/info/*.preinst; do
72                 if [ -f $i ] && ! sh $i; then
73                         ipkg-cl ${IPKG_ARGS} flag unpacked `basename $i .preinst`
74                 fi
75         done
76         for i in ${IMAGE_ROOTFS}${libdir}/ipkg/info/*.postinst; do
77                 if [ -f $i ] && ! sh $i configure; then
78                         ipkg-cl ${IPKG_ARGS} flag unpacked `basename $i .postinst`
79                 fi
80         done
81
82         install -d ${IMAGE_ROOTFS}/${sysconfdir}
83         echo ${BUILDNAME} > ${IMAGE_ROOTFS}/${sysconfdir}/version
84
85         ${ROOTFS_POSTPROCESS_COMMAND}
86         
87         log_check rootfs        
88 }
89
90 rootfs_ipk_log_check() {
91         target="$1"
92         lf_path="$2"
93
94         lf_txt="`cat $lf_path`"
95         for keyword_die in "Cannot find package" "exit 1" ERR Fail
96         do                              
97                 if (echo "$lf_txt" | grep -v log_check | grep "$keyword_die") >/dev/null 2>&1
98                 then
99                         echo "log_check: There were error messages in the logfile"
100                         echo -e "log_check: Matched keyword: [$keyword_die]\n"
101                         echo "$lf_txt" | grep -v log_check | grep -i "$keyword_die" -C1
102                         echo ""
103                         do_exit=1                               
104                 fi
105         done
106         test "$do_exit" = 1 && exit 1
107         true
108 }