From 247902e0065f92d7d3c983553aab065d2eeb8b67 Mon Sep 17 00:00:00 2001 From: florian Date: Sun, 31 Dec 2006 15:02:08 +0000 Subject: [PATCH] Add a first implementation of a source feed checkout git-svn-id: svn://svn.openwrt.org/openwrt/trunk@5943 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- Makefile | 3 +++ scripts/feeds.sh | 59 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100755 scripts/feeds.sh diff --git a/Makefile b/Makefile index 8bd0bc710..daadbeacf 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 000000000..341259bf4 --- /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 "" -- 2.35.1