Encapsulating a Unix build environment to be able to create binaries that run on previous versions of the Operating System
Original Publication Date: 2002-Jan-29
Included in the Prior Art Database: 2003-Jun-20
Disclosed here is a method and process for encapsulating a Unix build environment so that binaries for older versions of the vendors implementation can be created using the current version of the vendors implementation. The problem that is being solved is one that software products that get distributed are generally constructed (or built) based on a tuple of compiler, C run-time library, and CPU. For Unix Operating Systems, the C run-time library is an integral part of the OS, and changing the version of the OS changes the C run-time library. On traditional PC Operating Systems (the Windows family of OSes, OS/2, DOS) the C run-time library is supplied with the compiler. As an example it is possible to use a Windows NT 4.0 OS and build a binary that runs without any problems on the Windows NT 3.51 OS. The same is definitely NOT true for a Unix Operating System. This invention allows for an arbitrary version of a vendors Unix to create binaries that will run on previous releases of that vendors Unix. This is done by encapsulating all the required system libraries, header files, and build tools so that when the build process is invoked, this encapsulated environment is utilized rather than the appropriate system libraries, header files, and build tools that are native to the current release of Unix. This would allow users to build binaries for a Solaris 2.3 OS using a Solaris 2.6 machine as the build platform. Software developers have always counted on a vendor to provide binary compatibility between releases of vendor Operating Systems. Because of this, and to keep the most customers happy, software development organizations generally adopt a lowest common development platform. Binaries built on these systems will run on newer releases of the same Operating System. Some distributed products make use of the Generic Build Environment (GBE) to hide all the low level detail on how a product is actually built from the developer. The developer does not have to worry about the appropriate compiler invocation, what build tools are available on what OS, or worry about writing platform specific build instructions. The GBE provides a uniform environment on all build platforms whether they be Unix, OS/2 , Netware, or Windows all the same commands/scripts/Makefiles work on all.