Merge pull request #22 from meskal/reworkFeeds

Rework feeds
This commit is contained in:
RedDog99 2014-11-30 11:58:33 +01:00
commit bf565a0607
9 changed files with 135 additions and 71 deletions

1
.gitignore vendored
View File

@ -8,5 +8,4 @@ src/packages/fastd/
src/packages/libremap/
src/packages/openwrt/
src/packages/routing/
src/packages/tunneldigger/
.project

View File

@ -2389,7 +2389,6 @@ CONFIG_PACKAGE_terminfo=y
# CONFIG_PACKAGE_trace-cmd-extra is not set
# CONFIG_PACKAGE_trace-cmd is not set
# CONFIG_PACKAGE_tune2fs is not set
CONFIG_PACKAGE_tunneldigger=y
# CONFIG_PACKAGE_uboot-ar71xx-nbg460n_550n_550nh is not set
CONFIG_PACKAGE_uboot-envtools=y
CONFIG_PACKAGE_ubox=y

View File

@ -2391,7 +2391,6 @@ CONFIG_PACKAGE_terminfo=y
# CONFIG_PACKAGE_trace-cmd-extra is not set
# CONFIG_PACKAGE_trace-cmd is not set
# CONFIG_PACKAGE_tune2fs is not set
CONFIG_PACKAGE_tunneldigger=y
# CONFIG_PACKAGE_uboot-envtools is not set
CONFIG_PACKAGE_ubox=y
CONFIG_PACKAGE_ubusd=y

View File

@ -2389,7 +2389,6 @@ CONFIG_PACKAGE_terminfo=y
# CONFIG_PACKAGE_trace-cmd-extra is not set
# CONFIG_PACKAGE_trace-cmd is not set
# CONFIG_PACKAGE_tune2fs is not set
CONFIG_PACKAGE_tunneldigger=y
# CONFIG_PACKAGE_uboot-ar71xx-nbg460n_550n_550nh is not set
CONFIG_PACKAGE_uboot-envtools=y
CONFIG_PACKAGE_ubox=y

View File

@ -2391,7 +2391,6 @@ CONFIG_PACKAGE_terminfo=y
# CONFIG_PACKAGE_trace-cmd-extra is not set
# CONFIG_PACKAGE_trace-cmd is not set
# CONFIG_PACKAGE_tune2fs is not set
CONFIG_PACKAGE_tunneldigger=y
CONFIG_PACKAGE_uboot-ar71xx-nbg460n_550n_550nh=y
CONFIG_PACKAGE_uboot-envtools=y
CONFIG_PACKAGE_ubox=y

View File

@ -2386,7 +2386,6 @@ CONFIG_PACKAGE_terminfo=y
# CONFIG_PACKAGE_trace-cmd-extra is not set
# CONFIG_PACKAGE_trace-cmd is not set
# CONFIG_PACKAGE_tune2fs is not set
CONFIG_PACKAGE_tunneldigger=y
CONFIG_PACKAGE_uboot-ar71xx-nbg460n_550n_550nh=y
CONFIG_PACKAGE_uboot-envtools=y
CONFIG_PACKAGE_ubox=y

View File

@ -2387,7 +2387,6 @@ CONFIG_PACKAGE_terminfo=y
# CONFIG_PACKAGE_trace-cmd-extra is not set
# CONFIG_PACKAGE_trace-cmd is not set
# CONFIG_PACKAGE_tune2fs is not set
CONFIG_PACKAGE_tunneldigger=y
CONFIG_PACKAGE_uboot-ar71xx-nbg460n_550n_550nh=y
CONFIG_PACKAGE_uboot-envtools=y
CONFIG_PACKAGE_ubox=y

View File

@ -1,6 +0,0 @@
src-link openwrt PATH/openwrt
src-link routing PATH/routing
src-link tunneldigger PATH/tunneldigger
src-link fastd PATH/fastd
src-link libremap PATH/libremap
src-link packagesol PATH/ffol

View File

@ -7,65 +7,129 @@ OPENWRTURL=svn://svn.openwrt.org/openwrt/branches/barrier_breaker
PACKAGEREV=${OPENWRTREV}
PACKAGEURL=svn://svn.openwrt.org/openwrt/packages
## Feed definition [0]: name aka directory [1]: type git vs svn [2]: url [3]: revision evtl [4]: Patches
#official openwrt packages
OPENWRT=(openwrt
svn
svn://svn.openwrt.org/openwrt/packages
$OPENWRTREV)
OPENWRT_PKGS="bridge ethtool gpioctl-sysfs horst libugpio mii-tool wavemon kmod-gpiotoggling"
#official openwrt routing packages
ROUTING=(routing
git
https://github.com/openwrt-routing/packages.git
44318d05898069300ce2ad6eb05eb40f232e7123
../../../build_patches/0001-batman-adv-no-rebroadcast-option.patch)
ROUTING_PKGS="alfred kmod-batman-adv kmod-batgat"
FASTD=(fastd
git
git://git.metameute.de/lff/pkg_fastd
v14-1)
FASTD_PKGS="fastd libuecc"
LIBREMAP=(libremap
git
https://github.com/libremap/libremap-agent-openwrt.git
7194289d4b8a009df10613a3a88dc841fa26f423)
LIBREMAP_PKGS="libremap-agent"
FFOL=(ffol
'local'
${PWD}/src/packages/ffol/)
FFOL_PKGS="nodewatcher"
FEEDS=(OPENWRT ROUTING FASTD LIBREMAP FFOL)
checkout_svn(){
local DIRECTORY=$1
local REPO_URL=$2
local REVISION=$3
echo checking out $REPO_URL to $DIRECTORY in version $REVISION
if [ -d $DIRECTORY ]; then
local url=$(svn info ${DIRECTORY} | awk '/^URL/ { print $2 }')
if [ "$url" = "$REPO_URL" ]; then
if [ -z "$REVISION" ]; then
svn update $DIRECTORY
else
local rev=$(svn info $DIRECTORY | awk '/^Revision:/ { print $2 }')
if [ "$rev" -ne "$REVISION" ]; then
svn update -r $REVISION $DIRECTORY
fi
fi
else
echo wrong svn url -\> deleting whole directory
/bin/rm -rf $DIRECTORY
svn checkout -r $REVISION $REPO_URL $DIRECTORY
fi
else
svn checkout -r $REVISION $REPO_URL $DIRECTORY
fi
}
checkout_git(){
local DIRECTORY=$1
local REPO_URL=$2
local COMMITID=$3
local MYGIT="git -C $DIRECTORY"
echo checking out $REPO_URL to $DIRECTORY in version $REVISION
if [ -d $DIRECTORY ]; then
if $MYGIT remote -v | grep $REPO_URL ; then
echo Right remote detected
if ! $MYGIT checkout $COMMITID ; then
echo commitid not found trying to fetch new commits
$MYGIT pull && $MYGIT checkout $COMMITID
fi
else
echo wrong remote or not an git repo at all -\> deleting whole directory
/bin/rm -rf $DIRECTORY
$MYGIT clone $REPO_URL $DIRECTORY
$MYGIT checkout $COMMITID
fi
else
echo We need to do a fresh checkout
#needs to be without -C!!!
git clone $REPO_URL $DIRECTORY
$MYGIT checkout $COMMITID
fi
}
get_source() {
cd src
#Get the OpenWrt Core Source for Firmware
if [ -d openwrt ]; then
url=$(svn info openwrt | awk '/^URL/ { print $2 }')
if [ "$url" = "$OPENWRTURL" ]; then
rev=$(svn info openwrt | awk '/^Revision:/ { print $2 }')
if [ "$rev" -ne "$OPENWRTREV" ]; then
svn update -r $OPENWRTREV openwrt
fi
else
/bin/rm -rf openwrt
svn checkout -r $OPENWRTREV $OPENWRTURL openwrt
fi
else
svn checkout -r $OPENWRTREV $OPENWRTURL openwrt
fi
checkout_svn openwrt $OPENWRTURL $OPENWRTREV
test -d packages || mkdir packages
cd packages
if [ -d openwrt ]; then
url=$(svn info openwrt | awk '/^URL/ { print $2 }')
if [ "$url" = "$PACKAGEURL" ]; then
rev=$(svn info openwrt | awk '/^Revision:/ { print $2 }')
if [ "$rev" -ne "$PACKAGEREV" ]; then
svn update -r $PACKAGEREV openwrt
#checkout needed package feeds
for FEEDVAR in ${FEEDS[@]} ; do
FEED=$FEEDVAR[@] FEED=( ${!FEED} )
local NAME=${FEED[0]}
local TYPE=${FEED[1]}
local URL=${FEED[2]}
local REV=${FEED[3]}
local PATCH=${FEED[4]}
echo Adding Feed $NAME
if [[ $TYPE == "svn" ]] ; then
checkout_svn $NAME $URL $REV
elif [[ $TYPE == "git" ]] ; then
checkout_git $NAME $URL $REV
# Patches for feeds could be stored in known directories like build_patches/$NAME/
# That way multiple patches for one feed could be supported
if [ ! -z "$PATCH" ] ; then
echo Patching $PATCH
git -C $NAME am --whitespace=nowarn $PATCH
fi
else
/bin/rm -rf openwrt
svn checkout -r $PACKAGEREV $PACKAGEURL openwrt
fi
else
svn checkout -r $PACKAGEREV $PACKAGEURL openwrt
fi
test -d routing || git clone https://github.com/openwrt-routing/packages.git routing
cd routing
git checkout 44318d05898069300ce2ad6eb05eb40f232e7123
git am --whitespace=nowarn ../../../build_patches/0001-batman-adv-no-rebroadcast-option.patch
cd ..
test -d fastd || git clone git://git.metameute.de/lff/pkg_fastd fastd
git --git-dir=fastd/.git --work-tree=fastd/ checkout v14-1
if [ ! -d tunneldigger ]; then
git init tunneldigger
cd tunneldigger/
git remote add -f origin https://github.com/wlanslovenija/firmware-packages-opkg.git
git config core.sparsecheckout true
echo net/tunneldigger/ >> .git/info/sparse-checkout
git pull origin
cd ..
fi
git --git-dir=tunneldigger/.git --work-tree=tunneldigger checkout 8c750d28506c08abbcce9edc5761332074b43116
test -d libremap || git clone https://github.com/libremap/libremap-agent-openwrt.git libremap
git --git-dir=libremap/.git --work-tree=libremap checkout 7194289d4b8a009df10613a3a88dc841fa26f423
done
cd .. # packages
cd .. # src
@ -79,19 +143,32 @@ prepare() {
/bin/rm -rf $target
svn export src/openwrt $target
#apply own feeds.conf
sed -e"s|PATH|$(pwd)/src/packages|g" ./build_patches/feeds.conf > $target/feeds.conf
## generate own feeds.conf
#this local variable should be globally configure variable used in get_source and here
local PACKAGEBASE=${PWD}/src/packages
rm -f $target/feeds.conf
for FEEDVAR in ${FEEDS[@]} ; do
FEED=$FEEDVAR[@] FEED=( ${!FEED} )
local NAME=${FEED[0]}
echo adding $NAME to package feeds
echo src-link $NAME $PACKAGEBASE/$NAME >> $target/feeds.conf
done
echo cleaning feeds
test -d $target/feeds && /bin/rm -rf $target/feeds
$target/scripts/feeds update
$target/scripts/feeds install -p packagesol nodewatcher
$target/scripts/feeds install -p fastd fastd libuecc
$target/scripts/feeds install -p tunneldigger tunneldigger
$target/scripts/feeds install -p libremap libremap-agent
$target/scripts/feeds install -p routing alfred kmod-batman-adv kmod-batgat
$target/scripts/feeds install -p openwrt bridge ethtool gpioctl-sysfs horst libugpio mii-tool wavemon kmod-gpiotoggling
for FEEDVAR in ${FEEDS[@]} ; do
FEED=$FEEDVAR[@] FEED=( ${!FEED} )
local NAME=${FEED[0]}
local PACKAGESVAR=${FEEDVAR}_PKGS
if [[ -n "${!PACKAGESVAR}" ]] ; then
echo adding ${!PACKAGESVAR} from feed $NAME to available packages
$target/scripts/feeds install -p $NAME ${!PACKAGESVAR}
fi
done
# todo evaluate this with the new openwrt
# This changes the default behavior of sysupgrade to not save the config