There are several options for getting 3rd party stuff into $G.
The best idea is to put the library or program you are trying to install into CVS in $G/src, then when check it out, build it, and install it.
You can't always put all the project's source into our CVS tree because sometimes you don't have source for the library, or its source tree has tons of binary files in it or already has CVS directories in it. For these situations, the goal is to get as close as we can to having the source in CVS. So, if the package comes in a .zip file, add the zip file as a binary file to CVS with "cvs add -kb filename" along with a Makefile. Create a rule for your makefile so that when you run "make all" it unzips the zip file and builds the project. Then create another rule so that "make install" will install the project from this build tree into $G.
If you don't even have a zip file of the source tree for a project, then you have no other choice but to put the actual binary library file into CVS. Remember to add it with "cvs add -kb filename" to signify to CVS that it's a binary file. Even in this case, create a Makefile that will respond to "make all" and "make install". For "make all" you can just print out, "Nothing to do for this project." "make install" should use gfxinstall3 to install the files in the proper places in $G.