fix issue:https://bugs.tizen.org/browse/DEVT-310
authoryang.zhang <y0169.zhang@samsung.com>
Tue, 13 Jun 2017 06:00:41 +0000 (14:00 +0800)
committery0169.zhang <y0169.zhang@samsung.com>
Tue, 27 Jun 2017 10:02:39 +0000 (18:02 +0800)
Change-Id: I4cb1b7b5e15b21dcaeb219b584a94b4f306d5de9

createrepomddeps
download

index fdb5346..4347005 100755 (executable)
@@ -33,6 +33,7 @@ use Build::Rpmmd;
 use Digest::MD5 ();
 use File::Path qw(mkpath rmtree);
 use File::Basename;
+use File::Copy qw(move);
 use IPC::SysV qw(IPC_PRIVATE S_IRUSR S_IWUSR IPC_CREAT IPC_EXCL SEM_UNDO);
 use IPC::Semaphore;
 
@@ -89,20 +90,20 @@ for my $url (@ARGV) {
     $dir = "$cachedir/$repoid/";
     $baseurl .= '/' unless $baseurl =~ /\/$/;
     mkpath("${dir}repodata");
-       my $sem;
-       my $key = IPC::SysV::ftok($dir, '1');
-       if ($sem = IPC::Semaphore->new($key, 1, S_IRUSR | S_IWUSR | IPC_CREAT | IPC_EXCL)) {
-         $sem->setval(0, 1);
-       } else {
-         $sem = IPC::Semaphore->new($key, 1, S_IRUSR | S_IWUSR | IPC_CREAT);
-       }
-       
-       $sem->op(0, -1, SEM_UNDO);
-       if (!-f "${dir}repodata/repomd.xml") {
+    #my $sem;
+       #my $key = IPC::SysV::ftok($dir, '1');
+       #if ($sem = IPC::Semaphore->new($key, 1, S_IRUSR | S_IWUSR | IPC_CREAT | IPC_EXCL)) {
+       #  $sem->setval(0, 1);
+       #} else {
+       #  $sem = IPC::Semaphore->new($key, 1, S_IRUSR | S_IWUSR | IPC_CREAT);
+       #}
+       #
+       #$sem->op(0, -1, SEM_UNDO);
+       #if (!-f "${dir}repodata/repomd.xml") {
          system($INC[0].'/download', "${dir}repodata", "${baseurl}repodata/repomd.xml");
-       }
-       $sem->op(0, 1, SEM_UNDO);
-       $sem->remove();
+      #}
+      #$sem->op(0, 1, SEM_UNDO);
+         #$sem->remove();
   } else {
     $dir = $url;
   }
@@ -126,14 +127,14 @@ for my $url (@ARGV) {
       utf8::downgrade($u);
     }
     my $cached;
-       my $sem;
-       my $key = IPC::SysV::ftok("${dir}repodata/", '1');
-       if ($sem = IPC::Semaphore->new($key, 1, S_IRUSR | S_IWUSR | IPC_CREAT | IPC_EXCL)) {
-         $sem->setval(0, 1);
-       } else {
-         $sem = IPC::Semaphore->new($key, 1, S_IRUSR | S_IWUSR | IPC_CREAT);
-       }
-       $sem->op(0, -1, SEM_UNDO);
+       #my $sem;
+       #my $key = IPC::SysV::ftok("${dir}repodata/", '1');
+       #if ($sem = IPC::Semaphore->new($key, 1, S_IRUSR | S_IWUSR | IPC_CREAT | IPC_EXCL)) {
+       #  $sem->setval(0, 1);
+       #} else {
+       #  $sem = IPC::Semaphore->new($key, 1, S_IRUSR | S_IWUSR | IPC_CREAT);
+       #}
+       #$sem->op(0, -1, SEM_UNDO);
     if (-e $u) {
       $cached = 1;
       $cached = 0 if exists($f->{'size'}) && $f->{'size'} != (-s _);
@@ -146,11 +147,11 @@ for my $url (@ARGV) {
          die("download failed\n");
        }
       } else {
-       die("inconsistent repodata in $url\n");
+       die("inconsistent repodata in $url\n");
       }
     }
-       $sem->op(0, 1, SEM_UNDO);
-       $sem->remove();
+       #$sem->op(0, 1, SEM_UNDO);
+       #$sem->remove();
 
     my $fh;
     open($fh, '<', $u) or die "Error opening $u: $!\n";
index 40b3295..a597e62 100755 (executable)
--- a/download
+++ b/download
@@ -88,7 +88,7 @@ for my $url (@ARGV) {
    }
   }
   $ua->env_proxy  if $url->scheme ne 'https';
-  my $dest = "$dir/".basename($url->path);
+  my $dest = "$dir/".basename($url->path).".tmp";
   unlink($dest);       # just in case
   my $retry = 3;
   while ($retry--) {
@@ -98,6 +98,7 @@ for my $url (@ARGV) {
        die "reqesting " . hide_passwd($original) . " failed: ".$res->status_line."\n" unless $retry && $res->previous;
        warn "retrying " . hide_passwd($original) . "\n";
   }
+  rename($dest, "$dir/".basename($url->path));
 }
 
 # vim:sw=2