summaryrefslogtreecommitdiff
path: root/classes/split_ipk_feeds.oeclass
diff options
context:
space:
mode:
Diffstat (limited to 'classes/split_ipk_feeds.oeclass')
-rw-r--r--classes/split_ipk_feeds.oeclass49
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
+