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

Commits:

12 changed files:

Changes:

  • projects/browser/build
    ... ... @@ -374,12 +374,12 @@ cd $distdir
    374 374
       [% END -%]
    
    375 375
       [% c('tar', {
    
    376 376
             tar_src => [ '$PKG_DIR' ],
    
    377
    -        tar_args => '-cJf $OUTDIR/' _ c("var/project-name") _ '-' _ c("var/mar_osname") _ '-' _ c("var/torbrowser_version") _ '_${PKG_LOCALE}.tar.xz',
    
    377
    +        tar_args => '-cJf $OUTDIR/' _ c("var/project-name") _ '-' _ c("var/osname") _ '-' _ c("var/torbrowser_version") _ '.tar.xz',
    
    378 378
         }) %]
    
    379 379
     [% ELSIF c("var/macos") %]
    
    380 380
       [% c('var/ddmg', {
    
    381 381
             dmg_src => '"$PKG_DIR"',
    
    382
    -        dmg_out => '$OUTDIR/' _ c('var/ProjectName') _ '-' _ c("var/torbrowser_version") _ '-' _ c("var/mar_osname") _ '_${PKG_LOCALE}.dmg',
    
    382
    +        dmg_out => '$OUTDIR/' _ c('var/project-name') _ '-' _ c("var/mar_osname") _ '-' _ c("var/torbrowser_version") _ '.dmg',
    
    383 383
         }) %]
    
    384 384
     [% ELSIF c("var/windows") %]
    
    385 385
       find "$PKG_DIR" -exec [% c("touch") %] {} \;
    
    ... ... @@ -387,11 +387,11 @@ cd $distdir
    387 387
       makensis browser-portable.nsi
    
    388 388
       # Working around NSIS braindamage
    
    389 389
       python3 $rootdir/pe_checksum_fix.py browser-install.exe
    
    390
    -  mv browser-install.exe $OUTDIR/[% c("var/projectname") %]-install[% IF c("var/windows-x86_64") %]-win64[% END %]-[% c("var/torbrowser_version") %]_${PKG_LOCALE}.exe
    
    390
    +  mv browser-install.exe $OUTDIR/[% c("var/project-name") %]-portable-[% c("var/osname") %]-[% c("var/torbrowser_version") %].exe
    
    391 391
       [% IF c('var/mullvad-browser') -%]
    
    392 392
         makensis browser-system.nsi
    
    393 393
         python3 $rootdir/pe_checksum_fix.py browser-install.exe
    
    394
    -    mv browser-install.exe $OUTDIR/[% c("var/projectname") %]-systeminstall[% IF c("var/windows-x86_64") %]-win64[% END %]-[% c("var/torbrowser_version") %]_${PKG_LOCALE}.exe
    
    394
    +    mv browser-install.exe $OUTDIR/[% c("var/project-name") %]-install-[% c("var/osname") %]-[% c("var/torbrowser_version") %].exe
    
    395 395
       [% END -%]
    
    396 396
       popd
    
    397 397
     [% END %]
    
    ... ... @@ -402,12 +402,12 @@ SCRIPT_EOF
    402 402
       cp $rootdir/[% c('input_files_by_name/firefox') %]/mar-tools-*.zip "$OUTDIR"/
    
    403 403
     [% END -%]
    
    404 404
     [% IF c("var/linux") -%]
    
    405
    -  cp $rootdir/[% c('input_files_by_name/firefox') %]/browser-debug.tar.xz "$OUTDIR/[% c('var/project-name') %]-[% c('var/mar_osname') %]-debug.tar.xz"
    
    405
    +  cp $rootdir/[% c('input_files_by_name/firefox') %]/browser-debug-symbols.tar.xz "$OUTDIR/[% c('var/project-name') %]-debug-symbols-[% c('var/mar_osname') %]-[% c('var/torbrowser_version') %].tar.xz"
    
    406 406
       [% IF c("var/linux-x86_64") && !c("var/asan") -%]
    
    407
    -    cp $rootdir/[% c('input_files_by_name/firefox') %]/geckodriver.tar.xz "$OUTDIR/geckodriver-[% c('var/mar_osname') %].tar.xz"
    
    407
    +    cp $rootdir/[% c('input_files_by_name/firefox') %]/geckodriver.tar.xz "$OUTDIR/geckodriver-[% c('var/mar_osname') %]-[% c('var/torbrowser_version') %].tar.xz"
    
    408 408
       [% END -%]
    
    409 409
     [% ELSIF c("var/windows") -%]
    
    410
    -  cp $rootdir/[% c('input_files_by_name/firefox') %]/browser-debug.zip "$OUTDIR/[% c('var/project-name') %]-[% c('var/mar_osname') %]-debug.zip"
    
    410
    +  cp $rootdir/[% c('input_files_by_name/firefox') %]/browser-debug-symbols.zip "$OUTDIR/[% c('var/project-name') %]-debug-symbols-[% c('var/mar_osname') %]-[% c('var/torbrowser_version') %].zip"
    
    411 411
     [% END -%]
    
    412 412
     [%IF c("var/tor-browser") -%]
    
    413 413
       tor_expert_bundle_src="[% c("input_files_by_name/tor-expert-bundle") %]"
    

  • projects/browser/build.android
    ... ... @@ -6,7 +6,7 @@ tar -xf $rootdir/[% c('input_files_by_name/firefox-android') %]
    6 6
     
    
    7 7
     assets_dir=assets
    
    8 8
     ext_dir=$assets_dir/extensions
    
    9
    -qa_apk=[% dest_dir %]/[% c('filename') %]/[% c("var/project-name") %]-[% c("version") %]-[% c("var/osname") %]-multi-qa.apk
    
    9
    +qa_apk=[% dest_dir %]/[% c('filename') %]/[% c("var/project-name") %]-qa-[% c("var/osname") %]-[% c("version") %].apk
    
    10 10
     apk=$rootdir/firefox-android/*-[% c("var/abi") %]-*.apk
    
    11 11
     
    
    12 12
     # tor-browser-build#40920
    

  • projects/browser/config
    ... ... @@ -11,6 +11,7 @@ var:
    11 11
         - libparallel-forkmanager-perl
    
    12 12
         - libfile-slurp-perl
    
    13 13
         - bzip2
    
    14
    +  mar_osname: '[% c("var/osname") %]'
    
    14 15
     
    
    15 16
     targets:
    
    16 17
       linux:
    
    ... ... @@ -20,12 +21,6 @@ targets:
    20 21
             # builds (bug 29812). We don't need it in x86_64 builds, but we
    
    21 22
             # share the container to reduce space used.
    
    22 23
             - libc6-i386
    
    23
    -  linux-i686:
    
    24
    -    var:
    
    25
    -      mar_osname: linux32
    
    26
    -  linux-x86_64:
    
    27
    -    var:
    
    28
    -      mar_osname: linux64
    
    29 24
       macos:
    
    30 25
         var:
    
    31 26
           arch_deps:
    
    ... ... @@ -37,22 +32,10 @@ targets:
    37 32
       macos-universal:
    
    38 33
         var:
    
    39 34
           mar_osname: macos
    
    40
    -  macos-aarch64:
    
    41
    -    var:
    
    42
    -      mar_osname: macos-aarch64
    
    43
    -  macos-x86_64:
    
    44
    -    var:
    
    45
    -      mar_osname: macos-x86_64
    
    46 35
       windows:
    
    47 36
         var:
    
    48 37
           arch_deps:
    
    49 38
             - python3-pefile
    
    50
    -  windows-i686:
    
    51
    -    var:
    
    52
    -      mar_osname: win32
    
    53
    -  windows-x86_64:
    
    54
    -    var:
    
    55
    -      mar_osname: win64
    
    56 39
       android:
    
    57 40
         build: '[% INCLUDE build.android %]'
    
    58 41
         var:
    

  • projects/firefox/build
    ... ... @@ -331,7 +331,7 @@ END;
    331 331
     [% IF c("var/linux") -%]
    
    332 332
       [% c('tar', {
    
    333 333
           tar_src => [ 'Debug' ],
    
    334
    -      tar_args => '-cJf ' _ dest_dir _ '/' _ c('filename') _ '/browser-debug.tar.xz',
    
    334
    +      tar_args => '-cJf ' _ dest_dir _ '/' _ c('filename') _ '/browser-debug-symbols.tar.xz',
    
    335 335
         }) %]
    
    336 336
       [% IF c("var/linux-x86_64") && !c("var/asan") -%]
    
    337 337
         [% c('tar', {
    
    ... ... @@ -342,14 +342,14 @@ END;
    342 342
     [% ELSIF c("var/windows") -%]
    
    343 343
       [% c('zip', {
    
    344 344
           zip_src => [ 'Debug' ],
    
    345
    -      zip_args => dest_dir _ '/' _ c('filename') _ '/browser-debug.zip',
    
    345
    +      zip_args => dest_dir _ '/' _ c('filename') _ '/browser-debug-symbols.zip',
    
    346 346
         }) %]
    
    347 347
     [% END -%]
    
    348 348
     
    
    349 349
     [% IF c("var/updater_enabled") -%]
    
    350 350
       [% c('zip', {
    
    351 351
           zip_src => [ 'mar-tools' ],
    
    352
    -      zip_args => dest_dir _ '/' _ c('filename') _ '/' _ c('var/martools_filename'),
    
    352
    +      zip_args => dest_dir _ '/' _ c('filename') _ '/' _ 'mar-tools-' _ c("var/osname") _ '-' _ c("var/torbrowser_version") _ '.zip',
    
    353 353
         }) %]
    
    354 354
     [% END -%]
    
    355 355
     
    

  • projects/firefox/config
    ... ... @@ -90,7 +90,6 @@ targets:
    90 90
     
    
    91 91
       linux-x86_64:
    
    92 92
         var:
    
    93
    -      martools_filename: mar-tools-linux64.zip
    
    94 93
           arch_deps:
    
    95 94
             - libgtk2.0-dev
    
    96 95
             - libgtk-3-dev
    
    ... ... @@ -108,7 +107,6 @@ targets:
    108 107
     
    
    109 108
       linux-i686:
    
    110 109
         var:
    
    111
    -      martools_filename: mar-tools-linux32.zip
    
    112 110
           sort_deps: 0
    
    113 111
           arch_deps:
    
    114 112
             - libgtk2.0-dev:i386
    
    ... ... @@ -127,7 +125,6 @@ targets:
    127 125
     
    
    128 126
       macos:
    
    129 127
         var:
    
    130
    -      martools_filename: 'mar-tools-macos-[% c("var/macos_arch") %].zip'
    
    131 128
           nightly_updates_publish_dir: '[% c("var/nightly_updates_publish_dir_prefix") %]nightly-macos'
    
    132 129
           arch_deps:
    
    133 130
             - python3
    
    ... ... @@ -141,14 +138,6 @@ targets:
    141 138
             - python3-distutils
    
    142 139
             - wine
    
    143 140
     
    
    144
    -  windows-i686:
    
    145
    -    var:
    
    146
    -      martools_filename: mar-tools-win32.zip
    
    147
    -
    
    148
    -  windows-x86_64:
    
    149
    -    var:
    
    150
    -      martools_filename: mar-tools-win64.zip
    
    151
    -
    
    152 141
     input_files:
    
    153 142
       - project: container-image
    
    154 143
       - name: '[% c("var/compiler") %]'
    

  • projects/release/dmg2mar
    ... ... @@ -3,6 +3,6 @@
    3 3
     cd [% shell_quote(path(dest_dir)) %]/[% c("var/signed_status") %]/[%  c("version") %]
    
    4 4
     
    
    5 5
     export TOR_APPNAME_BUNDLE_OSX='[% c("var/Project_Name") -%]'
    
    6
    -export TOR_APPNAME_DMGFILE='[% c("var/ProjectName") -%]'
    
    6
    +export TOR_APPNAME_DMGFILE='[% c("var/project-name") -%]'
    
    7 7
     export TOR_APPNAME_MARFILE='[% c("var/project-name") -%]'
    
    8 8
     [% shell_quote(c("basedir")) %]/tools/dmg2mar [% c("var/mar_channel_id") %]

  • projects/release/update_responses_config.yml
    ... ... @@ -2,6 +2,7 @@
    2 2
     tmp_dir: '[% c("tmp_dir") %]'
    
    3 3
     create_downloads_json: 1
    
    4 4
     appname_marfile: '[% c("var/project-name") %]'
    
    5
    +appname_bundle: '[% c("var/project-name") %]'
    
    5 6
     appname_bundle_android: '[% c("var/project-name") %]'
    
    6 7
     appname_bundle_macos: '[% c("var/ProjectName") %]'
    
    7 8
     appname_bundle_linux: '[% c("var/project-name") %]'
    
    ... ... @@ -20,13 +21,13 @@ download:
    20 21
         mars_url: 'https://cdn.mullvad.net/browser'
    
    21 22
     [% END -%]
    
    22 23
     build_targets:
    
    23
    -    linux32: Linux_x86-gcc3
    
    24
    -    linux64: Linux_x86_64-gcc3
    
    25
    -    win32:
    
    24
    +    linux-i686: Linux_x86-gcc3
    
    25
    +    linux-x86_64: Linux_x86_64-gcc3
    
    26
    +    windows-i686:
    
    26 27
             - WINNT_x86-gcc3
    
    27 28
             - WINNT_x86-gcc3-x86
    
    28 29
             - WINNT_x86-gcc3-x64
    
    29
    -    win64: WINNT_x86_64-gcc3-x64
    
    30
    +    windows-x86_64: WINNT_x86_64-gcc3-x64
    
    30 31
         macos:
    
    31 32
           - Darwin_x86_64-gcc3
    
    32 33
           - Darwin_aarch64-gcc3
    
    ... ... @@ -59,17 +60,17 @@ versions:
    59 60
                 # macOS v10.12.0
    
    60 61
                 minSupportedOSVersion: 16.0.0
    
    61 62
             # minSupportedOsVersion on Windows corresponds to the operating system version ( https://docs.microsoft.com/en-us/windows/win32/sysinfo/operating-system-version )
    
    62
    -        win32:
    
    63
    +        windows-i686:
    
    63 64
                 # Windows 7
    
    64 65
                 minSupportedOSVersion: 6.1
    
    65 66
                 minSupportedInstructionSet: SSE2
    
    66
    -        win64:
    
    67
    +        windows-x86_64:
    
    67 68
                 # Windows 7
    
    68 69
                 minSupportedOSVersion: 6.1
    
    69 70
                 minSupportedInstructionSet: SSE2
    
    70
    -        linux32:
    
    71
    +        linux-i686:
    
    71 72
                 minSupportedInstructionSet: SSE2
    
    72
    -        linux64:
    
    73
    +        linux-x86_64:
    
    73 74
                 minSupportedInstructionSet: SSE2
    
    74 75
     mar_compression: xz
    
    75 76
     tag: 'tbb-[% c("var/torbrowser_version") %]-[% c("var/torbrowser_build") %]'
    

  • projects/tor-expert-bundle/config
    1 1
     # vim: filetype=yaml sw=2
    
    2
    -filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
    
    2
    +filename: '[% project %]-[% c("var/osname") %]-[% c("version") %]-[% c("var/build_id") %].tar.gz'
    
    3 3
     version: '[% c("var/torbrowser_version") %]'
    
    4 4
     
    
    5 5
     container:
    

  • tools/dmg2mar
    ... ... @@ -39,7 +39,7 @@ use Cwd;
    39 39
     # set the application name in the TOR_APPNAME_BUNDLE_OSX,
    
    40 40
     # TOR_APPNAME_DMGFILE and TOR_APPNAME_MARFILE environment variables
    
    41 41
     my $appname = $ENV{TOR_APPNAME_BUNDLE_OSX} // 'Tor Browser';
    
    42
    -my $appname_dmg = $ENV{TOR_APPNAME_DMGFILE} // 'TorBrowser';
    
    42
    +my $appname_dmg = $ENV{TOR_APPNAME_DMGFILE} // 'tor-browser';
    
    43 43
     my $appname_mar = $ENV{TOR_APPNAME_MARFILE} // 'tor-browser';
    
    44 44
     
    
    45 45
     sub exit_error {
    
    ... ... @@ -53,10 +53,10 @@ sub osname {
    53 53
         my ($arch) = capture_exec('uname', '-m');
    
    54 54
         chomp($osname, $arch);
    
    55 55
         if ($osname eq 'Linux' && $arch eq 'x86_64') {
    
    56
    -        return 'linux64';
    
    56
    +        return 'linux-x86_64';
    
    57 57
         }
    
    58 58
         if ($osname eq 'Linux' && $arch =~ m/^i.86$/) {
    
    59
    -        return 'linux32';
    
    59
    +        return 'linux-i686';
    
    60 60
         }
    
    61 61
         exit_error 'Unknown OS';
    
    62 62
     }
    
    ... ... @@ -64,7 +64,8 @@ sub osname {
    64 64
     my $martools_tmpdir;
    
    65 65
     sub extract_martools {
    
    66 66
         my $osname = osname;
    
    67
    -    my $marzip = getcwd . "/mar-tools-$osname.zip";
    
    67
    +    my $marzip = glob(getcwd . "/mar-tools-$osname-*.zip");
    
    68
    +    exit_error "Could not find mar-tools zip" unless $marzip;
    
    68 69
         $martools_tmpdir = File::Temp->newdir();
    
    69 70
         my $old_cwd = getcwd;
    
    70 71
         chdir $martools_tmpdir;
    
    ... ... @@ -97,7 +98,7 @@ sub get_dmg_files_from_sha256sums {
    97 98
             my (undef, $filename) = split '  ', $line;
    
    98 99
             next unless $filename;
    
    99 100
             chomp $filename;
    
    100
    -        next unless $filename =~ m/^$appname_dmg-(.+)-macos_(.+)\.dmg$/;
    
    101
    +        next unless $filename =~ m/^$appname_dmg-(.+)-macos\.dmg$/;
    
    101 102
             push @files, { filename => $filename, version => $1, lang => $2 };
    
    102 103
         }
    
    103 104
         return @files;
    

  • tools/signing/linux-signer-sign-android-apks
    ... ... @@ -73,8 +73,8 @@ cd ~/"$SIGNING_PROJECTNAME-$tbb_version-apks"
    73 73
     
    
    74 74
     # Sign all packages
    
    75 75
     for arch in ${ARCHS}; do
    
    76
    -  qa_apk=${projname}-${tbb_version}-android-${arch}-multi-qa.apk
    
    77
    -  signed_apk=${projname}-${tbb_version}-android-${arch}-multi.apk
    
    76
    +  qa_apk=${projname}-qa-android-${arch}-${tbb_version}.apk
    
    77
    +  signed_apk=${projname}-android-${arch}-${tbb_version}.apk
    
    78 78
       sign_apk "$qa_apk" "$signed_apk"
    
    79 79
       verify_apk "$signed_apk"
    
    80 80
       cp -f "$signed_apk" ~/"$SIGNING_PROJECTNAME-$tbb_version"
    

  • tools/signing/nightly/sign-nightly
    ... ... @@ -192,11 +192,12 @@ sub fetch_version {
    192 192
     }
    
    193 193
     
    
    194 194
     sub setup_martools {
    
    195
    -    my $martools_dir = "$FindBin::Bin/mar-tools-" . get_config('martools_version');
    
    195
    +    my $martools_version = get_config('martools_version');
    
    196
    +    my $martools_dir = "$FindBin::Bin/mar-tools-" . $martools_version;
    
    196 197
         if (! -d $martools_dir) {
    
    197
    -        my $file = "mar-tools-linux64.zip";
    
    198
    -        my $url = join('/', get_config('martools_url'),
    
    199
    -                            get_config('martools_version'), $file);
    
    198
    +        my $martools_url = get_config('martools_url');
    
    199
    +        my $file = "mar-tools-linux-x86_64-$martools_version.zip";
    
    200
    +        my $url = "$martools_url/$martools_version/$file";
    
    200 201
             my $tmpdir = get_tmpdir();
    
    201 202
             exit_error "Error downloading $url"
    
    202 203
                     unless getstore($url, "$tmpdir/$file") == 200;
    

  • tools/update-responses/update_responses
    ... ... @@ -132,19 +132,19 @@ sub get_version_downloads {
    132 132
         opendir(my $d, $vdir) or exit_error "Error opening directory $vdir";
    
    133 133
         foreach my $file (readdir $d) {
    
    134 134
             next unless -f "$vdir/$file";
    
    135
    -        my ($os, $lang);
    
    136
    -        if ($file =~ m/^$config->{appname_bundle_macos}-$version-macos_(.+).dmg$/) {
    
    137
    -            ($os, $lang) = ('macos', $1);
    
    138
    -        } elsif ($file =~ m/^$config->{appname_bundle_linux}-(linux32|linux64)-${version}_(.+).tar.xz$/) {
    
    139
    -            ($os, $lang) = ($1, $2);
    
    140
    -        } elsif ($file =~ m/^$config->{appname_bundle_win64}-${version}_(.+).exe$/) {
    
    141
    -            ($os, $lang) = ('win64', $1);
    
    142
    -        } elsif ($file =~ m/^$config->{appname_bundle_win32}-${version}_(.+).exe$/) {
    
    143
    -            ($os, $lang) = ('win32', $1);
    
    135
    +        my $os;
    
    136
    +        if ($file =~ m/^$config->{appname_bundle}-macos-$version.dmg$/) {
    
    137
    +            $os = 'macos';
    
    138
    +        } elsif ($file =~ m/^$config->{appname_bundle}-(linux-i686|linux-x86_64)-${version}.tar.xz$/) {
    
    139
    +            $os = $1;
    
    140
    +        } elsif ($file =~ m/^$config->{appname_bundle}-windows-x86_64-${version}.exe$/) {
    
    141
    +            $os = 'win64';
    
    142
    +        } elsif ($file =~ m/^$config->{appname_bundle}-windows-i686-${version}.exe$/) {
    
    143
    +            $os = 'win32';
    
    144 144
             } else {
    
    145 145
                 next;
    
    146 146
             }
    
    147
    -        $downloads->{$os}{$lang} = {
    
    147
    +        $downloads->{$os}{ALL} = {
    
    148 148
                 binary => "$download_url/$file",
    
    149 149
                 sig => "$download_url/$file.asc",
    
    150 150
             };
    
    ... ... @@ -162,15 +162,13 @@ sub get_perplatform_downloads {
    162 162
         foreach my $file (readdir $d) {
    
    163 163
             next unless -f "$vdir/$file";
    
    164 164
             my $os;
    
    165
    -        if ($file =~ m/^$config->{appname_bundle_macos}-$version-macos_(.+).dmg$/) {
    
    165
    +        if ($file =~ m/^$config->{appname_bundle}-macos-$version.dmg$/) {
    
    166 166
               $os = 'macos';
    
    167
    -        } elsif ($file =~ m/^$config->{appname_bundle_linux}-(linux32|linux64)-${version}_(.+).tar.xz$/) {
    
    168
    -          $os = $1 eq 'linux64' ? 'linux-x86_64' : 'linux-i686';
    
    169
    -        } elsif ($file =~ m/^$config->{appname_bundle_win64}-${version}_(.+).exe$/) {
    
    170
    -          $os = 'windows-x86_64';
    
    171
    -        } elsif ($file =~ m/^$config->{appname_bundle_win32}-${version}_(.+).exe$/) {
    
    172
    -          $os = 'windows-i686';
    
    173
    -        } elsif ($file =~ m/^$config->{appname_bundle_android}-${version}-(android-armv7|android-x86|android-x86_64|android-aarch64)-multi.apk$/) {
    
    167
    +        } elsif ($file =~ m/^$config->{appname_bundle}-(linux-i686|linux-86_64)-${version}.tar.xz$/) {
    
    168
    +          $os = $1;
    
    169
    +        } elsif ($file =~ m/^$config->{appname_bundle}-(windows-i686|windows-86_64)-${version}.exe$/) {
    
    170
    +          $os = $1;
    
    171
    +        } elsif ($file =~ m/^$config->{appname_bundle}-(android-armv7|android-x86|android-x86_64|android-aarch64)-${version}.apk$/) {
    
    174 172
               $os = $1;
    
    175 173
             } else {
    
    176 174
                 next;
    
    ... ... @@ -475,9 +473,11 @@ sub write_downloads_json {
    475 473
     
    
    476 474
     sub marzip_path {
    
    477 475
         my ($config, $version) = @_;
    
    478
    -    for my $osname (qw/linux64 linux32 macos-x86_64 win64 win32/) {
    
    479
    -        my $marzip = version_dir($config, $version) . "/mar-tools-$osname.zip";
    
    480
    -        return $marzip if -f $marzip;
    
    476
    +    for my $osname (qw/linux-x86_64 linux-i686 macos-x86_64 windows-x86_64 windows-i686/) {
    
    477
    +        my $marzip = glob(version_dir($config, $version) . "/mar-tools-$osname-*.zip");
    
    478
    +        if ($marzip && -f $marzip) {
    
    479
    +          return $marzip;
    
    480
    +        }
    
    481 481
         }
    
    482 482
         exit_error 'Could not find mar-tools';
    
    483 483
     }