-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");
'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",
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;
}
}
sub get_installed() {
- system("$mk -s prepare-tmpinfo");
+ system("$mk -s prepare-tmpinfo OPENWRT_BUILD=");
clear_packages();
parse_package_metadata("./tmp/.packageinfo");
%installed = %package;
'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,