Recommended setup for developing against foundationdb

What is the recommended developer setup for compiling and testing FoundationDB locally? We’ve tried a few things, but are struggling with architecture and library compatibility issues.

The build-support container seems to be the recommended tool: GitHub - FoundationDB/fdb-build-support: FoundationDB build and development resources

However, when running it locally on an M2 Mac, we run into issues that I think are amd64 virtualization related:

=================================================================
	Managed Stacktrace:
=================================================================
	  at <unknown> <0xffffffff>
	  at System.IO.StreamWriter:Flush <0x000f1>
	  at System.IO.StreamWriter:set_AutoFlush <0x00053>
	  at System.Console:SetupStreams <0x002a0>
	  at System.Console:.cctor <0x001b7>
	  at System.Object:runtime_invoke_void <0x0009d>
	  at <unknown> <0xffffffff>
	  at Mono.CSharp.Driver:Main <0x000a3>
	  at <Module>:runtime_invoke_int_object <0x000a8>
=================================================================
[2/1814] Compile Vexillographer
FAILED: vexillographer.exe /build/vexillographer.exe
cd /build && /usr/bin/mcs -r:System,System.Core,System.Data,System.Xml,System.Xml.Linq /fdb/fdbclient/vexillographer/c.cs /fdb/fdbclient/vexillographer/cpp.cs /fdb/fdbclient/vexillographer/java.cs /fdb/fdbclient/vexillographer/python.cs /fdb/fdbclient/vexillographer/ruby.cs /fdb/fdbclient/vexillographer/vexillographer.cs -target:exe -out:/build/vexillographer.exe
* Assertion: should not be reached at tramp-amd64.c:607


=================================================================
	Native Crash Reporting
=================================================================
Got a SIGABRT while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries
used by your application.
=================================================================

We’ve also tried compiling directly on our mac laptops, but in that case we run into boost compatibility issues since we cannot install the expected version of boost (1.60).

What setup are you using to build FoundationDB? Are there any available docs we should follow?

x86 Linux. Yes, including in Apple. We have macs. They are pretty good for running editors, web browsers, and stuff like that. We (mostly) ssh to Linux instances to run builds, run tests, etc.

I say “mostly” because that’s the default for what people do here. I’m actually not sure if anyone here does development and builds to arm64 binaries on their mac. It’s theoretically possible. Personally I run emacs and git locally is about it, and ssh to x86 Linux for everything else.

RE: docs, it’s not docs exactly, but having a look at the fdb-build-support repo is probably your best bet. We use the rockylinux9 container that that builds.

PR Update README to recommend building using the official docker container by gxglass · Pull Request #12286 · apple/foundationdb · GitHub merged to make this more clear.