Package: debmirror
Version: 1:2.3.1
Severity: minor
Tags: patch

        Hi there

 I just tried mirroring the dists at
 http://build.chromium.org/buildbot/packages/dists/chromeos/ (I think
 these are created with reprepro), but failed due to missing Release.gpg
 files.

 There were two independent issues, one was in get_release() which was
 returning 0 because the remote_get() would fail for Release.gpg, I
 changed:
  return 0 unless remote_get("dists/$dist/Release", "$tempdir/.tmp");
  my $t = $num_errors;
  return 0 unless remote_get("dists/$dist/Release.gpg", "$tempdir/.tmp");
  # Check for gpg
  if (!$ignore_release_gpg) {
    if (system("gpgv --version >/dev/null 2>/dev/null")) {
      say("gpgv failed: --ignore-release-gpg or gpgv binary missing?");

 to:
  return 0 unless remote_get("dists/$dist/Release", "$tempdir/.tmp");
  my $t = $num_errors;
  if (!$ignore_release_gpg) {
    return 0 unless remote_get("dists/$dist/Release.gpg", "$tempdir/.tmp");
    # Check for gpg
    if (system("gpgv --version >/dev/null 2>/dev/null")) {
      say("gpgv failed: --ignore-release-gpg or gpgv binary missing?");

 but you could as well return 1 if ignore_release_gpg.

 The other spot was when moving the files in place, changed this:
    rename("$tdir/Release", "$tempdir/dists/$codename$dist_sdir/Release")
      or die "Error while moving $tdir/Release: $!\n";
    rename("$tdir/Release.gpg", 
"$tempdir/dists/$codename$dist_sdir/Release.gpg")
      or die "Error while moving $tdir/Release.gpg: $!\n";
 into:
    rename("$tdir/Release", "$tempdir/dists/$codename$dist_sdir/Release")
      or die "Error while moving $tdir/Release: $!\n";
    rename("$tdir/Release.gpg", 
"$tempdir/dists/$codename$dist_sdir/Release.gpg")
      or $ignore_release_gpg or die "Error while moving $tdir/Release.gpg: 
$!\n";

 and that was enough.

 Attaching debdiff.

   Thanks!
-- 
Loïc Minier
diff -Nru debmirror-2.3.1/debian/changelog debmirror-2.3.2/debian/changelog
--- debmirror-2.3.1/debian/changelog	2009-10-08 19:41:03.000000000 +0200
+++ debmirror-2.3.2/debian/changelog	2009-12-17 23:29:35.000000000 +0100
@@ -1,3 +1,10 @@
+debmirror (1:2.3.2) UNRELEASED; urgency=low
+
+  * Fix handling of repos without Release.gpg files --ignore-release-gpg is
+    passed.
+
+ -- Loïc Minier <[email protected]>  Thu, 17 Dec 2009 23:29:04 +0100
+
 debmirror (1:2.3.1) unstable; urgency=low
 
   * Update example configuration (closes: #549955):
diff -Nru debmirror-2.3.1/debmirror debmirror-2.3.2/debmirror
--- debmirror-2.3.1/debmirror	2009-10-08 19:30:56.000000000 +0200
+++ debmirror-2.3.2/debmirror	2009-12-17 23:28:57.000000000 +0100
@@ -818,7 +818,7 @@
     rename("$tdir/Release", "$tempdir/dists/$codename$dist_sdir/Release")
       or die "Error while moving $tdir/Release: $!\n";
     rename("$tdir/Release.gpg", "$tempdir/dists/$codename$dist_sdir/Release.gpg")
-      or die "Error while moving $tdir/Release.gpg: $!\n";
+      or $ignore_release_gpg or die "Error while moving $tdir/Release.gpg: $!\n";
     $files{"dists/$codename$dist_sdir/Release"}=1;
     $files{$tempdir."/"."dists/$codename$dist_sdir/Release"}=1;
     $files{"dists/$codename$dist_sdir/Release.gpg"}=1;
@@ -1756,9 +1756,9 @@
   make_dir ("$tdir");
   return 0 unless remote_get("dists/$dist/Release", "$tempdir/.tmp");
   my $t = $num_errors;
-  return 0 unless remote_get("dists/$dist/Release.gpg", "$tempdir/.tmp");
-  # Check for gpg
   if (!$ignore_release_gpg) {
+    return 0 unless remote_get("dists/$dist/Release.gpg", "$tempdir/.tmp");
+    # Check for gpg
     if (system("gpgv --version >/dev/null 2>/dev/null")) {
       say("gpgv failed: --ignore-release-gpg or gpgv binary missing?");
       push (@errlog,"gpgv failed: --ignore-release-gpg or gpgv binary missing?\n");

Reply via email to