We compile all assets into one file that resides in the main app bundle so while we can have multiple asset catalogs (per Framework, etc.), individual assets should still be namespaced.
We no longer build frameworks as standalone targets but instead link it all together, which also means resources from “frameworks” will end up in the main bundle.
Currently the new build file generator does not create test targets and changing linker settings in frameworks is not inherited by the main target (since there is no naive way to “merge” framework specific linker settings).
For custom library dependencies (capnp, kj, and libressl) we specify them via `LIBS` using `/path/to/libfoo.a` so that the root target will inherit these dependencies and using the absolute path ensures that we get the static (rather than dynamic) version.
This suppresses the below warning when compiling xibs with Xcode 7 or later.
warning: This file is set to build for a version older than the deployment target. Functionality may be limited. [9]
We should revisit this when we update our minimum deployment target to 10.8 or higher, as it may not be needed.
Running tests in parallel (which is the default)
results in spurious failures in the `scm` git tests,
probably due to an undiagnosed race condition.
This change lets tests run serially by default,
but provides a flag `-p` (or `--parallel`)
which enables running them in parallel again.
It also adds a variable `test_flags`
which is passed to each test run,
and which can be set by running
env test="-v" ./configure
The `gen_credits` scripts can spuriously fail
raising this error in the `user_by_email` method
NoMethodError: undefined method `[]' for nil:NilClass
when `YAML.load(response.body)` returns nil.
This change protects the build against these failures
by returning nil early.
This allowed framework headers to test whether they were build as part of the framework itself, or part of building something that depends on the framework.
Ideally though we should not need two different paths for those two cases, and we no longer have.
This was just mirroring the last part of our version number so redundant and it wasn’t monotonically increasing as we switched from alpha.n → beta.1 (with n > 1), so it probably did more harm than good.
The downside is that we no longer have our .o files depend on the compiler (so we need to do a clean build after upgrading the compiler) and if there is a space in the path to the compiler, it will fail.
The upside is that we can let CC/CXX be a command with arguments, e.g. ‘xcrun clang’.
Only values from the root target goes through this code, so it wasn’t causing a problem, as none of those keys had a multi-element array, but in ruby 2.0 embedding an array in a string seems to use inspect instead of to_s:
Ruby 1.8: "#{['foo']}" #=> foo
Ruby 2.0: "#{['foo']}" #=> ["foo"]
A problem has been reported where tar will freeze while extracting the default bundles archive to a networked Application Support folder.
From the bug report (Michael Kuron):
File servers tested: SMB on OS X 10.9.3, AFP on OS X 10.9.3, AFP on OS X 10.6.8, SMB on Windows 2008 R2.
Multiple machines tested.
Using ‘gnutar’ from MacPorts does not show the problem.
Setting ‘COPYFILE_DISABLE=1’ before running tar does not show the problem (the workaround used in this commit).
Set the `capnp_prefix` variable when calling ./configure.
E.g. build and install cap’n’proto in $HOME/build:
./configure --disable-shared --prefix="$HOME/build"
make -j6 check && make install
Then configure TextMate to find it there:
capnp_prefix="$HOME/build" ./configure
This slows down signing enormously (10+ seconds) and fails most of the time when internet connectivity is suboptimal (might be related to being behind a proxy).