|
@@ -366,6 +366,30 @@ sub do_install_package($$) {
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+sub do_install_target($) {
|
|
|
+ my $target = shift;
|
|
|
+ my $path = $target->{makefile};
|
|
|
+
|
|
|
+ if ($path) {
|
|
|
+ $path =~ s/\/Makefile$//;
|
|
|
+ my $name = $path;
|
|
|
+ $name =~ s/.*\///;
|
|
|
+ my $dest = "./target/linux/$name";
|
|
|
+
|
|
|
+ -e $dest and do {
|
|
|
+ warn "Path $dest already exists";
|
|
|
+ return 1;
|
|
|
+ };
|
|
|
+
|
|
|
+ system("ln -sf ../../$path ./target/linux/");
|
|
|
+ } else {
|
|
|
+ warn "Package is not valid\n";
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
sub lookup_package($$) {
|
|
|
my $feed = shift;
|
|
|
my $package = shift;
|
|
@@ -378,6 +402,18 @@ sub lookup_package($$) {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+sub lookup_target($$) {
|
|
|
+ my $feed = shift;
|
|
|
+ my $target = shift;
|
|
|
+
|
|
|
+ foreach my $feed ($feed, @feeds) {
|
|
|
+ next unless $feed->[1];
|
|
|
+ next unless $feed_cache{$feed->[1]};
|
|
|
+ $feed_cache{$feed->[1]}->[2]->{$target} and return $feed;
|
|
|
+ }
|
|
|
+ return;
|
|
|
+}
|
|
|
+
|
|
|
sub is_core_package($) {
|
|
|
my $package = shift;
|
|
|
foreach my $file ("tmp/info/.packageinfo-$package", glob("tmp/info/.packageinfo-*_$package")) {
|
|
@@ -387,12 +423,33 @@ sub is_core_package($) {
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+sub install_target {
|
|
|
+ my $feed = shift;
|
|
|
+ my $name = shift;
|
|
|
+
|
|
|
+ $feed = $feed_cache{$feed->[1]}->[2];
|
|
|
+ $feed or return 0;
|
|
|
+
|
|
|
+ my $target = $feed->{$name};
|
|
|
+ $target or return 0;
|
|
|
+
|
|
|
+ warn "Installing target '$name'\n";
|
|
|
+ return do_install_target($target);
|
|
|
+}
|
|
|
+
|
|
|
sub install_package {
|
|
|
my $feed = shift;
|
|
|
my $name = shift;
|
|
|
my $force = shift;
|
|
|
my $ret = 0;
|
|
|
|
|
|
+ $feed = lookup_target($feed, $name);
|
|
|
+ $feed and do {
|
|
|
+ $installed_targets{$name} and return 0;
|
|
|
+ install_target($feed, $name);
|
|
|
+ return 0;
|
|
|
+ };
|
|
|
+
|
|
|
$feed = lookup_package($feed, $name);
|
|
|
$feed or do {
|
|
|
$installed{$name} and return 0;
|