123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- #!/bin/bash
- [% c("var/set_default_env") -%]
- [% pc(c('var/compiler'), 'var/setup', {
- compiler_tarfile => c('input_files_by_name/' _ c('var/compiler')),
- gradle_tarfile => c("input_files_by_name/gradle"),
- }) %]
- distdir=/var/tmp/dist
- builddir=/var/tmp/build/[% project %]
- mkdir -p $distdir/[% project %]
- mkdir -p /var/tmp/build
- cat > get-moz-build-date << "EOF"
- [% INCLUDE "get-moz-build-date" %]
- EOF
- [% IF !c("var/fetch_gradle_dependencies") %]
- tar -C $distdir -xf [% c('input_files_by_name/geckoview') %]
- gradle_repo=$rootdir/[% c('input_files_by_name/gradle-dependencies') %]
- # This overwrites the release, beta, and nightly geckoview .aar files in our
- # gradle-dependencies directory to be sure that only the one we provide is
- # getting used when building beta/release code.
- find $gradle_repo -type f -name geckoview*omni*.aar -exec cp -f $distdir/geckoview/geckoview*omni*.aar {} \;
- cp -r $gradle_repo/dl/android/maven2/* $gradle_repo
- cp -r $gradle_repo/maven2/* $gradle_repo
- cp -r $gradle_repo/m2/* $gradle_repo
- tar -C $distdir -xf [% c('input_files_by_name/application-services') %]
- # XXX: We could be smarter (both for a-s and a-c) and just copy over the
- # projects that are needed according to the Gradle dependencies list.
- cp -rf $distdir/application-services/maven/org $gradle_repo
- tar -C $distdir -xf [% c('input_files_by_name/android-components') %]
- cp -rf $distdir/android-components/maven/org $gradle_repo
- nimbusdir=$builddir-[% c("version") %]/app/build/bin/nimbus
- mkdir -p $nimbusdir
- cp $distdir/application-services/nimbus-fml $nimbusdir/
- tar -C $distdir -xf $rootdir/[% c('input_files_by_name/tba-translation') %]
- [% END %]
- tar -C /var/tmp/build -xf [% project %]-[% c('version') %].tar.gz
- cd $builddir-[% c("version") %]
- # Move Android library dependencies so they will be included in the apk during the build
- cp $rootdir/[% c('input_files_by_name/topl') %]/* app/
- cp $rootdir/[% c('input_files_by_name/tor-android-service') %]/* app/
- # Avoid call to `getGitHash()`, which will fail b/c it invokes git, which is absent in
- # the build container. Instead just inject the commit hash, which we know!
- sed -i 's/\\"${Config.getGitHash()}\\"/\\"[% c('abbrev') %]\\"/' app/build.gradle
- # XXX We need the build variant in lower case. Do something smarter here.
- v=[% c("variant") %]
- [% IF c("var/fetch_gradle_dependencies") %]
- $GRADLE_HOME/bin/gradle --debug --no-daemon app:assemble[% c('variant') %] \
- app:assembleAndroidTest -x lint -PtestBuildType=${v,} -PdisableOptimization \
- > gradle.log 2>&1 \
- || ( cat gradle.log; exit 1 )
- $rootdir/gen_gradle_deps_file.sh gradle.log
- mv gradle-dependencies-list.txt '[% dest_dir _ "/" _ c("filename") %]'
- [% ELSE %]
- # Add our localized strings
- [% FOREACH lang = c('var/locales_mobile');
- SET lang = tmpl(lang); %]
- # Copy our torbrowser_strings.xml at the right place
- cp /var/tmp/dist/tba-translation/[% lang %]/torbrowser_strings.xml app/src/main/res/values-[% lang %]/
- [% END %]
- # Prepare Glean dependencies for offline build
- tar -xf $rootdir/[% c('input_files_by_name/glean') %]
- # We need to set `LC_ALL` and `LANG` to something that is not ASCII as encoding
- # otherwise `click` barfs. See: https://click.palletsprojects.com/python3/
- export LC_ALL=C.UTF-8
- export LANG=C.UTF-8
- patch -p1 < $rootdir/mavenLocal.patch
- eval $(perl $rootdir/get-moz-build-date [% c("var/copyright_year") %] [% c("var/torbrowser_version") %])
- if [ -z $MOZ_BUILD_DATE ]
- then
- echo "MOZ_BUILD_DATE is not set"
- exit 1
- fi
- # Bug 40485: Inject deterministic build date into Glean.
- echo "ext.gleanBuildDate = \"0\"" >> app/build.gradle
- # We put the tor-browser version last to avoid int-parsing errors when consumers of project.versionName
- # assume it starts with a major version number, as it does for all Mozilla version names.
- version_name='[% c("var/fenix_version") %]-[% c("variant") %] ([% c("var/torbrowser_version") %])'
- # We need -PdisableOptimization for building tests. See:
- # https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/issues/40259#note_2732325
- $GRADLE_HOME/bin/gradle --offline --no-daemon -PversionName="$version_name" -Dmaven.repo.local=$gradle_repo app:assemble[% c('variant') %] -x lint -PtestBuildType=${v,}
- $GRADLE_HOME/bin/gradle --offline --no-daemon -PversionName="$version_name" -Dmaven.repo.local=$gradle_repo app:assembleAndroidTest -x lint -PtestBuildType=${v,} -PdisableOptimization
- cp app/build/outputs/apk/${v,}/*.apk $distdir/[% project %]
- cp app/build/outputs/apk/androidTest/${v,}/app-${v,}-androidTest.apk $distdir/[% project %]
- cd $distdir
- [% c('tar', {
- tar_src => [ project ],
- tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
- }) %]
- [% END %]
|