From 945b4fb8d4d73ec465f9c87721d61a4ae42f1e47 Mon Sep 17 00:00:00 2001 From: Florian Fainelli Date: Sun, 31 Dec 2006 15:02:08 +0000 Subject: Add a first implementation of a source feed checkout SVN-Revision: 5943 --- Makefile | 3 +++ scripts/feeds.sh | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100755 scripts/feeds.sh diff --git a/Makefile b/Makefile index 8bd0bc710a..daadbeacf6 100644 --- 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 index 0000000000..341259bf49 --- /dev/null +++ b/scripts/feeds.sh @@ -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 "" -- cgit v1.2.3