Open
Bug 1441656
Opened 7 years ago
Updated 2 years ago
Build geckodriver for Android builds
Categories
(Firefox Build System :: General, enhancement)
Firefox Build System
General
Tracking
(Not tracked)
NEW
People
(Reporter: nalexander, Unassigned)
References
(Blocks 1 open bug)
Details
Attachments
(1 file, 1 obsolete file)
This is similar to Bug 1417646, but not identical. Investigating --enable-geckodriver for Android, I find that:
1) removing the "bzip2" feature from the "zip" dependency avoids Bug 1409276;
2) adding an Android-specific hack for pthread_atfork allows to build.
I don't know if the result actually runs on a device, but I wanted to capture those notes, and see about upstreaming the latter.
Comment hidden (mozreview-request) |
Reporter | ||
Comment 2•7 years ago
|
||
Try build percolating at https://treeherder.mozilla.org/#/jobs?repo=try&revision=ad1ba1bdda2743a1546ba4e5d7d863576d0096a1
Just as a note, my locally built geckodriver binary is 44Mb. That seems all kinds of wrong.
Reporter | ||
Comment 3•7 years ago
|
||
(In reply to Nick Alexander :nalexander from comment #2)
> Try build percolating at
> https://treeherder.mozilla.org/#/
> jobs?repo=try&revision=ad1ba1bdda2743a1546ba4e5d7d863576d0096a1
>
> Just as a note, my locally built geckodriver binary is 44Mb. That seems all
> kinds of wrong.
8593480334 85736 -rwxr-xr-x 2 nalexander staff 43896536 Feb 27 12:55 i686-linux-android/release/geckodriver
Comment 4•7 years ago
|
||
(In reply to Nick Alexander :nalexander from comment #2)
> Just as a note, my locally built geckodriver binary is 44Mb. That
> seems all kinds of wrong.
We can probably land this and figure out why the binary size is
bloated later. I noticed it is approximately the same size for a
Linux build:
> % du -shL obj-x86_64-pc-linux-gnu/dist/bin/
> 44M obj-x86_64-pc-linux-gnu/dist/bin/geckodriver
As opposed to a "cargo build --release" build:
> % du -sh testing/geckodriver/target/release/geckodriver
> 8.7M testing/geckodriver/target/release/geckodriver
I’ve filed https://bugzil.la/1442253 to follow up on this.
Comment 5•7 years ago
|
||
mozreview-review |
Comment on attachment 8954513 [details]
Bug 1441656 - Build geckodriver for Android builds.
https://reviewboard.mozilla.org/r/223568/#review230266
Thanks for figuring out the build problems on Android! Just split
this up into two commits and add a guard for cross compiled macOS,
and I think this is good to land.
::: testing/geckodriver/Cargo.toml:25
(Diff revision 1)
> mozversion = { path = "../mozbase/rust/mozversion" }
> regex = "0.2"
> rustc-serialize = "0.3"
> uuid = "0.1.18"
> webdriver = { path = "../webdriver" }
> -zip = "0.3"
> +zip = { version = "0.3", default-features = false, features = ["deflate"] }
We don’t need bzip2 support, only zip, so this is fine, so thanks
for making this change.
But do you mind making the vendoring changes from "./mach vendor
rust" in a separate commit? For someone examining the commit it is
nearly impossible to tell what has actually changed.
::: testing/geckodriver/src/main.rs:52
(Diff revision 1)
> +pub extern "C" fn pthread_atfork(_prefork: *mut u8,
> + _postfork_parent: *mut u8,
> + _postfork_child: *mut u8)
> + -> i32 {
> + 0
> +}
I don’t want to pretend I understand what this does, but I think it
is worth putting it in if it makes Android compile.
::: toolkit/moz.configure:1107
(Diff revision 1)
> @depends('--enable-geckodriver',
> 'MOZ_AUTOMATION',
> compile_environment,
> - cross_compiling,
> hazard_analysis)
> -def geckodriver(enable, automation, compile_env, cross_compile, hazard):
> +def geckodriver(enable, automation, compile_env, hazard):
> """
> geckodriver is implied on supported platforms when MOZ_AUTOMATION
> is set, but we also provide the --enable-geckodriver option for
> developers to use.
>
> At the present time, we want individual developers to be able to
> opt-in to building geckodriver locally, and for it to be enabled by
> default on supported CI build platforms.
> """
> if enable:
> if not compile_env:
> die("--enable-geckodriver is not available without a compile "
> "environment. A geckodriver binary will be downloaded during "
> "an artifact build by default where available.")
> return True
>
> if enable.origin == 'default':
> - broken_platforms = cross_compile or hazard
> + broken_platforms = hazard
This makes the cross-compiled macOS build fail because of a missing
linker:
> error: failed to run dsymutil: No such file or directory (os error 2)
I believe this is bug 1417646.
So to get this passing try you would have to add an explicit check
for macOS cross-compiled builds.
Attachment #8954513 -
Flags: review?(ato) → review-
Comment 6•7 years ago
|
||
(In reply to Andreas Tolfsen ‹:ato› from comment #5)
> This makes the cross-compiled macOS build fail because of a missing
> linker:
>
> > error: failed to run dsymutil: No such file or directory (os error 2)
>
> I believe this is bug 1417646.
That error isn't mentioned in bug 1417646 at all, FYI. That error is because cargo explicitly tries to run `dsymutil` after linking a mac binary.
This came up in https://github.com/rust-lang/rust/issues/47240 and acrichto added a rustc option to not do that in https://github.com/rust-lang/rust/pull/47784 which was merged ~2 weeks ago. We could work around this by adding a symlink from `dsymutil` to `$topsrcdir/clang/bin/llvm-dsymutil` somewhere in $PATH.
Updated•7 years ago
|
Product: Core → Firefox Build System
Comment 7•6 years ago
|
||
With my patches from bug 1409276 I have this building on try:
https://treeherder.mozilla.org/#/jobs?repo=try&revision=3bccdf25dde25d20f63874bee5f2a5b24229ec66&selectedJob=188427910
Although it still breaks with the pthread_atfork issue on android-x86:
https://treeherder.mozilla.org/logviewer.html#?job_id=188427859&repo=try&lineNumber=30154
It looks like the Rust standard library put in a workaround for this, but it only applies when the target contains "androideabi":
https://github.com/rust-lang/rust/blob/50702b28383c15907c29e8f70256cdd439800834/src/liballoc_jemalloc/build.rs#L142
...so that doesn't quite cover "i686-linux-android". I guess we'll still need that local hack for android-x86.
Comment 8•6 years ago
|
||
I'm just going to --disable-geckodriver for android-x86, I filed bug 1477340 about it.
Updated•6 years ago
|
Assignee: nobody → ted
Comment hidden (mozreview-request) |
Comment 10•6 years ago
|
||
Comment on attachment 8995012 [details]
bug 1441656 - disable geckodriver for android-x86 and macos-cross-ccov.
ted: mozreview gives me “Service unavailable”, but I looked at the
patches and consider this an r+.
Attachment #8995012 -
Flags: review?(ato) → review+
Comment 11•6 years ago
|
||
mozreview-review |
Comment on attachment 8995012 [details]
bug 1441656 - disable geckodriver for android-x86 and macos-cross-ccov.
https://reviewboard.mozilla.org/r/259508/#review266520
Up again now. Setting r+ here as well.
Updated•6 years ago
|
Attachment #8954513 -
Attachment is obsolete: true
Comment 12•6 years ago
|
||
Please note that geckodriver can now be build via cross-compilation for MacOS (bug 1417646). Building for Android is the only remaining platform now.
Depends on: 1417646
Comment 13•6 years ago
|
||
Ted, I assume you don't work on it. So I will mark the bug as unassigned.
Assignee: ted → nobody
Comment 14•6 years ago
|
||
(In reply to Henrik Skupin (:whimboo) from comment #13)
> Ted, I assume you don't work on it. So I will mark the bug as unassigned.
I'm not planning on it, no, but I believe this patch could land as-is now that the changes in bug 1409276 landed. However, my patch in bug 1417646 originally enabled geckodriver on Android by default, and I think that got changed before landing, so we'd probably need to fix that.
Updated•2 years ago
|
Severity: normal → S3
You need to log in
before you can comment on or make changes to this bug.
Description
•