[tor-commits] [tor-browser-build/master] Bug 40229: add support for local builds directory in sign-nightly

gk at torproject.org gk at torproject.org
Mon Feb 22 15:38:11 UTC 2021


commit 1b173d226cf6a6083abf540f5b3046ff8f11fb0e
Author: Nicolas Vigier <boklm at torproject.org>
Date:   Thu Feb 18 19:59:05 2021 +0100

    Bug 40229: add support for local builds directory in sign-nightly
    
    If builds_url starts with '/', we assume it is a local directory.
---
 tools/signing/nightly/sign-nightly | 34 ++++++++++++++++++++++------------
 1 file changed, 22 insertions(+), 12 deletions(-)

diff --git a/tools/signing/nightly/sign-nightly b/tools/signing/nightly/sign-nightly
index c2aa61a..a633313 100755
--- a/tools/signing/nightly/sign-nightly
+++ b/tools/signing/nightly/sign-nightly
@@ -89,7 +89,11 @@ sub get_last_build_version {
     my $yesterday = 'tbb-nightly.' . $dt_yesterday->ymd('.');
     for my $version ($today, $yesterday) {
         my $url = "$config->{builds_url}/$version/$publish_dir/sha256sums-unsigned-build.incrementals.txt";
-        return $version if get($url);
+        if ($url =~ m|^/|) {
+            return $version if -f $url;
+        } else {
+            return $version if get($url);
+        }
     }
     return undef;
 }
@@ -119,18 +123,24 @@ sub get_new_version {
     return $last_ver;
 }
 
-sub download_file {
+sub get_file {
+    my ($url, $file) = @_;
+    return copy($url, $file) if $url =~ m|^/|;
+    return getstore($url, $file) == 200;
+}
+
+sub get_file_sha256sum {
     my ($url, $file, $sha256sum) = @_;
-    my $retries = 5;
+    my $retries = $url =~ m|^/| ? 1 : 5;
     while ($retries > 0) {
         $retries--;
-        print "Downloading $url\n";
-        next unless getstore("$url", "$file.tmp") == 200;
+        print "Getting $url\n";
+        next unless get_file($url, "$file.tmp");
         next unless $sha256sum eq sha256_hex(path("$file.tmp")->slurp_raw);
         move("$file.tmp", $file);
         return 1;
     }
-    exit_error "Error downloading $url";
+    exit_error "Error getting $url";
 }
 
 sub fetch_version {
@@ -143,10 +153,10 @@ sub fetch_version {
     my $gpg_keyring = basedir_path($config->{gpg_keyring}, $topdir);
     for my $file (qw/sha256sums-unsigned-build.txt sha256sums-unsigned-build.incrementals.txt/) {
         my $url = "$urldir/$file";
-        exit_error "Error downloading $url"
-                unless getstore($url, "$tmpdir/$file") == 200;
-        exit_error "Error downloading $url.asc"
-                unless getstore("$url.asc", "$tmpdir/$file.asc") == 200;
+        exit_error "Error getting $url"
+                unless get_file($url, "$tmpdir/$file");
+        exit_error "Error getting $url.asc"
+                unless get_file("$url.asc", "$tmpdir/$file.asc");
         exit_error "Error checking gpg signature for $url"
                 if system('gpg', '--no-default-keyring', '--keyring', $gpg_keyring,
                           '--verify', "$tmpdir/$file.asc",
@@ -159,10 +169,10 @@ sub fetch_version {
         );
     my @build_infos_file = grep { $_ =~ m/build-infos-.*\.json/ } keys %sums;
     exit_error "Missing build-infos.json in $urldir" unless @build_infos_file;
-    download_file("$urldir/$build_infos_file[0]",
+    get_file_sha256sum("$urldir/$build_infos_file[0]",
                   "$tmpdir/build-infos.json", $sums{$build_infos_file[0]});
     foreach my $file (sort grep { $_ =~ m/\.mar$/ } keys %sums) {
-        download_file("$urldir/$file", "$tmpdir/$file", $sums{$file});
+        get_file_sha256sum("$urldir/$file", "$tmpdir/$file", $sums{$file});
     }
     make_path("$topdir/nightly/$publish_dir");
     dirmove($tmpdir, $destdir)





More information about the tor-commits mailing list