summaryrefslogtreecommitdiff
path: root/classes/split_ipk_feeds.oeclass
blob: 31d46c4948a042cce1588161ad5df27661fa992d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#
# 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 -z "${DEPLOY_DIR_IPK}" && die "DEPLOY_DIR_IPK is empty, how do you do that?"
	
	echo "Rebuilding [${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}
	
	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" > feed-content.tmp	

	if ! test -z "$EXCLUDE_FROM_FEED"
	then
		cat feed-content.tmp | egrep -iv -- "$EXCLUDE_FROM_FEED" | sed -n "s/\(.*\)\ \(.*\)/\2/p" > feed-content.tmp2		
	else
		cat feed-content.tmp | sed -n "s/\(.*\)\ \(.*\)/\2/p" > feed-content.tmp2
	fi
	rm feed-content.tmp ; mv feed-content.tmp2 feed-content.tmp
	
	if ! test -d ${DEPLOY_DIR_IPK}/${FEED_NAME}
	then
		mkdir -p ${DEPLOY_DIR_IPK}/${FEED_NAME}
	else		
		test "${DEPLOY_DIR_IPK}/${FEED_NAME}" = "/" && die "EMERGENCY BAIL-OUT"
		rm -rf ${DEPLOY_DIR_IPK}/${FEED_NAME}
		mkdir -p ${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} || die "ipkg-make-index failed!" && echo "Packages done"
	
	echo "###"
	test -d ${DEPLOY_DIR_IPK}/${FEED_NAME}/morgue && rm -rf ${DEPLOY_DIR_IPK}/${FEED_NAME}/morgue
	echo "###"	
}
	
addtask split_feed before do_build 

# Feed splitting should be done explicitly, not as part of world
EXCLUDE_FROM_WORLD = "1"