diff --git a/db/Makefile.am b/db/Makefile.am index 3548944461..479ba3732a 100644 --- a/db/Makefile.am +++ b/db/Makefile.am @@ -10,4 +10,6 @@ endif ## other stuff to go into the distribution extradir = $(prefix)/share/boinc-server-maker/db -dist_extra_DATA = constraints.sql schema.sql init_db +dist_extra_DATA = constraints.sql schema.sql + +dist_extra_SCRIPTS = init_db diff --git a/lib/Makefile.am b/lib/Makefile.am index 14ba2d1b9d..45c3279851 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -26,6 +26,7 @@ libfcgi_sources = \ md5_file.cpp \ miofile.cpp \ msg_log.cpp \ + opencl_boinc.cpp \ parse.cpp \ shmem.cpp \ str_util.cpp \ @@ -53,6 +54,7 @@ generic_sources = \ msg_log.cpp \ network.cpp \ notice.cpp \ + opencl_boinc.cpp \ parse.cpp \ prefs.cpp \ procinfo.cpp \ @@ -120,6 +122,7 @@ pkginclude_HEADERS = \ msg_log.h \ network.h \ notice.h \ + opencl_boinc.h \ parse.h \ prefs.h \ procinfo.h \ diff --git a/lib/coproc.cpp b/lib/coproc.cpp index 44f4b285bb..4301d10e9a 100644 --- a/lib/coproc.cpp +++ b/lib/coproc.cpp @@ -123,62 +123,6 @@ void COPROC::write_request(MIOFILE& f) { ); } -void OPENCL_DEVICE_PROP::write_xml(MIOFILE& f, const char* tag, bool temp_file) { - f.printf( - " <%s>\n" - " %s\n" - " %s\n" - " %lu\n" - " %d\n" - " %llu\n" - " %llu\n" - " %llu\n" - " %d\n" - " %llu\n" - " %s\n" - " %llu\n" - " %llu\n" - " %lu\n" - " %lu\n" - " %s\n" - " %s\n" - " %s\n", - tag, - name, - vendor, - vendor_id, - available ? 1 : 0, - half_fp_config, - single_fp_config, - double_fp_config, - endian_little ? 1 : 0, - execution_capabilities, - extensions, - global_mem_size, - local_mem_size, - max_clock_frequency, - max_compute_units, - opencl_platform_version, - opencl_device_version, - opencl_driver_version - ); - if (temp_file) { - f.printf( - " %d\n" - " %d\n" - " %f\n" - " %f\n" - " %d\n", - is_used, - device_num, - peak_flops, - opencl_available_ram, - opencl_device_index - ); - } - f.printf(" \n", tag); -} - int COPROC::parse(XML_PARSER& xp) { char buf[256]; strcpy(type, ""); @@ -210,179 +154,6 @@ int COPROC::parse(XML_PARSER& xp) { #endif -int OPENCL_DEVICE_PROP::parse(XML_PARSER& xp, const char* end_tag) { - int n; - unsigned long long ull; - - while (!xp.get_tag()) { - if (xp.match_tag(end_tag)) { - get_device_version_int(); - get_opencl_driver_revision(); - return 0; - } - if (xp.parse_str("name", name, sizeof(name))) continue; - if (xp.parse_str("vendor", vendor, sizeof(vendor))) continue; - if (xp.parse_ulonglong("vendor_id", ull)) { - vendor_id = ull; - continue; - } - if (xp.parse_int("available", n)) { - available = n; - continue; - } - if (xp.parse_ulonglong("half_fp_config", ull)) { - half_fp_config = ull; - continue; - } - if (xp.parse_ulonglong("single_fp_config", ull)) { - single_fp_config = ull; - continue; - } - if (xp.parse_ulonglong("double_fp_config", ull)) { - double_fp_config = ull; - continue; - } - if (xp.parse_int("endian_little", n)) { - endian_little = n; - continue; - } - if (xp.parse_ulonglong("execution_capabilities", ull)) { - execution_capabilities = ull; - continue; - } - if (xp.parse_str("extensions", - extensions, - sizeof(extensions) - )) { - continue; - } - if (xp.parse_ulonglong("global_mem_size", ull)) { - global_mem_size = ull; - continue; - } - if (xp.parse_ulonglong("local_mem_size", ull)) { - local_mem_size = ull; - continue; - } - if (xp.parse_int("max_clock_frequency", n)) { - max_clock_frequency = n; - continue; - } - if (xp.parse_int("max_compute_units", n)) { - max_compute_units = n; - continue; - } - if (xp.parse_str("opencl_platform_version", - opencl_platform_version, - sizeof(opencl_platform_version) - )) { - continue; - } - if (xp.parse_str("opencl_device_version", - opencl_device_version, - sizeof(opencl_device_version) - )) { - continue; - } - if (xp.parse_str("opencl_driver_version", - opencl_driver_version, - sizeof(opencl_driver_version) - )) { - continue; - } - - // The following are used only in the - // COPROC_INFO_FILENAME temporary file - if (xp.parse_int("is_used", n)) { - is_used = (COPROC_USAGE)n; - continue; - } - if (xp.parse_int("device_num", n)) { - device_num = n; - continue; - } - if (xp.parse_double("peak_flops", peak_flops)) continue; - if (xp.parse_double("opencl_available_ram", opencl_available_ram)) continue; - if (xp.parse_int("opencl_device_index", n)) { - opencl_device_index = n; - continue; - } - } - return ERR_XML_PARSE; -} - -int OPENCL_DEVICE_PROP::get_device_version_int() { - int maj, min; - int n = sscanf( - opencl_device_version, "OpenCL %d.%d", &maj, &min - ); - if (n != 2) { - return ERR_NOT_FOUND; - } - opencl_device_version_int = 100*maj + min; - return 0; -} - -int OPENCL_DEVICE_PROP::get_opencl_driver_revision() { - // gets the OpenCL runtime revision - // Thus far this is only necessary for ATI/AMD because there are bad - // driver sets only distinguisable by the runtime library version. - // Fortunately this info is in the opencl_device_version string. - float rev=0; - char *p=opencl_device_version+sizeof(opencl_device_version)-1; - // find the last opening bracket - while ((p > opencl_device_version) && (*p!='(')) p--; - if (p!=opencl_device_version) { - int n=sscanf( - p, "(%f", &rev - ); - // I don't care about errors because for non-ATI GPUs this should - // be zero. - if (n!=1) { - rev=0; - } - } - opencl_driver_revision=floor(rev*100+0.5); - return 0; -} - -void OPENCL_DEVICE_PROP::description(char* buf, int buflen, const char* type) { - char s1[256], s2[256]; - int n; - // openCL_device_version may have a trailing space - strlcpy(s1, opencl_device_version, sizeof(s1)); - n = (int)strlen(s1) - 1; - if ((n > 0) && (s1[n] == ' ')) s1[n] = '\0'; - snprintf(s2, sizeof(s2), - "%s (driver version %s, device version %s, %.0fMB, %.0fMB available, %.0f GFLOPS peak)", - name, opencl_driver_version, - s1, global_mem_size/MEGA, - opencl_available_ram/MEGA, peak_flops/1.e9 - ); - - switch(is_used) { - case COPROC_IGNORED: - snprintf(buf, buflen, - "OpenCL: %s %d (ignored by config): %s", - type, device_num, s2 - ); - break; - case COPROC_USED: - snprintf(buf, buflen, - "OpenCL: %s %d: %s", - type, device_num, s2 - ); - break; - case COPROC_UNUSED: - default: - snprintf(buf, buflen, - "OpenCL: %s %d (not used): %s", - type, device_num, s2 - ); - break; - } -} - void COPROCS::summary_string(char* buf, int len) { char buf2[1024]; @@ -1104,46 +875,6 @@ void COPROC_INTEL::fake(double ram, double avail_ram, int n) { opencl_prop.global_mem_size = (cl_ulong)ram; } -////////////////// OPENCL CPU STARTS HERE ///////////////// - - -// CPU OpenCL does not really describe a coprocessor but -// this is here to take advantage of the other OpenCL code. -void OPENCL_CPU_PROP::clear() { - platform_vendor[0] = 0; - memset(&opencl_prop, 0, sizeof(opencl_prop)); -} - -void OPENCL_CPU_PROP::write_xml(MIOFILE& f) { - f.printf( - "\n" - " %s\n", - platform_vendor - ); - opencl_prop.write_xml(f, "opencl_cpu_info"); - f.printf("\n"); -} - -int OPENCL_CPU_PROP::parse(XML_PARSER& xp) { - int retval; - - clear(); - - while (!xp.get_tag()) { - if (xp.match_tag("/opencl_cpu_prop")) { - if (!strlen(platform_vendor)) return ERR_XML_PARSE; - return 0; - } - if (xp.parse_str("platform_vendor", platform_vendor, sizeof(platform_vendor))) continue; - if (xp.match_tag("opencl_cpu_info")) { - retval = opencl_prop.parse(xp, "/opencl_cpu_info"); - if (retval) return retval; - continue; - } - } - return ERR_XML_PARSE; -} - // used wherever a processor type is specified in XML, e.g. // // xxx diff --git a/lib/coproc.h b/lib/coproc.h index 7d05bfa5fd..92e670694d 100644 --- a/lib/coproc.h +++ b/lib/coproc.h @@ -78,6 +78,7 @@ #include "parse.h" #include "cal_boinc.h" #include "cl_boinc.h" +#include "opencl_boinc.h" #define DEFER_ON_GPU_AVAIL_RAM 0 @@ -85,9 +86,6 @@ #define MAX_RSC 8 // max # of processing resources types -#define MAX_OPENCL_PLATFORMS 16 -#define MAX_OPENCL_CPU_PLATFORMS 4 - // arguments to proc_type_name() and proc_type_name_xml(). // #define PROC_TYPE_CPU 0 @@ -106,13 +104,6 @@ extern const char* proc_type_name_xml(int); #define GPU_TYPE_ATI proc_type_name_xml(PROC_TYPE_AMD_GPU) #define GPU_TYPE_INTEL proc_type_name_xml(PROC_TYPE_INTEL_GPU) -enum COPROC_USAGE { - COPROC_IGNORED, - COPROC_UNUSED, - COPROC_USED -}; - - // represents a requirement for a coproc. // This is a parsed version of the elements in an // (used in client only) @@ -133,45 +124,6 @@ struct PCI_INFO { int parse(XML_PARSER&); }; -// there's some duplication between the values in -// the OPENCL_DEVICE_PROP struct and the NVIDIA/ATI structs -// -struct OPENCL_DEVICE_PROP { - cl_device_id device_id; - char name[256]; // Device name - char vendor[256]; // Device vendor (NVIDIA, ATI, AMD, etc.) - cl_uint vendor_id; // OpenCL ID of device vendor - cl_bool available; // Is this device available? - cl_device_fp_config half_fp_config; // Half precision capabilities - cl_device_fp_config single_fp_config; // Single precision - cl_device_fp_config double_fp_config; // Double precision - cl_bool endian_little; // TRUE if little-endian - cl_device_exec_capabilities execution_capabilities; - char extensions[1024]; // List of device extensions - cl_ulong global_mem_size; // in bytes (OpenCL can report 4GB Max) - cl_ulong local_mem_size; - cl_uint max_clock_frequency; // in MHz - cl_uint max_compute_units; - char opencl_platform_version[64]; // Version of OpenCL supported - // the device's platform - char opencl_device_version[64]; // OpenCL version supported by device; - // example: "OpenCL 1.1 beta" - int opencl_device_version_int; // same, encoded as e.g. 101 - int get_device_version_int(); // call this to encode - int opencl_driver_revision; // OpenCL runtime revision is available - int get_opencl_driver_revision(); // call this to encode - char opencl_driver_version[32]; // For example: "CLH 1.0" - int device_num; // temp used in scan process - double peak_flops; // temp used in scan process - COPROC_USAGE is_used; // temp used in scan process - double opencl_available_ram; // temp used in scan process - int opencl_device_index; // temp used in scan process - - void write_xml(MIOFILE&, const char* tag, bool temp_file=false); - int parse(XML_PARSER&, const char* end_tag); - void description(char* buf, int buflen, const char* type); -}; - // represents a set of identical coprocessors on a particular computer. // Abstract class; @@ -527,20 +479,4 @@ struct COPROCS { } }; -// NOTE: OpenCL has only 64 bits for global_mem_size, so -// it can report a max of only 4GB. -// Get the CPU RAM size from gstate.hostinfo.m_nbytes. -struct OPENCL_CPU_PROP { - char platform_vendor[256]; - OPENCL_DEVICE_PROP opencl_prop; - - OPENCL_CPU_PROP() { - clear(); - } - void clear(); - void write_xml(MIOFILE&); - int parse(XML_PARSER&); - -}; - #endif diff --git a/lib/opencl_boinc.cpp b/lib/opencl_boinc.cpp new file mode 100644 index 0000000000..d0c1134835 --- /dev/null +++ b/lib/opencl_boinc.cpp @@ -0,0 +1,314 @@ +// This file is part of BOINC. +// http://boinc.berkeley.edu +// Copyright (C) 2013 University of California +// +// BOINC is free software; you can redistribute it and/or modify it +// under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, +// either version 3 of the License, or (at your option) any later version. +// +// BOINC is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// See the GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with BOINC. If not, see . + +#if defined(_WIN32) && !defined(__STDWX_H__) +#include "boinc_win.h" +#elif defined(_WIN32) && defined(__STDWX_H__) +#include "stdwx.h" +#else +#ifdef _USING_FCGI_ +#include "boinc_fcgi.h" +#else +#include +#endif +#include +#include +#include +#endif + +#ifdef _WIN32 +#include "win_util.h" +#ifdef _MSC_VER +#define snprintf _snprintf +#endif +#endif +#include "miofile.h" +#include "parse.h" +#include "str_replace.h" +#include "util.h" + +#include "opencl_boinc.h" + +void OPENCL_DEVICE_PROP::write_xml(MIOFILE& f, const char* tag, bool temp_file) { + f.printf( + " <%s>\n" + " %s\n" + " %s\n" + " %lu\n" + " %d\n" + " %llu\n" + " %llu\n" + " %llu\n" + " %d\n" + " %llu\n" + " %s\n" + " %llu\n" + " %llu\n" + " %lu\n" + " %lu\n" + " %s\n" + " %s\n" + " %s\n", + tag, + name, + vendor, + vendor_id, + available ? 1 : 0, + half_fp_config, + single_fp_config, + double_fp_config, + endian_little ? 1 : 0, + execution_capabilities, + extensions, + global_mem_size, + local_mem_size, + max_clock_frequency, + max_compute_units, + opencl_platform_version, + opencl_device_version, + opencl_driver_version + ); + if (temp_file) { + f.printf( + " %d\n" + " %d\n" + " %f\n" + " %f\n" + " %d\n", + is_used, + device_num, + peak_flops, + opencl_available_ram, + opencl_device_index + ); + } + f.printf(" \n", tag); +} + +int OPENCL_DEVICE_PROP::parse(XML_PARSER& xp, const char* end_tag) { + int n; + unsigned long long ull; + + while (!xp.get_tag()) { + if (xp.match_tag(end_tag)) { + get_device_version_int(); + get_opencl_driver_revision(); + return 0; + } + if (xp.parse_str("name", name, sizeof(name))) continue; + if (xp.parse_str("vendor", vendor, sizeof(vendor))) continue; + if (xp.parse_ulonglong("vendor_id", ull)) { + vendor_id = ull; + continue; + } + if (xp.parse_int("available", n)) { + available = n; + continue; + } + if (xp.parse_ulonglong("half_fp_config", ull)) { + half_fp_config = ull; + continue; + } + if (xp.parse_ulonglong("single_fp_config", ull)) { + single_fp_config = ull; + continue; + } + if (xp.parse_ulonglong("double_fp_config", ull)) { + double_fp_config = ull; + continue; + } + if (xp.parse_int("endian_little", n)) { + endian_little = n; + continue; + } + if (xp.parse_ulonglong("execution_capabilities", ull)) { + execution_capabilities = ull; + continue; + } + if (xp.parse_str("extensions", + extensions, + sizeof(extensions) + )) { + continue; + } + if (xp.parse_ulonglong("global_mem_size", ull)) { + global_mem_size = ull; + continue; + } + if (xp.parse_ulonglong("local_mem_size", ull)) { + local_mem_size = ull; + continue; + } + if (xp.parse_int("max_clock_frequency", n)) { + max_clock_frequency = n; + continue; + } + if (xp.parse_int("max_compute_units", n)) { + max_compute_units = n; + continue; + } + if (xp.parse_str("opencl_platform_version", + opencl_platform_version, + sizeof(opencl_platform_version) + )) { + continue; + } + if (xp.parse_str("opencl_device_version", + opencl_device_version, + sizeof(opencl_device_version) + )) { + continue; + } + if (xp.parse_str("opencl_driver_version", + opencl_driver_version, + sizeof(opencl_driver_version) + )) { + continue; + } + + // The following are used only in the + // COPROC_INFO_FILENAME temporary file + if (xp.parse_int("is_used", n)) { + is_used = (COPROC_USAGE)n; + continue; + } + if (xp.parse_int("device_num", n)) { + device_num = n; + continue; + } + if (xp.parse_double("peak_flops", peak_flops)) continue; + if (xp.parse_double("opencl_available_ram", opencl_available_ram)) continue; + if (xp.parse_int("opencl_device_index", n)) { + opencl_device_index = n; + continue; + } + } + return ERR_XML_PARSE; +} + +int OPENCL_DEVICE_PROP::get_device_version_int() { + int maj, min; + int n = sscanf( + opencl_device_version, "OpenCL %d.%d", &maj, &min + ); + if (n != 2) { + return ERR_NOT_FOUND; + } + opencl_device_version_int = 100*maj + min; + return 0; +} + +int OPENCL_DEVICE_PROP::get_opencl_driver_revision() { + // gets the OpenCL runtime revision + // Thus far this is only necessary for ATI/AMD because there are bad + // driver sets only distinguisable by the runtime library version. + // Fortunately this info is in the opencl_device_version string. + float rev=0; + char *p=opencl_device_version+sizeof(opencl_device_version)-1; + // find the last opening bracket + while ((p > opencl_device_version) && (*p!='(')) p--; + if (p!=opencl_device_version) { + int n=sscanf( + p, "(%f", &rev + ); + // I don't care about errors because for non-ATI GPUs this should + // be zero. + if (n!=1) { + rev=0; + } + } + opencl_driver_revision=floor(rev*100+0.5); + return 0; +} + +void OPENCL_DEVICE_PROP::description(char* buf, int buflen, const char* type) { + char s1[256], s2[256]; + int n; + // openCL_device_version may have a trailing space + strlcpy(s1, opencl_device_version, sizeof(s1)); + n = (int)strlen(s1) - 1; + if ((n > 0) && (s1[n] == ' ')) s1[n] = '\0'; + snprintf(s2, sizeof(s2), + "%s (driver version %s, device version %s, %.0fMB, %.0fMB available, %.0f GFLOPS peak)", + name, opencl_driver_version, + s1, global_mem_size/MEGA, + opencl_available_ram/MEGA, peak_flops/1.e9 + ); + + switch(is_used) { + case COPROC_IGNORED: + snprintf(buf, buflen, + "OpenCL: %s %d (ignored by config): %s", + type, device_num, s2 + ); + break; + case COPROC_USED: + snprintf(buf, buflen, + "OpenCL: %s %d: %s", + type, device_num, s2 + ); + break; + case COPROC_UNUSED: + default: + snprintf(buf, buflen, + "OpenCL: %s %d (not used): %s", + type, device_num, s2 + ); + break; + } +} + +////////////////// OPENCL CPU STARTS HERE ///////////////// + + +// CPU OpenCL does not really describe a coprocessor but +// this is here to take advantage of the other OpenCL code. +void OPENCL_CPU_PROP::clear() { + platform_vendor[0] = 0; + memset(&opencl_prop, 0, sizeof(opencl_prop)); +} + +void OPENCL_CPU_PROP::write_xml(MIOFILE& f) { + f.printf( + "\n" + " %s\n", + platform_vendor + ); + opencl_prop.write_xml(f, "opencl_cpu_info"); + f.printf("\n"); +} + +int OPENCL_CPU_PROP::parse(XML_PARSER& xp) { + int retval; + + clear(); + + while (!xp.get_tag()) { + if (xp.match_tag("/opencl_cpu_prop")) { + if (!strlen(platform_vendor)) return ERR_XML_PARSE; + return 0; + } + if (xp.parse_str("platform_vendor", platform_vendor, sizeof(platform_vendor))) continue; + if (xp.match_tag("opencl_cpu_info")) { + retval = opencl_prop.parse(xp, "/opencl_cpu_info"); + if (retval) return retval; + continue; + } + } + return ERR_XML_PARSE; +} + diff --git a/lib/opencl_boinc.h b/lib/opencl_boinc.h new file mode 100644 index 0000000000..9cc0c3fd8c --- /dev/null +++ b/lib/opencl_boinc.h @@ -0,0 +1,84 @@ +// This file is part of BOINC. +// http://boinc.berkeley.edu +// Copyright (C) 2013 University of California +// +// BOINC is free software; you can redistribute it and/or modify it +// under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, +// either version 3 of the License, or (at your option) any later version. +// +// BOINC is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// See the GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with BOINC. If not, see . + + +#include "cl_boinc.h" + +#define MAX_OPENCL_PLATFORMS 16 +#define MAX_OPENCL_CPU_PLATFORMS 4 + +enum COPROC_USAGE { + COPROC_IGNORED, + COPROC_UNUSED, + COPROC_USED +}; + +// there's some duplication between the values in +// the OPENCL_DEVICE_PROP struct and the NVIDIA/ATI structs +// +struct OPENCL_DEVICE_PROP { + cl_device_id device_id; + char name[256]; // Device name + char vendor[256]; // Device vendor (NVIDIA, ATI, AMD, etc.) + cl_uint vendor_id; // OpenCL ID of device vendor + cl_bool available; // Is this device available? + cl_device_fp_config half_fp_config; // Half precision capabilities + cl_device_fp_config single_fp_config; // Single precision + cl_device_fp_config double_fp_config; // Double precision + cl_bool endian_little; // TRUE if little-endian + cl_device_exec_capabilities execution_capabilities; + char extensions[1024]; // List of device extensions + cl_ulong global_mem_size; // in bytes (OpenCL can report 4GB Max) + cl_ulong local_mem_size; + cl_uint max_clock_frequency; // in MHz + cl_uint max_compute_units; + char opencl_platform_version[64]; // Version of OpenCL supported + // the device's platform + char opencl_device_version[64]; // OpenCL version supported by device; + // example: "OpenCL 1.1 beta" + int opencl_device_version_int; // same, encoded as e.g. 101 + int get_device_version_int(); // call this to encode + int opencl_driver_revision; // OpenCL runtime revision is available + int get_opencl_driver_revision(); // call this to encode + char opencl_driver_version[32]; // For example: "CLH 1.0" + int device_num; // temp used in scan process + double peak_flops; // temp used in scan process + COPROC_USAGE is_used; // temp used in scan process + double opencl_available_ram; // temp used in scan process + int opencl_device_index; // temp used in scan process + + void write_xml(MIOFILE&, const char* tag, bool temp_file=false); + int parse(XML_PARSER&, const char* end_tag); + void description(char* buf, int buflen, const char* type); +}; + +// NOTE: OpenCL has only 32 bits for global_mem_size, so +// it can report a max of only 4GB. +// Get the CPU RAM size from gstate.hostinfo.m_nbytes. +// +struct OPENCL_CPU_PROP { + char platform_vendor[256]; + OPENCL_DEVICE_PROP opencl_prop; + + OPENCL_CPU_PROP() { + clear(); + } + void clear(); + void write_xml(MIOFILE&); + int parse(XML_PARSER&); + +}; diff --git a/locale/Makefile.am b/locale/Makefile.am index a8850cf204..0affdb2f3c 100644 --- a/locale/Makefile.am +++ b/locale/Makefile.am @@ -21,7 +21,7 @@ locale_dirs = \ gl \ hr \ hu \ - it \ + it_IT \ ja \ ko \ lt \ diff --git a/sched/Makefile.am b/sched/Makefile.am index 1928d448d4..5544f4eb94 100644 --- a/sched/Makefile.am +++ b/sched/Makefile.am @@ -116,7 +116,7 @@ schedshare_PROGRAMS = \ sample_trivial_validator \ sample_work_generator \ single_job_assimilator \ - size_regulator \ + size_regulator \ transitioner \ trickle_credit \ trickle_deadline \ @@ -130,11 +130,10 @@ schedcgi_PROGRAMS= \ schedshare_DATA = \ db_dump_spec.xml \ assimilator.py \ - pymw_assimilator.py \ - transitioner_catchup.php + pymw_assimilator.py # scripts that 'make install' should put in bindir -schedshare_SCRIPTS = start stop status +schedshare_SCRIPTS = start stop status transitioner_catchup.php noinst_HEADERS = \ assimilate_handler.h \ diff --git a/sched/trickle_handler.cpp b/sched/trickle_handler.cpp index c365e483ef..95df9d9fe2 100644 --- a/sched/trickle_handler.cpp +++ b/sched/trickle_handler.cpp @@ -168,7 +168,7 @@ int main(int argc, char** argv) { } argv[j] = 0; - retval = handle_trickle_init(argc, argv); + retval = handle_trickle_init(j, argv); if (retval) exit(1); log_messages.printf(MSG_NORMAL, "Starting trickle handler\n"); diff --git a/tools/Makefile.am b/tools/Makefile.am index 47bf81d476..889d2d6fb2 100644 --- a/tools/Makefile.am +++ b/tools/Makefile.am @@ -31,7 +31,9 @@ dist_tools_SCRIPTS = \ manage_privileges \ run_in_ops \ stage_file \ - watch_tcp \ + watch_tcp + +dist_tools_DATA = \ project.xml AM_CXXFLAGS += $(MYSQL_CFLAGS) diff --git a/win_build/boinc_os_ss.vcproj b/win_build/boinc_os_ss.vcproj index 085c467c31..7bb848b8e0 100644 --- a/win_build/boinc_os_ss.vcproj +++ b/win_build/boinc_os_ss.vcproj @@ -622,6 +622,10 @@ RelativePath="..\lib\notice.cpp" > + + @@ -683,6 +687,10 @@ RelativePath="..\lib\cc_config.h" > + + @@ -723,6 +731,10 @@ RelativePath="..\lib\notice.h" > + + diff --git a/win_build/boincmgr.vcproj b/win_build/boincmgr.vcproj index 6bb4e14580..7e6c7eacd9 100644 --- a/win_build/boincmgr.vcproj +++ b/win_build/boincmgr.vcproj @@ -973,6 +973,10 @@ RelativePath="..\lib\notice.h" > + + diff --git a/win_build/libboinc.vcproj b/win_build/libboinc.vcproj index 3e683974a3..2ffc6baca7 100644 --- a/win_build/libboinc.vcproj +++ b/win_build/libboinc.vcproj @@ -416,6 +416,10 @@ RelativePath="..\lib\notice.h" > + + @@ -904,6 +908,10 @@ RelativePath="..\lib\notice.cpp" > + + diff --git a/win_build/libboinc_staticcrt.vcproj b/win_build/libboinc_staticcrt.vcproj index d25cbead9f..2f68f06b8d 100644 --- a/win_build/libboinc_staticcrt.vcproj +++ b/win_build/libboinc_staticcrt.vcproj @@ -720,6 +720,10 @@ RelativePath="..\lib\notice.cpp" > + + @@ -1078,6 +1082,10 @@ RelativePath="..\lib\notice.h" > + +