summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThierry Vignaud <tv@mandriva.org>2008-09-30 17:17:54 +0000
committerThierry Vignaud <tv@mandriva.org>2008-09-30 17:17:54 +0000
commit0f757f957dfb1350b6654cc91972464f7d9febdf (patch)
treee77175339232e388485c3daa90ceb15878cbc8d2
parent03a1c78b23611b82853fe0b192f9f4a35c3b471f (diff)
downloadmgaonline-0f757f957dfb1350b6654cc91972464f7d9febdf.tar
mgaonline-0f757f957dfb1350b6654cc91972464f7d9febdf.tar.gz
mgaonline-0f757f957dfb1350b6654cc91972464f7d9febdf.tar.bz2
mgaonline-0f757f957dfb1350b6654cc91972464f7d9febdf.tar.xz
mgaonline-0f757f957dfb1350b6654cc91972464f7d9febdf.zip
dd support for downloading distro list as user for 2008.1
-rw-r--r--NEWS3
-rwxr-xr-xmdkapplet7
-rw-r--r--mdkapplet_urpm.pm55
3 files changed, 64 insertions, 1 deletions
diff --git a/NEWS b/NEWS
index 9fd4aaa7..09431d7d 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,6 @@
+- mdkapplet
+ o add support for downloading distro list as user for 2008.1
+
Version 2.43 - 30 September 2008
- mdkapplet
diff --git a/mdkapplet b/mdkapplet
index d42cd0c9..291c80eb 100755
--- a/mdkapplet
+++ b/mdkapplet
@@ -269,7 +269,12 @@ sub is_there_a_new_distributions() {
my @lines = eval {
my $urpm = Rpmdrake::open_db::fast_open_urpmi_db();
- urpm::download::get_content($urpm, $list);
+ if (member($product_id->{version}, qw(2007.1 2008.0 2008.1))) {
+ require mdkapplet_urpm;
+ mdkapplet_urpm::get_content($urpm, $list);
+ } else {
+ urpm::download::get_content($urpm, $list);
+ }
};
if (my $err = $@) {
diff --git a/mdkapplet_urpm.pm b/mdkapplet_urpm.pm
new file mode 100644
index 00000000..980854af
--- /dev/null
+++ b/mdkapplet_urpm.pm
@@ -0,0 +1,55 @@
+package mdkapplet_urpm;
+
+# taken from urpmi:
+
+use MDK::Common;
+use urpm::download;
+
+sub userdir_prefix {
+ my ($_urpm) = @_;
+ '/tmp/.urpmi-';
+}
+sub userdir {
+ my ($urpm) = @_;
+ $< or return;
+
+ my $dir = ($urpm->{urpmi_root} || '') . userdir_prefix($urpm) . $<;
+ mkdir $dir, 0755; # try to create it
+
+ -d $dir && ! -l $dir or $urpm->{fatal}(1, sprintf("fail to create directory %s", $dir));
+ -o $dir && -w $dir or $urpm->{fatal}(1, sprintf("invalid owner for directory %s", $dir));
+
+ mkdir "$dir/partial";
+ mkdir "$dir/rpms";
+
+ $dir;
+}
+sub ensure_valid_cachedir {
+ my ($urpm) = @_;
+ if (my $dir = userdir($urpm)) {
+ $urpm->{cachedir} = $dir;
+ }
+ -w "$urpm->{cachedir}/partial" or $urpm->{fatal}(1, "Can not download packages into %s", "$urpm->{cachedir}/partial");
+}
+sub valid_cachedir {
+ my ($urpm) = @_;
+ userdir($urpm) || $urpm->{cachedir};
+}
+
+sub get_content {
+ my ($urpm, $url) = @_;
+
+ my $download_dir = valid_cachedir($urpm) . '/partial/';
+ my $file = $download_dir . basename($url);
+
+ unlink $file; # prevent "partial file" errors
+ urpm::download::sync($urpm, undef, [ $url ], quiet => 1, dir => $download_dir) or return;
+ #sync_url($urpm, $url, dir => $download_dir, quiet => 1) or return;
+
+ my @l = cat_($file);
+ unlink $file;
+
+ wantarray() ? @l : join('', @l);
+}
+
+1;