morgan pushed to branch main at The Tor Project / Applications / tor-browser-build

Commits:

3 changed files:

Changes:

  • projects/release/update_responses_config.yml
    ... ... @@ -51,10 +51,6 @@ versions:
    51 51
               - [% ver %]
    
    52 52
     [%   END;
    
    53 53
        END -%]
    
    54
    -        # for example, osx32: osx64
    
    55
    -        migrate_archs:
    
    56
    -        # for example, pt-PT: pt-BR
    
    57
    -        migrate_langs:
    
    58 54
             # minSupportedOsVersion on macOS corresponds to the Darwin version ( https://en.wikipedia.org/wiki/Darwin_(operating_system) )
    
    59 55
             macos:
    
    60 56
                 # macOS v10.15.0
    

  • tools/dmg2mar
    ... ... @@ -102,7 +102,7 @@ sub get_dmg_files_from_sha256sums {
    102 102
             next unless $filename;
    
    103 103
             chomp $filename;
    
    104 104
             next unless $filename =~ m/^$appname_dmg-macos-(.+)\.dmg$/;
    
    105
    -        push @files, { filename => $filename, version => $1, lang => 'ALL' };
    
    105
    +        push @files, { filename => $filename, version => $1 };
    
    106 106
         }
    
    107 107
         return @files;
    
    108 108
     }
    
    ... ... @@ -116,11 +116,7 @@ sub convert_files {
    116 116
             print "Finished $_[2]\n";
    
    117 117
           });
    
    118 118
         foreach my $file (get_dmg_files_from_sha256sums) {
    
    119
    -        # The 'ja' locale is a special case: it is called 'ja-JP-mac'
    
    120
    -        # internally on OSX, but the dmg file still uses 'ja' to avoid
    
    121
    -        # confusing users.
    
    122
    -        my $mar_lang = $file->{lang} eq 'ja' ? 'ja-JP-mac' : $file->{lang};
    
    123
    -        my $output = "$appname_mar-macos-$file->{version}_$mar_lang.mar";
    
    119
    +        my $output = "$appname_mar-macos-$file->{version}_ALL.mar";
    
    124 120
             my $step_name = "$file->{filename} -> $output";
    
    125 121
             print "Starting $step_name\n";
    
    126 122
             $pm->start($step_name) and next;
    

  • tools/update-responses/update_responses
    ... ... @@ -113,9 +113,9 @@ sub get_version_files {
    113 113
         foreach my $file (readdir $d) {
    
    114 114
             next unless -f "$vdir/$file";
    
    115 115
             if ($file !~ m/incremental\.mar$/ &&
    
    116
    -            $file =~ m/^$appname-(.+)-${version}_(.+)\.mar$/) {
    
    117
    -            my ($os, $lang) = ($1, $2);
    
    118
    -            $files->{$os}{$lang}{complete} = {
    
    116
    +            $file =~ m/^$appname-(.+)-${version}_ALL\.mar$/) {
    
    117
    +            my $os = $1;
    
    118
    +            $files->{$os}{complete} = {
    
    119 119
                     type => 'complete',
    
    120 120
                     URL => "$download_url/$file",
    
    121 121
                     size => -s "$vdir/$file",
    
    ... ... @@ -126,9 +126,9 @@ sub get_version_files {
    126 126
                 };
    
    127 127
                 next;
    
    128 128
             }
    
    129
    -        if ($file =~ m/^$appname-(.+)--(.+)-${version}_(.+)\.incremental\.mar$/) {
    
    130
    -            my ($os, $from_version, $lang) = ($1, $2, $3);
    
    131
    -            $files->{$os}{$lang}{partial}{$from_version} = {
    
    129
    +        if ($file =~ m/^$appname-(.+)--(.+)-${version}_ALL\.incremental\.mar$/) {
    
    130
    +            my ($os, $from_version) = ($1, $2);
    
    131
    +            $files->{$os}{partial}{$from_version} = {
    
    132 132
                     type => 'partial',
    
    133 133
                     URL => "$download_url/$file",
    
    134 134
                     size => -s "$vdir/$file",
    
    ... ... @@ -235,14 +235,14 @@ sub extract_mar {
    235 235
     }
    
    236 236
     
    
    237 237
     sub mar_filename {
    
    238
    -    my ($config, $appname, $version, $os, $lang) = @_;
    
    239
    -    version_dir($config, $version) .  "/$appname-$os-${version}_$lang.mar";
    
    238
    +    my ($config, $appname, $version, $os) = @_;
    
    239
    +    version_dir($config, $version) .  "/$appname-$os-${version}_ALL.mar";
    
    240 240
     }
    
    241 241
     
    
    242 242
     sub create_incremental_mar {
    
    243
    -    my ($config, $pm, $from_version, $new_version, $os, $lang, $channel) = @_;
    
    243
    +    my ($config, $pm, $from_version, $new_version, $os, $channel) = @_;
    
    244 244
         my $appname = $config->{appname_marfile};
    
    245
    -    my $mar_file = "$appname-$os--${from_version}-${new_version}_$lang.incremental.mar";
    
    245
    +    my $mar_file = "$appname-$os--${from_version}-${new_version}_ALL.incremental.mar";
    
    246 246
         my $mar_file_path = version_dir($config, $new_version) . '/' . $mar_file;
    
    247 247
         if ($ENV{MAR_SKIP_EXISTING} && -f $mar_file_path) {
    
    248 248
             print "Skipping $mar_file\n";
    
    ... ... @@ -253,7 +253,7 @@ sub create_incremental_mar {
    253 253
         my $finished_file = sub {
    
    254 254
             exit_error "Error creating $mar_file" unless $_[1] == 0;
    
    255 255
             print "Finished $mar_file\n";
    
    256
    -        $config->{versions}{$new_version}{files}{$os}{$lang}{partial}{$from_version} = {
    
    256
    +        $config->{versions}{$new_version}{files}{$os}{partial}{$from_version} = {
    
    257 257
                 type => 'partial',
    
    258 258
                 URL => "$download_url/$mar_file",
    
    259 259
                 size => -s $mar_file_path,
    
    ... ... @@ -267,9 +267,9 @@ sub create_incremental_mar {
    267 267
         my $tmpdir = get_tmpdir($config);
    
    268 268
         my $mar_c_from = get_config($config, $from_version, $os, 'mar_compression');
    
    269 269
         my $mar_c_new = get_config($config, $new_version, $os, 'mar_compression');
    
    270
    -    extract_mar(mar_filename($config, $appname, $from_version, $os, $lang),
    
    270
    +    extract_mar(mar_filename($config, $appname, $from_version, $os),
    
    271 271
                     "$tmpdir/A", $mar_c_from);
    
    272
    -    extract_mar(mar_filename($config, $appname, $new_version, $os, $lang),
    
    272
    +    extract_mar(mar_filename($config, $appname, $new_version, $os),
    
    273 273
                     "$tmpdir/B", $mar_c_new);
    
    274 274
         # bug 26054: make sure previous macOS version is code signed
    
    275 275
         if (!$ENV{NO_CODESIGNATURE} && ($os eq 'macos')
    
    ... ... @@ -306,10 +306,8 @@ sub create_incremental_mars_for_version {
    306 306
             get_version_files($config, $from_version);
    
    307 307
             my $from_v = $config->{versions}{$from_version};
    
    308 308
             foreach my $os (keys %{$v->{files}}) {
    
    309
    -            foreach my $lang (keys %{$v->{files}{$os}}) {
    
    310
    -                next unless defined $from_v->{files}{$os}{$lang}{complete};
    
    311
    -                create_incremental_mar($config, $pm, $from_version, $version, $os, $lang, $channel);
    
    312
    -            }
    
    309
    +            next unless defined $from_v->{files}{$os}{complete};
    
    310
    +            create_incremental_mar($config, $pm, $from_version, $version, $os, $channel);
    
    313 311
             }
    
    314 312
         }
    
    315 313
         $pm->wait_all_children;
    
    ... ... @@ -333,31 +331,29 @@ sub get_buildinfos {
    333 331
         setup_martools;
    
    334 332
         my $files = $config->{versions}{$version}{files};
    
    335 333
         foreach my $os (keys %$files) {
    
    336
    -        foreach my $lang (keys %{$files->{$os}}) {
    
    337
    -            next unless $files->{$os}{$lang}{complete};
    
    338
    -            my $tmpdir = get_tmpdir($config);
    
    339
    -            my $mar_compression = get_config($config, $version, $os, 'mar_compression');
    
    340
    -            extract_mar(
    
    341
    -                mar_filename($config, $config->{appname_marfile}, $version, $os, $lang),
    
    342
    -                "$tmpdir",
    
    343
    -                $mar_compression);
    
    344
    -            my $appfile = "$tmpdir/application.ini" if -f "$tmpdir/application.ini";
    
    345
    -            $appfile = "$tmpdir/Contents/Resources/application.ini"
    
    346
    -                                if -f "$tmpdir/Contents/Resources/application.ini";
    
    347
    -            exit_error "Could not find application.ini" unless $appfile;
    
    348
    -            foreach my $line (read_file($appfile)) {
    
    349
    -                if ($line =~ m/^BuildID=(.*)$/) {
    
    350
    -                    $config->{versions}{$version}{buildID} = $1;
    
    351
    -                    return;
    
    352
    -                }
    
    334
    +        next unless $files->{$os}{complete};
    
    335
    +        my $tmpdir = get_tmpdir($config);
    
    336
    +        my $mar_compression = get_config($config, $version, $os, 'mar_compression');
    
    337
    +        extract_mar(
    
    338
    +            mar_filename($config, $config->{appname_marfile}, $version, $os),
    
    339
    +            "$tmpdir",
    
    340
    +            $mar_compression);
    
    341
    +        my $appfile = "$tmpdir/application.ini" if -f "$tmpdir/application.ini";
    
    342
    +        $appfile = "$tmpdir/Contents/Resources/application.ini"
    
    343
    +                if -f "$tmpdir/Contents/Resources/application.ini";
    
    344
    +        exit_error "Could not find application.ini" unless $appfile;
    
    345
    +        foreach my $line (read_file($appfile)) {
    
    346
    +            if ($line =~ m/^BuildID=(.*)$/) {
    
    347
    +                $config->{versions}{$version}{buildID} = $1;
    
    348
    +                return;
    
    353 349
                 }
    
    354
    -            exit_error "Could not extract buildID from application.ini";
    
    355 350
             }
    
    351
    +        exit_error "Could not extract buildID from application.ini";
    
    356 352
         }
    
    357 353
     }
    
    358 354
     
    
    359 355
     sub get_response {
    
    360
    -    my ($config, $versions, $os, $lang, $from_version) = @_;
    
    356
    +    my ($config, $versions, $os, $from_version) = @_;
    
    361 357
         my $res;
    
    362 358
         my $writer = XML::Writer->new(OUTPUT => \$res, ENCODING => 'UTF-8');
    
    363 359
         $writer->xmlDecl;
    
    ... ... @@ -384,13 +380,13 @@ sub get_response {
    384 380
                 defined $minversion ? ( minSupportedOSVersion => $minversion ) : (),
    
    385 381
                 defined $mininstruc ? ( minSupportedInstructionSet => $mininstruc ) : (),
    
    386 382
             );
    
    387
    -        if (my $patch = $config->{versions}{$version}{files}{$os}{$lang}{complete}) {
    
    383
    +        if (my $patch = $config->{versions}{$version}{files}{$os}{complete}) {
    
    388 384
                 my @sorted_patch = map { $_ => $patch->{$_} } sort keys %$patch;
    
    389 385
                 $writer->startTag('patch', @sorted_patch);
    
    390 386
                 $writer->endTag('patch');
    
    391 387
             }
    
    392 388
             if ($from_version) {
    
    393
    -            if (my $patch = $config->{versions}{$version}{files}{$os}{$lang}{partial}{$from_version}) {
    
    389
    +            if (my $patch = $config->{versions}{$version}{files}{$os}{partial}{$from_version}) {
    
    394 390
                     my @sorted_patch = map { $_ => $patch->{$_} } sort keys %$patch;
    
    395 391
                     $writer->startTag('patch', @sorted_patch);
    
    396 392
                     $writer->endTag('patch');
    
    ... ... @@ -407,38 +403,25 @@ sub get_response {
    407 403
     sub write_responses {
    
    408 404
         my ($config, $channel) = @_;
    
    409 405
         my $versions = as_array($config->{channels}{$channel});
    
    410
    -    my (%oses, %langs, %from_versions);
    
    406
    +    my (%oses, %from_versions);
    
    411 407
         foreach my $version (@$versions) {
    
    412 408
             get_version_files($config, $version);
    
    413 409
             get_buildinfos($config, $version);
    
    414 410
             my $files = $config->{versions}{$version}{files};
    
    415
    -        my $migrate_archs = $config->{versions}{$version}{migrate_archs} // {};
    
    416
    -        foreach my $old_os (keys %$migrate_archs) {
    
    417
    -            my $new_os = $migrate_archs->{$old_os};
    
    418
    -            foreach my $lang (keys %{$files->{$new_os}}) {
    
    419
    -                $files->{$old_os}{$lang}{complete} =
    
    420
    -                    $files->{$new_os}{$lang}{complete};
    
    421
    -            }
    
    422
    -        }
    
    423 411
             foreach my $os (keys %$files) {
    
    424 412
                 $oses{$os} = 1;
    
    425
    -            foreach my $lang (keys %{$files->{$os}}) {
    
    426
    -                $langs{$lang} = 1;
    
    427
    -                foreach my $from_version (keys %{$files->{$os}{$lang}{partial}}) {
    
    428
    -                    $from_versions{$from_version} = 1;
    
    429
    -                }
    
    413
    +            foreach my $from_version (keys %{$files->{$os}{partial}}) {
    
    414
    +                $from_versions{$from_version} = 1;
    
    430 415
                 }
    
    431 416
             }
    
    432 417
         }
    
    433 418
         my $versions_str = join('+', @$versions);
    
    434 419
         foreach my $os (keys %oses) {
    
    435
    -        foreach my $lang (keys %langs) {
    
    436
    -            my $resp = get_response($config, $versions, $os, $lang);
    
    437
    -            write_htdocs($channel, "$versions_str-$os-$lang.xml", $resp);
    
    438
    -            foreach my $from_version (keys %from_versions) {
    
    439
    -                $resp = get_response($config, $versions, $os, $lang, $from_version);
    
    440
    -                write_htdocs($channel, "$from_version-$versions_str-$os-$lang.xml", $resp);
    
    441
    -            }
    
    420
    +        my $resp = get_response($config, $versions, $os);
    
    421
    +        write_htdocs($channel, "$versions_str-$os.xml", $resp);
    
    422
    +        foreach my $from_version (keys %from_versions) {
    
    423
    +            $resp = get_response($config, $versions, $os, $from_version);
    
    424
    +            write_htdocs($channel, "$from_version-$versions_str-$os.xml", $resp);
    
    442 425
             }
    
    443 426
         }
    
    444 427
         write_htdocs($channel, 'no-update.xml',
    
    ... ... @@ -453,38 +436,26 @@ sub write_htaccess {
    453 436
         $htaccess .= $config->{htaccess_rewrite_rules}{$channel} // '';
    
    454 437
         my $versions = as_array($config->{channels}{$channel});
    
    455 438
         my $versions_str = join('+', @$versions);
    
    456
    -    my (%oses, %langs, %from_versions);
    
    457
    -    my $migrate_langs;
    
    439
    +    my (%oses, %from_versions);
    
    458 440
         foreach my $version (@$versions) {
    
    459
    -        $migrate_langs = $config->{versions}{$version}{migrate_langs}
    
    460
    -                                if $config->{versions}{$version}{migrate_langs};
    
    461 441
             my $files = $config->{versions}{$version}{files};
    
    462 442
             foreach my $os (keys %$files) {
    
    463 443
                 $oses{$os} = 1;
    
    464
    -            foreach my $lang (keys %{$files->{$os}}) {
    
    465
    -                $langs{$lang} = 1;
    
    466
    -                foreach my $from_version (keys %{$files->{$os}{$lang}{partial}}) {
    
    467
    -                    $from_versions{$from_version} = 1;
    
    468
    -                }
    
    444
    +            foreach my $from_version (keys %{$files->{$os}{partial}}) {
    
    445
    +                $from_versions{$from_version} = 1;
    
    469 446
                 }
    
    470 447
             }
    
    471 448
             $htaccess .= "RewriteRule ^[^\/]+/$version/ no-update.xml $flags\n";
    
    472 449
         }
    
    473 450
         foreach my $os (sort keys %oses) {
    
    474 451
             foreach my $bt (build_targets_by_os($os)) {
    
    475
    -            foreach my $lang (sort keys %langs) {
    
    476
    -                foreach my $from_version (sort keys %from_versions) {
    
    477
    -                    $htaccess .= "RewriteRule ^$bt/$from_version/$lang "
    
    478
    -                              .  "$from_version-$versions_str-$os-$lang.xml $flags\n";
    
    479
    -                }
    
    480
    -                $htaccess .= "RewriteRule ^$bt/[^\/]+/$lang "
    
    481
    -                          .  "$versions_str-$os-$lang.xml $flags\n";
    
    452
    +            foreach my $from_version (sort keys %from_versions) {
    
    453
    +                $htaccess .= "RewriteRule ^$bt/$from_version/ALL "
    
    454
    +                          .  "$from_version-$versions_str-$os.xml $flags\n";
    
    482 455
                 }
    
    483
    -            foreach my $lang (sort keys %$migrate_langs) {
    
    484
    -                $htaccess .= "RewriteRule ^$bt/[^\/]+/$lang "
    
    485
    -                          .  "$versions_str-$os-$migrate_langs->{$lang}.xml $flags\n";
    
    486
    -            }
    
    487
    -            $htaccess .= "RewriteRule ^$bt/ $versions_str-$os-ALL.xml $flags\n";
    
    456
    +            $htaccess .= "RewriteRule ^$bt/[^\/]+/ALL "
    
    457
    +                      .  "$versions_str-$os.xml $flags\n";
    
    458
    +            $htaccess .= "RewriteRule ^$bt/ $versions_str-$os.xml $flags\n";
    
    488 459
             }
    
    489 460
         }
    
    490 461
         write_htdocs($channel, '.htaccess', $htaccess);
    
    ... ... @@ -567,28 +538,26 @@ sub check_update_responses_channel {
    567 538
         my $channel_versions = as_array($config->{channels}{$channel});
    
    568 539
         my ($channel_version) = @$channel_versions;
    
    569 540
         foreach my $build_target (build_targets_list()) {
    
    570
    -        foreach my $lang (qw(en-US de)) {
    
    571
    -            my $url = "$base_url/$channel/$build_target/1.0/$lang";
    
    572
    -            my $dom = get_remote_xml($url);
    
    573
    -            if ($dom) {
    
    574
    -                my $version = check_get_version($dom);
    
    575
    -                log_step($url, 'version', $version eq $channel_version,
    
    576
    -                         "expected: $channel_version received: $version");
    
    577
    -            }
    
    578
    -            $url = "$base_url/$channel/$build_target/$channel_version/$lang";
    
    541
    +        my $url = "$base_url/$channel/$build_target/1.0/ALL";
    
    542
    +        my $dom = get_remote_xml($url);
    
    543
    +        if ($dom) {
    
    544
    +            my $version = check_get_version($dom);
    
    545
    +            log_step($url, 'version', $version eq $channel_version,
    
    546
    +                "expected: $channel_version received: $version");
    
    547
    +        }
    
    548
    +        $url = "$base_url/$channel/$build_target/$channel_version/ALL";
    
    549
    +        $dom = get_remote_xml($url);
    
    550
    +        log_step($url, 'no_update', check_no_update($dom)) if $dom;
    
    551
    +        my @inc = @{$config->{versions}{$channel_version}{incremental_from}}
    
    552
    +                  if $config->{versions}{$channel_version}{incremental_from};
    
    553
    +        foreach my $inc_from (@inc) {
    
    554
    +            my $url = "$base_url/$channel/$build_target/$inc_from/ALL";
    
    579 555
                 $dom = get_remote_xml($url);
    
    580
    -            log_step($url, 'no_update', check_no_update($dom)) if $dom;
    
    581
    -            my @inc = @{$config->{versions}{$channel_version}{incremental_from}}
    
    582
    -                      if $config->{versions}{$channel_version}{incremental_from};
    
    583
    -            foreach my $inc_from (@inc) {
    
    584
    -                my $url = "$base_url/$channel/$build_target/$inc_from/$lang";
    
    585
    -                $dom = get_remote_xml($url);
    
    586
    -                next unless $dom;
    
    587
    -                my $version = check_get_version($dom);
    
    588
    -                log_step($url, 'version', $version eq $channel_version,
    
    589
    -                         "expected: $channel_version received: $version");
    
    590
    -                log_step($url, 'has_incremental', check_has_incremental($dom));
    
    591
    -            }
    
    556
    +            next unless $dom;
    
    557
    +            my $version = check_get_version($dom);
    
    558
    +            log_step($url, 'version', $version eq $channel_version,
    
    559
    +                     "expected: $channel_version received: $version");
    
    560
    +            log_step($url, 'has_incremental', check_has_incremental($dom));
    
    592 561
             }
    
    593 562
         }
    
    594 563
     }