diff --git a/checkin_notes b/checkin_notes index db289af19d..caf7a432cc 100755 --- a/checkin_notes +++ b/checkin_notes @@ -2438,3 +2438,11 @@ Seth/Eric Nov 18, 2002 boinc_gui/ boinc_gui.dsp +David Nov 30 2002 + - use the major/minor version from env vars to identify the core client + (rather than the single version in Makefile) + + client/ + Makefile.in + client_state.C,h + cs_scheduler.C diff --git a/client/Makefile.in b/client/Makefile.in index 7c2e25c3a7..b4b3680937 100644 --- a/client/Makefile.in +++ b/client/Makefile.in @@ -5,8 +5,6 @@ VPATH = @srcdir@ INSTALL_DIR = /usr/local/boinc -VERSION = 2 - CFLAGS = -g -Wall @DEFS@ \ -I @srcdir@ \ -I @srcdir@/../api \ @@ -15,7 +13,8 @@ CFLAGS = -g -Wall @DEFS@ \ -I @srcdir@/win \ -I /usr/local/mysql/include \ -DHOST=\"@host@\" \ - -DVERSION=$(VERSION) + -DMAJOR_VERSION=$(BOINC_MAJOR_VERSION) \ + -DMINOR_VERSION=$(BOINC_MINOR_VERSION) CC = @CC@ $(CFLAGS) diff --git a/client/client_state.C b/client/client_state.C index a7172ee1ca..2c228decf7 100644 --- a/client/client_state.C +++ b/client/client_state.C @@ -49,7 +49,8 @@ CLIENT_STATE::CLIENT_STATE() { giveup_after = PERS_GIVEUP; contacted_sched_server = false; activities_suspended = false; - core_client_version = VERSION; + core_client_major_version = MAJOR_VERSION; + core_client_minor_version = MINOR_VERSION; platform_name = HOST; exit_after = -1; app_started = 0; @@ -462,9 +463,11 @@ int CLIENT_STATE::write_state_file() { active_tasks.write(f); fprintf(f, "%s\n" - "%d\n", + "%d\n" + "%d\n", platform_name, - core_client_version + core_client_major_version, + core_client_minor_version ); fprintf(f, "\n"); fclose(f); diff --git a/client/client_state.h b/client/client_state.h index 954724ce6e..2aa57f9d20 100644 --- a/client/client_state.h +++ b/client/client_state.h @@ -74,7 +74,8 @@ public: private: bool client_state_dirty; TIME_STATS time_stats; - int core_client_version; + int core_client_major_version; + int core_client_minor_version; char* platform_name; unsigned int nslots; bool exit_when_idle; diff --git a/client/cs_scheduler.C b/client/cs_scheduler.C index 054098819b..1531c35361 100644 --- a/client/cs_scheduler.C +++ b/client/cs_scheduler.C @@ -176,13 +176,15 @@ int CLIENT_STATE::make_scheduler_request(PROJECT* p, double work_req) { " %d\n" " %d\n" " %s\n" - " %d\n" + " %d\n" + " %d\n" " %f\n", p->authenticator, p->hostid, p->rpc_seqno, platform_name, - core_client_version, + core_client_major_version, + core_client_minor_version, work_req ); if (p->code_sign_key) { diff --git a/client/version.C b/client/version.C index e1b66afc7b..34e40706fd 100644 --- a/client/version.C +++ b/client/version.C @@ -20,5 +20,6 @@ #include "version.h" #include "windows_cpp.h" -int gversion = VERSION; +int gmajor_version = MAJOR_VERSION; +int gminor_version = MINOR_VERSION; char* gplatform_name = HOSTTYPE; diff --git a/doc/app.html b/doc/app.html index 57b5e845ae..dd90f9ef29 100644 --- a/doc/app.html +++ b/doc/app.html @@ -16,7 +16,7 @@ An application program may go through a sequence of A particular version, compiled for a particular platform, is called an application version. An application version can consist of multiple files: for example, a -controller script, pre- and post-processing programs, and a primary. +controller script, pre- and post-processing programs, and a primary executable.

Each application version has an integer version number. diff --git a/doc/boinc_version.html b/doc/boinc_version.html new file mode 100755 index 0000000000..e2cf9335e6 --- /dev/null +++ b/doc/boinc_version.html @@ -0,0 +1,55 @@ +Versions of BOINC +

Versions of BOINC

+ +

+The BOINC software (core client and all the server components) +will evolve over time. +There are a number of pairwise interactions +in which version mismatches could cause problems: +

+ +

+Each version of the BOINC software has a major and minor version number. +The client's version number is included in +scheduler and file upload RPC requests. +If a server receives a request from a client with a different major version, +it returns an error. + +

+Some changes to the BOINC server software may involve +changes to the BOINC database +(e.g. adding a new table or field). +Such releases will include SQL script for modifying an +existing database in-place. + +

+Major-version changes to the BOINC software will require +that all projects update their server software (and databases) +and that all participants update their core client software on all hosts. +This doesn't have to happen all at once, +but in the midst of the crossover +some clients won't be able to access some servers. + +

+When a project makes a major-version change in its server software, +it may need to create new versions of its applications. +It must invalidate (by incrementing min_version) +all app versions that are incompatible with the new server software. + +

+When a participant updates the core client, +all results currently in progress are discarded +(because new app versions would be needed). +The core client reads the version number from the old +client state file, and discards the results. + +

+TODO: figure out how this interacts with work sequences. +Don't want to relocate a sequence needlessly. diff --git a/doc/create_project.html b/doc/create_project.html index e11c438f90..bd0ead8798 100644 --- a/doc/create_project.html +++ b/doc/create_project.html @@ -14,14 +14,15 @@ BOINC's abstractions of data and computation.

  • What applications are suitable for BOINC?
  • Files and file references
  • Platforms -
  • Applications and versions +
  • Applications and application versions
  • Workunits
  • Results
  • Batches
  • Work distribution
  • Handling long, large-footprint computations
  • Remote file access -
  • Security +
  • Security +
  • Versions of BOINC diff --git a/html/user/bug_report_form.php b/html/user/bug_report_form.php new file mode 100644 index 0000000000..7a79898aac --- /dev/null +++ b/html/user/bug_report_form.php @@ -0,0 +1,2 @@ +
    +
    diff --git a/html/user/home.php b/html/user/home.php index 7434d6aa52..81605c8982 100644 --- a/html/user/home.php +++ b/html/user/home.php @@ -8,7 +8,7 @@ db_init(); $user = get_user_from_cookie(); if ($user) { - page_head($user->name); + page_head("Member page for $user->name"); show_user_page_private($user); page_tail(); } else { diff --git a/html/user/index.php b/html/user/index.php index 435c756f25..692d31f70f 100644 --- a/html/user/index.php +++ b/html/user/index.php @@ -33,6 +33,7 @@ and give it your account key.
  • Log in
  • User page - view stats, modify preferences
  • Teams - create or join a team +
  • Report problems
  • Top users
  • Top hosts
  • Top teams diff --git a/html/user/login_form.php b/html/user/login_form.php index c2d831ec32..9d28a2d234 100644 --- a/html/user/login_form.php +++ b/html/user/login_form.php @@ -5,7 +5,7 @@ echo "
    diff --git a/html/user/user.inc b/html/user/user.inc index b00ffecfde..39e5fe9ed3 100644 --- a/html/user/user.inc +++ b/html/user/user.inc @@ -1,37 +1,30 @@ ".TD2.LG_FONT."User Stats:\n"; - row("User ID: ", $user->id); $row = sprintf("%s user since: ", $project); row($row, time_str($user->create_time)); row("Total credit: ", $user->total_credit); - row("Recent averaged credit: ", $user->expavg_credit); + row("Recent average credit: ", $user->expavg_credit); if ($user->teamid) { $result = mysql_query("select * from team where id = $user->teamid"); $team = mysql_fetch_object($result); row("Team: ", "id>$team->name"); } else { - row("Team: ", "None"); + row("Team: ", "none"); } - echo "
    - Your account key: + Your account ID:
    \n"; } function show_user_profile($user) { - echo TABLE2."\n"; - echo "".TD2.LG_FONT."User Information:\n"; - row("User name: ", $user->name); - row("Email address: ", $user->email_addr); - row("Country: ", $user->country); - row("Postal (ZIP) code: ", $user->postal_code); - echo "Edit user information\n"; + row("name", $user->name); + row("email address", $user->email_addr); + row("country", $user->country); + row("postal (ZIP) code", $user->postal_code); + echo "Edit the above information\n"; if (1) { echo "
    \n"; } else { echo "Change Password\n"; } - echo "\n"; } function show_hosts($user) { @@ -48,16 +41,13 @@ function show_hosts($user) { // it has info that other users aren't supposed to see function show_user_page_private($user) { - echo "

    $user->name

    \n"; - start_table(); + echo "\n"; show_user_profile($user); - echo "

    \n"; show_user_stats($user); - echo "

    \n"; + echo "

    \n"; echo ""; } diff --git a/html/user/util.inc b/html/user/util.inc index d3dce8d7c7..064abf5eaf 100644 --- a/html/user/util.inc +++ b/html/user/util.inc @@ -57,7 +57,8 @@ function page_tail() { // put your copyright notice etc. here - echo "
    Copyright (c) 2002 Sample Project\n"; + echo "
    Astropulse home page\n"; + echo "
    Copyright (c) 2002 Astropulse\n"; } function date_str($when) { diff --git a/todo b/todo index a5c0cccc32..21b4c48d2d 100755 --- a/todo +++ b/todo @@ -1,14 +1,10 @@ -<<<<<<< todo -user PHP session mechanism +scheduler and file upload handler: return error if wrong major version -protection mechanism for project admin web -======= use PHP session mechanism instead of our own cookies use https for login (don't sent account key or password in clear) protect project admin web pages (htaccess) ->>>>>>> 1.6 Deadline mechanism for results - use in result dispatching