From e50fa5a09376636df070b2ff760b123096653c1f Mon Sep 17 00:00:00 2001 From: "yang.zhang" Date: Tue, 13 Jun 2017 14:00:41 +0800 Subject: [PATCH] fix issue:https://bugs.tizen.org/browse/DEVT-310 Change-Id: I4cb1b7b5e15b21dcaeb219b584a94b4f306d5de9 --- createrepomddeps | 49 +++++++++++++++++++++++++------------------------ download | 3 ++- 2 files changed, 27 insertions(+), 25 deletions(-) diff --git a/createrepomddeps b/createrepomddeps index fdb5346..4347005 100755 --- a/createrepomddeps +++ b/createrepomddeps @@ -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"; diff --git a/download b/download index 40b3295..a597e62 100755 --- 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 -- 2.7.4