Getting Source Code

From BOINC

Jump to: navigation, search

This page has been moved from Trac directly, and hasn't been cleaned up yet.

Please help improve this page by converting it to MediaWiki formatting, and fixing the links.


There is no reason to get the BOINC source code if you just want to run BOINC and contribute to a project (or projects). The only reason to get the source code is if you want to set up your own project, contribute to software development, or build your own version of the BOINC client for a non-supported platform. This is an advanced topic.

For information on how to set up a project, or on BOINC development, visit the BOINC Trac wiki

Contents

[edit] SVN modules

The BOINC source code consists of two directories:

  • boinc contains the source code for all parts of BOINC itself (client, server, web, database).
  • boinc_samples contains several example applications together with Windows and Mac project files and a Linux makefile for building the applications. It also includes Windows versions of some libraries (GLUT, jpeglib, etc.) that many applications will need, but which are not part of BOINC. Check out this module in the same parent directory as boinc.

The modules are accessible as follows:

svn co http://boinc.berkeley.edu/svn/trunk/boinc svn co http://boinc.berkeley.edu/svn/trunk/boinc_samples

On Windows, get a SVN client like TortoiseSVN. Right-click on the parent directory, select 'SVN checkout', and fill in the dialog with the above URL. You can also download svn command-line program for Windows.

Note: some HTTP proxies may cause problems with the SVN protocol. If you have trouble checking out the code, try using https://boinc.berkeley.edu/svn/... instead.

[edit] SVN tags and branches

We maintain tags and branches for the client software (core client and manager) in the boinc module. Tags contain the source code for a certain version of the client, just as it was used for an official release. Branches contain the latest source code (maybe being developed) for a major version (like "5.8" or "6.1").

For building the client, you should probably use the tag for the latest version. If you use trunk, you will get code that hasn't been tested enough (or is known not to work).

For other parts of the software (e.g., server and API), use the current version (trunk). If you use a tag for the server, you wouldn't get "server version X", since there aren't versioned releases for the server. Instead, you would get "whatever server code was on the repository when client X was released", which could be a very old version.

To check out a branch (for example, boinc_core_release_5_10) use the following:

svn co http://boinc.berkeley.edu/svn/branches/boinc_core_release_5_10

Checking out tags is quite similar:

svn co http://boinc.berkeley.edu/svn/tags/boinc_core_release_5_10_39

[edit] Browsing source code via the web

You can browse the boinc or boinc_samples code via a web-based interface. This is useful for getting individual files, or seeing the revision history.

[edit] Source code road map

The BOINC source tree includes the following directories:

api

   The BOINC API (for applications). 

apps

   Some test applications. 

client

   The BOINC core client. 

clientgui

   The BOINC Manager. 

clientscr

   The BOINC screensaver for Windows. 

clienttray

   The BOINC Tray component (checks for user activity on Windows). 

db

   The database schema and C++ interface layer. 

html/ops

   PHP files for the operational web interface. 

html/user

   PHP files for the participant web interface. 

html/inc

   PHP include files. 

html/languages

   Translation files for project websites. 

lib

   Code that is shared by more than one component (core client, scheduling server, etc.). 

locale

   Translation files for BOINC Manager. 

py

   Python modules used by tools. 

sched

   The scheduling server, feeder, and file upload handler. 

test

   Test scripts. 

tools

   Operational utility programs. 

win_build

   Project files for compiling the client under Windows, and the Windows installer. 

zip

   Compression functions; not used by BOINC, but may be useful for applications.