[include] Add git version check to prerequisite check (#11229)
[openwrt.git] / scripts / feeds
index 4c0fe91..a9b2eb9 100755 (executable)
@@ -94,7 +94,7 @@ sub update_index($)
        -d "./feeds/$name.tmp" or mkdir "./feeds/$name.tmp" or return 1;
        -d "./feeds/$name.tmp/info" or mkdir "./feeds/$name.tmp/info" or return 1;
 
-       system("$mk -s prepare-mk TMP_DIR=\"$ENV{TOPDIR}/feeds/$name.tmp\"");
+       system("$mk -s prepare-mk OPENWRT_BUILD= TMP_DIR=\"$ENV{TOPDIR}/feeds/$name.tmp\"");
        system("$mk -s -f include/scan.mk IS_TTY=1 SCAN_TARGET=\"packageinfo\" SCAN_DIR=\"feeds/$name\" SCAN_NAME=\"package\" SCAN_DEPS=\"$ENV{TOPDIR}/include/package*.mk\" SCAN_DEPTH=5 SCAN_EXTRA=\"\" TMP_DIR=\"$ENV{TOPDIR}/feeds/$name.tmp\"");
        system("ln -sf $name.tmp/.packageinfo ./feeds/$name.index");
 
@@ -114,8 +114,13 @@ my %update_method = (
                'update'        => ""},
        'src-git' => {
                'init'          => "git clone --depth 1 '%s' '%s'",
+               'init_branch'   => "git clone --depth 1 --branch '%s' '%s' '%s'",
                'update'        => "git pull",
                'controldir'    => ".git"},
+       'src-gitsvn' => {
+                'init'          => "git svn clone -r HEAD '%s' '%s'",
+                'update'        => "git svn rebase",
+                'controldir'    => ".git"},
        'src-bzr' => {
                'init'          => "bzr checkout --lightweight '%s' '%s'",
                'update'        => "bzr update",
@@ -123,7 +128,11 @@ my %update_method = (
        'src-hg' => {
                'init'          => "hg clone '%s' '%s'",
                'update'        => "hg pull --update",
-               'controldir'    => ".hg"}
+               'controldir'    => ".hg"},
+       'src-darcs' => {
+               'init'    => "darcs get '%s' '%s'",
+               'update'  => "darcs pull -a",
+               'controldir' => "_darcs"},
 );
 
 # src-git: pull broken
@@ -139,10 +148,15 @@ sub update_feed_via($$$$) {
        my $localpath = "./feeds/$name";
        my $safepath = $localpath;
        $safepath =~ s/'/'\\''/;
+       my ($base, $branch) = split(/;/, $src, 2);
 
        if( $relocate || !$m->{'update'} || !-d "$localpath/$m->{'controldir'}" ) {
                system("rm -rf '$safepath'");
-               system(sprintf($m->{'init'}, $src, $safepath)) == 0 or return 1;
+               if ($m->{'init_branch'} and $branch) {
+                       system(sprintf($m->{'init_branch'}, $branch, $base, $safepath)) == 0 or return 1;
+               } else {
+                       system(sprintf($m->{'init'}, $src, $safepath)) == 0 or return 1;
+               }
        } else {
                system("cd '$safepath'; $m->{'update'}") == 0 or return 1;
        }
@@ -171,7 +185,7 @@ sub get_feed($) {
 }
 
 sub get_installed() {
-       system("$mk -s prepare-tmpinfo");
+       system("$mk -s prepare-tmpinfo OPENWRT_BUILD=");
        clear_packages();
        parse_package_metadata("./tmp/.packageinfo");
        %installed = %package;
@@ -276,8 +290,10 @@ my %install_method = (
        'src-cpy' => \&install_generic,
        'src-link' => \&install_generic,
        'src-git' => \&install_generic,
+       'src-gitsvn' => \&install_generic,
        'src-bzr' => \&install_generic,
        'src-hg' => \&install_generic,
+       'src-darcs' => \&install_generic,
 );
 
 my %feed;
This page took 0.029487 seconds and 4 git commands to generate.