X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/3232bd5180dae0d87cd6bc374b4b730db6c7c951..8a3f2456853f34e94a523a0d912e3c5d22dd5bbd:/scripts/feeds diff --git a/scripts/feeds b/scripts/feeds index 4b53fd117..3932a2d6d 100755 --- a/scripts/feeds +++ b/scripts/feeds @@ -15,6 +15,14 @@ my $mk=`which gmake`; # select the right 'make' program chomp($mk); # trim trailing newline $mk or $mk = "make"; # default to 'make' +# check version of make +my @mkver = split /\s+/, `$mk -v`, 4; +my $valid_mk = 1; +$mkver[0] =~ /^GNU/ or $valid_mk = 0; +$mkver[1] =~ /^Make/ or $valid_mk = 0; +$mkver[2] >= "3.81" or $valid_mk = 0; +$valid_mk or die "Unsupported version of make found: $mk\n"; + my @feeds; my %build_packages; my %installed; @@ -38,7 +46,7 @@ sub parse_config() { $line[0] =~ /^src-\w+$/ or $valid = 0; $line[1] =~ /^\w+$/ or $valid = 0; @src = split /\s+/, $line[2]; - $valid or die "Syntax error in feeds.list, line: $line\n"; + $valid or die "Syntax error in feeds.conf, line: $line\n"; $name{$line[1]} and die "Duplicate feed name '$line[1]', line: $line\n"; $name{$line[1]} = 1; @@ -72,7 +80,7 @@ sub update_location($$) return $old_url ? 1 : 0; } - return 0; + return 0; } sub update_index($) @@ -171,6 +179,7 @@ sub search_feed { my $substr; my $pkgmatch = 1; + next if $pkg->{vdepends}; foreach my $substr (@substr) { my $match; foreach my $key (qw(name title description src)) { @@ -204,6 +213,7 @@ sub list_feed { get_feed($feed); foreach my $name (sort { lc($a) cmp lc($b) } keys %package) { my $pkg = $package{$name}; + next if $pkg->{vdepends}; if($pkg->{name}) { printf "\%-32s\t\%s\n", $pkg->{name}, $pkg->{title}; } @@ -319,10 +329,11 @@ sub install_package { # install all dependencies foreach my $vpkg (@{$srcpackage{$src}}, $pkg) { - foreach my $dep (@{$vpkg->{depends}}, @{$vpkg->{builddepends}}) { + foreach my $dep (@{$vpkg->{depends}}, @{$vpkg->{builddepends}}, @{$vpkg->{"builddepends/host"}}) { next if $dep =~ /@/; $dep =~ s/^\+//; $dep =~ s/^.+://; + $dep =~ s/\/.+$//; next unless $dep; install_package($feed, $dep) == 0 or $ret = 1; } @@ -338,7 +349,7 @@ sub refresh_config { system("rm -f tmp/.packageinfo"); # refresh the config - if ($default) { + if ($default) { system("$mk oldconfig CONFDEFAULT=\"$default\" Config.in >/dev/null 2>/dev/null"); } else { system("$mk defconfig Config.in >/dev/null 2>/dev/null"); @@ -375,6 +386,7 @@ sub install { get_feed($f->[1]); foreach my $name (sort { lc($a) cmp lc($b) } keys %package) { my $p = $package{$name}; + next if $p->{vdepends}; if( $p->{name} ) { install_package($feed, $p->{name}) == 0 or $ret = 1; }