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,
"
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 @@ +
+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.