At various times in the history of the VR Juggler project, the developer “pseudo-installation” has been a topic of great controversy. Questions (or arguments, depending on your perspective) regarding its usefulness and its differences from a release installation come up repeatedly. The reason for its existence is quite simple: to simplify the lives of developers. The differences between the developer installation are also fairly simple. In a nutshell, a developer installation uses debugging libraries by default and links applications statically. A release installation, on the other hand, uses optimized libraries by default and links applications dynamically. The reasoning behind this is a little more difficult to nail down, and for that reason, we will say that it is beyond the scope of the document.
To satisfy the only goal of the developer installation (simplification of developers' lives), the developer installation must act exactly like a release installation, but it must be inside the build tree. The developer installation is created automatically as part of the build process, and ideally, its construction is faster than that of a full release installation. In any case, if all goes well, a developer can treat this pseudo-installation as if it were a real installation for the purposes of running tests.
Prior to early August 2002, the developer installation was created separately from a release installation. This was done through the use of symlinks on UNIX-based platforms and file copies on Win32. Since August 2002, the developer installation still uses symlinks or file copies in the same manner, but there is no longer a separation between creation of the developer installation and the release installation. In other words, the release installation is used to make the developer installation, but it is directed to install into the build tree.
The decision to use symlinks or file copies is based on the host
platform and on the use of the 'links' target that
every module must define. Using a custom Perl script,
bsd-install.pl, written to be fully compatible with BSD
install(1), symlinks may be created instead of
using file copies. (The bsd-install.pl script comes
with Doozer++ 1.5 and beyond.) Within the script, a test is performed
to determine if the host platform is a Win32 system. If so, copies are
always used because there are no symlinks on Win32 file systems. All
of these decisions had been made in each module's build system, but
they have since been offloaded into bsd-install.pl.
This is in keeping with the Doozer++ goal of centralizing
complexity.