aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Crispin <john@openwrt.org>2014-10-13 19:41:27 +0000
committerJohn Crispin <john@openwrt.org>2014-10-13 19:41:27 +0000
commit590b855c26b095d18d7cfb8500328cbbd286d14d (patch)
treec90c99384f4e2e8cd19756f757af5258b78d1c2a
parent80a54ef80417843bf00ab567d8f8f18f6266b69d (diff)
downloadupstream-590b855c26b095d18d7cfb8500328cbbd286d14d.tar.gz
upstream-590b855c26b095d18d7cfb8500328cbbd286d14d.tar.bz2
upstream-590b855c26b095d18d7cfb8500328cbbd286d14d.zip
scripts/feeds: handle missing/broken feeds better
pts/feeds update -a" can fail rather silently for feeds using git, as the script does not pause when updating a feed fails. Instead it prints the error message and calmly continues to the next feed. It is very easy to overlook update errors with the feeds updated first, as their text scrolls rapidly away from the screen. This behaviour has not been a big problem with svn feeds, as svn update stops with a conflict message and interactively forces the user to resolve or postpone the conflict. In any case the svn error is noticed by the user. Majority of the feeds use now git, so this silent failure can affect users doing private builds in an increasing amount. Below is an example of update failing and script continuing: perus@v1404:/Openwrt/barrier$ ./scripts/feeds update -a Updating feed 'packages' from 'https://github.com/openwrt/packages.git;for-14.07' ... remote: Counting objects: 17, done. remote: Compressing objects: 100% (15/15), done. remote: Total 17 (delta 10), reused 8 (delta 1) Unpacking objects: 100% (17/17), done. From https://github.com/openwrt/packages 62031da..dc26009 for-14.07 -> origin/for-14.07 Updating 62031da..dc26009 error: Your local changes to the following files would be overwritten by merge: utils/collectd/Makefile Please, commit your changes or stash them before you can merge. Aborting failed. Updating feed 'luci' from 'http://git.openwrt.org/project/luci.git;luci-0.12' ... Already up-to-date. Create index file './feeds/luci.index' Updating feed 'routing' from 'https://github.com/openwrt-routing/packages.git;for-14.07' ... ... The script prints "failed.", but does not break the updating process. The "update_feed" function returns an error code 1, but that value is not checked in the "update" function, which continues to the next feed. Return 1 as error: ​https://dev.openwrt.org/browser/trunk/scripts/feeds#L547 Call to update_feed without any error monitoring: ​https://dev.openwrt.org/browser/trunk/scripts/feeds#L585 The included patch makes the feeds script to stop updating after failing to update a feed. The script continues to the refresh_config step despite a possible failure in updating, so the stopping action just prevents the other feeds from updating and makes the error more clearly visible. Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi> SVN-Revision: 42891
-rwxr-xr-xscripts/feeds3
1 files changed, 2 insertions, 1 deletions
diff --git a/scripts/feeds b/scripts/feeds
index 26c2de0945..31ad544994 100755
--- a/scripts/feeds
+++ b/scripts/feeds
@@ -585,7 +585,8 @@ sub update {
if ( ($#ARGV == -1) or $opts{a}) {
foreach my $feed (@feeds) {
my ($type, $name, $src) = @$feed;
- update_feed($type, $name, $src, $perform_update);
+ next unless update_feed($type, $name, $src, $perform_update) == 1;
+ last;
}
} else {
while ($feed_name = shift @ARGV) {