Downstream consumers like android-components and fenix use fat .aar files. We need to create them out of ouf per-arch ones. https://bugzilla.mozilla.org/show_bug.cgi?id=1508976 is the bug where this got implemented on Mozilla's side.
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Child items
...
Show closed items
Linked items
0
Link issues together to show that they're related.
Learn more.
So, by default the current firefox project in #33626 (moved) produces a .arr file per armv7, aarch64, x86 and x86_64. However, downstream consumers expect a .aar with all those 4 .aar files merged. We need to figure out how that model fits into our build system. I am not sure yet what the best solution is given that we are dealing with arch-dependent code.
boklm had the idea to just use a for loop in the geckoview project to build all the per arch .aar files and then merge them in a final step and use that one as output. I think that's the closest to what I had in mind and I'll start playing with that.
boklm had the idea to just use a for loop in the geckoview project to build all the per arch .aar files and then merge them in a final step and use that one as output. I think that's the closest to what I had in mind and I'll start playing with that.
I think the loop can be done in two ways. Either with the for from shell:
for arch in [% c('var/android_archs').join(' ') %]do cp $rootdir/mozconfig-android-$arch .mozconfig makedone
An other option is using a separate step in projects/geckoview/config to merge the .aar files. In projects/geckoview/config we would add something like this:
07:23 <+GeKo> boklm: another question: we have arch specific dependencies in the input_files (the genneral ones, not for the steps part) to build the per arch .aar, e.g. the rust compiler or the mozconfig files. how make i those available?07:23 <+GeKo> right now i only get a weird non-descriptive error07:26 <+GeKo> Error: Missing filename:07:26 <+GeKo> { name => "[% c(\"var/compiler\") %]", project => "[% c(\"var/compiler\") %]",07:27 <+GeKo> }07:42 <+GeKo> boklm: oh, i actually see a different error if i remove the compiler project: https://paste.debian.net/1142722/07:42 <+GeKo> which is not really more descriptive, though :)07:43 <+GeKo> fwiw, that's with my bug_3397307:45 <+GeKo> oh, and i get it again if i have the compiler project removed _and_ the mozconfig part, weird07:50 <+GeKo> and once rust/cbindgen deps are removed additionally i am past that breakage
Okay, for the fat .aar creation we would have to do in the steps step:
Specify the archs we support like so:
export MOZ_ANDROID_FAT_AAR_ARCHITECTURES=armeabi-v7a,arm64-v8a,x86,x86_64
export the relative paths to the respective arch dependent .aar file using
MOZ_ANDROID_FAR_AAR_ARMEAVI_V7A, MOZ_ANDROID_FAT_AAR_ARM64_V8A, MOZ_ANDROID_FAT_AAR_X86, and MOZ_ANDROID_AAR_X86_64
The full path is assembled out of MOZ_FETCHES_DIR + the relative ones above (so we need to export the absolute MOZ_FETCHES_DIR, too.
We should be able to run now ./mach build android-fat-aar-artifact and the .aar should be in $DIST/fat-aar
07:23 <+GeKo> boklm: another question: we have arch specific dependencies in the input_files (the genneral ones, not for the steps part) to build the per arch .aar, e.g. the rust compiler or the mozconfig files. how make i those available?07:23 <+GeKo> right now i only get a weird non-descriptive error07:26 <+GeKo> Error: Missing filename:07:26 <+GeKo> { name => "[% c(\"var/compiler\") %]", project => "[% c(\"var/compiler\") %]",07:27 <+GeKo> }07:42 <+GeKo> boklm: oh, i actually see a different error if i remove the compiler project: https://paste.debian.net/1142722/07:42 <+GeKo> which is not really more descriptive, though :)07:43 <+GeKo> fwiw, that's with my bug_3397307:45 <+GeKo> oh, and i get it again if i have the compiler project removed _and_ the mozconfig part, weird07:50 <+GeKo> and once rust/cbindgen deps are removed additionally i am past that breakage}}}
Okay, some process update. That got solved by specifying torbrowser-android-all in rbm.conf. But then I ran into:
{{{
Finished build of project geckoview - geckoview-0dfb56be3c95-android-armv7-5a3e0a
Using file /home/gk/tor-browser-build/out/geckoview/geckoview-0dfb56be3c95-android-armv7-5a3e0a
Using file /home/gk/tor-browser-build/out/geckoview/geckoview-0dfb56be3c95-android-armv7-5a3e0a
Using file /home/gk/tor-browser-build/out/geckoview/geckoview-0dfb56be3c95-android-armv7-5a3e0a
Using file /home/gk/tor-browser-build/out/geckoview/geckoview-0dfb56be3c95-android-armv7-5a3e0a
rmdir: failed to remove '/srv/home/gk/tor-browser-build/tmp/rbm-CImP7X/rbm-containers/c77fb04e301ae68b9658a685734e5dbd8a6d46eb4d0ee7bb339f1c723bb9528a': No such file or directory
Error: Error starting remote:
ls: cannot access '/srv/home/gk/tor-browser-build/tmp/rbm-ABnir/container-image_*': No such file or directory
Can't find container image in input files
total 535100
-rw-r--r-- 1 gk gk 52608651 Apr 24 14:19 geckoview-0dfb56be3c95-android-armv7-5a3e0a
-rw-r--r-- 1 gk gk 495327146 Apr 21 15:37 geckoview-0dfb56be3c95.tar.gz
So, for one using four times `armv7` is weird and wrong. It turned out boklm found the bug in my config in that `target_prepend` is supposed to be an array. After fixing that and rebuilding everything with commit `9e4ec0dd1a256de2b75923daa5be0e40996dac48` on `bug_33973` I am still running into the second problem shown in the debug output above. That can easily be solved by adding `container-image` to the `input_files`, too.
So, for one using four times armv7 is weird and wrong. It turned out boklm found the bug in my config in that target_prepend is supposed to be an array.
##33993 (moved) is the ticket to make that error easier to notice.
Yeah, I know. But if you look at some arch dependent .aar files published by Mozilla you'll see that there are no such .js files in them as in those .aar files I generate. Yet, they have a fat .aar, too (without those .js files, of course). One option is that they just disable the compatibility check which seems to be weird, though.
Yeah, I know. But if you look at some arch dependent .aar files published by Mozilla you'll see that there are no such .js files in them as in those .aar files I generate.
There is no architecture-specific versioning in them at all (as it should be).
Yet, they have a fat .aar, too (without those .js files, of course).
Are you sure?
FWIW, I suspect the issue with different buildconfig.html files has the same underlying cause: the problematic path is at assets/chrome/toolkit/content/global/buildconfig.html while the whitelisted one is chrome/toolkit/content/global/buildconfig.html.
Okay, for those of you, sitting at home
And where do you sit these days?
thanks for boklm
Yeah, thanks the world for boklm.
(Reparenting as well as Trac does not like a depth > 5)
trac.ini file:
[childtickets]# Limit the creation of too deep a hierarchy.default.max_depth = 5
Trac: Reviewer: N/Ato sysrqb Cc: sysrqb, tbb-team to tbb-team Keywords: TorBrowserTeam202004 deleted, TorBrowserTeam202005 added Priority: Medium to High
I have managed to build this branch now on two different machines.
The only changes I have had to make so far are:
diff --git a/README b/READMEindex 8e97e2f..2457f15 100644--- a/README+++ b/README@@ -198,7 +198,7 @@ builds, and will require that you run Debian Stretch and install build dependencies for all the components that are built. This can be done with the following command:- # apt-get install build-essential python automake libtool zip unzip+ # apt-get install build-essential python automake libtool zip unzip \ autoconf2.13 openjdk-8-jdk gettext-base autotools-dev \ automake autoconf libtool autopoint libssl-dev \ pkg-config zlib1g-dev libparallel-forkmanager-perl \diff --git a/projects/geckoview/config b/projects/geckoview/configindex 63da289..ddab204 100644--- a/projects/geckoview/config+++ b/projects/geckoview/config@@ -93,6 +93,7 @@ steps: input_files: - project: container-image+ pkg_type: build - name: '[% c("var/compiler") %]' project: '[% c("var/compiler") %]' pkg_type: build
Where the last part was from boklm and GeKo on IRC.
From what I can tell with the code is that it seems reasonable. I am not sure what the common strategy is for when you review build-system components in the browser. In Tor we have all kinds of sanitizers from shellcheck that we run on shell-like scripts. The code looks fine to me, is easy to understand once the gist of rbm kicks in.
I have managed to build this branch now on two different machines.
The only changes I have had to make so far are:
{{{
diff --git a/README b/README
index 8e97e2f..2457f15 100644
--- a/README
+++ b/README
@@ -198,7 +198,7 @@ builds, and will require that you run Debian Stretch and install build
dependencies for all the components that are built. This can be done
with the following command:
apt-get install build-essential python automake libtool zip unzip
apt-get install build-essential python automake libtool zip unzip \
From what I can tell with the code is that it seems reasonable. I am not sure what the common strategy is for when you review build-system components in the browser. In Tor we have all kinds of sanitizers from shellcheck that we run on shell-like scripts. The code looks fine to me, is easy to understand once the gist of rbm kicks in.
There are no sanitizers for tor-browser-build changes (yet). It's "just" code change review and testing that the proposed changes actually work.
Trac: Status: needs_revision to needs_review Keywords: TorBrowserTeam202005 deleted, TorBrowserTeam202005R added
The proposed changes seems to work. I have been able to build it reproducible on two different machines and learned about a hw issue on a third machine. It sounds like I got the same results as GeKo, which is good. I have not tried to build with _v8, but only with _v7, but it seems like _v8 is fixing the one issue I had with 'container-image'.
The proposed changes seems to work. I have been able to build it reproducible on two different machines and learned about a hw issue on a third machine. It sounds like I got the same results as GeKo, which is good. I have not tried to build with _v8, but only with _v7, but it seems like _v8 is fixing the one issue I had with 'container-image'.