mirror of https://github.com/BOINC/boinc.git
*** empty log message ***
svn path=/trunk/boinc/; revision=6712
This commit is contained in:
parent
18799e34d0
commit
511429769c
|
@ -9316,3 +9316,10 @@ Bruce 21 July 2005
|
||||||
user/
|
user/
|
||||||
hosts_user.php
|
hosts_user.php
|
||||||
|
|
||||||
|
David 21 July 2005
|
||||||
|
- Scheduler: if using locality scheduling,
|
||||||
|
don't attach to shared memory
|
||||||
|
(hence don't need to run feeder)
|
||||||
|
|
||||||
|
sched/
|
||||||
|
main.C
|
||||||
|
|
|
@ -163,9 +163,9 @@ means:
|
||||||
Clients will download this and run it. If you want, you can gzip it
|
Clients will download this and run it. If you want, you can gzip it
|
||||||
and leave the .gz extension on.
|
and leave the .gz extension on.
|
||||||
|
|
||||||
Now cd to PROJDIR/bin and run
|
Now cd to PROJDIR and run
|
||||||
|
|
||||||
./update_versions
|
bin/update_versions
|
||||||
|
|
||||||
This scans the app dir and creates AppVersions (info about which Apps
|
This scans the app dir and creates AppVersions (info about which Apps
|
||||||
have really-existing versions for which platforms), and puts them in
|
have really-existing versions for which platforms), and puts them in
|
||||||
|
|
74
sched/main.C
74
sched/main.C
|
@ -75,6 +75,7 @@ GUI_URLS gui_urls;
|
||||||
key_t sema_key;
|
key_t sema_key;
|
||||||
int g_pid;
|
int g_pid;
|
||||||
static bool db_opened=false;
|
static bool db_opened=false;
|
||||||
|
bool project_stopped = false;
|
||||||
|
|
||||||
void send_message(const char* msg, int delay, bool send_header) {
|
void send_message(const char* msg, int delay, bool send_header) {
|
||||||
if (send_header) {
|
if (send_header) {
|
||||||
|
@ -184,15 +185,52 @@ void set_core_dump_size_limit() {
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
SCHED_SHMEM* attach_to_feeder_shmem() {
|
||||||
|
char path[256];
|
||||||
|
get_project_dir(path, sizeof(path));
|
||||||
|
get_key(path, 'a', sema_key);
|
||||||
|
SCHED_SHMEM* ssp = 0;
|
||||||
|
int i, retval;
|
||||||
|
void* p;
|
||||||
|
|
||||||
|
retval = attach_shmem(config.shmem_key, &p);
|
||||||
|
if (retval || p==0) {
|
||||||
|
log_messages.printf(SCHED_MSG_LOG::CRITICAL,
|
||||||
|
"Can't attach shmem (feeder not running?)\n"
|
||||||
|
);
|
||||||
|
project_stopped = true;
|
||||||
|
} else {
|
||||||
|
ssp = (SCHED_SHMEM*)p;
|
||||||
|
retval = ssp->verify();
|
||||||
|
if (retval) {
|
||||||
|
log_messages.printf(SCHED_MSG_LOG::CRITICAL,
|
||||||
|
"shmem has wrong struct sizes - recompile\n"
|
||||||
|
);
|
||||||
|
send_message("Server has software problem", 3600, true);
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i=0; i<10; i++) {
|
||||||
|
if (ssp->ready) break;
|
||||||
|
log_messages.printf(SCHED_MSG_LOG::DEBUG, "waiting for ready flag\n");
|
||||||
|
sleep(1);
|
||||||
|
}
|
||||||
|
if (!ssp->ready) {
|
||||||
|
log_messages.printf(SCHED_MSG_LOG::CRITICAL, "feeder doesn't seem to be running\n");
|
||||||
|
send_message("Server has software problem", 3600, true);
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ssp;
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char** argv) {
|
int main(int argc, char** argv) {
|
||||||
FILE* fin, *fout;
|
FILE* fin, *fout;
|
||||||
int i, retval;
|
int i, retval;
|
||||||
char req_path[256], reply_path[256], path[256];
|
char req_path[256], reply_path[256], path[256];
|
||||||
SCHED_SHMEM* ssp=0;
|
SCHED_SHMEM* ssp=0;
|
||||||
void* p;
|
|
||||||
unsigned int counter=0;
|
unsigned int counter=0;
|
||||||
char* code_sign_key;
|
char* code_sign_key;
|
||||||
bool project_stopped = false;
|
|
||||||
int length=-1;
|
int length=-1;
|
||||||
log_messages.pid = getpid();
|
log_messages.pid = getpid();
|
||||||
bool batch = false;
|
bool batch = false;
|
||||||
|
@ -263,36 +301,8 @@ int main(int argc, char** argv) {
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
get_project_dir(path, sizeof(path));
|
if (!config.locality_scheduling) {
|
||||||
get_key(path, 'a', sema_key);
|
ssp = attach_to_feeder_shmem();
|
||||||
|
|
||||||
retval = attach_shmem(config.shmem_key, &p);
|
|
||||||
if (retval || p==0) {
|
|
||||||
log_messages.printf(SCHED_MSG_LOG::CRITICAL,
|
|
||||||
"Can't attach shmem (feeder not running?)\n"
|
|
||||||
);
|
|
||||||
project_stopped = true;
|
|
||||||
} else {
|
|
||||||
ssp = (SCHED_SHMEM*)p;
|
|
||||||
retval = ssp->verify();
|
|
||||||
if (retval) {
|
|
||||||
log_messages.printf(SCHED_MSG_LOG::CRITICAL,
|
|
||||||
"shmem has wrong struct sizes - recompile\n"
|
|
||||||
);
|
|
||||||
send_message("Server has software problem", 3600, true);
|
|
||||||
exit(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i=0; i<10; i++) {
|
|
||||||
if (ssp->ready) break;
|
|
||||||
log_messages.printf(SCHED_MSG_LOG::DEBUG, "waiting for ready flag\n");
|
|
||||||
sleep(1);
|
|
||||||
}
|
|
||||||
if (!ssp->ready) {
|
|
||||||
log_messages.printf(SCHED_MSG_LOG::CRITICAL, "feeder doesn't seem to be running\n");
|
|
||||||
send_message("Server has software problem", 3600, true);
|
|
||||||
exit(0);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
g_pid = getpid();
|
g_pid = getpid();
|
||||||
|
|
|
@ -3,13 +3,12 @@
|
||||||
# $Id$
|
# $Id$
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Scans apps dir for current core client and application versions
|
Scans apps dir for application versions
|
||||||
and updates the database as appropriate.
|
and updates the database as appropriate.
|
||||||
|
|
||||||
config.xml must contain an <app_dir> which specifies the directory to search.
|
config.xml must contain an <app_dir> which specifies the directory to search.
|
||||||
|
|
||||||
apps/APPLICATION_NAME/ contains application versions for each application.
|
apps/APPLICATION_NAME/ contains application versions for each application.
|
||||||
apps/boinc/ contains core client versions (not used for most projects).
|
|
||||||
|
|
||||||
Filenames must be of the form NAME_VERSION_PLATFORM[.ext].
|
Filenames must be of the form NAME_VERSION_PLATFORM[.ext].
|
||||||
The prefix name and extensions .gz, .exe, .sit are ignored.
|
The prefix name and extensions .gz, .exe, .sit are ignored.
|
||||||
|
@ -64,7 +63,7 @@ def add_files(
|
||||||
signature_files={},
|
signature_files={},
|
||||||
file_ref_infos = {}
|
file_ref_infos = {}
|
||||||
):
|
):
|
||||||
''' add files to app/core.
|
''' add files to app.
|
||||||
'''
|
'''
|
||||||
assert(match)
|
assert(match)
|
||||||
assert(exec_files[0])
|
assert(exec_files[0])
|
||||||
|
@ -106,23 +105,6 @@ def add_files(
|
||||||
platform = platform,
|
platform = platform,
|
||||||
version_num = version_num,
|
version_num = version_num,
|
||||||
xml_doc = xml_doc)
|
xml_doc = xml_doc)
|
||||||
else:
|
|
||||||
assert(not non_exec_files) # this wouldn't make sense for core clients
|
|
||||||
existing_versions = database.CoreVersions.find(platform=platform, version_num=version_num)
|
|
||||||
if existing_versions:
|
|
||||||
if verbose:
|
|
||||||
print " Skipping existing core version %s: %s" %(version_num, file_base)
|
|
||||||
return
|
|
||||||
|
|
||||||
print " Found core version %3d for %s: %s" %(version_num, platform, file_base)
|
|
||||||
|
|
||||||
xml_doc = tools.process_app_file(exec_files[0])
|
|
||||||
|
|
||||||
object = database.CoreVersion(
|
|
||||||
create_time = create_time,
|
|
||||||
platform = platform,
|
|
||||||
version_num = version_num,
|
|
||||||
xml_doc = xml_doc)
|
|
||||||
|
|
||||||
objects_to_commit.append(object)
|
objects_to_commit.append(object)
|
||||||
|
|
||||||
|
@ -133,10 +115,7 @@ def re_match_exec_filename(filepath):
|
||||||
return re.match('[^.]+_([0-9]+)[.]([0-9]+)_([^.]+?(?:[0-9][0-9.]*[0-9])?)(?:[.]gz|[.]exe|[.]sit|[.]msi)?$', file)
|
return re.match('[^.]+_([0-9]+)[.]([0-9]+)_([^.]+?(?:[0-9][0-9.]*[0-9])?)(?:[.]gz|[.]exe|[.]sit|[.]msi)?$', file)
|
||||||
|
|
||||||
def find_versions(app, dir):
|
def find_versions(app, dir):
|
||||||
"""Find application versions/core client versions in DIR.
|
"""Find application versions in DIR.
|
||||||
|
|
||||||
if app==None, then dir contains core clients; else contains application
|
|
||||||
versions.
|
|
||||||
|
|
||||||
If directory contains sub-directories, those are scanned (non-recursively)
|
If directory contains sub-directories, those are scanned (non-recursively)
|
||||||
for files. If an executable is found, the first one found
|
for files. If an executable is found, the first one found
|
||||||
|
@ -189,7 +168,7 @@ def find_versions__process_single_file(app, match, filepath):
|
||||||
# possibly with signature files included.
|
# possibly with signature files included.
|
||||||
|
|
||||||
def find_versions__process_bundle(app, match, dir):
|
def find_versions__process_bundle(app, match, dir):
|
||||||
'''add executable + bundle as app/core version'''
|
'''add executable + bundle as app version'''
|
||||||
exec_files = []
|
exec_files = []
|
||||||
non_exec_files = []
|
non_exec_files = []
|
||||||
signature_files = {}
|
signature_files = {}
|
||||||
|
@ -244,11 +223,6 @@ def find_versions__process_bundle(app, match, dir):
|
||||||
for appdir in xlistdir(config.app_dir):
|
for appdir in xlistdir(config.app_dir):
|
||||||
if not os.path.isdir(appdir): continue
|
if not os.path.isdir(appdir): continue
|
||||||
dirname = os.path.basename(appdir)
|
dirname = os.path.basename(appdir)
|
||||||
if dirname == 'boinc':
|
|
||||||
if verbose:
|
|
||||||
print "Looking for core versions in", appdir
|
|
||||||
find_versions(None, appdir)
|
|
||||||
continue
|
|
||||||
appname = os.path.basename(appdir)
|
appname = os.path.basename(appdir)
|
||||||
apps = database.Apps.find(name=appname)
|
apps = database.Apps.find(name=appname)
|
||||||
if apps:
|
if apps:
|
||||||
|
|
Loading…
Reference in New Issue