diff options
Diffstat (limited to 'classes/split_ipk_feeds.oeclass')
-rw-r--r-- | classes/split_ipk_feeds.oeclass | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/classes/split_ipk_feeds.oeclass b/classes/split_ipk_feeds.oeclass index e69de29bb2..8a7c89cffa 100644 --- a/classes/split_ipk_feeds.oeclass +++ b/classes/split_ipk_feeds.oeclass @@ -0,0 +1,49 @@ +# +# Splits packages into feeds, depending on the "Section" entry in "Packages" +# + + +die () { + echo "split_feed: ERROR: $1" + exit 1 +} + +do_split_feed () { + test -z "$FEED_PATTERN" && die "No feed pattern in FEED_PATTERN" + test -z "$FEED_NAME" && die "No feed name in FEED_NAME" + ! test -e ${DEPLOY_DIR_IPK}/Packages && die "[$DEPLOY_DIR_IPK/Packages] not found" + + echo "Working on pattern [$FEED_PATTERN] for feed [$FEED_NAME]" + + # Don't we all love sed? + cat "${DEPLOY_DIR_IPK}/Packages" |sed -n "/^Section/s/Section\:\ //p;/^Package/s/Package\:\ //p" |sed '$!N;s/\n/ /;s/\(.*\)\ \(.*\)/\2 \1/'| sort | egrep -i "$FEED_PATTERN" | sed -n "s/\(.*\)\ \(.*\)/\2/p" > feed-content.tmp + + if ! test -z "$EXCLUDE_FROM_FEED" + then + cat feed-content.tmp | egrep -iv "$EXCLUDE_FROM_FEED" > feed-content.tmp2 + rm feed-content.tmp + mv feed-content.tmp2 feed-content.tmp + fi + + if ! test -d ${DEPLOY_DIR_IPK}/${FEED_NAME} + then + mkdir ${DEPLOY_DIR_IPK}/${FEED_NAME} + else + test "${DEPLOY_DIR_IPK}/${FEED_NAME}" = "/" && die "EMERGENCY BAIL-OUT" + rm -rf ${DEPLOY_DIR_IPK}/${FEED_NAME} + mkdir ${DEPLOY_DIR_IPK}/${FEED_NAME} + fi + + for package in `cat feed-content.tmp` + do + cp ${DEPLOY_DIR_IPK}/${package}_*.ipk ${DEPLOY_DIR_IPK}/${FEED_NAME} + done + + touch ${DEPLOY_DIR_IPK}/${FEED_NAME}/Packages + ipkg-make-index -r ${DEPLOY_DIR_IPK}/${FEED_NAME}/Packages -p ${DEPLOY_DIR_IPK}/${FEED_NAME}/Packages -l ${DEPLOY_DIR_IPK}/${FEED_NAME}/Packages.filelist -m ${DEPLOY_DIR_IPK}/${FEED_NAME} + + test -d ${DEPLOY_DIR_IPK}/${FEED_NAME}/morgue && rm -rf ${DEPLOY_DIR_IPK}/${FEED_NAME}/morgue +} + +addtask split_feed before do_build + |