copy more bits from image_ipk.oeclass to rootfs_ipk.oeclass
[vuplus_openembedded] / classes / rootfs_ipk.oeclass
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_ipk.oeclass for a usage of this.
6 #
7
8 DEPENDS_prepend="ipkg-native ipkg-utils-native fakeroot-native "
9 DEPENDS_append=" ${EXTRA_IMAGEDEPENDS}"
10
11 PACKAGES = ""
12
13 do_images[nostamp] = 1
14 do_images[dirs] = ${TOPDIR}
15
16 IPKG_ARGS = "-f ${T}/ipkg.conf -o ${IMAGE_ROOTFS}"
17
18 IMAGE_POSTPROCESS_COMMAND ?= ""
19
20 fakeroot do_rootfs () {
21         set -x
22         rm -rf ${IMAGE_ROOTFS}
23
24         mkdir -p ${IMAGE_ROOTFS}/dev
25
26         rm -f ${DEPLOY_DIR_IPK}/Packages
27         touch ${DEPLOY_DIR_IPK}/Packages
28         ipkg-make-index -r ${DEPLOY_DIR_IPK}/Packages -p ${DEPLOY_DIR_IPK}/Packages -l ${DEPLOY_DIR_IPK}/Packages.filelist -m ${DEPLOY_DIR_IPK}
29         mkdir -p ${T}
30         echo "src oe file:${DEPLOY_DIR_IPK}" > ${T}/ipkg.conf
31         cat <<EOF >>${T}/ipkg.conf
32 arch all 1
33 arch any 1
34 arch noarch 1
35 arch ${TARGET_ARCH} 10
36 EOF
37         if [ ! -z ${MACHINE} ]; then
38                 echo "arch ${MACHINE} 20" >>${T}/ipkg.conf
39         fi
40         for i in ${IPKG_ARCHS}; do
41                 if [ $i != "all" ] && [ $i != "${TARGET_ARCH}" ] && [ $i != "${MACHINE}" ]; then
42                         echo "arch $i 5" >> ${T}/ipkg.conf
43                 fi
44         done
45         ipkg-cl ${IPKG_ARGS} update
46         ipkg-cl ${IPKG_ARGS} install ${IPKG_INSTALL}
47
48         export D=${IMAGE_ROOTFS}
49         export IPKG_OFFLINE_ROOT=${IMAGE_ROOTFS}
50
51         for i in ${IMAGE_ROOTFS}/usr/lib/ipkg/info/*.preinst; do
52                 if [ -f $i ] && ! sh $i; then
53                         ipkg-cl ${IPKG_ARGS} flag unpacked `basename $i .preinst`
54                 fi
55         done
56         for i in ${IMAGE_ROOTFS}/usr/lib/ipkg/info/*.postinst; do
57                 if [ -f $i ] && ! sh $i; then
58                         ipkg-cl ${IPKG_ARGS} flag unpacked `basename $i .postinst`
59                 fi
60         done
61
62         install -d ${IMAGE_ROOTFS}/${sysconfdir}
63         echo ${BUILDNAME} > ${IMAGE_ROOTFS}/${sysconfdir}/version
64
65         ${IMAGE_POSTPROCESS_COMMAND}
66 }
67
68 # set '*' as the rootpassword so the images
69 # can decide if they want it or not
70
71 zap_root_password () {
72         sed 's%^root:[^:]*:%root:*:%' < ${IMAGE_ROOTFS}/etc/passwd >${IMAGE_ROOTFS}/etc/passwd.new
73         mv ${IMAGE_ROOTFS}/etc/passwd.new ${IMAGE_ROOTFS}/etc/passwd    
74
75
76 # export the zap_root_password
77 EXPORT_FUNCTIONS zap_root_password
78
79 addtask rootfs before do_build after do_install