2 # Creates a root filesystem out of IPKs
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.
8 DEPENDS_prepend="ipkg-native ipkg-utils-native fakeroot-native "
9 DEPENDS_append=" ${EXTRA_IMAGEDEPENDS}"
13 do_images[nostamp] = 1
14 do_images[dirs] = ${TOPDIR}
16 IPKG_ARGS = "-f ${T}/ipkg.conf -o ${IMAGE_ROOTFS}"
18 IMAGE_POSTPROCESS_COMMAND ?= ""
20 fakeroot do_rootfs () {
22 rm -rf ${IMAGE_ROOTFS}
24 mkdir -p ${IMAGE_ROOTFS}/dev
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}
30 echo "src oe file:${DEPLOY_DIR_IPK}" > ${T}/ipkg.conf
31 cat <<EOF >>${T}/ipkg.conf
35 arch ${TARGET_ARCH} 10
37 if [ ! -z ${MACHINE} ]; then
38 echo "arch ${MACHINE} 20" >>${T}/ipkg.conf
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
45 ipkg-cl ${IPKG_ARGS} update
46 ipkg-cl ${IPKG_ARGS} install ${IPKG_INSTALL}
48 export D=${IMAGE_ROOTFS}
49 export IPKG_OFFLINE_ROOT=${IMAGE_ROOTFS}
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`
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`
62 install -d ${IMAGE_ROOTFS}/${sysconfdir}
63 echo ${BUILDNAME} > ${IMAGE_ROOTFS}/${sysconfdir}/version
65 ${IMAGE_POSTPROCESS_COMMAND}
68 # set '*' as the rootpassword so the images
69 # can decide if they want it or not
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
76 # export the zap_root_password
77 EXPORT_FUNCTIONS zap_root_password
79 addtask rootfs before do_build after do_install