Skip to content

How do people develop for MacOS at scale?

So, how do people develop people for MacOS at scale?

Normal people throw compile jobs at their Kubernetes cluster, and fan out a compile across some two racks full of 50 core machines, giving you some 4000 cores to play with for distributed compiles.

Is there a MacOS LLVM docker image that runs the Xcode compiler in Linux containers and that can be plugged into this? Or are people piling Mac mini and Mac pro or other unrackable bullshit with insufficient remote management into racks, creating a nightmare farm of snowflakes?

How does Apple itself do this? Like animals, on the Desktop?

And how do you integrate such a remote compile farm into Xcode?

Published inApple

9 Comments

  1. John Doe

    We bought a few Macs and connected them as jenkins slaves…
    Yes, it is not nice, it is not good and don’t ask about the certificate stuff.

    Scaling? Oh just take your Dollars and buy more Macs.

    Hope that your call gets better answers, I will read them.

    • kris kris

      Yeah, buying Macs wouldn’t be a problem, but they are unrackable, do not come with a Ethernet-connected iLO or any form of lights-out management and are lacking in many other departments as well (i.e. where can I get E5-2640 based or Xeon SP 5120 based MacOS machines for build purposes?)

      Building a compile farm from 4 core boxes is kind of stupid when the same CPU architecture comes in 48 cores boxes as well.

      What does Apple themselves do? Surely, they must have the same problem as well when they are compiling their stuff?

  2. AndreasLobinger

    Just for my curiosity: What type of program needs a distributed compile over 4000 cores (or a subset) for reasonable build time; and what build time is considered reasonable in this area?

    In my world – optimization, simulation of systems aka number crunching – compile times lower than 1 h are considered reasonable, minutes are nice. Because the simulator will then still run 3/12/180h …

    • kris kris

      Some people have more than one developer or one project. If you want to build and test in parallel for multiple devices, and do so for a crowd of developers in a form of CI/CD pipeline, you need to be able scale up a build process (and with some headroom).

  3. Not quite MacOS but Apple: people use things like https://www.bitrise.io/

    TL;DR you don’t integrate with XCode, you integrate with git(hub), and it’s MacOS servers running xcodebuild from the command line.

    So the Jenkins setup? Totally a thing, everywhere.

  4. Maik

    I don’t believe they’ve publicly talked about it, but it seems to be an easy guess that Apple just puts a GUI-less Darwin on racked serious metal and manages it like a normal person?

    It’s not like it’s a big technical challenge, it’s just that nobody except Apple can do it without making their lawyers cry.

    • Harald Wagener

      That’s my best bet as well.

  5. I think the main problem is the EULA license, as you are only allowed to run 2 VM instances on a Mac hardware platform:
    https://news.ycombinator.com/item?id=14765361
    And judging from that picture of a dedicated mac hoster they simply put a lot of Macs in racks:
    https://www.macstadium.com/content/uploads/2016/01/Mac-mini-rack-front-quarter.jpg

    And here are some very interesting pictures about Mac Pros (the round ones) in a rack:
    http://photos.imgix.com/racking-mac-pros

  6. Gregor

    We have about 3600 compilation units and use ccache combined with a remote memcached storage. On the desktop I get a hit rate if about 96%. Ccache integration into Xcode was a little bit fiddly.

    As far as I remember Xcode 3 supported distcc that discovered remote nodes via bonjour. It worked very well to compile lots of stuff on a MacBook Air.

    For emulation there is:
    https://www.darlinghq.org/

Leave a Reply

Your email address will not be published. Required fields are marked *