Add a first implementation of a source feed checkout
authorFlorian Fainelli <florian@openwrt.org>
Sun, 31 Dec 2006 15:02:08 +0000 (15:02 +0000)
committerFlorian Fainelli <florian@openwrt.org>
Sun, 31 Dec 2006 15:02:08 +0000 (15:02 +0000)
SVN-Revision: 5943

Makefile
scripts/feeds.sh [new file with mode: 0755]

index 8bd0bc7..daadbea 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -181,6 +181,9 @@ distclean: dirclean config-clean
 help:
        cat README
 
+symlinks:
+       scripts/feeds.sh https://svn.openwrt.org/openwrt/packages
+
 .SILENT: clean dirclean distclean config-clean download world
 FORCE: ;
 .PHONY: FORCE help
diff --git a/scripts/feeds.sh b/scripts/feeds.sh
new file mode 100755 (executable)
index 0000000..341259b
--- /dev/null
@@ -0,0 +1,59 @@
+#!/bin/sh
+# Copyright (C) 2006 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+# Usage : $1 -> source feeds
+#        $2 -> other options
+#
+# Note : we do not yet resolve package name conflicts
+#
+#
+FEEDS_DIR=$TOPDIR/feeds
+PACKAGE_DIR=$TOPDIR/package
+
+cd $TOPDIR
+# This directory will be structured this way : feeds/feed-name
+[ -d $FEEDS_DIR ] || mkdir -p $FEEDS_DIR
+
+
+# Some functions we might call several times a run
+delete_symlinks() {
+       find $PACKAGE_DIR -type l | xargs rm -f
+}
+
+setup_symlinks() {
+       # We assume that feeds do reproduce the hierarchy : section/package
+       for dir in $(ls $FEEDS_DIR/)
+       do
+               ln -s $FEEDS_DIR/$dir/*/* $PACKAGE_DIR/
+       done
+}
+
+checkout_feed() {
+       # We ensure the feed has not already been checkout, if so, just update the source feed
+       if [ -d $FEEDS_DIR/$2 ]; then
+               svn update $FEEDS_DIR/$2
+               echo "Updated to revision $(LANG=C svn info $FEEDS_DIR/$2 | awk '/^Revision:/ { print $2 }' )";
+       # Otherwise, we have to checkout in the 
+       else
+               svn co $1 $FEEDS_DIR/$2
+               echo "Checked out revision $(LANG=C svn info $FEEDS_DIR/$2 | awk '/^Revision:/ { print $2 }' )";
+       fi
+}
+
+extract_feed_name() {
+       echo "$(echo $1 | awk -F/ '{ print $NF}')"
+}
+
+# We can delete symlinks every time we start this script, since modifications have been made anyway
+delete_symlinks ""
+# Now let's checkout feeds
+for feed in $1
+do
+       name=$(extract_feed_name "$feed")
+       checkout_feed "$feed" "$name"
+done
+# Finally setup symlinks
+setup_symlinks ""