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).
This changes the authentication mechanism from passing an authorization token / API key to using basic auth. Basic auth didn’t work when I initially tested the upload API, but hopefully GitHub has since added it (I did request it, but didn’t get a reply, so no idea if the omission was an oversight or by design).
Creating a release with attachment is non-atomic in that the release is first created and then we upload to that release but our build file has it as a single action, so this action should be able to handle partial success from a previous execution.
The problem is that with a bad internet connection there is a very high probability that “codesign --deep” will fail due to having to contact the timestamp server for each embedded executable object.
Long-term we probably want to sign the sub-targets as they are produced and/or link the entire thing together so that there is only a single sign target (plus embedded plug-ins).
We were using gnutar to avoid the extended header keywords that bsdtar add to the archive (for non-ASCII file names) as those will cause older versions of gnutar (like the one included with 10.8 and earlier) to give warnings/errors when extracting the archive.
Issue #1180
This is required when signing on OS X 10.9.
Although the option is not documented for the version of codesign included with 10.8, using it does not result in an error.
Closes#1158
Previously this had to be done via global constructor functions but it would seem the execution of these may happen before initialization of global data.
Use APP_VERSION instead of APP_REVISION in various target names.
Indicate a few build commands are generators, so that their output is not removed on ‘ninja -t clean’.
Move generated dummy files (for tagging, uploading, deploying, etc.) to sub-directories to reduce noise in build directory.
@executable_path is the originally-executed program, whereas @loader_path is the program that caused the load to occur (e.g. a Quick Look generator). @rpath can be changed at link time — a QL generator can specify a value that points to the enclosing app bundle’s Frameworks directory.
Variables which are not referencing other variables are no longer provided with their literal value. Variables which do reference other variables have the reference escaped, so that ninja won’t expand the reference when rebuilding build.ninja.
There is still some redundancy in that APP_VERSION has the major + tag part stated both at the top and as a command line argument, haven’t yet figured out how to best deal with this.