wiki:CreateProjectCookbook

Version 1 (modified by davea, 18 years ago) (diff)

--

Project creation cookbook

Make skeletal project

  • Install and configure all prerequisite software (follow the directions carefully). Make sure MySQL is configured and running.
  • Get the BOINC software, say into HOME/boinc.
  • Compile the BOINC server software
  • Run HOME/boinc/tools/make_project
  • Append the contents of projects/PROJECT/PROJECT.httpd.conf to httpd.conf and restart Apache.
  • Use 'crontab' to insert a cron job to run the project's periodic tasks, e.g. 0,5,10,15,20,25,30,35,40,45,50,55 * * * * HOME/projects/PROJECT/bin/start --cron (if cron cannot run 'start', try using a helper script to set PATH and PYTHONPATH)
  • Copy project.xml from HOME/boinc/tools to HOME/projects/PROJECT, edit it to reflect your applications and platforms, and run bin/xadd.
  • Edit html/project/project.inc, changing the master URL and copyright holder.
  • Protect the html/ops directory (e.g. by putting .htaccess and .htpasswd files there).

Visible result: the project web site is up. The database 'platforms' table has several rows.

Troubleshooting: check the Apache access and error logs.

Create an application version

  • Create a BOINC application executable (if you're in a hurry, use the test application).
  • Copy the executable to HOME/projects/PROJECTNAME/apps/APPNAME
  • cd to HOME/projects/PROJECTNAME
  • run binupdate_versions, type y or return.
  • run ./stop && ./start

Visible result: the web site's Applications page has an entry.

Create a work unit

  • Using a text editor, create a work unit template file and a result template file.
  • Run create_work
  • Edit config.xml to add <daemon> records for make_work, feeder, transitioner, file_deleter, the trivial validator, and the trivial assimilator. For example
    <daemon>
        <cmd>validate_test -app appname</cmd>
        <output>validate_test.log</output>
        <pid_file>validate_test.pid</pid_file>
    </daemon>
    

Visible result: after a project restart, 'status' shows the above daemon processes running.

Troubleshooting: check the log files of all daemon processes.

Test the system

  • Create a client directory (on the same computer or different computer), say HOME/boinc_client. Copy the core client there.
  • Using the web interface, create an account on the project.
  • Run the core client; enter the project URL and the account key.

Visible result: the client does a stream of work; the web site shows credit accumulating.

Troubleshooting: check the log files of all daemon processes.

Develop back end components

  • Write a work generator.
  • Write a validator.
  • Write an assimilator.
  • Edit the configuration file to use these programs instead of the place-holder programs.
  • Make sure everything works correctly.

Extras

  • Add message board categories: see html/ops/create_forums.php