mirror of https://github.com/BOINC/boinc.git
*** empty log message ***
svn path=/trunk/boinc/; revision=3018
This commit is contained in:
parent
fd4b4f6f53
commit
930ffe6812
|
@ -10211,3 +10211,9 @@ Rom Mar 1 2004
|
|||
log_flags.c
|
||||
lib/
|
||||
filesys.C, .h
|
||||
|
||||
David Mar 1 2004
|
||||
- compile errors
|
||||
|
||||
client/
|
||||
gui_rpc_server.C
|
||||
|
|
|
@ -166,7 +166,6 @@ static void handle_set_proxy_settings(char* buf, FILE* fout) {
|
|||
}
|
||||
|
||||
int GUI_RPC_CONN::handle_rpc() {
|
||||
#ifndef _WIN32
|
||||
char buf[1024];
|
||||
int n;
|
||||
|
||||
|
@ -200,7 +199,6 @@ int GUI_RPC_CONN::handle_rpc() {
|
|||
fprintf(fout, "<unrecognized/>\n");
|
||||
}
|
||||
fflush(fout);
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -221,16 +219,15 @@ void GUI_RPC_CONN_SET::init(char* path) {
|
|||
#ifdef _WIN32
|
||||
addr.sa_family = AF_UNIX;
|
||||
strcpy(addr.sa_data, path);
|
||||
#else
|
||||
addr.sun_family = AF_UNIX;
|
||||
strcpy(addr.sun_path, path);
|
||||
//#endif
|
||||
WSADATA wsdata;
|
||||
WORD wVersionRequested = MAKEWORD(1, 1);
|
||||
WSAStartup(wVersionRequested, &wsdata);
|
||||
#else
|
||||
addr.sun_family = AF_UNIX;
|
||||
strcpy(addr.sun_path, path);
|
||||
#endif
|
||||
lsock = socket(AF_UNIX, SOCK_STREAM, 0);
|
||||
if (lsock < 0) {
|
||||
int x = WSAGetLastError();
|
||||
perror("socket");
|
||||
exit(1);
|
||||
}
|
||||
|
@ -244,13 +241,9 @@ void GUI_RPC_CONN_SET::init(char* path) {
|
|||
perror("listen");
|
||||
exit(1);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
bool GUI_RPC_CONN_SET::poll() {
|
||||
#ifdef _WIN32
|
||||
return false;
|
||||
#else
|
||||
unsigned int i;
|
||||
fd_set read_fds, error_fds;
|
||||
int sock, n, retval;
|
||||
|
@ -298,5 +291,4 @@ bool GUI_RPC_CONN_SET::poll() {
|
|||
iter++;
|
||||
}
|
||||
return (n != 0);
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -42,10 +42,11 @@ Here's how it works:
|
|||
|
||||
<ul>
|
||||
<li>
|
||||
Download the source code for the BOINC core client,
|
||||
and for the project's applications,
|
||||
and compile them for your computer.
|
||||
Or download the programs from a server of your choosing.
|
||||
Download the source code for the BOINC core client
|
||||
and the project's applications, and compile them on your computer
|
||||
(instructions for compiling the core client are
|
||||
<a href=build_client.php>here</a>).
|
||||
Or download executables from a server of your choosing.
|
||||
<li>
|
||||
Run the core client and attach to the project.
|
||||
This will create a 'project directory'
|
||||
|
|
|
@ -1,26 +1,29 @@
|
|||
<? // -*-html -*-
|
||||
<?
|
||||
require_once("docutil.php");
|
||||
page_head("Building the BOINC core client");
|
||||
?>
|
||||
echo "
|
||||
<p>
|
||||
It may not be necessary to build the core client;
|
||||
you can get executables for many platforms at
|
||||
<a href=http://boinc.berkeley.edu>http://boinc.berkeley.edu</a>.
|
||||
<p>
|
||||
See the <a href=software.php>Software Prerequisites</a>.
|
||||
|
||||
For each platform your project supports (e.g.: i686-pc-linux,
|
||||
sun-sparc-solaris2.7, sun-sparc-solaris2.8, intelx86_windows),
|
||||
you must compile the core client.
|
||||
<h3>Unix, Mac OS/X</h3>
|
||||
<p>
|
||||
<pre>
|
||||
cd boinc/client
|
||||
make
|
||||
</pre>
|
||||
The final target is <code>boinc/client/boinc_VERSION_PLATFORM.gz</code>.
|
||||
|
||||
<ul>
|
||||
<li><a href=build_client_unix.php>Building the core client for Unix</a>
|
||||
<li><a href=build_client_win.php>Building the core client GUI for Windows</a>
|
||||
<li><a href=build_client_mac.php>Building the core client GUI for Macintosh</a>
|
||||
</ul>
|
||||
<h3>Windows</h3>
|
||||
|
||||
The BOINC server keeps track of core client platforms and versions so that
|
||||
users may download the latest version.
|
||||
For each client compiled,
|
||||
put the package in the master server's <code>boinc/apps/</code> directory
|
||||
and run <code>boinc/tools/update_versions</code>.
|
||||
For Windows and Macintosh, the files are self-extracting executables;
|
||||
for Unix they are .gz files which can be run directly after ungzipping.
|
||||
<p>
|
||||
Open boinc.dsw (MSVC6) or boinc.sln (MSVC7).
|
||||
Build either the Release or Debug version.
|
||||
This should also build libraries and screensaver.
|
||||
|
||||
<?
|
||||
";
|
||||
page_tail();
|
||||
?>
|
||||
|
|
|
@ -1,23 +0,0 @@
|
|||
<? // -*-html -*-
|
||||
require_once("docutil.php");
|
||||
page_head("Building the BOINC Core Client GUI for Macintosh");
|
||||
?>
|
||||
|
||||
See the <a href=software.php>Software Prerequisites</a>.
|
||||
|
||||
<p>
|
||||
The build is same as for Unix.
|
||||
|
||||
<h3>Notes</h3>
|
||||
|
||||
CAUTION: Stuffit Expander has a default option to convert the format of text
|
||||
files to use Macintosh line endings ('\r' only). Many of the source files
|
||||
involved here are cross-platform files, and have Unix line endings. If you
|
||||
use Stuffit Expander to expand compressed source files, be sure to turn off
|
||||
this feature as follows: Double click on Stuffit Expander, and select File /
|
||||
Preferences.... Under cross-platform, select NEVER Convert text files to
|
||||
Macintosh format.
|
||||
|
||||
<?
|
||||
page_tail();
|
||||
?>
|
|
@ -1,21 +0,0 @@
|
|||
<? // -*-html -*-
|
||||
require_once("docutil.php");
|
||||
page_head("Building the BOINC Core Client for Unix");
|
||||
?>
|
||||
|
||||
See the <a href=software.php>Software Prerequisites</a>.
|
||||
|
||||
<p>
|
||||
To build the core client:
|
||||
|
||||
<pre>
|
||||
cd boinc/client
|
||||
make
|
||||
</pre>
|
||||
|
||||
Easy :) The final target
|
||||
is <code>boinc/client/boinc_VERSION_PLATFORM.gz</code>.
|
||||
|
||||
<?
|
||||
page_tail();
|
||||
?>
|
|
@ -1,36 +0,0 @@
|
|||
<? // -*-html -*-
|
||||
require_once("docutil.php");
|
||||
page_head("Building the BOINC Core Client GUI for Windows");
|
||||
?>
|
||||
|
||||
See the <a href=software.php>Software Prerequisites</a>.
|
||||
|
||||
<h2>Build executables</h2>
|
||||
|
||||
Using MSVC6, build "boinc_GUI - Win32 Release" or "boinc_GUI - Win32 Debug"
|
||||
versions as appropriate. This should also build dependent libraries and
|
||||
screen saver.
|
||||
|
||||
<h2>Build installation package</h2>
|
||||
|
||||
Open BOINC.ipr. Update the version number:
|
||||
<ul>
|
||||
<li>Readme.txt, license.txt
|
||||
<li>Resources
|
||||
</ul>
|
||||
|
||||
Execute "Build Default Media".
|
||||
|
||||
<h2>Create self-extracting executable</h2>
|
||||
|
||||
Open BOINC.pfw. Accept all defaults, updating version number.
|
||||
|
||||
<h2>Anti-virus</h2>
|
||||
|
||||
Run a virus checker over all the individual (uncompressed)
|
||||
files as well as the final build
|
||||
|
||||
|
||||
<?
|
||||
page_tail();
|
||||
?>
|
|
@ -8,7 +8,7 @@ at the University of California, Berkeley,
|
|||
and is led by <a href=mailto:davea@ssl.berkeley.edu>Dr. David P. Anderson</a>.
|
||||
<p>
|
||||
If you have problems with the BOINC software for Windows please email
|
||||
<a href=mailto:walton_rom@msn.com>Rom Walton</a>.
|
||||
<a href=mailto:rwalton@ssl.berkeley.edu>Rom Walton</a>.
|
||||
<p>
|
||||
BOINC developers include:
|
||||
<p>
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
require_once("docutil.php");
|
||||
page_head("Setting up a BOINC database");
|
||||
echo "
|
||||
<body bgcolor=ffffff>
|
||||
<h2>Setting up a BOINC database</h2>
|
||||
<p>
|
||||
Each BOINC project uses a relational database to keep track of
|
||||
|
|
|
@ -95,7 +95,7 @@ These define a class <code>GUI_RPC</code>
|
|||
that manages the establishment of the RPC pipe,
|
||||
and that parses the returned XML into a data structure
|
||||
from which the GUI can be generated.
|
||||
The project <code>gui_test.C</code> shows how to user this mechanism.
|
||||
The project <code>gui_test.C</code> shows how to use this mechanism.
|
||||
";
|
||||
page_tail();
|
||||
?>
|
||||
|
|
|
@ -6,7 +6,7 @@ echo "
|
|||
|
||||
|
||||
The following commands generate the file upload and code signing key pairs.
|
||||
BOINC_KEY_DIR is the directory where the kays will be stored.
|
||||
BOINC_KEY_DIR is the directory where the keys will be stored.
|
||||
The code signing private key should be stored only on
|
||||
a highly secure (e.g., a disconnected, physically secure) host.
|
||||
<pre>
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
;; $Id$
|
||||
Generating and releasing core client installers
|
||||
|
||||
<verno> represents the new version number. At the time of this update, the
|
||||
latest version was 2.17, so the new version number would be 2.18. Substitute
|
||||
2.18 everywhere you see <verno>
|
||||
|
||||
|
||||
<verno> represents the new version number.
|
||||
At the time of this update, the latest version was 2.17,
|
||||
so the new version number would be 2.18.
|
||||
Substitute 2.18 everywhere you see <verno>
|
||||
|
||||
Required:
|
||||
Unix/Linux/Mac:
|
||||
|
@ -18,15 +21,11 @@ Required:
|
|||
InstallShield 5.5 Pro
|
||||
InstallShield Package for the Web v2
|
||||
|
||||
boinc\win_build\installer\Media folder
|
||||
(copy from quarl or gmg build folders if you're starting a new
|
||||
build folder. This should be checked in once the required files
|
||||
are separated from the generated files)
|
||||
|
||||
boinc\win_build\installer\Media folder
|
||||
|
||||
Administrivia:
|
||||
do this on a unix machine:
|
||||
(note: the make in your default path must be gnu make,
|
||||
(note: the make in your default path must be gmake
|
||||
IN BOTH YOUR NORMAL SHELL AND SH
|
||||
or else set-version will fail towards the end)
|
||||
|
||||
|
@ -57,14 +56,11 @@ Build
|
|||
Use the HP Kayak windows box (bart) in 329 or the Dell (skinner) in 325.
|
||||
|
||||
set up:
|
||||
bart: Open 'quarl' on the desktop.
|
||||
skinner: Open 'build' on the desktop.
|
||||
other:
|
||||
check out new source tree
|
||||
copy Media.zip into win_build/installer; unzip
|
||||
make sure "Media" is at top level of installer
|
||||
Right-click on top BOINC folder;
|
||||
CVS/preferences/policy; clear "prune empty folders" checkbox
|
||||
check out new source tree
|
||||
copy Media.zip into win_build/installer; unzip
|
||||
make sure "Media" is at top level of installer
|
||||
Right-click on top BOINC folder;
|
||||
CVS/preferences/policy; clear "prune empty folders" checkbox
|
||||
copy "client/win/dbghelp.dll" to "win_build/Build/Debug"
|
||||
|
||||
Open 'BOINC'
|
||||
|
|
|
@ -108,7 +108,7 @@ output is as expected).
|
|||
that the filesize never decreases along interrupted transfers.</tr>
|
||||
<tr><td><code>test_masterurl_failure.py</code></td>
|
||||
<td> tests the exponential backoff
|
||||
mechanism on the client in case of master IURL failures. This test is
|
||||
mechanism on the client in case of master URL failures. This test is
|
||||
not automated. It has to be run, and then client.out (in the host
|
||||
directory) must be looked at to examine whether everything is working
|
||||
correctly.</tr>
|
||||
|
|
|
@ -1,26 +1,21 @@
|
|||
<? // -*- html -*-
|
||||
// $Id$
|
||||
require_once("docutil.php");
|
||||
page_head("update_versions");
|
||||
echo "
|
||||
<?
|
||||
require_once("docutil.php");
|
||||
page_head("update_versions");
|
||||
echo "
|
||||
|
||||
<h3>Releasing application versions</h3>
|
||||
|
||||
<code>update_versions</code>
|
||||
releases new core client and application versions.
|
||||
Core client versions will be visible to participants
|
||||
on the 'Download BOINC' web page.
|
||||
Application versions will be distributed to participants.
|
||||
Make sure to test versions before releasing them!
|
||||
releases new application versions.
|
||||
It makes the needed database entries and copies files
|
||||
to the download directory,
|
||||
from where they will be distributed to participants.
|
||||
<p>
|
||||
To use:
|
||||
<ul>
|
||||
<li> Create an 'apps directory' under the project directory.
|
||||
Add an
|
||||
";
|
||||
echo htmlspecialchars("<app_dir>");
|
||||
echo "
|
||||
element to config.xml giving the path of the apps directory.
|
||||
<li> Create a subdirectory 'boinc' in the apps directory.
|
||||
Put new core client versions here.
|
||||
Add an ", htmlspecialchars("<app_dir>"),
|
||||
" element to config.xml giving the path of the apps directory.
|
||||
<li> Create a subdirectory for each application,
|
||||
with the same name as the application.
|
||||
Put new application versions here.
|
||||
|
@ -44,6 +39,33 @@ Platform strings must match the names of platforms in the database.
|
|||
<p>
|
||||
TO DO: check for code signature files.
|
||||
|
||||
<h3>Multiple-file application versions</h3>
|
||||
|
||||
Application versions can consist of multiple files.
|
||||
Follow the above procedure, but create a directory
|
||||
with the given name, and put the files in that directory.
|
||||
The executable file with the lexicographically first name
|
||||
will be treated as the main program.
|
||||
|
||||
|
||||
<h3>Releasing core client versions</h3>
|
||||
|
||||
The same mechanism is used to release core client versions:
|
||||
Create a subdirectory 'boinc' in the apps directory,
|
||||
put new core client installer files there, and run update_versions.
|
||||
Core client versions will be visible to participants
|
||||
on your project's 'Download BOINC' web page.
|
||||
|
||||
<p>
|
||||
<b>NOTE</b>: the files distributed in this way are installers,
|
||||
not executables.
|
||||
Instructions for creating installers are
|
||||
<a href=ssl_client_release_instructions.txt>here</a>.
|
||||
<p>
|
||||
<b>NOTE</b>: in the interests of consistency,
|
||||
we recommend that BOINC projects not distribute core client versions,
|
||||
but rather set the 'Download BOINC' link on their web page
|
||||
to point to the download page on the main BOINC site.
|
||||
|
||||
";
|
||||
page_tail();
|
||||
|
|
|
@ -10,6 +10,7 @@ echo "
|
|||
<p>
|
||||
<b>upgrade</b> does the following:
|
||||
<ul>
|
||||
<li>
|
||||
It copies files from the source/html/* directories
|
||||
to the corresponding project directories.
|
||||
<li>
|
||||
|
|
|
@ -2,32 +2,6 @@
|
|||
require_once("docutil.php");
|
||||
page_head("Operational Tools");
|
||||
echo "
|
||||
BOINC provides tools for creating and operating projects:
|
||||
<p>
|
||||
<table border=1 cellpadding=8 width=100%>
|
||||
<tr><td><code>boinc/tools/</code></td>
|
||||
<td><a href=make_project.php><code>make_project</code></a> </td>
|
||||
<td>Creates the server complex for a new project.</td>
|
||||
</tr>
|
||||
<tr><td><code>boinc/sched/</code></td><td> <a
|
||||
href=tool_start.php><code>start, stop, status</code></a> </td> <td>
|
||||
BOINC start / Super Cron program
|
||||
</td></tr>
|
||||
<tr><td><code>boinc/tools/</code></td><td> <a href=tool_add.php><code>add</code></a> </td> <td>
|
||||
Adds objects to the database through command-line.
|
||||
</td></tr>
|
||||
<tr><td><code>boinc/tools/</code></td><td> <a href=tool_xadd.php><code>xadd</code></a> </td> <td>
|
||||
Adds objects to the database through project.xml.
|
||||
</td></tr>
|
||||
<tr><td><code>boinc/tools/</code></td><td> <a href=tool_update_versions.php><code>update_versions</code></a> </td> <td>
|
||||
Adds core and application versions to the database.
|
||||
</td></tr>
|
||||
<tr><td><code>boinc/tools/</code></td><td> <a href=><code>upgrade</code></a> </td> <td>
|
||||
Upgrades an existing installation
|
||||
</td></tr>
|
||||
</table>
|
||||
<p>
|
||||
|
||||
Projects can create their own tools using the Python API (see <a
|
||||
href=python.php>Python framework</a>) or the C++ API (<code>db/db.h</code>)
|
||||
<p>
|
||||
|
|
|
@ -9,29 +9,81 @@ let applications communicate with the server
|
|||
during the execution of a workunit.
|
||||
That are intended for applications that have
|
||||
long work units (multiple days).
|
||||
Trickle messages may be in either direction
|
||||
(application to server, or vice versa).
|
||||
Typical uses of this mechanism:
|
||||
<ul>
|
||||
<li> The application reports its current CPU usage,
|
||||
<li>
|
||||
The application reports its current CPU usage,
|
||||
so that users can be granted incremental credit
|
||||
(rather than waiting until the end of the work unit).
|
||||
<li> The application reports a summary of the computational state,
|
||||
|
||||
<li>
|
||||
The application reports a summary of the computational state,
|
||||
so that server logic can decide if the computation should be aborted.
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
Trickle messages are asynchronous and unreliable.
|
||||
A trickle message may not be delivered immediately
|
||||
after it is generated by the application.
|
||||
If additional trickle messages are generated during the interval,
|
||||
only the last one will be sent.
|
||||
Thus, the content of trickle messages should be cumulative
|
||||
rather than incremental.
|
||||
Trickle messages are asynchronous and reliable.
|
||||
A trickle message may not be delivered immediately after it is sent.
|
||||
If there is a message waiting to be sent,
|
||||
the BOINC client may contact the scheduling server,
|
||||
but this may take a while if the client is offline.
|
||||
|
||||
|
||||
<p>
|
||||
|
||||
|
||||
<h3>API (client)</h3>
|
||||
|
||||
<pre>
|
||||
<code>int boinc_send_trickle(char*)</code>
|
||||
</pre>
|
||||
sends a trickle message.
|
||||
Returns zero if success.
|
||||
<p>
|
||||
<pre>
|
||||
<code>bool boinc_receive_trickle(char* buf, int len)</code>
|
||||
</pre>
|
||||
receives a trickle message.
|
||||
Returns true if there was a message.
|
||||
Messages are delivered in order.
|
||||
|
||||
<h3>API (server)</h3>
|
||||
|
||||
The server C library API:
|
||||
<pre>
|
||||
<code>
|
||||
int get_trickle_message(
|
||||
int applicationid,
|
||||
int& resultid,
|
||||
int& messagid,
|
||||
char* buf,
|
||||
int len
|
||||
);
|
||||
|
||||
int mark_trickle_processed(int messagid);
|
||||
|
||||
int send_trickle_message(
|
||||
int resultid,
|
||||
char* buf
|
||||
);
|
||||
</code>
|
||||
</pre>
|
||||
get_trickle_message() gets an unprocessed trickle message
|
||||
for the given application,
|
||||
returning the result and message IDs as well as the message itself.
|
||||
mark_trickle_processed() flags a trickle message as processed.
|
||||
send_trickle_message() sends a trickle message to the
|
||||
client handling the given result.
|
||||
<p>
|
||||
These functions are also available as scriptable command-line programs.
|
||||
|
||||
<h3>Implementation</h3>
|
||||
<p>
|
||||
<code>boinc_trickle()</code>
|
||||
On the client,
|
||||
<code>boinc_send_trickle()</code>
|
||||
creates a file 'trickle' in the slot directory
|
||||
(overwriting any existing file of that name)
|
||||
and signals the core client via shared memory.
|
||||
When the core client gets this signal,
|
||||
or when the application exits,
|
||||
|
@ -43,6 +95,19 @@ it scans the project directory for trickle files
|
|||
and includes them in the request.
|
||||
On successful RPC completion it deletes the trickle files.
|
||||
|
||||
<p>
|
||||
boinc_receive_trickle() sets a flag in the result record;
|
||||
this flag is conveyed to the scheduling server.
|
||||
<p>
|
||||
The server database has two tables,
|
||||
trickle_to_server and trickle_to_client.
|
||||
The scheduling server extracts trickle messages from
|
||||
the request message and inserts them in trickle_to_server.
|
||||
If the above flag is set for a given result,
|
||||
it queries the trickle_to_client table for that result
|
||||
and appends any messages to the reply.
|
||||
|
||||
|
||||
";
|
||||
|
||||
page_tail();
|
||||
|
|
Loading…
Reference in New Issue