Project Distribution

After all of your project-specific components have been developed, it is necessary to package them, along with the framework, into server and client distribution files. Once these files have been created you will be able to uncompress them on a server or client computer and execute the appropriate components more easily. In order to build these files you will need to copy your project-specific components into the correct framework directories. When you extracted the framework archive in step one, the server and client directories should have been created. The server directory is where all server components should be placed, and the client directory is where your science application should be. First, copy your work unit generator, and optionally your result validator, into the server directory. Note that you will need to copy all binaries, libraries, and other files required for your components to execute, but not necessarily the source code. You may also want to write a script in that directory for easily starting and stopping these components. The framework does not automatically start and stop your server components because you may want them to execute on a separate computer from the server.

Next, copy your science application into the client directory. Again, verify that all necessary files and libraries have been copied into that folder. After you have copied your client components into the client directory you need to create one or more scripts in that directory using a specific naming convention. The purpose of these scripts is to begin execution of your science application. These scripts are run by the project client in the event that it receives a new work unit, but your science application is not running. If your client is designed to run only on Windows systems, create a script called run_sci_app.bat with the appropriate Windows commands to start your science application. If your client is only meant to run on UNIX-like systems, you need to create a script called with the appropriate UNIX commands and the execute permissions set, which is very important. If your science application is designed to run on both types of platforms, you will need to write both a script and a run_sci_app.bat script. The client will detect what type of platform on which it is running and will call the appropriate script for that platform.

As mentioned in Project Configuration, there are examples of client-side and server-side components in the example directory. You will find a directory containing a C++ example and another directory with a Java example. Run the build script in either one of those directories, and when it has completed, client and server directories will have been created that contain all the necessary files to execute the client-side and server-side example components. If you want, you can create distribution files for the example project by copying the contents of example/[c++ or java]/client/* to the client directory and example/[c++ or java]/server/* to the server directory. Both the C++ and Java examples have a lib directory that must be present for them to execute correctly, so it is important to copy this folder as well.

When the client and server components have been copied to the appropriate directories, and you have written the necessary run_sci_app scripts, the project distribution files can be built. Before creating the distribution files, the project must have already been configured using the Project Builder, and the project configuration files and must be in the cfg directory. Please see Project Development if you have not yet configured the project. To create the project distribution files, simply run the make_project_files script that should be in the main framework directory. This script will build tar.bz2 and zip files for the client and server, which will appear in the current directory when the script has completed. The files will be named prcf_client and prcf_server followed by the tar.bz2 or zip extension. These files should be used to deploy your public resource computing project.