fluent-old icon indicating copy to clipboard operation
fluent-old copied to clipboard

Improve build times

Open danielsuo opened this issue 8 years ago • 3 comments

Low priority, but some thoughts:

  • The painful way: comb through the source code and maybe rethink how to organize compilation units
  • The less painful way: switch from CMake to something like Bazel or Buck at the expense of a bit more devops hassle (e.g., run a Buck daemon)

I think the less painful way might make more sense because both can include vendored projects that use CMake (not an issue because typically we don't change those) and can generate CMake files for those who don't want to deal with a more complex build system

danielsuo avatar Aug 14 '17 04:08 danielsuo

I was not familiar with Bazel and Buck. Online discussion doesn't convince me there's clean ways to include vendor projects that use CMake, but I'm happy to be proven wrong.

We recently did make some changes to avoid fetching/building libraries that were already installed by a package manager (apt-get, brew, etc). That leaves us with just a couple. Nonetheless, OS X builds are still too slow for Travis in many.

And it's an unhappy fact that including range-v3 makes every fluent program slow to build.

jhellerstein avatar Aug 14 '17 06:08 jhellerstein

Oh, I see. I was thinking from the perspective of a developer doing incremental builds (take advantage of objects cached in memory). I'm not sure if it's the right answer for Travis / fresh build. In fact, I think Google and Facebook (respectively) maintain "warm" build servers for their CI.

The CMake integration works, but not painlessly enough that I'd raise my hand to tackle before other stuff. So I'll sheepishly gesture at the "low priority" and step away slowly...

danielsuo avatar Aug 14 '17 06:08 danielsuo

Yeah, I think that's the right prioritization for now.

On Sun, Aug 13, 2017 at 11:45 PM, Daniel Suo [email protected] wrote:

Oh, I see. I was thinking from the perspective of a developer doing incremental builds (take advantage of objects cached in memory). I'm not sure if it's the right answer for Travis / fresh build. In fact, I think Google and Facebook (respectively) maintain "warm" build servers for their CI.

The CMake integration works, but not painlessly enough that I'd raise my hand to tackle before other stuff. So I'll sheepishly gesture at the "low priority" and step away slowly...

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/ucbrise/fluent/issues/118#issuecomment-322111835, or mute the thread https://github.com/notifications/unsubscribe-auth/AAXeQbahlov9Smsg0iaar5fMYgFEYy_8ks5sX-0CgaJpZM4O17mx .

jhellerstein avatar Aug 14 '17 16:08 jhellerstein