Skip to content

Instantly share code, notes, and snippets.

@andreastt
Last active March 5, 2019 12:16
Show Gist options
  • Save andreastt/2afbf0efe6f403197057ba12e14d9488 to your computer and use it in GitHub Desktop.
Save andreastt/2afbf0efe6f403197057ba12e14d9488 to your computer and use it in GitHub Desktop.

Self-serving an ARM build

Mozilla [announced the intent] to deprecate ARMv7 HF builds of geckodriver in September 2018. This does not mean you can no longer use geckodriver on ARM systems, and this document explains how you can self-service a build for ARMv7 HF.

Assuming you have already checked out central, the steps to cross-compile ARMv7 from a Linux host system is as follows:

  1. If you don’t have Rust installed:

    # curl https://sh.rustup.rs -sSf | sh
    
  2. Install cross-compiler toolchain:

    # apt install gcc-arm-linux-gnueabihf libc6-armhf-cross libc6-dev-armhf-cross
    
  3. Createa a new shell, or to reuse the existing shell:

    source $HOME/.cargo/env
    
  4. Install rustc target toolchain:

    % rustup target install armv7-unknown-linux-gnueabihf
    
  5. Put this in testing/geckodriver/.cargo/config:

    [target.armv7-unknown-linux-gnueabihf]
    linker = "arm-linux-gnueabihf-gcc"
    
  6. Build geckodriver from testing/geckodriver:

    % cd testing/geckodriver
    % cargo build --release --target armv7-unknown-linux-gnueabihf
    
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment