gecko-dev/servo/ports/gonk
2016-05-12 05:28:12 -07:00
..
.cargo servo: Merge #6740 - Upgrade openssl, selectors, and cocoa (from mbrubeck:bitflags); r=larsbergstrom 2015-07-30 15:44:12 -06:00
src servo: Merge #10572 - Replace watcher threads with panic handlers (from Manishearth:and-now-his-watch-is-ended); r=asajeffrey 2016-04-16 03:34:41 +05:01
build.rs servo: Merge #5453 - Remove an unused import (from Ms2ger:unused-import); r=glennw 2015-03-30 09:46:07 -06:00
Cargo.lock servo: Merge #11146 - Update image, hyper, gleam, flate2, threadpool, string_cache, num_cpus (from mbrubeck:always-be-updating); r=metajack 2016-05-12 05:28:12 -07:00
Cargo.toml servo: Merge #10857 - Simplify TOML syntax (from servo:toml); r=nox 2016-04-26 15:46:37 -07:00
fake-ld.sh servo: Merge #9093 - Update to rustc 1.7.0-nightly (b4707ebca 2015-12-27) (from servo:rustup); r=KiChjang 2016-01-15 19:08:07 +05:01
makefile.cargo servo: Merge #4306 - Add a port for gonk (from michaelwu:gonk-port-three); r=glennw 2014-12-09 14:42:57 -07:00
README.md servo: Merge #6306 - Use Cargo's target directory sharing (from metajack:shared-target-dir); r=mbrubeck 2015-06-15 13:08:14 -06:00

Instructions for building the Gonk port

Set up an android toolchain and NDK

Follow the steps here for setting up the Android NDK and toolchain.

Bootstrap B2G

We have a bootstrap of the require B2G prebuilt binaries, assuming that you are targeting a Flame device.

curl https://servo-rust.s3.amazonaws.com/B2G/B2G.tgz
tar zxvf B2G.tgz

Build B2G

If you are not using a Flame or just would like to have a local build of the binaries, you can also build B2G locally. Note: this will take a long time and will take around 20GB of space

Disable the screen timeout on the device, and connect to wifi. Also connect it to your computer with remote debugging enabled.

git clone https://github.com/mozilla-b2g/B2G
./config.sh flame-kk

If behind a firewall, put the following in your gitconfig:

[url "https://github"]
        insteadOf = git://github
[url "https://git.mozilla.org/external/caf"]
    insteadOf = git://codeaurora.org

Then run

./build.sh libssl libsuspend libz libGLESv2 toolbox libhardware

Build B2S

Either set the corresponding b2g key in .servobuild to the path to the B2G bootstrap or clone (along with), or set the $GONKDIR environment variable.

Do the same for the ndk and toolchain keys ($ANDROID_NDK and $ANDROID_TOOLCHAIN respectively)

Run ./mach build-gonk from the root directory

Copy the files to the Flame

To reduce the size of libmozjs.so (target/arm-linux-androideabi/build/mozjs-sys-*/out/libmozjs.so), you can run strip on it. Use the one in your toolchain ($ANDROID_TOOLCHAIN/bin/arm-linux-androideabi-strip libmozjs.so).

Make sure the device is on, connected to wifi, with high or no screen timeout.

# Switch to a read-write system
adb remount

# Copy mozjs
adb push /path/to/stripped/mozjs.so system/lib

# Copy b2s
adb push target/arm-linux-androideabi system/bin

# Copy resources
adb shell mkdir sdcard/servo
adb push resources sdcard/servo

Run B2S

Make sure you're still connected to wifi

adb shell stop b2g
adb shell "echo 127 > /sys/class/leds/lcd-backlight/brightness”
adb shell start b2g

Now run adb shell, cd to system/bin, and run ./b2s <url>

If the screen keeps alternating between B2G and B2S, run adb shell stop b2g (you can restart it later).