# # Creates a root filesystem out of IPKs # # This rootfs can be mounted via root-nfs or it can be put into an cramfs/jffs etc. # See image_ipk.oeclass for a usage of this. # DEPENDS_prepend="ipkg-native ipkg-utils-native fakeroot-native " DEPENDS_append=" ${EXTRA_IMAGEDEPENDS}" PACKAGES = "" do_rootfs[nostamp] = 1 do_rootfs[dirs] = ${TOPDIR} IPKG_ARGS = "-f ${T}/ipkg.conf -o ${IMAGE_ROOTFS}" ROOTFS_POSTPROCESS_COMMAND ?= "" # some default locales IMAGE_LINGUAS ?= "de-de fr-fr en-gb" IPKG_INSTALL =+ "${@" ".join(map(lambda s: "locale-base-%s" % s, oe.data.getVar('IMAGE_LINGUAS', d, 1).split()))}" real_do_rootfs () { set -x mkdir -p ${IMAGE_ROOTFS}/dev rm -f ${DEPLOY_DIR_IPK}/Packages touch ${DEPLOY_DIR_IPK}/Packages ipkg-make-index -r ${DEPLOY_DIR_IPK}/Packages -p ${DEPLOY_DIR_IPK}/Packages -l ${DEPLOY_DIR_IPK}/Packages.filelist -m ${DEPLOY_DIR_IPK} mkdir -p ${T} echo "src oe file:${DEPLOY_DIR_IPK}" > ${T}/ipkg.conf cat <>${T}/ipkg.conf arch all 1 arch any 1 arch noarch 1 arch ${TARGET_ARCH} 10 EOF if [ "${TARGET_ARCH}" != "${PACKAGE_ARCH}" ]; then echo "arch ${PACKAGE_ARCH} 15" >>${T}/ipkg.conf fi if [ ! -z ${MACHINE} ]; then echo "arch ${MACHINE} 20" >>${T}/ipkg.conf fi for i in ${IPKG_ARCHS}; do if [ $i != "all" ] && [ $i != "${TARGET_ARCH}" ] && [ $i != "${MACHINE}" ]; then echo "arch $i 5" >> ${T}/ipkg.conf fi done ipkg-cl ${IPKG_ARGS} update ipkg-cl ${IPKG_ARGS} install ${IPKG_INSTALL} export D=${IMAGE_ROOTFS} export IPKG_OFFLINE_ROOT=${IMAGE_ROOTFS} mkdir -p ${IMAGE_ROOTFS}/etc/ipkg/ grep "^arch" ${T}/ipkg.conf >${IMAGE_ROOTFS}/etc/ipkg/arch.conf for i in ${IMAGE_ROOTFS}/usr/lib/ipkg/info/*.preinst; do if [ -f $i ] && ! sh $i; then ipkg-cl ${IPKG_ARGS} flag unpacked `basename $i .preinst` fi done for i in ${IMAGE_ROOTFS}/usr/lib/ipkg/info/*.postinst; do if [ -f $i ] && ! sh $i configure; then ipkg-cl ${IPKG_ARGS} flag unpacked `basename $i .postinst` fi done install -d ${IMAGE_ROOTFS}/${sysconfdir} echo ${BUILDNAME} > ${IMAGE_ROOTFS}/${sysconfdir}/version ${ROOTFS_POSTPROCESS_COMMAND} } fakeroot do_rootfs () { rm -rf ${IMAGE_ROOTFS} real_do_rootfs } # set '*' as the rootpassword so the images # can decide if they want it or not zap_root_password () { sed 's%^root:[^:]*:%root:*:%' < ${IMAGE_ROOTFS}/etc/passwd >${IMAGE_ROOTFS}/etc/passwd.new mv ${IMAGE_ROOTFS}/etc/passwd.new ${IMAGE_ROOTFS}/etc/passwd } # export the zap_root_password EXPORT_FUNCTIONS zap_root_password addtask rootfs before do_build after do_install