morgan pushed to branch main at The Tor Project / Applications / tor-browser-build
Commits:
-
bbe7bf81
by Nicolas Vigier at 2025-02-10T14:12:04+00:00
-
7f90f5cd
by Nicolas Vigier at 2025-02-10T14:12:04+00:00
-
75179413
by Nicolas Vigier at 2025-02-10T14:12:04+00:00
-
dbc66b84
by Nicolas Vigier at 2025-02-10T14:12:04+00:00
8 changed files:
- projects/mar-tools/config
- tools/dmg2mar
- + tools/mar
- + tools/setup-martools
- tools/signing/machines-setup/setup-signing-machine
- tools/signing/machines-setup/upload-tbb-to-signing-machine
- + tools/signmar
- tools/update-responses/update_responses
Changes:
1 | 1 | # vim: filetype=yaml sw=2
|
2 | 2 | #
|
3 | 3 | # Used by tools/signing/machines-setup/upload-tbb-to-signing-machine
|
4 | -# to fetch mar-tools for signing machine setup
|
|
4 | +# to fetch mar-tools for signing machine setup, and by tools/setup-martools
|
|
5 | +# to allow running `mar` as `tools/mar`.
|
|
5 | 6 | #
|
6 | -version: 12.0.4
|
|
7 | -filename: 'mar-tools-linux64.zip'
|
|
7 | +version: 14.0.4
|
|
8 | +filename: 'mar-tools.zip'
|
|
8 | 9 | container:
|
9 | 10 | use_container: 0
|
10 | 11 | gpg_keyring: torbrowser.gpg
|
11 | 12 | tag_gpg_id: 1
|
12 | 13 | input_files:
|
13 | - - URL: 'https://archive.torproject.org/tor-package-archive/torbrowser/[% c("version") %]/mar-tools-linux64.zip'
|
|
14 | - sha256sum: 726ec4192de61a9342b3262c7ac722cbd59eaba07879be9589c65599d2d69584
|
|
14 | + - URL: 'https://archive.torproject.org/tor-package-archive/torbrowser/[% c("version") %]/mar-tools-linux-x86_64-[% c("version") %].zip'
|
|
15 | + sha256sum: 414254d2471c7f0bcc25de955dbbe716c416d0b80e7688dc2dd48ac6e7fdbf0a
|
|
15 | 16 | |
16 | 17 | steps:
|
17 | 18 | fetch_martools:
|
18 | 19 | fetch_martools: |
|
19 | 20 | #!/bin/bash
|
20 | - echo ok |
|
21 | + mkdir -p '[% dest_dir %]'
|
|
22 | + cp -f mar-tools-linux-x86_64-[% c("version") %].zip '[% dest_dir %]/mar-tools.zip' |
... | ... | @@ -34,6 +34,7 @@ use File::Slurp; |
34 | 34 | use File::Find;
|
35 | 35 | use Parallel::ForkManager;
|
36 | 36 | use Cwd;
|
37 | +use FindBin;
|
|
37 | 38 | |
38 | 39 | # If the application is not TorBrowser (for instance, TorMessenger)
|
39 | 40 | # set the application name in the TOR_APPNAME_BUNDLE_OSX,
|
... | ... | @@ -70,25 +71,18 @@ sub osname { |
70 | 71 | exit_error 'Unknown OS';
|
71 | 72 | }
|
72 | 73 | |
73 | -my $martools_tmpdir;
|
|
74 | -sub extract_martools {
|
|
75 | - my $osname = osname;
|
|
76 | - my $marzip = glob(getcwd . "/mar-tools-$osname-*.zip");
|
|
77 | - exit_error "Could not find mar-tools zip" unless $marzip;
|
|
78 | - $martools_tmpdir = File::Temp->newdir();
|
|
79 | - my $old_cwd = getcwd;
|
|
80 | - chdir $martools_tmpdir;
|
|
81 | - my (undef, undef, $success) = capture_exec('unzip', $marzip);
|
|
82 | - chdir $old_cwd;
|
|
83 | - exit_error "Error extracting $marzip" unless $success;
|
|
84 | - $ENV{PATH} = "$martools_tmpdir/mar-tools:$ENV{PATH}";
|
|
85 | - if ($ENV{LD_LIBRARY_PATH}) {
|
|
86 | - $ENV{LD_LIBRARY_PATH} .= ":$martools_tmpdir/mar-tools";
|
|
87 | - } else {
|
|
88 | - $ENV{LD_LIBRARY_PATH} = "$martools_tmpdir/mar-tools";
|
|
89 | - }
|
|
90 | - $ENV{MAR} = "$martools_tmpdir/mar-tools/mar";
|
|
91 | - $ENV{MSBDIFF} = "$martools_tmpdir/mar-tools/mbsdiff";
|
|
74 | +sub setup_martools {
|
|
75 | + my ($out, $err, $exit) = capture {
|
|
76 | + system("$FindBin::Bin/setup-martools");
|
|
77 | + };
|
|
78 | + exit_error "Error setting up mar-tools: $err" if $exit;
|
|
79 | + my $martoolsdir = "$FindBin::Bin/local/mar-tools";
|
|
80 | + if ($ENV{LD_LIBRARY_PATH}) {
|
|
81 | + $ENV{LD_LIBRARY_PATH} = "$ENV{LD_LIBRARY_PATH}:$martoolsdir";
|
|
82 | + } else {
|
|
83 | + $ENV{LD_LIBRARY_PATH} = "$martoolsdir/mar-tools";
|
|
84 | + }
|
|
85 | + $ENV{PATH} = "$martoolsdir:$ENV{PATH}";
|
|
92 | 86 | }
|
93 | 87 | |
94 | 88 | sub get_nbprocs {
|
... | ... | @@ -192,6 +186,6 @@ $ENV{LC_ALL} = 'C'; |
192 | 186 | exit_error "Please specify the mar channel id" unless @ARGV == 1;
|
193 | 187 | my $mar_channel_id = $ARGV[0];
|
194 | 188 | |
195 | -extract_martools;
|
|
189 | +setup_martools;
|
|
196 | 190 | convert_files $mar_channel_id;
|
197 | 191 | remove_incremental_mars; |
1 | +#!/bin/bash
|
|
2 | +set -e
|
|
3 | + |
|
4 | +script_dir=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
|
5 | +cmdname=$(basename -- "${BASH_SOURCE[0]}")
|
|
6 | +setupmt=$("$script_dir/setup-martools")
|
|
7 | +eval "$setupmt"
|
|
8 | +exec "$MARTOOLSDIR/$cmdname" "$@" |
1 | +#!/bin/bash
|
|
2 | +set -e
|
|
3 | + |
|
4 | +script_dir=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
|
5 | + |
|
6 | +localdir="$script_dir/local"
|
|
7 | +test $# -eq 1 && localdir="$1"
|
|
8 | + |
|
9 | +cd "$script_dir/.."
|
|
10 | + |
|
11 | +function download_extract_martools {
|
|
12 | + make submodule-update > /dev/null
|
|
13 | + martools_version=$(./rbm/rbm showconf --step fetch_martools mar-tools version)
|
|
14 | + if test -h "$localdir/mar-tools"; then
|
|
15 | + test "$(readlink $localdir/mar-tools)" = "mar-tools-$martools_version" && return 0
|
|
16 | + rm -f "$localdir/mar-tools"
|
|
17 | + fi
|
|
18 | + if test -d "$localdir/mar-tools"; then
|
|
19 | + echo "Error: $localdir/mar-tools already exists and is not a symlink"
|
|
20 | + exit 1
|
|
21 | + fi
|
|
22 | + echo "Setting up mar-tools"
|
|
23 | + mkdir -p "$localdir"
|
|
24 | + cd "$localdir"
|
|
25 | + if ! test -d "mar-tools-$martools_version"; then
|
|
26 | + cd "$script_dir/.."
|
|
27 | + ./rbm/rbm build --step fetch_martools mar-tools
|
|
28 | + martools_zip="$(pwd)/out/mar-tools/mar-tools.zip"
|
|
29 | + cd "$localdir"
|
|
30 | + test -f "$martools_zip"
|
|
31 | + unzip -jd "mar-tools-$martools_version" "$martools_zip"
|
|
32 | + fi
|
|
33 | + ln -sf "mar-tools-$martools_version" mar-tools
|
|
34 | + echo "mar-tools have been set up in $localdir/mar-tools"
|
|
35 | +}
|
|
36 | + |
|
37 | +function print_martools_vars {
|
|
38 | + mardir="$localdir/mar-tools"
|
|
39 | + if test -z "$LD_LIBRARY_PATH"; then
|
|
40 | + echo "export LD_LIBRARY_PATH=$mardir"
|
|
41 | + else
|
|
42 | + echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$mardir"
|
|
43 | + fi
|
|
44 | + echo "export MARTOOLSDIR=$mardir"
|
|
45 | + echo "export MAR=$mardir/mar"
|
|
46 | +}
|
|
47 | + |
|
48 | +download_extract_martools >&2
|
|
49 | +print_martools_vars |
... | ... | @@ -144,7 +144,7 @@ fi |
144 | 144 | # install mar-tools
|
145 | 145 | if ! test -d /home/signing-mar/mar-tools; then
|
146 | 146 | tmpdir=$(mktemp -d)
|
147 | - unzip -d "$tmpdir" /signing/mar-tools-linux64.zip
|
|
147 | + unzip -d "$tmpdir" /signing/mar-tools.zip
|
|
148 | 148 | chown -R signing-mar:signing-mar "$tmpdir/mar-tools"
|
149 | 149 | chmod go+rX "$tmpdir/mar-tools"/*
|
150 | 150 | mv "$tmpdir/mar-tools" /home/signing-mar/mar-tools
|
... | ... | @@ -25,7 +25,7 @@ git archive --prefix=rbm/ --output="$tmpdir/rbm.tar" HEAD . |
25 | 25 | echo "Created rbm.tar"
|
26 | 26 | cd ..
|
27 | 27 | |
28 | -martools_filename=mar-tools-linux64.zip
|
|
28 | +martools_filename=mar-tools.zip
|
|
29 | 29 | if ! test -f "./out/mar-tools/$martools_filename"; then
|
30 | 30 | ./rbm/rbm build --step fetch_martools mar-tools
|
31 | 31 | echo "Downloaded $martools_filename"
|
1 | +mar |
|
\ No newline at end of file |
... | ... | @@ -33,8 +33,6 @@ my %htdocsfiles; |
33 | 33 | my $releases_dir = $config->{releases_dir};
|
34 | 34 | $releases_dir = "$FindBin::Bin/$releases_dir" unless $releases_dir =~ m/^\//;
|
35 | 35 | my @check_errors;
|
36 | -my $initPATH = $ENV{PATH};
|
|
37 | -my $initLD_LIBRARY_PATH = $ENV{LD_LIBRARY_PATH};
|
|
38 | 36 | |
39 | 37 | sub exit_error {
|
40 | 38 | print STDERR "Error: ", $_[0], "\n";
|
... | ... | @@ -67,6 +65,20 @@ sub get_nbprocs { |
67 | 65 | return 4;
|
68 | 66 | }
|
69 | 67 | |
68 | +sub setup_martools {
|
|
69 | + my ($out, $err, $exit) = capture {
|
|
70 | + system("$FindBin::Bin/../setup-martools");
|
|
71 | + };
|
|
72 | + exit_error "Error setting up mar-tools: $err" if $exit;
|
|
73 | + my $martoolsdir = "$FindBin::Bin/../local/mar-tools";
|
|
74 | + if ($ENV{LD_LIBRARY_PATH}) {
|
|
75 | + $ENV{LD_LIBRARY_PATH} = "$ENV{LD_LIBRARY_PATH}:$martoolsdir";
|
|
76 | + } else {
|
|
77 | + $ENV{LD_LIBRARY_PATH} = "$martoolsdir/mar-tools";
|
|
78 | + }
|
|
79 | + $ENV{PATH} = "$martoolsdir:$ENV{PATH}";
|
|
80 | +}
|
|
81 | + |
|
70 | 82 | sub write_htdocs {
|
71 | 83 | my ($channel, $file, $content) = @_;
|
72 | 84 | mkdir $htdocsdir unless -d $htdocsdir;
|
... | ... | @@ -318,7 +330,7 @@ sub version_dir { |
318 | 330 | sub get_buildinfos {
|
319 | 331 | my ($config, $version) = @_;
|
320 | 332 | return if exists $config->{versions}{$version}{buildID};
|
321 | - extract_martools($config, $version);
|
|
333 | + setup_martools;
|
|
322 | 334 | my $files = $config->{versions}{$version}{files};
|
323 | 335 | foreach my $os (keys %$files) {
|
324 | 336 | foreach my $lang (keys %{$files->{$os}}) {
|
... | ... | @@ -498,40 +510,6 @@ sub write_downloads_json { |
498 | 510 | }
|
499 | 511 | }
|
500 | 512 | |
501 | -sub marzip_path {
|
|
502 | - my ($config, $version) = @_;
|
|
503 | - for my $osname (qw/linux-x86_64 linux-i686 linux-aarch64 macos-x86_64 windows-x86_64 windows-i686/) {
|
|
504 | - my $marzip = glob(version_dir($config, $version) . "/mar-tools-$osname-*.zip");
|
|
505 | - if ($marzip && -f $marzip) {
|
|
506 | - return $marzip;
|
|
507 | - }
|
|
508 | - }
|
|
509 | - exit_error 'Could not find mar-tools';
|
|
510 | -}
|
|
511 | - |
|
512 | -my $martools_tmpdir;
|
|
513 | -my $extracted_martools;
|
|
514 | -sub extract_martools {
|
|
515 | - my ($config, $version) = @_;
|
|
516 | - return if $extracted_martools;
|
|
517 | - my $marzip = marzip_path($config, $version);
|
|
518 | - $martools_tmpdir = get_tmpdir($config);
|
|
519 | - my $old_cwd = getcwd;
|
|
520 | - chdir $martools_tmpdir;
|
|
521 | - my (undef, undef, $exit) = capture {
|
|
522 | - system('unzip', $marzip);
|
|
523 | - };
|
|
524 | - chdir $old_cwd;
|
|
525 | - exit_error "Error extracting $marzip" if $exit;
|
|
526 | - $ENV{PATH} = "$martools_tmpdir/mar-tools:$initPATH";
|
|
527 | - if ($initLD_LIBRARY_PATH) {
|
|
528 | - $ENV{LD_LIBRARY_PATH} = "$initLD_LIBRARY_PATH:$martools_tmpdir/mar-tools";
|
|
529 | - } else {
|
|
530 | - $ENV{LD_LIBRARY_PATH} = "$martools_tmpdir/mar-tools";
|
|
531 | - }
|
|
532 | - $extracted_martools = 1;
|
|
533 | -}
|
|
534 | - |
|
535 | 513 | sub log_step {
|
536 | 514 | my ($url, $step, $status, $details) = @_;
|
537 | 515 | state $u;
|
... | ... | @@ -701,9 +679,9 @@ my %actions = ( |
701 | 679 | my $channel = $ARGV[0];
|
702 | 680 | exit_error "Unknown channel" unless $config->{channels}{$channel};
|
703 | 681 | my $versions = as_array($config->{channels}{$channel});
|
682 | + setup_martools;
|
|
704 | 683 | foreach my $version (@$versions) {
|
705 | 684 | next unless $config->{versions}{$version}{incremental_from};
|
706 | - extract_martools($config, $version);
|
|
707 | 685 | get_version_files($config, $version);
|
708 | 686 | create_incremental_mars_for_version($config, $version, $channel);
|
709 | 687 | }
|