Git Product home page Git Product logo

icecc-osx-moztor's Introduction

Icecream Setup for Mac OS X (Mozilla Toronto Office)

Want to build a clobber of Firefox in 5 minutes on your Mac laptop in the Toronto office? Here are the instructions for you!

NOTE: This version of icecc doesn't seem to work correctly on macOS 10.12. https://github.com/mstange/icecc-osx-moztor has an updated version which may work better for more recent xcode versions.

Instructions

Install the prerequisites (I recommend using homebrew)

$ xcode-select --install  # Make sure to re-run this command when you update xcode
$ brew install lzo

Clone this repository, this will take a while because it contains a binary copy of a clang toolchain (which is a gross thing to keep in git, I know)

$ git clone https://github.com/mystor/icecc-osx-moztor ~/icecream

Install the daemon. This will create a launchd plist which will be run on startup. The argument passed to the install.sh script is the scheduler to connect to.

$ sudo ~/icecream/install.sh 10.242.24.68

Update your mozconfig to point cc and c++ to the compiler wrappers

CC="$HOME/icecream/cc"
CXX="$HOME/icecream/c++"

Build firefox with sufficient jobs to saturate your network! (NOTE: If you get failures due to posix_spawn failing, use a lower job count, as your computer is failing to create more processes).

$ ./mach build -j100

Important Notes

Use a wired connection when building with icecream. Performance over WiFi is not nearly as good as performance over a wired LAN connection. On the same note, I also discourage you from building over the VPN due to latency issues.

If your builds seem to be hanging without building, you can try restarting your iceccd. The easiest way to do that is to find it in Activity Monitor and kill it, the launchd should restart it automatically.

Using with non-firefox builds

Setting the CC and CXX environment variables like in the mozconfig will probably do the right thing for just about any build system. Just make sure to set the job count high enough.

Work in Progress

Currently the version of iceccd running locally doesn't dispatch objective-c files to the network, instead building them locally. This greatly slows down the build, at least partially because many of the jobs are taken up with waiting objective-c builds. To fix this, the icecream daemons on every computer in the office will need to be patched with Benoit's patch, but this hasn't been done yet.

How do I watch it work?

Either ask someone on a linux computer to run icemon to get pretty graphics, or telnet into the server,

$ telnet 10.242.24.68 8766

icecc-osx-moztor's People

Contributors

mystor avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

icecc-osx-moztor's Issues

icecc can't find stdio

Icecc hasn't been working for me lately in the Vancouver office. Configure fails because it can't find stdio.h. Help debugging much appreciated; I thought everything was preprocessed before being sent over the network.

Host is a MacBook Pro with MacOS 10.12.1. Scheduler is running on Fedora 24, workers running Fedora 24 and 25.

Things which changed recently:

  • Upgraded Mac from 10.11.
  • Added Fedora 25 machine.
  • Re-ran install script on mac to try using Fedora 25 machine as the scheduler.
  • Ran uninstall script, followed by install script to point it back at the Fedora 24 scheduler.

The icemon programme shows all three hosts talking to the scheduler.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.