Changeset 13784


Ignore:
Timestamp:
2008-12-31T15:52:38+01:00 (8 years ago)
Author:
nbd
Message:

merge r13782 to 8.09

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/8.09/scripts/feeds

    r13709 r13784  
    9090} 
    9191 
    92 sub update_svn($$$) { 
     92my %update_method = ( 
     93        'src-svn' => { 
     94                'init'          => "svn checkout '%s' '%s'", 
     95                'update'        => "svn update", 
     96                'controldir'    => ".svn"}, 
     97        'src-cpy' => { 
     98                'init'          => "cp -Rf '%s' '%s'", 
     99                'update'        => ""}, 
     100        'src-link' => { 
     101                'init'          => "ln -s '%s' '%s'", 
     102                'update'        => ""}, 
     103        'src-git' => { 
     104                'init'          => "git clone --depth 1 '%s' '%s'", 
     105                'update'        => "git pull", 
     106                'controldir'    => ".git"}, 
     107        'src-bzr' => { 
     108                'init'          => "bzr checkout --lightweight '%s' '%s'", 
     109                'update'        => "bzr update", 
     110                'controldir'    => ".bzr"}, 
     111        'src-hg' => { 
     112                'init'          => "hg clone '%s' '%s'", 
     113                'update'        => "hg pull --update", 
     114                'controldir'    => ".hg"} 
     115); 
     116 
     117# src-git: pull broken 
     118# src-cpy: broken if `basename $src` != $name 
     119 
     120sub update_feed_via($$$$) { 
     121        my $type = shift; 
    93122        my $name = shift; 
    94123        my $src = shift; 
    95124        my $relocate = shift; 
    96  
    97         if ( !$relocate && -d "./feeds/$name/.svn" ) { 
    98                 system("(cd \"./feeds/$name\"; svn up)") == 0 or return 1; 
     125         
     126        my $m = $update_method{$type}; 
     127        my $localpath = "./feeds/$name"; 
     128        my $safepath = $localpath; 
     129        $safepath =~ s/'/'\\''/; 
     130 
     131        if( $relocate || !$m->{'update'} || !-d "$localpath/$m->{'controldir'}" ) { 
     132                system("rm -rf '$safepath'"); 
     133                system(sprintf($m->{'init'}, $src, $safepath)) == 0 or return 1; 
    99134        } else { 
    100                 system("rm -rf \"./feeds/$name\""); 
    101                 system("svn co $src \"./feeds/$name\"") == 0 or return 1; 
    102         } 
    103  
    104         return 0; 
    105 } 
    106  
    107 sub update_cpy($$$) { 
    108         my $name = shift; 
    109         my $src = shift; 
    110         my $relocate = shift; 
    111  
    112         $relocate && system("rm -rf \"./feeds/$name\""); 
    113         system("mkdir -p ./feeds/$name"); 
    114         system("cp -Rf $src ./feeds"); 
    115  
    116         return 0; 
    117 } 
    118  
    119 sub update_link($$$) { 
    120         my $name = shift; 
    121         my $src = abs_path(shift); 
    122         my $relocate = shift;   # no-op 
    123  
    124         system("rm -f ./feeds/$name; ln -s $src ./feeds/$name"); 
    125  
    126         return 0; 
    127 } 
    128  
    129 sub update_git($$$) { 
    130         my $name = shift; 
    131         my $src = shift; 
    132         my $relocate = shift; 
    133  
    134         if ( !$relocate && -d "./feeds/$name/.git" ) { 
    135                 system("GIT_DIR=./feeds/$name/.git git pull") == 0 or return 1; 
    136         } else { 
    137                 system("rm -rf \"./feeds/$name\""); 
    138                 system("git clone --depth 1 $src ./feeds/$name") == 0 or return 1; 
    139         } 
    140  
     135                system("cd '$safepath'; $m->{'update'}") == 0 or return 1; 
     136        } 
     137         
    141138        return 0; 
    142139} 
     
    260257        'src-link' => \&install_generic, 
    261258        'src-git' => \&install_generic, 
     259        'src-bzr' => \&install_generic, 
     260        'src-hg' => \&install_generic, 
    262261); 
    263262 
     
    436435} 
    437436 
    438 my %update_method = ( 
    439         'src-svn' => \&update_svn, 
    440         'src-cpy' => \&update_cpy, 
    441         'src-link' => \&update_link, 
    442         'src-git' => \&update_git 
    443 ); 
    444  
    445437sub update_feed($$$$) 
    446438{ 
     
    462454                foreach my $feedsrc (@$src) { 
    463455                        warn "Updating feed '$name' from '$feedsrc' ...\n"; 
    464                         next unless &{$update_method{$type}}($name, $feedsrc, $force_relocate) == 0; 
     456                        next unless update_feed_via($type, $name, $feedsrc, $force_relocate) == 0; 
    465457                        $failed = 0; 
    466458                        last; 
Note: See TracChangeset for help on using the changeset viewer.