Over the years we’ve had quite a few run-ins with Windows’ maximum path and command line lengths. These problems exhibit themselves with a cryptic “Bad file number” error and usually leave someone scratching their head for a bit. Due to the variable length of our build directories these problems are prone to biting us at inconvenient times – in particular, during release builds. They also have the potential to bite us on merge day or anytime cross-branch merging happens.
To prevent this from happening in the future I’m going to be landing a change to our build directory naming this week. After it lands we’ll be padding build directories with “0″ until they reach the required length. For example, “try-w32″ becomes “try-w32-0000000000000000000000″ and “rel-m-beta-w32_bld” becomes “rel-m-beta-w32_bld-00000000000″. Because all build directories across all branches (including try) will be consistent, this means that any changes that would’ve eventually failed because of path or command line length, will now fail during the original landing.
This change should be mostly invisible to developers, except for the extra characters in paths when looking at build logs.