Project creation cookbook
Make a project
- Create a BOINC server (preferably using the Server Virtual Machine).
- Run make_project:
cd boinc/tools/ make_project --test_app myproject
- Append the contents of ~projects/myproject/myproject.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 * * * * ~projects/myproject/bin/start --cron
- Edit html/project/project.inc, changing the master URL and copyright holder.
- Protect the html/ops directory (e.g. use htpasswd to create .htaccess and .htpasswd files).
Visible result: the project web site is up at http://hostname/myproject.
Troubleshooting: check the Apache access and error logs.
Install and enable test application
- Initialize database and add test application version
cd projects/myproject bin/xadd bin/update_versions
- Start the project
bin/start
- Create a client directory and copy the core client there, and run it.
mkdir boinc_test cd boinc_test cp ../boinc/client/boinc_client . cp ../boinc/lib/boinccmd . boinc_client
- Using the web interface, create an account on the project. Get the authenticator via email. Alternatively, create an account within the BOINC client by choosing Tools, Attach Project, http://hostname/myproject, and new user. If account creation is disabled, then change the entry in "config.xml" from "<disable_account_creation>1</disable_account_creation>" to "<disable_account_creation>0</disable_account_creation>".
- Attach to the account:
cd boinc_test boinccmd --project_attach HOSTNAME/myproject/ authenticator
Visible result: the client does a stream of work; the web site shows credit accumulating.
Troubleshooting: check the log files of all daemon processes.
Add your own application version
- Edit config.xml and remove items related to the test application (uppercase).
- Add your application to project.xml and run bin/xadd again.
- Write a BOINC application and compile it for your platform of choice.
- Copy the executable to HOME/projects/PROJECTNAME/apps/APPNAME
- Install the version and restart the project
cd projects/myproject bin/update_versions bin/stop bin/start
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, 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>
- Restart the project
Visible result: the client downloads and runs your application.
Troubleshooting: check the log files of all daemon processes.
Develop back end components
- Write a work generator.
- Write a validator if needed.
- Write an assimilator.
- Edit the configuration file to add these daemons.
Visible result: client executes a stream of workunits; a stream of completed results is handled by the assimilator.
Troubleshooting: check daemon log files
Before public launch
- Create a new project; this time, immediately move the code-signing private key to an isolated code-signing machine. Generate all signatures on that computer.
- Add message board categories: see html/ops/create_forums.php