I proposed the build directory parameter because the copytree hook made no sense to me. It is not a perfect substitute but perhaps a configurable build directory is nice on its own without having to satisfy all older arguments in favor of copytree. I think true in-place builds are the oddball (for example 2to3 or any build where sources have the same name as outputs needs a build directory to put the translated .py files, otherwise it would overwrite the source). What people think of as in-place builds in distutils are usually just builds into the default build directory.