boklm pushed to branch main at The Tor Project / Applications / tor-browser-build
Commits: ec2d06bd by Nicolas Vigier at 2024-03-11T15:52:12+01:00 Bug 41088: Remove use of projects/browser/run_scripts
The script run_scripts was used to generate multiple bundles (for the different locales) in parallel. However now that we only have one bundle for all locales, using run_scripts is not useful anymore, and we can simplify the build script by removing the use of run_scripts.
- - - - - fbc5b080 by Nicolas Vigier at 2024-03-11T15:52:14+01:00 Bug 41088: Simplify a little projects/browser/build
- - - - -
4 changed files:
- projects/browser/build - projects/browser/config - projects/browser/ddmg.sh - − projects/browser/run_scripts
Changes:
===================================== projects/browser/build ===================================== @@ -14,7 +14,8 @@ mkdir -p $OUTDIR # When we build with MULTI_LINGUAL=1, the browser will be packaged inside a # directory named tor-browser (instead of tor-browser_en-US). Therefore we # stage everything under tor-browser-stage to avoid a conflict. -TB_STAGE_DIR=$distdir/tor-browser-stage +PKG_DIR='[% c("var/project-name") %]' +TB_STAGE_DIR="$distdir/$PKG_DIR[% IF c('var/windows') %]/[% c('var/Project_Name') %][% END %]" GENERATEDPREFSPATH=$rootdir/Bundle-Data/generated-prefs.js # Create initially empty prefs file where we can dump our conditionally included/genetered prefs touch "$GENERATEDPREFSPATH" @@ -37,7 +38,7 @@ touch "$GENERATEDPREFSPATH" tar -C /var/tmp/dist -xf $rootdir/[% c('input_files_by_name/libdmg') %] export PATH=/var/tmp/dist/hfsplus-tools:/var/tmp/dist/libdmg-hfsplus:$PATH [% ELSE %] - TBDIR=$TB_STAGE_DIR/Browser + TBDIR="$TB_STAGE_DIR/Browser" TBDIRS=("$TBDIR")
DOCSPATH=[% c('var/ProjectName') %]/Docs @@ -124,7 +125,6 @@ mv [% c('input_files_by_name/noscript') %] "$TBDIR/$EXTSPATH/{73a6fe31-595d-460b
# on linux, libstdc++ lives in it's own directory [% IF c("var/linux") %] - find $TBDIR/$TORBINPATH mkdir -p "$TBDIR/$TORBINPATH/libstdc++" mv "$TBDIR/$TORBINPATH"/libstdc++.so.* "$TBDIR/$TORBINPATH/libstdc++" [% END %] @@ -145,32 +145,32 @@ do done
[% IF c("var/linux") %] - cat > ${TB_STAGE_DIR}/start-[% c("var/project-name") %].desktop << 'RBM_TB_EOF' + cat > "${TB_STAGE_DIR}/start-[% c('var/project-name') %].desktop" << 'RBM_TB_EOF' [% INCLUDE 'RelativeLink/start-browser.desktop' -%] RBM_TB_EOF - cat > ${TB_STAGE_DIR}/Browser/start-[% c("var/project-name") %] << 'RBM_TB_EOF' + cat > "${TB_STAGE_DIR}/Browser/start-[% c('var/project-name') %]" << 'RBM_TB_EOF' [% INCLUDE 'RelativeLink/start-browser' -%] RBM_TB_EOF - cat > ${TB_STAGE_DIR}/Browser/execdesktop << 'RBM_TB_EOF' + cat > "${TB_STAGE_DIR}/Browser/execdesktop" << 'RBM_TB_EOF' [% INCLUDE 'RelativeLink/execdesktop' -%] RBM_TB_EOF - chmod +x ${TB_STAGE_DIR}/start-[% c("var/project-name") %].desktop \ - ${TB_STAGE_DIR}/Browser/start-[% c("var/project-name") %] \ - ${TB_STAGE_DIR}/Browser/execdesktop - cp ${TB_STAGE_DIR}/start-[% c("var/project-name") %].desktop \ - ${TB_STAGE_DIR}/Browser + chmod +x "${TB_STAGE_DIR}/start-[% c('var/project-name') %].desktop" \ + "${TB_STAGE_DIR}/Browser/start-[% c('var/project-name') %]" \ + "${TB_STAGE_DIR}/Browser/execdesktop" + cp "${TB_STAGE_DIR}/start-[% c('var/project-name') %].desktop" \ + "${TB_STAGE_DIR}/Browser" [% IF c("var/namecoin") %] - pushd ${TB_STAGE_DIR}/Browser/ + pushd "${TB_STAGE_DIR}/Browser/" patch -p1 < $rootdir/namecoin.patch popd [% END %] # Make sure we get the desired scrollbar behavior with Gtk3, see bug 27546. - GTK_SETTINGS_DIR=${TB_STAGE_DIR}/Browser/.config/gtk-3.0 + GTK_SETTINGS_DIR="${TB_STAGE_DIR}/Browser/.config/gtk-3.0" mkdir -p $GTK_SETTINGS_DIR cp $rootdir/gtk3-settings.ini $GTK_SETTINGS_DIR/settings.ini [% END %]
-tar -C ${TB_STAGE_DIR} -xf [% c('input_files_by_name/firefox') %]/browser.tar.[% c("compress_tar") %] +tar -C "${TB_STAGE_DIR}" -xf [% c('input_files_by_name/firefox') %]/browser.tar.[% c("compress_tar") %]
[% IF c("var/macos_universal") -%] # Use symlink in tmp dir to extract "Tor Browser.app" to "Tor Browser-aarch64.app" @@ -215,8 +215,8 @@ tar -C ${TB_STAGE_DIR} -xf [% c('input_files_by_name/firefox') %]/browser.tar.[% END; %]
[% IF c("var/macos") %] - tar -C "Bundle-Data/[% c('var/ProjectName') %].dmg" -c . | tar -C $TB_STAGE_DIR -x - pushd $TB_STAGE_DIR + tar -C "Bundle-Data/[% c('var/ProjectName') %].dmg" -c . | tar -C "$TB_STAGE_DIR" -x + pushd "$TB_STAGE_DIR" cp [% c('var/channel') %].DS_Store .DS_Store rm *.DS_Store popd @@ -264,17 +264,10 @@ done [% END -%]
[% IF c("var/linux") && c("var/tor-browser") %] - chmod 700 ${TB_STAGE_DIR}/Browser/[% c('var/ProjectName') %]/Data/Browser - chmod 700 ${TB_STAGE_DIR}/Browser/TorBrowser/Data/Tor + chmod 700 "${TB_STAGE_DIR}/Browser/[% c('var/ProjectName') %]/Data/Browser" + chmod 700 "${TB_STAGE_DIR}/Browser/TorBrowser/Data/Tor" [% END %]
-# With multi-lingual builds, we use "ALL" in the package name as the locale for -# update purposes. But we do not include "ALL" in the name of the directory that -# is inside the package (in other words, users will not see tor-browser_ALL -# after they install Tor Browser). -PKG_LOCALE="ALL" -PKG_DIR='[% c("var/project-name") %]' - for tbdir in "${TBDIRS[@]}" do tbdir="$tbdir[% IF c('var/macos') %]/Contents/Resources[% END %]/" @@ -325,12 +318,13 @@ done # we write the uninstaller from the installer. # Instead, we need to write an updated postupdate.exe also when updating. makensis postupdate.nsi - mv postupdate.exe ${TB_STAGE_DIR}/Browser/ + mv postupdate.exe "${TB_STAGE_DIR}/Browser/" popd [% END -%]
- mv ${TB_STAGE_DIR} $distdir/windows-installer/"[% c('var/Project_Name') %]" - mv $distdir/windows-installer ${TB_STAGE_DIR} + mv "${TB_STAGE_DIR}" "$distdir/windows-installer/[% c('var/Project_Name') %]" + rmdir "$distdir/$PKG_DIR" + mv $distdir/windows-installer "$distdir/$PKG_DIR" [% END %]
[% IF c("var/macos_universal") -%] @@ -355,18 +349,47 @@ done rm -Rf "$TBDIR_AARCH64" [% END -%]
-[% IF c("var/windows") %] - TBDIR="$distdir/$PKG_DIR/[% c("var/Project_Name") %]/Browser" -[% ELSIF c("var/macos") %] - TBDIR="$distdir/$PKG_DIR/[% c('var/display_name') %].app" -[% ELSE %] - TBDIR="$distdir/$PKG_DIR/Browser" -[% END %] +[% IF c("var/updater_enabled") -%] + cp $rootdir/[% c('input_files_by_name/firefox') %]/mar-tools-*.zip "$OUTDIR"/ +[% END -%]
-cat > "$scripts_dir/create-$PKG_DIR" << SCRIPT_EOF -#!/bin/bash -set -e -cp -a ${TB_STAGE_DIR} $distdir/$PKG_DIR +[% IF c("var/windows") -%] + archive_ext=zip +[% ELSE -%] + archive_ext=tar.xz +[% END -%] + +debug_symbols="$rootdir/[% c('input_files_by_name/firefox') %]/browser-debug-symbols.$archive_ext" +if [[ -f "$debug_symbols" ]]; then + cp "$debug_symbols" "$OUTDIR/[% c('var/project-name') %]-debug-symbols-[% c('var/mar_osname') %]-[% c('var/torbrowser_version') %].$archive_ext" +fi + +geckodriver="$rootdir/[% c('input_files_by_name/firefox') %]/geckodriver.$archive_ext" +if [[ -f "$geckodriver" ]]; then + cp "$geckodriver" "$OUTDIR/geckodriver-[% c('var/osname') %]-[% c('var/torbrowser_version') %].$archive_ext" +fi +[% IF c("var/macos_universal") -%] + geckodriver="$rootdir/[% c('input_files_by_name/firefox-aarch64') %]/geckodriver.$archive_ext" + if [[ -f "$geckodriver" ]]; then + cp "$geckodriver" "$OUTDIR/geckodriver-macos-aarch64-[% c('var/torbrowser_version') %].$archive_ext" + fi +[% END -%] + +[%IF c("var/tor-browser") -%] + tor_expert_bundle_src="[% c("input_files_by_name/tor-expert-bundle") %]" + # strip off trailing "$buildid.tar.gz" + tor_expert_bundle_dest=${tor_expert_bundle_src:0:-7}.tar.gz + cp $rootdir/[% c("input_files_by_name/tor-expert-bundle") %]/tor-expert-bundle.tar.gz "$OUTDIR"/$tor_expert_bundle_dest + [% IF c("var/macos_universal") %] + tor_expert_bundle_src="[% c('input_files_by_name/tor-expert-bundle-aarch64') %]" + # strip off trailing "$buildid.tar.gz" + tor_expert_bundle_dest=${tor_expert_bundle_src:0:-7}.tar.gz + cp $rootdir/[% c('input_files_by_name/tor-expert-bundle-aarch64') %]/tor-expert-bundle.tar.gz "$OUTDIR"/$tor_expert_bundle_dest + [% END -%] +[% END -%] +[% IF c("var/build_infos_json") -%] + cp $rootdir/[% c('input_files_by_name/firefox') %]/build-infos.json "$OUTDIR"/build-infos-[% c("var/mar_osname") %].json +[% END -%]
[% IF c("var/updater_enabled") -%] pushd "$TBDIR[% IF c("var/macos") %]/Contents/Resources/[% END %]" @@ -378,7 +401,7 @@ cd $distdir
[% IF c("var/build_mar") && c("var/updater_enabled") -%] # Create full MAR file and compressed package. - [% SET mar_file = c("var/project-name") _ '-' _ c("var/mar_osname") _ '-' _ c("var/torbrowser_version") _ '_${PKG_LOCALE}.mar' %] + [% SET mar_file = c("var/project-name") _ '-' _ c("var/mar_osname") _ '-' _ c("var/torbrowser_version") _ '_ALL.mar' %] MAR=$MARTOOLS/mar \ MOZ_PRODUCT_VERSION=[% c("var/torbrowser_version") %] \ MAR_CHANNEL_ID=[% c("var/mar_channel_id") %] \ @@ -415,55 +438,3 @@ cd $distdir [% END -%] popd [% END %] -rm -rf $distdir/${PKG_DIR} -SCRIPT_EOF - -[% IF c("var/updater_enabled") -%] - cp $rootdir/[% c('input_files_by_name/firefox') %]/mar-tools-*.zip "$OUTDIR"/ -[% END -%] - -[% IF c("var/windows") -%] - archive_ext=zip -[% ELSE -%] - archive_ext=tar.xz -[% END -%] - -debug_symbols="$rootdir/[% c('input_files_by_name/firefox') %]/browser-debug-symbols.$archive_ext" -if [[ -f "$debug_symbols" ]]; then - cp "$debug_symbols" "$OUTDIR/[% c('var/project-name') %]-debug-symbols-[% c('var/mar_osname') %]-[% c('var/torbrowser_version') %].$archive_ext" -fi - -[% IF c("var/macos_universal") -%] - geckodriver="$rootdir/[% c('input_files_by_name/firefox') %]/geckodriver.$archive_ext" - if [[ -f "$geckodriver" ]]; then - cp "$geckodriver" "$OUTDIR/geckodriver-[% c('var/osname') %]-[% c('var/torbrowser_version') %].$archive_ext" - fi - geckodriver="$rootdir/[% c('input_files_by_name/firefox-aarch64') %]/geckodriver.$archive_ext" - if [[ -f "$geckodriver" ]]; then - cp "$geckodriver" "$OUTDIR/geckodriver-macos-aarch64-[% c('var/torbrowser_version') %].$archive_ext" - fi -[% ELSE -%] - geckodriver="$rootdir/[% c('input_files_by_name/firefox') %]/geckodriver.$archive_ext" - if [[ -f "$geckodriver" ]]; then - cp "$geckodriver" "$OUTDIR/geckodriver-[% c('var/osname') %]-[% c('var/torbrowser_version') %].$archive_ext" - fi -[% END -%] - -[%IF c("var/tor-browser") -%] - tor_expert_bundle_src="[% c("input_files_by_name/tor-expert-bundle") %]" - # strip off trailing "$buildid.tar.gz" - tor_expert_bundle_dest=${tor_expert_bundle_src:0:-7}.tar.gz - cp $rootdir/[% c("input_files_by_name/tor-expert-bundle") %]/tor-expert-bundle.tar.gz "$OUTDIR"/$tor_expert_bundle_dest - [% IF c("var/macos_universal") %] - tor_expert_bundle_src="[% c('input_files_by_name/tor-expert-bundle-aarch64') %]" - # strip off trailing "$buildid.tar.gz" - tor_expert_bundle_dest=${tor_expert_bundle_src:0:-7}.tar.gz - cp $rootdir/[% c('input_files_by_name/tor-expert-bundle-aarch64') %]/tor-expert-bundle.tar.gz "$OUTDIR"/$tor_expert_bundle_dest - [% END -%] -[% END -%] -[% IF c("var/build_infos_json") -%] - cp $rootdir/[% c('input_files_by_name/firefox') %]/build-infos.json "$OUTDIR"/build-infos-[% c("var/mar_osname") %].json -[% END -%] - -chmod 775 $rootdir/run_scripts "$scripts_dir"/* -$rootdir/run_scripts [% c("num_procs") %] "$scripts_dir"
===================================== projects/browser/config ===================================== @@ -8,8 +8,6 @@ var: ddmg: '[% INCLUDE ddmg.sh %]' deps: - python3 - - libparallel-forkmanager-perl - - libfile-slurp-perl - bzip2 - jq mar_osname: '[% c("var/osname") %]' @@ -67,8 +65,6 @@ targets:
input_files: - project: container-image - - filename: run_scripts - enable: '[% ! c("var/android") %]' - project: firefox name: firefox enable: '[% ! c("var/android") %]'
===================================== projects/browser/ddmg.sh ===================================== @@ -7,8 +7,8 @@ find [% src %] ! -executable -exec chmod 0644 {} ;
find [% src %] -exec [% c("touch") %] {} ;
-dmg_tmpdir=$(mktemp -d) -hfsfile="$dmg_tmpdir/tbb-uncompressed.dmg" +dmg_tmpdir=$(mktemp -d) +hfsfile="$dmg_tmpdir/tbb-uncompressed.dmg"
# hfsplus sets all the times to time(NULL) export LD_PRELOAD=[% c("var/faketime_path") %] @@ -16,29 +16,29 @@ export FAKETIME="[% USE date; GET date.format(c('timestamp'), format = '%Y-%m-%d
src_dir=[% src %] # 1 for ceiling and 1 for the inode -fileblocks=$(find "$src_dir" -type f -printf '%s\n' | awk '{s += int($1 / 4096) + 2} END {print s}') -directories=$(find "$src_dir" -type d | wc -l) +fileblocks=$(find "$src_dir" -type f -printf '%s\n' | awk '{s += int($1 / 4096) + 2} END {print s}') +directories=$(find "$src_dir" -type d | wc -l) # Give some room to breathe -size=$(echo $(($fileblocks + $directories)) | awk '{print int($1 * 1.1)}') -dd if=/dev/zero of="$hfsfile" bs=4096 count=$size -newfs_hfs -v "[% c('var/display_name') %]" "$hfsfile" +size=$(echo $(($fileblocks + $directories)) | awk '{print int($1 * 1.1)}') +dd if=/dev/zero of="$hfsfile" bs=4096 count=$size +newfs_hfs -v "[% c('var/display_name') %]" "$hfsfile"
pushd [% src %]
find -type d -mindepth 1 | sed -e 's/^.///' | sort | while read dirname; do - hfsplus "$hfsfile" mkdir "/$dirname" - hfsplus "$hfsfile" chmod 0755 "/$dirname" + hfsplus "$hfsfile" mkdir "/$dirname" + hfsplus "$hfsfile" chmod 0755 "/$dirname" done find -type f | sed -e 's/^.///' | sort | while read filename; do - hfsplus "$hfsfile" add "$filename" "/$filename" - hfsplus "$hfsfile" chmod $(stat --format '0%a' "$filename") "/$filename" + hfsplus "$hfsfile" add "$filename" "/$filename" + hfsplus "$hfsfile" chmod $(stat --format '0%a' "$filename") "/$filename" done # hfsplus does not play well with dangling links -hfsplus "$hfsfile" symlink /Applications /Applications +hfsplus "$hfsfile" symlink /Applications /Applications # Show the volume icon -hfsplus "$hfsfile" attr / C +hfsplus "$hfsfile" attr / C
-dmg dmg "$hfsfile" [% c('dmg_out', { error_if_undef => 1 }) %] +dmg dmg "$hfsfile" [% c('dmg_out', { error_if_undef => 1 }) %] popd
-rm -Rf "$dmg_tmpdir" +rm -Rf "$dmg_tmpdir"
===================================== projects/browser/run_scripts deleted ===================================== @@ -1,30 +0,0 @@ -#!/usr/bin/perl -w -use strict; - -use Parallel::ForkManager; -use File::Slurp; - -sub exit_error { - print STDERR "Error: ", $_[0], "\n"; - chdir '/'; - exit (exists $_[1] ? $_[1] : 1); -} - -exit_error "Wrong number of arguments" unless @ARGV == 2; -my ($nb_threads, $scripts_dir) = @ARGV; -exit_error "Could not enter $scripts_dir" unless chdir $scripts_dir; -my $pm = Parallel::ForkManager->new($nb_threads); -$pm->run_on_finish( - sub { - my ($pid, $exit, $id) = @_; - exit_error "Error running $id" unless $exit == 0; - print "Finished $id\n"; - } -); -foreach my $script (sort(read_dir($scripts_dir))) { - $pm->start($script) and next; - print "Running $script\n"; - exit_error "Error running $script" unless system("./$script") == 0; - $pm->finish; -} -$pm->wait_all_children;
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/compare/5...
tbb-commits@lists.torproject.org