[tor-commits] [tor-browser-build/master] Bug 26059: Use signed directory when generating incremental mars

gk at torproject.org gk at torproject.org
Wed May 23 12:27:51 UTC 2018


commit ae1c8fd96fdb9f3208a84cca6ec9c8d546ada459
Author: Nicolas Vigier <boklm at torproject.org>
Date:   Mon May 21 13:14:13 2018 +0200

    Bug 26059: Use signed directory when generating incremental mars
    
    We update the update_responses script to be able to specify a different
    $releases_dir for each version. When generating incremental mars, this
    allows us to set the default releases_dir to {alpha,release}/signed and
    the current version's releases_dir to {alpha,release}/unsigned.
---
 Makefile                                     |  4 ++--
 projects/release/config                      |  4 ++++
 projects/release/update_responses_config.yml |  5 ++++-
 tools/update-responses/update_responses      | 27 ++++++++++++++++-----------
 4 files changed, 26 insertions(+), 14 deletions(-)

diff --git a/Makefile b/Makefile
index 2707d41..4c21a83 100644
--- a/Makefile
+++ b/Makefile
@@ -111,13 +111,13 @@ signtag-alpha: submodule-update
 	$(rbm) build release --step signtag --target alpha
 
 incrementals-release: submodule-update
-	$(rbm) build release --step update_responses_config --target release
+	$(rbm) build release --step update_responses_config --target release --target create_unsigned_incrementals
 	tools/update-responses/download_missing_versions release
 	tools/update-responses/gen_incrementals release
 	$(rbm) build release --step hash_incrementals --target release
 
 incrementals-alpha: submodule-update
-	$(rbm) build release --step update_responses_config --target alpha
+	$(rbm) build release --step update_responses_config --target alpha --target create_unsigned_incrementals
 	tools/update-responses/download_missing_versions alpha
 	tools/update-responses/gen_incrementals alpha
 	$(rbm) build release --step hash_incrementals --target alpha
diff --git a/projects/release/config b/projects/release/config
index e48fb01..2aba446 100644
--- a/projects/release/config
+++ b/projects/release/config
@@ -73,6 +73,10 @@ targets:
     var:
       signed_status: signed
 
+  create_unsigned_incrementals:
+    var:
+      create_unsigned_incrementals: 1
+
 input_files:
 
 # Release
diff --git a/projects/release/update_responses_config.yml b/projects/release/update_responses_config.yml
index 01c6950..1a9b0cf 100644
--- a/projects/release/update_responses_config.yml
+++ b/projects/release/update_responses_config.yml
@@ -5,7 +5,7 @@ appname_bundle_osx: TorBrowser
 appname_bundle_linux: tor-browser
 appname_bundle_win32: torbrowser-install
 appname_bundle_win64: torbrowser-install-win64
-releases_dir: [% path(c('output_dir')) %]/[% c("var/signed_status") %]
+releases_dir: [% path(c('output_dir')) %]/signed
 download:
     archive_url: https://archive.torproject.org/tor-package-archive/torbrowser
     gpg_keyring: ../../keyring/torbrowser.gpg
@@ -25,6 +25,9 @@ channels:
     [% pc('firefox', 'var/torbrowser_update_channel') %]: [% c("var/torbrowser_version") %]
 versions:
     [% c("var/torbrowser_version") %]:
+[% IF c("var/create_unsigned_incrementals") -%]
+        releases_dir: [% path(c('output_dir')) %]/unsigned
+[% END -%]
         platformVersion: [% pc('firefox', 'var/firefox_platform_version') %]
         detailsURL: https://blog.torproject.org/tor-browser-[% c("var/torbrowser_version") FILTER remove('\.') %]-released
         incremental_from:
diff --git a/tools/update-responses/update_responses b/tools/update-responses/update_responses
index 658f451..bf2415d 100755
--- a/tools/update-responses/update_responses
+++ b/tools/update-responses/update_responses
@@ -92,7 +92,7 @@ sub get_version_files {
     return if $config->{versions}{$version}{files};
     my $appname = $config->{appname_marfile};
     my $files = {};
-    my $vdir = "$releases_dir/$version";
+    my $vdir = version_dir($config, $version);
     my $download_url = "$config->{download}{mars_url}/$version";
     opendir(my $d, $vdir) or exit_error "Error opening directory $vdir";
     foreach my $file (readdir $d) {
@@ -126,7 +126,7 @@ sub get_version_files {
 sub get_version_downloads {
     my ($config, $version) = @_;
     my $downloads = {};
-    my $vdir = "$releases_dir/$version";
+    my $vdir = version_dir($config, $version);
     my $download_url = "$config->{download}{bundles_url}/$version";
     opendir(my $d, $vdir) or exit_error "Error opening directory $vdir";
     foreach my $file (readdir $d) {
@@ -179,15 +179,15 @@ sub extract_mar {
 }
 
 sub mar_filename {
-    my ($appname, $version, $os, $lang) = @_;
-    "$releases_dir/$version/$appname-$os-${version}_$lang.mar";
+    my ($config, $appname, $version, $os, $lang) = @_;
+    version_dir($config, $version) .  "/$appname-$os-${version}_$lang.mar";
 }
 
 sub create_incremental_mar {
     my ($config, $pm, $from_version, $new_version, $os, $lang) = @_;
     my $appname = $config->{appname_marfile};
     my $mar_file = "$appname-$os-${from_version}-${new_version}_$lang.incremental.mar";
-    my $mar_file_path = "$releases_dir/$new_version/$mar_file";
+    my $mar_file_path = version_dir($config, $new_version) . '/' . $mar_file;
     if ($ENV{MAR_SKIP_EXISTING} && -f $mar_file_path) {
         print "Skipping $mar_file\n";
         return;
@@ -207,8 +207,8 @@ sub create_incremental_mar {
     };
     return if $pm->start($finished_file);
     my $tmpdir = get_tmpdir($config);
-    extract_mar(mar_filename($appname, $from_version, $os, $lang), "$tmpdir/A");
-    extract_mar(mar_filename($appname, $new_version, $os, $lang), "$tmpdir/B");
+    extract_mar(mar_filename($config, $appname, $from_version, $os, $lang), "$tmpdir/A");
+    extract_mar(mar_filename($config, $appname, $new_version, $os, $lang), "$tmpdir/B");
     if ($ENV{CHECK_CODESIGNATURE_EXISTS}) {
         unless (-f "$tmpdir/A/Contents/_CodeSignature/CodeResources"
             && -f "$tmpdir/B/Contents/_CodeSignature/CodeResources") {
@@ -250,6 +250,11 @@ sub get_config {
         // $config->{$name};
 }
 
+sub version_dir {
+    my ($config, $version) = @_;
+    return get_config($config, $version, 'any', 'releases_dir') . "/$version";
+}
+
 sub channel_to_version {
     my ($config, @channels) = @_;
     return values %{$config->{channels}} unless @channels;
@@ -270,7 +275,7 @@ sub get_buildinfos {
             next unless $files->{$os}{$lang}{complete};
             my $tmpdir = get_tmpdir($config);
             extract_mar(
-                mar_filename($config->{appname_marfile}, $version, $os, $lang),
+                mar_filename($config, $config->{appname_marfile}, $version, $os, $lang),
                 "$tmpdir");
             my $appfile = "$tmpdir/application.ini" if -f "$tmpdir/application.ini";
             $appfile = "$tmpdir/Contents/Resources/application.ini"
@@ -423,7 +428,7 @@ my $martools_tmpdir;
 sub extract_martools {
     my ($config, $version) = @_;
     my $osname = osname;
-    my $marzip = "$releases_dir/$version/mar-tools-$osname.zip";
+    my $marzip = version_dir($config, $version) . "/mar-tools-$osname.zip";
     $martools_tmpdir = get_tmpdir($config);
     my $old_cwd = getcwd;
     chdir $martools_tmpdir;
@@ -523,7 +528,7 @@ sub check_update_responses_channel {
 sub download_version {
     my ($config, $version) = @_;
     my $tmpdir = get_tmpdir($config);
-    my $destdir = "$releases_dir/$version";
+    my $destdir = version_dir($config, $version);
     my $urldir = "$config->{download}{archive_url}/$version";
     print "Downloading version $version\n";
     foreach my $file (qw(sha256sums-signed-build.txt sha256sums-signed-build.txt.asc)) {
@@ -576,7 +581,7 @@ sub download_missing_versions {
         my $cversion = $config->{channels}{$channel};
         next unless $config->{versions}{$cversion}{incremental_from};
         foreach my $version (@{$config->{versions}{$cversion}{incremental_from}}) {
-            next if -d "$releases_dir/$version";
+            next if -d version_dir($config, $version);
             download_version($config, $version);
         }
     }



More information about the tor-commits mailing list