Wire in-tree application-services through the fat AAR and artifact-build pipelines
Categories
(Firefox Build System :: Android Studio and Gradle Integration, task, P2)
Tracking
(Not tracked)
People
(Reporter: ahochheiden, Assigned: ahochheiden)
References
(Depends on 1 open bug)
Details
(Keywords: leave-open)
Attachments
(22 files, 1 obsolete file)
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
Bug 2035575 - Publish all app-services AARs to local maven during fat AAR builds r?#build,nalexander
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
Details | Review |
With --enable-appservices-in-tree, application-services builds locally but its outputs (the full-megazord AAR, component AARs, and the desktop libmegazord.so consumed by Android JVM unit tests via libsForTests) aren't yet wired through the fat AAR pipeline or downloadable in artifact builds. We need to package the megazord and its NSS runtime dependencies into the fat AAR alongside geckoview, publish all a-s AARs to local maven during fat AAR builds, generalize artifact downloads so that artifact builds pull in-tree a-s outputs, and add desktop architecture support so libsForTests consumes the in-tree desktop megazord.
| Assignee | ||
Comment 1•4 months ago
|
||
| Assignee | ||
Comment 2•4 months ago
|
||
| Assignee | ||
Comment 3•4 months ago
|
||
| Assignee | ||
Comment 4•4 months ago
|
||
| Assignee | ||
Comment 5•4 months ago
|
||
| Assignee | ||
Comment 6•4 months ago
|
||
| Assignee | ||
Comment 7•4 months ago
|
||
| Assignee | ||
Comment 8•4 months ago
|
||
| Assignee | ||
Comment 9•4 months ago
|
||
| Assignee | ||
Comment 10•4 months ago
|
||
| Assignee | ||
Comment 11•3 months ago
|
||
Comment 12•3 months ago
|
||
Comment 13•3 months ago
|
||
Backed out for causing Android multi-arch fat AAR Shippable bustages
Comment 14•3 months ago
|
||
| Assignee | ||
Updated•3 months ago
|
Comment 15•3 months ago
|
||
Comment 16•3 months ago
|
||
| bugherder | ||
| Assignee | ||
Updated•3 months ago
|
Updated•3 months ago
|
Updated•2 months ago
|
| Assignee | ||
Comment 17•2 months ago
|
||
The fat AAR build needs the full-megazord AAR alongside geckoview's. The
megazord output lands under appservices/, and artifact builds fetch
target.maven.zip so they pick up both AARs.
The geckoview archive build also publishes every app-services component
(via :publishAppServicesAndroid), not just the megazord, so the
standalone android-components and fenix builds can resolve them as Maven
AARs from target.maven.zip.
Updated•2 months ago
|
Updated•2 months ago
|
Updated•2 months ago
|
Comment 18•2 months ago
|
||
Comment 19•2 months ago
|
||
| bugherder | ||
| Assignee | ||
Comment 20•1 month ago
|
||
Updated•1 month ago
|
| Assignee | ||
Comment 21•1 month ago
|
||
The full megazord applies it via consumerProguardFiles, so excluding it from
vendoring breaks the build at mergeReleaseConsumerProguardFiles.
Updated•1 month ago
|
Comment 22•1 month ago
|
||
Comment 23•1 month ago
|
||
| bugherder | ||
Comment 24•1 month ago
|
||
Comment 25•1 month ago
|
||
Backed out for causing BR bustages
Comment 26•1 month ago
|
||
Backout merged to mozilla-central:
https://hg.mozilla.org/mozilla-central/rev/6a6a7e2a62f1
Comment 27•1 month ago
|
||
Comment 28•1 month ago
|
||
| bugherder | ||
Updated•1 month ago
|
Comment 29•1 month ago
|
||
Comment 30•1 month ago
|
||
Backed out at dev request.
https://hg.mozilla.org/integration/autoland/rev/0fa4c4931a2d
Comment 32•1 month ago
|
||
Comment 33•1 month ago
|
||
| bugherder | ||
| Assignee | ||
Comment 34•15 days ago
|
||
Updated•15 days ago
|
| Assignee | ||
Comment 35•15 days ago
|
||
Manually duplicating every task definition produced by a kind lets the copy
drift as the source changes. Test variants already avoid this for individual
test tasks, but differences compiled into artifacts require varying the whole
kind so each configuration gets its own build.
| Assignee | ||
Comment 36•15 days ago
|
||
This will be deleted once app-services in tree is enabled by default. The
duplicate tasks are set to tier 3 so that a regression in app-services does
not cause a backout, and a daily cron job schedules them to minimize the cost
of the duplicate set of tasks. We will monitor it for a while before committing
to app-services in tree being the CI default.
| Assignee | ||
Comment 37•15 days ago
|
||
A module definition file needs literal symbol names, so the patterns a symbol
pattern file holds are resolved against the static library the shared library
is linked from.
| Assignee | ||
Comment 38•15 days ago
|
||
A generated file that takes a Rust archive as input needs the Rust library
built first, but Cargo produces the archive as a side effect of the Rust
library target, so no rule names it and Make cannot order the two.
| Assignee | ||
Comment 39•15 days ago
|
||
A library whose symbols are resolved by name at run time has nothing
referencing them at link time, so the linker keeps none of the archive members
that define them.
| Assignee | ||
Comment 40•15 days ago
|
||
UniFFI symbols are resolved by name at run time, but the stub retained only one
archive member per crate and did not populate the Windows export table.
Non-Windows builds now link the Rust archive whole, while Windows generates a
.def from its selected symbols.
Linking the archive whole also pulls in mozpkix, so only Windows links it
separately. All platforms now export only the selected ABI.
| Assignee | ||
Comment 41•14 days ago
|
||
libmegazord.so is loaded through JNA rather than linked into libxul.
Linking it against mozglue makes Rust's free resolve to mozjemalloc,
while bionic APIs such as realpath return allocations owned by libc,
causing Fenix to crash during startup. Depending on nss preserves the build
order, so Cargo still cannot run before libmozglue.so exists.
Folded NSS continues to use mozjemalloc. Rust never takes ownership of NSS
allocations and releases NSS objects through NSS APIs. The check_binary guard
runs only in automation and prevents a direct libmozglue.so dependency from
returning.
Comment 42•14 days ago
|
||
Comment 43•14 days ago
|
||
| bugherder | ||
https://hg.mozilla.org/mozilla-central/rev/f59460d18424
https://hg.mozilla.org/mozilla-central/rev/3bfae93a3f53
https://hg.mozilla.org/mozilla-central/rev/2d8fa11ba9ed
https://hg.mozilla.org/mozilla-central/rev/6486c9763b40
https://hg.mozilla.org/mozilla-central/rev/2d5b8957876e
https://hg.mozilla.org/mozilla-central/rev/4fafadaf5483
Comment 44•14 days ago
|
||
Backed out for causing Bug 2065509.
Backout link: https://hg-edge.mozilla.org/mozilla-central/rev/a33c90571e92de766016d68eb74994cec1c0a75e
| Assignee | ||
Updated•14 days ago
|
Comment 45•13 days ago
|
||
This is also linked to failures for a version increase simulation pushed to Try today (firefox-main code, only some Firefox version numbers increased). See the failures for the last three platforms listed there. They are similar to the ones for a Try push for this bug.
Comment 46•11 days ago
|
||
Comment 47•10 days ago
|
||
| bugherder | ||
https://hg.mozilla.org/mozilla-central/rev/c70faaf77543
https://hg.mozilla.org/mozilla-central/rev/e47ef1193b10
https://hg.mozilla.org/mozilla-central/rev/3c117c53449f
https://hg.mozilla.org/mozilla-central/rev/4be64d93d1b2
https://hg.mozilla.org/mozilla-central/rev/c62854db6762
https://hg.mozilla.org/mozilla-central/rev/8c4d422c2b82
https://hg.mozilla.org/mozilla-central/rev/693f59d5be8f
Updated•8 days ago
|
Comment 48•8 days ago
|
||
Comment 49•7 days ago
|
||
| bugherder | ||
Updated•3 days ago
|
Updated•3 days ago
|
| Assignee | ||
Comment 50•3 days ago
|
||
The megazord stopped linking mozglue in D320332 so that a Rust free would
not reach bionic allocations. The vendored application-services no longer
calls std::fs::canonicalize on Android, so the megazord can use mozjemalloc
like every other Gecko library and the check_binary guard can assert the
dependency is present rather than absent.
Comment 51•13 hours ago
|
||
Comment 52•11 hours ago
|
||
| bugherder | ||
Description
•