brizental pushed to branch main at The Tor Project / Applications / tor-browser-build
Commits:
- 
83acc092
by Beatriz Rizental at 2025-06-18T18:36:17+02:00
 - 
dde97fb2
by Beatriz Rizental at 2025-06-18T18:36:19+02:00
 - 
d5e2db25
by Beatriz Rizental at 2025-06-19T14:16:37+02:00
 
27 changed files:
- projects/browser/build
 - projects/browser/build.android
 - projects/browser/config
 - projects/browser/Bundle-Data/BaseBrowser.dmg/.VolumeIcon.icns → projects/common/dmg-root/BaseBrowser.dmg/.VolumeIcon.icns
 - projects/browser/Bundle-Data/BaseBrowser.dmg/.background/background.tiff → projects/common/dmg-root/BaseBrowser.dmg/.background/background.tiff
 - projects/browser/Bundle-Data/BaseBrowser.dmg/alpha.DS_Store → projects/common/dmg-root/BaseBrowser.dmg/alpha.DS_Store
 - projects/browser/Bundle-Data/BaseBrowser.dmg/nightly.DS_Store → projects/common/dmg-root/BaseBrowser.dmg/nightly.DS_Store
 - projects/browser/Bundle-Data/BaseBrowser.dmg/release.DS_Store → projects/common/dmg-root/BaseBrowser.dmg/release.DS_Store
 - projects/browser/Bundle-Data/MullvadBrowser.dmg/.VolumeIcon.icns → projects/common/dmg-root/MullvadBrowser.dmg/.VolumeIcon.icns
 - projects/browser/Bundle-Data/MullvadBrowser.dmg/.background/background.png → projects/common/dmg-root/MullvadBrowser.dmg/.background/background.png
 - projects/browser/Bundle-Data/MullvadBrowser.dmg/alpha.DS_Store → projects/common/dmg-root/MullvadBrowser.dmg/alpha.DS_Store
 - projects/browser/Bundle-Data/MullvadBrowser.dmg/nightly.DS_Store → projects/common/dmg-root/MullvadBrowser.dmg/nightly.DS_Store
 - projects/browser/Bundle-Data/MullvadBrowser.dmg/release.DS_Store → projects/common/dmg-root/MullvadBrowser.dmg/release.DS_Store
 - projects/browser/Bundle-Data/TorBrowser.dmg/.VolumeIcon.icns → projects/common/dmg-root/TorBrowser.dmg/.VolumeIcon.icns
 - projects/browser/Bundle-Data/TorBrowser.dmg/.background/dmg-window_2x.png → projects/common/dmg-root/TorBrowser.dmg/.background/dmg-window_2x.png
 - projects/browser/Bundle-Data/TorBrowser.dmg/alpha.DS_Store → projects/common/dmg-root/TorBrowser.dmg/alpha.DS_Store
 - projects/browser/Bundle-Data/TorBrowser.dmg/nightly.DS_Store → projects/common/dmg-root/TorBrowser.dmg/nightly.DS_Store
 - projects/browser/Bundle-Data/TorBrowser.dmg/release.DS_Store → projects/common/dmg-root/TorBrowser.dmg/release.DS_Store
 - projects/firefox/build
 - projects/firefox/config
 - projects/firefox/mozconfig
 - projects/geckoview/build
 - projects/geckoview/build_ac_fenix
 - projects/geckoview/build_apk
 - projects/geckoview/build_common
 - projects/geckoview/config
 - tools/signing/gatekeeper-bundling.sh
 
Changes:
| ... | ... | @@ -217,7 +217,7 @@ tar -C "${TB_STAGE_DIR}" -xf [% c('input_files_by_name/firefox') %]/browser.tar. | 
| 217 | 217 |     END; %]
 | 
| 218 | 218 | |
| 219 | 219 |  [% IF c("var/macos") %]
 | 
| 220 | -  tar -C "Bundle-Data/[% c('var/ProjectName') %].dmg" -c . | tar -C "$TB_STAGE_DIR" -x
 | 
|
| 220 | +  tar -C "$rootdir/dmg-root/[% c('var/ProjectName') %].dmg" -c . | tar -C "$TB_STAGE_DIR" -x
 | 
|
| 221 | 221 |    pushd "$TB_STAGE_DIR"
 | 
| 222 | 222 |    cp [% c('var/channel') %].DS_Store .DS_Store
 | 
| 223 | 223 |    rm *.DS_Store
 | 
| ... | ... | @@ -429,7 +429,14 @@ cd $distdir | 
| 429 | 429 |    popd
 | 
| 430 | 430 |  [% END %]
 | 
| 431 | 431 | |
| 432 | -[% IF c("var/nightly") && c("var/linux") -%]
 | 
|
| 433 | -  mkdir -p "$OUTDIR"/artifacts
 | 
|
| 434 | -  cp -r $rootdir/[% c('input_files_by_name/firefox') %]/artifacts "$OUTDIR"
 | 
|
| 432 | +[% IF c("var/nightly") -%]
 | 
|
| 433 | +  [% IF c("var/macos_universal") -%]
 | 
|
| 434 | +    mkdir -p "$OUTDIR"/artifacts/aarch64
 | 
|
| 435 | +    cp -a $rootdir/[% c('input_files_by_name/firefox-aarch64') %]/artifacts/. "$OUTDIR/artifacts/aarch64"
 | 
|
| 436 | +    mkdir -p "$OUTDIR"/artifacts/x86_64
 | 
|
| 437 | +    cp -a $rootdir/[% c('input_files_by_name/firefox') %]/artifacts/. "$OUTDIR/artifacts/x86_64"
 | 
|
| 438 | +  [% ELSE -%]
 | 
|
| 439 | +    mkdir -p "$OUTDIR"/artifacts
 | 
|
| 440 | +    cp -a $rootdir/[% c('input_files_by_name/firefox') %]/artifacts "$OUTDIR"
 | 
|
| 441 | +  [% END -%]
 | 
|
| 435 | 442 |  [% END %] | 
| ... | ... | @@ -2,8 +2,6 @@ | 
| 2 | 2 |  [% c("var/set_default_env") -%]
 | 
| 3 | 3 |  [% pc(c('var/compiler'), 'var/setup', { compiler_tarfile => c('input_files_by_name/' _ c('var/compiler')) }) %]
 | 
| 4 | 4 | |
| 5 | -tar -xf $rootdir/[% c('input_files_by_name/fenix') %]
 | 
|
| 6 | -  | 
|
| 7 | 5 |  # Bundle our extension(s).
 | 
| 8 | 6 |  #
 | 
| 9 | 7 |  # NoScript will be copied over to the profile folder
 | 
| ... | ... | @@ -97,20 +95,22 @@ function generate_apk { | 
| 97 | 95 |    rm $aligned_apk
 | 
| 98 | 96 |  }
 | 
| 99 | 97 | |
| 98 | +geckoviewdir="$rootdir/[% c('input_files_by_name/fenix') %]/geckoview"
 | 
|
| 99 | +  | 
|
| 100 | 100 |  # Generate the QA APK and unsign patch.
 | 
| 101 | 101 |  qa_apk=[% dest_dir %]/[% c('filename') %]/[% c("var/project-name") %]-qa-[% c("var/osname") %]-[% c("version") %].apk
 | 
| 102 | 102 |  qa_unsign_patch="[% dest_dir %]/[% c('filename') %]/[% c('var/project-name') %]-qa-unsign-[% c('var/osname') %]-[% c('version') %].bspatch"
 | 
| 103 | -apk=$rootdir/geckoview/*-[% c("var/abi") %]-*.apk
 | 
|
| 103 | +apk=$geckoviewdir/*-[% c("var/abi") %]-*.apk
 | 
|
| 104 | 104 |  generate_apk $qa_apk $apk $qa_unsign_patch
 | 
| 105 | 105 | |
| 106 | 106 |  # Generate the non-optimized APK used for testing and its unsign patch.
 | 
| 107 | 107 |  noopt_apk=[% dest_dir %]/[% c('filename') %]/[% c("var/project-name") %]-noopt-[% c("var/osname") %]-[% c("version") %].apk
 | 
| 108 | -noopt_final_apk=$rootdir/geckoview/tests/*-[% c("var/abi") %]-*.apk
 | 
|
| 108 | +noopt_final_apk=$geckoviewdir/tests/*-[% c("var/abi") %]-*.apk
 | 
|
| 109 | 109 |  generate_apk $noopt_apk $noopt_final_apk
 | 
| 110 | 110 | |
| 111 | 111 |  # Copy and sign the Android test APK.
 | 
| 112 | 112 |  test_apk=[% dest_dir %]/[% c('filename') %]/[% c("var/project-name") %]-[% c("version") %]-androidTest.apk
 | 
| 113 | -cp $rootdir/geckoview/tests/*-androidTest.apk $test_apk
 | 
|
| 113 | +cp $geckoviewdir/tests/*-androidTest.apk $test_apk
 | 
|
| 114 | 114 |  apksigner sign --verbose --min-sdk-version [% c("var/android_min_api") %] --ks $rootdir/android-qa.keystore --out $test_apk --in $test_apk --ks-key-alias androidqakey --key-pass pass:android --ks-pass pass:android
 | 
| 115 | 115 | |
| 116 | 116 |  [%IF c("var/tor-browser") -%]
 | 
| ... | ... | @@ -122,5 +122,5 @@ apksigner sign --verbose --min-sdk-version [% c("var/android_min_api") %] --ks $ | 
| 122 | 122 | |
| 123 | 123 |  [% IF c("var/nightly") -%]
 | 
| 124 | 124 |    mkdir -p "[% dest_dir %]/[% c('filename') %]/artifacts"
 | 
| 125 | -  cp -r $rootdir/geckoview/artifacts [% dest_dir %]/[% c('filename') %]
 | 
|
| 125 | +  cp -r $rootdir/[% c('input_files_by_name/fenix') %]/artifacts [% dest_dir %]/[% c('filename') %]
 | 
|
| 126 | 126 |  [% END %] | 
| ... | ... | @@ -111,6 +111,8 @@ input_files: | 
| 111 | 111 |      enable: '[% ! c("var/android") %]'
 | 
| 112 | 112 |    - filename: Bundle-Data
 | 
| 113 | 113 |      enable: '[% ! c("var/android") %]'
 | 
| 114 | +  - filename: dmg-root
 | 
|
| 115 | +    enable: '[% ! c("var/android") %]'
 | 
|
| 114 | 116 |    - URL: https://addons.mozilla.org/firefox/downloads/file/4411102/noscript-12.1.1.xpi
 | 
| 115 | 117 |      name: noscript
 | 
| 116 | 118 |      sha256sum: f9639e63ffcfc352036de00e4ff6694bb0ca65a0bb8fbd103bd08f32dc1ff31a
 | 
| ... | ... | @@ -49,6 +49,11 @@ export PATH="/var/tmp/dist/rust/bin:/var/tmp/dist/cbindgen:/var/tmp/dist/node/bi | 
| 49 | 49 |    [% END -%]
 | 
| 50 | 50 |  [% END -%]
 | 
| 51 | 51 | |
| 52 | +[% IF c("var/macos") && c("var/nightly") %]
 | 
|
| 53 | +  tar -C /var/tmp/dist -xf $rootdir/[% c('input_files_by_name/hfsplus-tools') %]
 | 
|
| 54 | +  tar -C /var/tmp/dist -xf $rootdir/[% c('input_files_by_name/libdmg') %]
 | 
|
| 55 | +[% END %]
 | 
|
| 56 | +  | 
|
| 52 | 57 |  [% IF c("var/rlbox") -%]
 | 
| 53 | 58 |    tar -C /var/tmp/dist -xf [% c('input_files_by_name/wasi-sysroot') %]
 | 
| 54 | 59 |    export WASI_SYSROOT=/var/tmp/dist/wasi-sysroot
 | 
| ... | ... | @@ -128,16 +133,36 @@ echo "Starting ./mach build $(date)" | 
| 128 | 133 |    ./mach build stage-package
 | 
| 129 | 134 |  [% END -%]
 | 
| 130 | 135 | |
| 131 | -[% IF c("var/nightly") && c("var/linux") -%]
 | 
|
| 136 | +[% IF c("var/nightly") -%]
 | 
|
| 132 | 137 |    echo "Building development artifacts"
 | 
| 138 | +  | 
|
| 139 | +  [% IF c("var/macos") -%]
 | 
|
| 140 | +    export MOZ_PKG_MAC_BACKGROUND=$rootdir/dmg-root/[% c('var/ProjectName') %].dmg/.background/background.tiff
 | 
|
| 141 | +    export MOZ_PKG_MAC_DSSTORE=$rootdir/dmg-root/[% c('var/ProjectName') %].dmg/nightly.DS_Store
 | 
|
| 142 | +    export MOZ_PKG_MAC_ICON=$rootdir/dmg-root/[% c('var/ProjectName') %].dmg/.VolumeIcon.icns
 | 
|
| 143 | +  [% END -%]
 | 
|
| 133 | 144 |    ./mach package
 | 
| 134 | 145 | |
| 135 | 146 |    artifactsdir=[% out_dir %]/artifacts
 | 
| 136 | 147 |    mkdir $artifactsdir
 | 
| 148 | +  | 
|
| 137 | 149 |    # Copy the artifacts to the target directory
 | 
| 138 | 150 |    # Naming convention is the same as Mozilla uses for their artifacts
 | 
| 139 | -  cp -a obj-*/dist/*.tar.xz $artifactsdir/target.tar.xz
 | 
|
| 140 | -  cp -a obj-*/dist/*.zip $artifactsdir/target.xpt_artifacts.zip
 | 
|
| 151 | +  mv obj-*/dist/*.xpt_artifacts.zip $artifactsdir/target.xpt_artifacts.zip
 | 
|
| 152 | +  | 
|
| 153 | +  [% IF c("var/macos") -%]
 | 
|
| 154 | +    mv obj-*/dist/*.dmg $artifactsdir/target.dmg
 | 
|
| 155 | +    mv obj-*/dist/*.update_framework_artifacts.zip $artifactsdir/target.update_framework_artifacts.zip
 | 
|
| 156 | +  [% END -%]
 | 
|
| 157 | +  | 
|
| 158 | +  [% IF c("var/linux") -%]
 | 
|
| 159 | +    mv obj-*/dist/*.tar.xz $artifactsdir/target.tar.xz
 | 
|
| 160 | +  [% END -%]
 | 
|
| 161 | +  | 
|
| 162 | +  [% IF c("var/windows") -%]
 | 
|
| 163 | +    mv obj-*/dist/*.zip $artifactsdir/target.zip
 | 
|
| 164 | +  [% END -%]
 | 
|
| 165 | +  | 
|
| 141 | 166 |    ./mach python -m mozbuild.action.test_archive common $artifactsdir/target.common.tests.tar.gz
 | 
| 142 | 167 |  [% END %]
 | 
| 143 | 168 | 
| ... | ... | @@ -249,3 +249,11 @@ input_files: | 
| 249 | 249 |      # TorButton patch authored by Arthur Edelstein, from https://github.com/arthuredelstein/torbutton/ branch 2.1.10-namecoin
 | 
| 250 | 250 |    - filename: namecoin-etld.patch
 | 
| 251 | 251 |      enable: '[% c("var/namecoin") %]'
 | 
| 252 | +  - filename: dmg-root
 | 
|
| 253 | +    enable: '[% c("var/macos") && c("var/nightly") %]'
 | 
|
| 254 | +  - project: hfsplus-tools
 | 
|
| 255 | +    name: hfsplus-tools
 | 
|
| 256 | +    enable: '[% c("var/macos") && c("var/nightly") %]'
 | 
|
| 257 | +  - project: libdmg-hfsplus
 | 
|
| 258 | +    name: libdmg
 | 
|
| 259 | +    enable: '[% c("var/macos") && c("var/nightly") %]' | 
| ... | ... | @@ -56,6 +56,12 @@ | 
| 56 | 56 |    export TOOLCHAIN_PREFIX=$CROSS_CCTOOLS_PATH/bin/[% c('var/build_target') %]-
 | 
| 57 | 57 |    export DSYMUTIL="$TOOLCHAIN_DIR/clang/bin/dsymutil"
 | 
| 58 | 58 | |
| 59 | +  [% IF c("var/nightly") -%]
 | 
|
| 60 | +    export MKFSHFS=/var/tmp/dist/hfsplus-tools/newfs_hfs
 | 
|
| 61 | +    export DMG_TOOL=/var/tmp/dist/libdmg-hfsplus/dmg
 | 
|
| 62 | +    export HFS_TOOL=/var/tmp/dist/libdmg-hfsplus/hfsplus
 | 
|
| 63 | +  [% END -%]
 | 
|
| 64 | +  | 
|
| 59 | 65 |    export HOST_CFLAGS="-g"
 | 
| 60 | 66 |    export HOST_CXXFLAGS="-g"
 | 
| 61 | 67 |    export HOST_LDFLAGS="-g"
 | 
| ... | ... | @@ -38,7 +38,7 @@ echo "Starting ./mach build $(date)" | 
| 38 | 38 |    echo "Building development artifacts"
 | 
| 39 | 39 |    ./mach package
 | 
| 40 | 40 | |
| 41 | -  artifactsdir=[% dest_dir %]/artifacts
 | 
|
| 41 | +  artifactsdir=$outdir/artifacts
 | 
|
| 42 | 42 |    mkdir -p $artifactsdir
 | 
| 43 | 43 |    # Copy the artifacts to the target directory
 | 
| 44 | 44 |    # Naming convention is the same as Mozilla uses for their artifacts
 | 
| ... | ... | @@ -50,16 +50,9 @@ echo "Starting ./mach build $(date)" | 
| 50 | 50 |  echo "Build finished, copying the AAR to the to the destination directory $(date)"
 | 
| 51 | 51 | |
| 52 | 52 |  [% IF !c("var/android_single_arch") -%]
 | 
| 53 | -  mkdir "$distdir/[% project %]"
 | 
|
| 53 | +  mkdir -p "$outdir/[% project %]"
 | 
|
| 54 | 54 |    # We don't want the debug or "exoplayer" .aars, but the .aar that has `omni` in its name.
 | 
| 55 | -  find obj-* -type f -name geckoview*omni*.aar -exec cp {} $distdir/[% project %] \;
 | 
|
| 55 | +  find obj-* -type f -name geckoview*omni*.aar -exec mv {} $outdir/[% project %] \;
 | 
|
| 56 | 56 |  [% ELSE -%]
 | 
| 57 | 57 |  [% INCLUDE 'build_ac_fenix' %]
 | 
| 58 | 58 |  [% END -%] | 
| 59 | -  | 
|
| 60 | -echo "Starting to package artifacts $(date)"
 | 
|
| 61 | -cd $distdir
 | 
|
| 62 | -[% c('tar', {
 | 
|
| 63 | -    tar_src => [ project ],
 | 
|
| 64 | -    tar_args => '-caf ' _ dest_dir _ '/' _ c('filename'),
 | 
|
| 65 | -  }) %] | 
| ... | ... | @@ -27,7 +27,7 @@ echo autoPublish.android-components.dir=../android-components > local.properties | 
| 27 | 27 |    # Add our localized strings
 | 
| 28 | 28 |    supported_locales="[% tmpl(c('var/locales_mobile').join(' ')) %]"
 | 
| 29 | 29 |    for lang in $supported_locales; do
 | 
| 30 | -    cp "/var/tmp/dist/translation-fenix/$lang/torbrowser_strings.xml" "app/src/main/res/values-$lang/"
 | 
|
| 30 | +    cp "$distdir/translation-fenix/$lang/torbrowser_strings.xml" "app/src/main/res/values-$lang/"
 | 
|
| 31 | 31 |    done
 | 
| 32 | 32 |  [% END -%]
 | 
| 33 | 33 | |
| ... | ... | @@ -41,8 +41,8 @@ echo "Building $variant Fenix APK" | 
| 41 | 41 |  gradle $GRADLE_FLAGS -PversionName="$version_name" "assemble$variant"
 | 
| 42 | 42 | |
| 43 | 43 |  echo "Build finished, copying the APK(s) to the destination directory $(date)"
 | 
| 44 | -mkdir $distdir/[% project %]
 | 
|
| 45 | -cp $objdir/gradle/build/mobile/android/fenix/app/outputs/apk/fenix/$variant/*.apk $distdir/[% project %]
 | 
|
| 44 | +mkdir -p $outdir/[% project %]
 | 
|
| 45 | +mv $objdir/gradle/build/mobile/android/fenix/app/outputs/apk/fenix/$variant/*.apk $outdir/[% project %]
 | 
|
| 46 | 46 | |
| 47 | 47 |  echo "Building non optimized $variant Fenix APK for testing"
 | 
| 48 | 48 |  gradle $GRADLE_FLAGS -PversionName="$version_name" -PdisableOptimization "assemble$variant"
 | 
| ... | ... | @@ -52,9 +52,8 @@ gradle $GRADLE_FLAGS -PversionName="$version_name" -PtestBuildType="$variant" -P | 
| 52 | 52 | |
| 53 | 53 |  echo "Test build finished, copying the APKs to the destination directory $(date)"
 | 
| 54 | 54 | |
| 55 | -mkdir $distdir/[% project %]/tests
 | 
|
| 56 | -cp $objdir/gradle/build/mobile/android/fenix/app/outputs/apk/fenix/$variant/*.apk $distdir/[% project %]/tests
 | 
|
| 57 | -cp $objdir/gradle/build/mobile/android/fenix/app/outputs/apk/androidTest/fenix/$variant/*.apk $distdir/[% project %]/tests
 | 
|
| 55 | +mkdir -p $outdir/[% project %]/tests
 | 
|
| 56 | +mv $objdir/gradle/build/mobile/android/fenix/app/outputs/apk/fenix/$variant/*.apk $outdir/[% project %]/tests
 | 
|
| 57 | +mv $objdir/gradle/build/mobile/android/fenix/app/outputs/apk/androidTest/fenix/$variant/*.apk $outdir/[% project %]/tests
 | 
|
| 58 | 58 | |
| 59 | 59 |  popd | 
| 60 | -  | 
| ... | ... | @@ -38,9 +38,3 @@ echo "ac_add_options --with-branding=$branding_dir" >> mozconfig-android-all | 
| 38 | 38 |  ./mach build --verbose
 | 
| 39 | 39 | |
| 40 | 40 |  [% INCLUDE 'build_ac_fenix' %] | 
| 41 | -  | 
|
| 42 | -cd $distdir/
 | 
|
| 43 | -[% c('tar', {
 | 
|
| 44 | -    tar_src => [ project ],
 | 
|
| 45 | -    tar_args => '-caf ' _ dest_dir _ '/' _ c('filename'),
 | 
|
| 46 | -  }) %] | 
| ... | ... | @@ -5,7 +5,8 @@ | 
| 5 | 5 |  }) %]
 | 
| 6 | 6 |  distdir=/var/tmp/dist
 | 
| 7 | 7 |  builddir=/var/tmp/build
 | 
| 8 | -mkdir -p $builddir $distdir
 | 
|
| 8 | +outdir="[%  dest_dir _ '/' _ c('filename') -%]"
 | 
|
| 9 | +mkdir -p $builddir $distdir $outdir
 | 
|
| 9 | 10 | |
| 10 | 11 |  tar -C $distdir -xf [% c('input_files_by_name/node') %]
 | 
| 11 | 12 |  export PATH="/var/tmp/dist/node/bin:$PATH"
 | 
| 1 | 1 |  # vim: filetype=yaml sw=2
 | 
| 2 | 2 |  version: '[% c("abbrev") %]'
 | 
| 3 | -filename: 'geckoview-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.[% c("compress_tar") %]'
 | 
|
| 3 | +filename: 'geckoview-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %]'
 | 
|
| 4 | 4 |  git_hash: 'tor-browser-[% c("var/geckoview_version") %]-[% c("var/browser_branch") %]-build[% c("var/browser_build") %]'
 | 
| 5 | 5 |  tag_gpg_id: 1
 | 
| 6 | 6 |  git_url: https://gitlab.torproject.org/tpo/applications/tor-browser.git
 | 
| ... | ... | @@ -59,7 +59,7 @@ targets: | 
| 59 | 59 | |
| 60 | 60 |  steps:
 | 
| 61 | 61 |    build_apk:
 | 
| 62 | -    filename: 'geckoview-[% c("version") %]-apks-[% c("var/build_id") %].tar.[% c("compress_tar") %]'
 | 
|
| 62 | +    filename: 'geckoview-[% c("version") %]-apks-[% c("var/build_id") %]'
 | 
|
| 63 | 63 |      version: '[% c("abbrev") %]'
 | 
| 64 | 64 |      build_apk: '[% INCLUDE build_apk %]'
 | 
| 65 | 65 |      input_files:
 | 
| ... | ... | @@ -64,7 +64,7 @@ test -d "$macos_signed_dir" || mkdir "$macos_signed_dir" | 
| 64 | 64 |  tmpdir="$macos_stapled_dir/tmp"
 | 
| 65 | 65 |  rm -Rf "$tmpdir"
 | 
| 66 | 66 |  mkdir "$tmpdir"
 | 
| 67 | -cp -rT "$script_dir/../../projects/browser/Bundle-Data/$ProjName.dmg" "$tmpdir/dmg"
 | 
|
| 67 | +cp -rT "$script_dir/../../projects/common/dmg-root/$ProjName.dmg" "$tmpdir/dmg"
 | 
|
| 68 | 68 | |
| 69 | 69 |  tar -C "$tmpdir" -xf "$libdmg_file"
 | 
| 70 | 70 |  tar -C "$tmpdir" -xf "$hfstools_file"
 |