mirror of https://github.com/BOINC/boinc.git
Merge branch 'BOINC:master' into spelling
This commit is contained in:
commit
9e5ff22dfd
|
@ -0,0 +1,43 @@
|
|||
name: Coverity
|
||||
on:
|
||||
schedule:
|
||||
- cron: '30 12 * * 0'
|
||||
|
||||
jobs:
|
||||
coverity:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 2
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu bionic main universe'
|
||||
sudo apt-get -qq update
|
||||
sudo apt-get install -y libftgl-dev freeglut3-dev libcurl4-openssl-dev libxmu-dev libxi-dev libfcgi-dev libxss-dev libnotify-dev libxcb-util0-dev libgtk2.0-dev libwebkitgtk-dev p7zip-full libxxf86vm-dev ocl-icd-opencl-dev zip
|
||||
|
||||
- name: Cache dependencies
|
||||
uses: actions/cache@v2.1.3
|
||||
with:
|
||||
path: |
|
||||
3rdParty/buildCache
|
||||
!3rdParty/buildCache/linux/vcpkgcache/
|
||||
key: linux-coverity
|
||||
|
||||
- name: Automake
|
||||
if: success()
|
||||
run: ./_autosetup
|
||||
|
||||
- name: Prepare for scan
|
||||
if: success()
|
||||
run: ./3rdParty/buildLinuxDependencies.sh && ./configure --enable-apps --with-wx-prefix=${GITHUB_WORKSPACE}/3rdParty/buildCache/linux
|
||||
|
||||
- name: Coverity Scan
|
||||
uses: vapier/coverity-scan-action@v0
|
||||
with:
|
||||
project: 'BOINC/boinc'
|
||||
token: ${{ secrets.COVERITY_SCAN_TOKEN }}
|
||||
email: 'boinc_cvs@ssl.berkeley.edu'
|
|
@ -0,0 +1,25 @@
|
|||
name: Source Code Check
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
schedule:
|
||||
- cron: '25 12 * * 0'
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: ${{ matrix.type }}
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
type: [source-code-check]
|
||||
fail-fast: false
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 2
|
||||
- name: Check source code for illegal symbols
|
||||
if: ${{ success() }}
|
||||
run: |
|
||||
python ./ci_tools/source_code_check.py .
|
|
@ -141,7 +141,7 @@ fi
|
|||
if [ "${gtest_only}" = "yes" ]; then
|
||||
download_and_build "googletest-release-1.8.1" "release-1.8.1.tar.gz" "https://github.com/google/googletest/archive/release-1.8.1.tar.gz" "${ROOTDIR}/3rdParty/buildGoogletestLinux.sh"
|
||||
else
|
||||
download_and_build "wxWidgets-3.0.2" "wxWidgets-3.0.2.tar.bz2" "https://sourceforge.net/projects/wxwindows/files/3.0.2/wxWidgets-3.0.2.tar.bz2" "${ROOTDIR}/3rdParty/buildWxLinux.sh ${wxoption}"
|
||||
download_and_build "wxWidgets-3.0.5" "wxWidgets-3.0.5.tar.bz2" "https://github.com/wxWidgets/wxWidgets/releases/download/v3.0.5/wxWidgets-3.0.5.tar.bz2" "${ROOTDIR}/3rdParty/buildWxLinux.sh ${wxoption}"
|
||||
fi
|
||||
|
||||
# change back to root directory
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
# Script to build a wxWidgets GTK version for BOINC
|
||||
|
||||
# Usage:
|
||||
# cd [path]/wxWidgets-3.0.2/
|
||||
# cd [path]/wxWidgets-3.0.5/
|
||||
# source path_to_this_script [--clean] [--debug] [--prefix PATH]
|
||||
#
|
||||
# the --clean argument will force a full rebuild.
|
||||
|
|
|
@ -0,0 +1,114 @@
|
|||
import os
|
||||
import pathlib
|
||||
import sys
|
||||
|
||||
def help():
|
||||
print('Usage:')
|
||||
print('python source-code-check.py <dir>')
|
||||
|
||||
def check(directory, bytes_to_check, exclude_dirs, exclude_extensions, exclude_files):
|
||||
if not os.path.isdir(directory):
|
||||
return None
|
||||
|
||||
files_with_errors = []
|
||||
|
||||
for root, dirs, files in os.walk(directory, topdown=True):
|
||||
dirs[:] = [d for d in dirs if os.path.join(root, d) not in exclude_dirs]
|
||||
for filename in files:
|
||||
if (pathlib.Path(filename).suffix in exclude_extensions):
|
||||
continue
|
||||
file = os.path.join(root, filename)
|
||||
if (os.path.islink(file) or file in exclude_files):
|
||||
continue
|
||||
with open(file, "rb") as f:
|
||||
print('Checking file: ' + file)
|
||||
byte = f.read(1)
|
||||
while byte:
|
||||
if byte in bytes_to_check:
|
||||
files_with_errors.append(file)
|
||||
break
|
||||
byte = f.read(1)
|
||||
return files_with_errors
|
||||
|
||||
|
||||
if (len(sys.argv) != 2):
|
||||
help()
|
||||
sys.exit(1)
|
||||
|
||||
directory = sys.argv[1]
|
||||
|
||||
exclude_dirs = [
|
||||
os.path.join(directory, ".git"),
|
||||
os.path.join(directory, "3rdParty/android"),
|
||||
os.path.join(directory, "3rdParty/buildCache"),
|
||||
os.path.join(directory, "3rdParty/linux"),
|
||||
os.path.join(directory, "3rdParty/Windows"),
|
||||
os.path.join(directory, "android/BOINC/.gradle"),
|
||||
os.path.join(directory, "android/BOINC/app/build"),
|
||||
os.path.join(directory, "android/BOINC/app/src/main/assets"),
|
||||
os.path.join(directory, "android/BOINC/app/src/main/res"),
|
||||
os.path.join(directory, "doc/manpages"),
|
||||
os.path.join(directory, "drupal/sites/all/libraries"),
|
||||
os.path.join(directory, "drupal/sites/all/themes"),
|
||||
os.path.join(directory, "drupal/sites/default/boinc/modules/contrib"),
|
||||
os.path.join(directory, "drupal/sites/default/boinc/themes"),
|
||||
os.path.join(directory, "fastlane"),
|
||||
os.path.join(directory, "samples/example_app/bin"),
|
||||
]
|
||||
|
||||
exclude_files = [
|
||||
os.path.join(directory, "aclocal.m4"),
|
||||
os.path.join(directory, "client/boinc_client"),
|
||||
os.path.join(directory, "client/boinccmd"),
|
||||
os.path.join(directory, "client/boinc"),
|
||||
os.path.join(directory, "client/switcher"),
|
||||
os.path.join(directory, "clientgui/BOINCBaseView.cpp"),
|
||||
os.path.join(directory, "clientscr/progress/simt"),
|
||||
os.path.join(directory, "drupal/sites/default/boinc/modules/boinc_solr_search/boinc_solr_comments/README.txt"),
|
||||
os.path.join(directory, "drupal/sites/default/boinc/modules/boinc_solr_search/boinc_solr_comments/INSTALL.txt"),
|
||||
os.path.join(directory, "html/inc/GeoIP.dat"),
|
||||
os.path.join(directory, "mac_installer/BOINC.pmproj"),
|
||||
os.path.join(directory, "mac_build/boinc.xcodeproj/project.pbxproj"),
|
||||
os.path.join(directory, "stage/usr/local/bin/boinc_client"),
|
||||
os.path.join(directory, "stage/usr/local/bin/boinccmd"),
|
||||
os.path.join(directory, "stage/usr/local/bin/boinc"),
|
||||
os.path.join(directory, "stage/usr/local/bin/switcher"),
|
||||
]
|
||||
|
||||
exclude_extensions = [
|
||||
".a",
|
||||
".bmp",
|
||||
".dll",
|
||||
".exe",
|
||||
".gif",
|
||||
".icns",
|
||||
".ico",
|
||||
".jar",
|
||||
".jpg",
|
||||
".lib",
|
||||
".mo",
|
||||
".nib",
|
||||
".o",
|
||||
".pdf",
|
||||
".pdn",
|
||||
".png",
|
||||
".po",
|
||||
".psd",
|
||||
".rgb",
|
||||
".so",
|
||||
".tif",
|
||||
".tiff",
|
||||
".tlb",
|
||||
".ttf",
|
||||
".zip",
|
||||
]
|
||||
|
||||
files_with_errors = check(directory, [b"\xC2"], exclude_dirs, exclude_extensions, exclude_files)
|
||||
|
||||
if files_with_errors:
|
||||
print("Found files with errors:")
|
||||
for file in files_with_errors:
|
||||
print(file)
|
||||
sys.exit(1)
|
||||
|
||||
sys.exit(0)
|
|
@ -592,35 +592,31 @@ int CLIENT_STATE::handle_scheduler_reply(
|
|||
}
|
||||
}
|
||||
|
||||
// check that master URL is correct
|
||||
// compare our URL for this project with the one returned in the reply
|
||||
// (which comes from the project's config.xml).
|
||||
// - if http -> https transition, make the change
|
||||
// - otherwise notify the user.
|
||||
// This means that if a project changes its master URL,
|
||||
// its users have to detach/reattach.
|
||||
//
|
||||
if (strlen(sr.master_url)) {
|
||||
canonicalize_master_url(sr.master_url, sizeof(sr.master_url));
|
||||
string url1 = sr.master_url;
|
||||
string url2 = project->master_url;
|
||||
downcase_string(url1);
|
||||
downcase_string(url2);
|
||||
if (url1 != url2) {
|
||||
p2 = lookup_project(sr.master_url);
|
||||
if (p2) {
|
||||
msg_printf(project, MSG_USER_ALERT,
|
||||
"You are attached to this project twice. Please remove projects named %s, then add %s",
|
||||
project->project_name,
|
||||
sr.master_url
|
||||
string reply_url = sr.master_url;
|
||||
string current_url = project->master_url;
|
||||
downcase_string(reply_url);
|
||||
downcase_string(current_url);
|
||||
if (reply_url != current_url) {
|
||||
if (is_https_transition(current_url.c_str(), reply_url.c_str())) {
|
||||
strcpy(project->master_url, reply_url.c_str());
|
||||
project->write_account_file();
|
||||
msg_printf(project, MSG_INFO,
|
||||
"Project URL changed from http:// to https://"
|
||||
);
|
||||
} else {
|
||||
if (is_https_transition(url2.c_str(), url1.c_str())) {
|
||||
strcpy(project->master_url, url1.c_str());
|
||||
project->write_account_file();
|
||||
msg_printf(project, MSG_INFO,
|
||||
"Project URL changed from http:// to https://"
|
||||
);
|
||||
} else {
|
||||
msg_printf(project, MSG_USER_ALERT,
|
||||
_("This project is using an old URL. When convenient, remove the project, then add %s"),
|
||||
sr.master_url
|
||||
);
|
||||
}
|
||||
msg_printf(project, MSG_USER_ALERT,
|
||||
_("This project seems to have changed its URL. When convenient, remove the project, then add %s"),
|
||||
sr.master_url
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -252,7 +252,6 @@ void HTTP_OP::reset() {
|
|||
|
||||
HTTP_OP::HTTP_OP() {
|
||||
safe_strcpy(m_url, "");
|
||||
safe_strcpy(m_curl_ca_bundle_location, "");
|
||||
safe_strcpy(m_curl_user_credentials, "");
|
||||
content_length = 0;
|
||||
file_offset = 0;
|
||||
|
@ -486,50 +485,7 @@ int HTTP_OP::libcurl_exec(
|
|||
|
||||
// if the above is nonzero, you need the following:
|
||||
//
|
||||
#ifdef _WIN32
|
||||
if (strlen(m_curl_ca_bundle_location) == 0) {
|
||||
TCHAR szPath[MAX_PATH-1];
|
||||
GetModuleFileName(NULL, szPath, (sizeof(szPath)/sizeof(TCHAR)));
|
||||
|
||||
TCHAR *pszProg = strrchr(szPath, '\\');
|
||||
if (pszProg) {
|
||||
szPath[pszProg - szPath + 1] = 0;
|
||||
|
||||
strlcat(
|
||||
m_curl_ca_bundle_location,
|
||||
szPath,
|
||||
sizeof(m_curl_ca_bundle_location)
|
||||
);
|
||||
strlcat(
|
||||
m_curl_ca_bundle_location,
|
||||
CA_BUNDLE_FILENAME,
|
||||
sizeof(m_curl_ca_bundle_location)
|
||||
);
|
||||
|
||||
if (log_flags.http_debug) {
|
||||
msg_printf(
|
||||
project,
|
||||
MSG_INFO,
|
||||
"[http] HTTP_OP::libcurl_exec(): ca-bundle '%s'",
|
||||
m_curl_ca_bundle_location
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (boinc_file_exists(m_curl_ca_bundle_location)) {
|
||||
// call this only if a local copy of ca-bundle.crt exists;
|
||||
// otherwise, let's hope that it exists in the default place
|
||||
//
|
||||
curl_easy_setopt(curlEasy, CURLOPT_CAINFO, m_curl_ca_bundle_location);
|
||||
if (log_flags.http_debug) {
|
||||
msg_printf(
|
||||
project,
|
||||
MSG_INFO,
|
||||
"[http] HTTP_OP::libcurl_exec(): ca-bundle set"
|
||||
);
|
||||
}
|
||||
}
|
||||
#else
|
||||
#ifndef _WIN32
|
||||
if (boinc_file_exists(CA_BUNDLE_FILENAME)) {
|
||||
// call this only if a local copy of ca-bundle.crt exists;
|
||||
// otherwise, let's hope that it exists in the default place
|
||||
|
|
|
@ -58,8 +58,6 @@ public:
|
|||
PROJECT* project; // associated project, if any
|
||||
|
||||
char m_url[1024];
|
||||
char m_curl_ca_bundle_location[256];
|
||||
// string needed for ssl support
|
||||
char m_curl_user_credentials[1024];
|
||||
// string needed for proxy username/password
|
||||
|
||||
|
|
|
@ -777,8 +777,7 @@ bool CAdvancedFrame::CreateNotebook() {
|
|||
pPanel->SetAutoLayout(TRUE);
|
||||
|
||||
// initialize notebook
|
||||
m_pNotebook = new wxNotebook(pPanel, ID_FRAMENOTEBOOK, wxDefaultPosition, wxDefaultSize,
|
||||
wxNB_FIXEDWIDTH|wxCLIP_CHILDREN);
|
||||
m_pNotebook = new wxNotebook(pPanel, ID_FRAMENOTEBOOK, wxDefaultPosition, wxDefaultSize, wxCLIP_CHILDREN);
|
||||
|
||||
// layout frame panel
|
||||
wxBoxSizer *pPanelSizer = new wxBoxSizer(wxVERTICAL);
|
||||
|
|
|
@ -411,7 +411,7 @@ wxMenu *CTaskBarIcon::CreatePopupMenu() {
|
|||
// Rather than using an entire separate icon, overlay the Dock icon with a badge
|
||||
// so we don't need additional Snooze and Disconnected icons for branding.
|
||||
bool CTaskBarIcon::SetIcon(const wxIcon& icon, const wxString& ) {
|
||||
wxIcon macIcon;
|
||||
wxImage macIcon;
|
||||
bool result;
|
||||
int err = noErr;
|
||||
int w, h, x, y;
|
||||
|
@ -425,18 +425,19 @@ bool CTaskBarIcon::SetIcon(const wxIcon& icon, const wxString& ) {
|
|||
return true;
|
||||
|
||||
m_iconCurrentIcon = icon;
|
||||
|
||||
|
||||
if (m_iconTaskBarDisconnected.IsSameAs(icon))
|
||||
macIcon = macdisconnectbadge;
|
||||
macIcon = wxImage(macdisconnectbadge);
|
||||
else if (m_iconTaskBarSnooze.IsSameAs(icon))
|
||||
macIcon = macsnoozebadge;
|
||||
macIcon = wxImage(macsnoozebadge);
|
||||
else {
|
||||
err = SetDockBadge(NULL);
|
||||
return true;
|
||||
}
|
||||
|
||||
// Convert the wxIcon into a wxBitmap so we can perform some
|
||||
// Convert the wxImage into a wxBitmap so we can perform some
|
||||
// wxBitmap operations with it
|
||||
macIcon.InitAlpha();
|
||||
wxBitmap bmp( macIcon ) ;
|
||||
|
||||
// wxMac's XMP image format always uses 32-bit pixels but allows only
|
||||
|
|
|
@ -169,13 +169,10 @@ CDlgExclusiveApps::CDlgExclusiveApps(wxWindow* parent) :
|
|||
|
||||
ReadPreferenceSettings();
|
||||
|
||||
// CAF SetSizerAndFit(dialogSizer);
|
||||
Layout();
|
||||
dialogSizer->Fit( this );
|
||||
SetSizer( dialogSizer );
|
||||
Layout();
|
||||
SetSizerAndFit(dialogSizer);
|
||||
|
||||
// CAF Fit();
|
||||
Centre();
|
||||
Centre(); // Center the dialog over the main window
|
||||
}
|
||||
|
||||
/* destructor */
|
||||
|
|
|
@ -1325,7 +1325,7 @@ int CMainDocument::CachedProjectStatusUpdate(bool bForce) {
|
|||
if (! IsConnected()) return -1;
|
||||
|
||||
#if USE_CACHE_TIMEOUTS
|
||||
wxTimeSpan ts(wxDateTime::Now() - m_dtProjecStatusTimestamp);
|
||||
wxTimeSpan ts(wxDateTime::Now() - m_dtProjectsStatusTimestamp);
|
||||
if (ts.GetSeconds() >= (2 * PROJECTSTATUSRPC_INTERVAL)) bForce = true;
|
||||
#endif
|
||||
if (m_dtProjectsStatusTimestamp.IsEqualTo(wxDateTime((time_t)0))) bForce = true;
|
||||
|
|
|
@ -247,25 +247,25 @@ static void wxRectToNSRect(wxRect &wxr, NSRect &nsr) {
|
|||
}
|
||||
if (isCurrentSortCol) {
|
||||
if (BOINCView->m_bReverseSort) {
|
||||
s.Printf(_("(current sort column %d of %d; descending order)"), col+1, numCols);
|
||||
s.Printf(_("(current sort column %d of %d; descending order)"), (int)col+1, (int)numCols);
|
||||
} else {
|
||||
s.Printf(_("(current sort column %d of %d; ascending order)"), col+1, numCols);
|
||||
s.Printf(_("(current sort column %d of %d; ascending order)"), (int)col+1, (int)numCols);
|
||||
}
|
||||
} else {
|
||||
s.Printf(_("(column %d of %d)"), col+1, numCols);
|
||||
s.Printf(_("(column %d of %d)"), (int)col+1, (int)numCols);
|
||||
}
|
||||
} else {
|
||||
if (pList->GetItemState(row, wxLIST_STATE_SELECTED) & wxLIST_STATE_SELECTED) {
|
||||
if (col == 0) {
|
||||
s.Printf(_("(selected row %d of %d)"), row+1, pList->GetItemCount());
|
||||
s.Printf(_("(selected row %d of %d)"), (int)row+1, (int)(pList->GetItemCount()));
|
||||
} else {
|
||||
s.Printf(_("(selected row %d)"), row+1);
|
||||
s.Printf(_("(selected row %d)"), (int)row+1);
|
||||
}
|
||||
} else {
|
||||
if (col == 0) { // Row is not selected
|
||||
s.Printf(_("(row %d of %d)"), row+1, pList->GetItemCount());
|
||||
s.Printf(_("(row %d of %d)"), (int)row+1, (int)(pList->GetItemCount()));
|
||||
} else {
|
||||
s.Printf(_("(row %d)"), row+1);
|
||||
s.Printf(_("(row %d)"), (int)row+1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -587,7 +587,7 @@ static void wxRectToNSRect(wxRect &wxr, NSRect &nsr) {
|
|||
|
||||
} else if ([attribute isEqualToString:NSAccessibilityDescriptionAttribute]) {
|
||||
wxString s;
|
||||
s.Printf(_("(row %d)"), row+1);
|
||||
s.Printf(_("(row %d)"), (int)row+1);
|
||||
NSString *desc = [NSString stringWithUTF8String:(char *)(s.utf8_str().data())];
|
||||
return desc;
|
||||
|
||||
|
@ -618,7 +618,7 @@ static void wxRectToNSRect(wxRect &wxr, NSRect &nsr) {
|
|||
|
||||
} else if ([attribute isEqualToString:NSAccessibilityTitleAttribute]) {
|
||||
wxString s;
|
||||
s.Printf(_("row %d"), row+1);
|
||||
s.Printf(_("row %d"), (int)row+1);
|
||||
NSString *title = [NSString stringWithUTF8String:(char *)(s.utf8_str().data())];
|
||||
return title;
|
||||
|
||||
|
|
|
@ -14,11 +14,17 @@
|
|||
//
|
||||
// You should have received a copy of the GNU Lesser General Public License
|
||||
// along with BOINC. If not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
|
||||
// On Macintosh we use only native controls in Simple View so the macOS
|
||||
// automatically provides accessibility support. Though wxBitmapComboBox
|
||||
// does not use MacOS native controls, wxChoice uses NSPopUpButton, so
|
||||
// we create our own BitmapComboBox on Macintosh based on wxChoice, which
|
||||
// we have hacked to allow adding bitmaps.
|
||||
//
|
||||
#include "stdwx.h"
|
||||
#include "MacBitmapComboBox.h"
|
||||
#include "mac_util.h"
|
||||
|
||||
#define POPUPBUTTONCONTROLHEIGHT 40
|
||||
|
||||
// wxChoice uses CreatePopupButtonControl
|
||||
|
@ -54,13 +60,9 @@ CBOINCBitmapChoice::~CBOINCBitmapChoice() {
|
|||
}
|
||||
|
||||
void CBOINCBitmapChoice::SetItemBitmap(unsigned int n, const wxBitmap& bitmap) {
|
||||
wxMenuItem *item = m_popUpMenu->FindItemByPosition(n);
|
||||
|
||||
if ( item && bitmap.Ok() )
|
||||
{
|
||||
item->SetBitmap(bitmap);
|
||||
}
|
||||
wxChoice::SetItemBitmap(n, bitmap);
|
||||
}
|
||||
|
||||
void CBOINCBitmapChoice::OnMouseDown(wxMouseEvent& event) {
|
||||
wxToolTip::Enable(false);
|
||||
event.Skip();
|
||||
|
|
|
@ -15,6 +15,13 @@
|
|||
// You should have received a copy of the GNU Lesser General Public License
|
||||
// along with BOINC. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
// On Macintosh we use only native controls in Simple View so the macOS
|
||||
// automatically provides accessibility support. Though wxBitmapComboBox
|
||||
// does not use MacOS native controls, wxChoice uses NSPopUpButton, so
|
||||
// we create our own BitmapComboBox on Macintosh based on wxChoice, which
|
||||
// we have hacked to allow adding bitmaps.
|
||||
//
|
||||
|
||||
#ifndef __MACBITMAPCOMBOBOX__
|
||||
#define __MACBITMAPCOMBOBOX__
|
||||
|
||||
|
|
|
@ -1000,10 +1000,9 @@ CSimpleGUIPanel::CSimpleGUIPanel(wxWindow* parent) :
|
|||
mainSizer->Add( buttonsSizer, 0, wxLEFT | wxRIGHT | wxEXPAND, 2 * SIDEMARGINS );
|
||||
mainSizer->AddSpacer(ADJUSTFORYDPI(10));
|
||||
|
||||
SetSizer(mainSizer);
|
||||
Layout();
|
||||
|
||||
mainSizer->Fit(GetParent());
|
||||
SetSizerAndFit(mainSizer);
|
||||
parent->SetSizerAndFit(mainSizer);
|
||||
|
||||
SetBackgroundBitmap();
|
||||
|
||||
|
@ -1031,6 +1030,8 @@ CSimpleGUIPanel::~CSimpleGUIPanel()
|
|||
delete checkForNewNoticesTimer;
|
||||
m_bmpBg = wxNullBitmap; // Deletes old bitmap via reference counting
|
||||
|
||||
GetParent()->SetSizer(NULL, false); // Avoid trying to delete mainSizer twice
|
||||
|
||||
wxLogTrace(wxT("Function Start/End"), wxT("CSimpleGUIPanel::CSimpleGUIPanel - Destructor Function End"));
|
||||
}
|
||||
|
||||
|
|
|
@ -551,30 +551,28 @@ wxBitmap* CSimpleProjectPanel::GetProjectSpecificBitmap(char* project_url) {
|
|||
wxBitmap* projectBM;
|
||||
wxString strIconPath = wxString(defaultIcnPath,wxConvUTF8);
|
||||
if (wxFile::Exists(strIconPath)) {
|
||||
// wxBitmapComboBox requires all its bitmaps to be the same size
|
||||
// Our "project icon" bitmaps should all be 40 X 40
|
||||
wxImage img = wxImage(strIconPath, wxBITMAP_TYPE_ANY);
|
||||
if (img.IsOk()) {
|
||||
#ifdef __WXMSW__
|
||||
if ((GetXDPIScaling() > 1.05) || (GetYDPIScaling() > 1.05)) {
|
||||
wxImage img = wxImage(strIconPath, wxBITMAP_TYPE_ANY);
|
||||
if (img.IsOk()) {
|
||||
img.Rescale((int) (img.GetWidth()*GetXDPIScaling()),
|
||||
(int) (img.GetHeight()*GetYDPIScaling()),
|
||||
wxIMAGE_QUALITY_BILINEAR
|
||||
);
|
||||
projectBM = new wxBitmap(img);
|
||||
if (projectBM->IsOk()) {
|
||||
return projectBM;
|
||||
}
|
||||
img.Rescale((int) (40*GetXDPIScaling()),
|
||||
(int) (40*GetYDPIScaling()),
|
||||
wxIMAGE_QUALITY_BILINEAR
|
||||
);
|
||||
}
|
||||
#else
|
||||
if ((img.GetHeight() != 40) || (img.GetWidth() == 40)) {
|
||||
img.Rescale(40, 40, wxIMAGE_QUALITY_BILINEAR);
|
||||
}
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
projectBM = new wxBitmap();
|
||||
if ( projectBM->LoadFile(strIconPath, wxBITMAP_TYPE_ANY) ) {
|
||||
projectBM = new wxBitmap(img);
|
||||
if (projectBM->IsOk()) {
|
||||
return projectBM;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return pSkinSimple->GetProjectImage()->GetBitmap();
|
||||
}
|
||||
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -657,7 +657,7 @@ int DebuggerDisplayDiagnostics()
|
|||
// #################################################################################
|
||||
// Here the Stackwalk-Part begins.
|
||||
// Some of the code is from an example from a book
|
||||
// But I couldn´t find the reference anymore... sorry...
|
||||
// But I couldn't find the reference anymore... sorry...
|
||||
// If someone knowns, please let me know...
|
||||
// #################################################################################
|
||||
// #################################################################################
|
||||
|
|
|
@ -313,4 +313,4 @@ def upload_files(upload_files_req):
|
|||
# see tools/submit_api_test.py
|
||||
#
|
||||
def get_job_counts(req):
|
||||
return do_http_post('', req.project, 'server_status.php?counts=1');
|
||||
return do_http_post('', req.project, 'server_status.php?counts=1')
|
||||
|
|
Binary file not shown.
|
@ -1,6 +1,6 @@
|
|||
{\rtf1\ansi\ansicpg1252\cocoartf1561\cocoasubrtf610
|
||||
\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;\f1\fmodern\fcharset0 Courier;\f2\fnil\fcharset0 LucidaGrande;
|
||||
\f3\fswiss\fcharset0 ArialMT;\f4\fnil\fcharset0 Menlo-Regular;}
|
||||
\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;\f1\fmodern\fcharset0 Courier;\f2\fswiss\fcharset0 ArialMT;
|
||||
\f3\fnil\fcharset0 Menlo-Regular;\f4\fnil\fcharset0 LucidaGrande;}
|
||||
{\colortbl;\red255\green255\blue255;\red186\green0\blue0;\red14\green14\blue255;\red245\green245\blue245;
|
||||
\red0\green0\blue0;\red255\green255\blue255;\red246\green246\blue246;}
|
||||
{\*\expandedcolortbl;;\csgenericrgb\c72941\c0\c0;\csgenericrgb\c5490\c5490\c100000;\csgenericrgb\c96078\c96078\c96078;
|
||||
|
@ -8,16 +8,16 @@
|
|||
\margl1440\margr1440\vieww14780\viewh11840\viewkind0
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\qc\partightenfactor0
|
||||
|
||||
\f0\b\fs28 \cf0 Building BOINC Client and Manager on Macintosh OS\
|
||||
\f0\b\fs28 \cf0 Building BOINC Client and Manager on Macintosh OSX\
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\partightenfactor0
|
||||
|
||||
\b0\fs24 \cf0 \
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\qc\partightenfactor0
|
||||
\cf0 Written by Charlie Fenton\
|
||||
Last updated 9/18/21\
|
||||
Last updated 9/30/2021\
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\partightenfactor0
|
||||
\cf0 \
|
||||
This document applies to BOINC version 7.16.14 and later. It has instructions for building the BOINC Client and Manager for Macintosh OS. Information for building science project applications to run under BOINC on Macintosh OS can be found {\field{\*\fldinst{HYPERLINK "http://boinc.berkeley.edu/trac/wiki/BuildMacApp"}}{\fldrslt here}}. \
|
||||
This document applies to BOINC version 7.19.0 and later. It has instructions for building the BOINC Client and Manager for Macintosh OSX. Information for building science project applications to run under BOINC on Macintosh OSX can be found {\field{\*\fldinst{HYPERLINK "http://boinc.berkeley.edu/trac/wiki/BuildMacApp"}}{\fldrslt here}}. \
|
||||
\
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\partightenfactor0
|
||||
|
||||
|
@ -62,14 +62,7 @@ Contents of this document:\
|
|||
\cf0 \
|
||||
\pard\pardeftab720\sa260\partightenfactor0
|
||||
\cf0 As of version 6.13.0, BOINC does not support Macintosh PowerPC processors. As of 7.15.0, BOINC is built entirely for 64-bit Intel, including the BOINC libraries. As of 7.16.14, BOINC is built as Universal2 Binaries which can run on both 64-bit Intel and Apple Silicon (arm64) hardware. \
|
||||
You need to take certain steps to ensure that you use only APIs that are available in all the OS versions BOINC supports for each architecture. The best way to accomplish this is to use a single development system running Mac OS 10.9 or later and cross-compile for the various platforms. The remainder of this document describes that process.
|
||||
\f2 \
|
||||
\pard\pardeftab720\partightenfactor0
|
||||
|
||||
\f0\b \cf0 Important:
|
||||
\b0 To both be compatible with systems prior to MacOS 10.12 and also to run natively on Apple Silicon Macs,
|
||||
\b BOINC must be built on MacOS 11.6 or later using Xcode 12.5.1 or later.
|
||||
\b0 Code built and signed with Xcode 12.0 through 12.5 or on MacOS 11.0 through 11.5 will be rejected with "Signature invalid" on systems prior to MacOS 10.12.\
|
||||
You need to take certain steps to ensure that you use only APIs that are available in all the OS versions BOINC supports for each architecture. The best way to accomplish this is to use a single development system running OS 10.8.x or later and cross-compile for the various platforms. The remainder of this document describes that process.\
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0
|
||||
\cf0 \
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
|
||||
|
@ -85,10 +78,10 @@ You need to take certain steps to ensure that you use only APIs that are availab
|
|||
\pard\pardeftab720\sa260\qc\partightenfactor0
|
||||
|
||||
\b\fs28 \cf0 Cross-Platform Development
|
||||
\f3\fs32 \
|
||||
\f2\fs32 \
|
||||
\pard\pardeftab720\sa260\partightenfactor0
|
||||
|
||||
\f0\b0\fs24 \cf0 Apple provides the tools necessary to build BOINC on any Mac running OS 10.9.x or later.\
|
||||
\f0\b0\fs24 \cf0 Apple provides the tools necessary to build BOINC on any Mac running OS 10.8.x or later.\
|
||||
You get these tools, including the GCC or Apple LLVM compiler and system library header files, by installing the Xcode Tools package. \
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
|
||||
|
||||
|
@ -110,14 +103,14 @@ You get these tools, including the GCC or Apple LLVM compiler and system library
|
|||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\partightenfactor0
|
||||
|
||||
\b0\fs24 \cf0 \
|
||||
Note: building BOINC Manager 7.16.14 and later requires the Mac OS 10.9 SDK or later.\
|
||||
Note: building BOINC Manager 7.3.0 and later requires the OS 10.8 SDK or later.\
|
||||
\
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0
|
||||
\cf0 BOINC depends on seven third-party libraries: wxWidgets-3.1.0, c-ares-1.13.0, curl-7.73.0, openssl-1.1.0l, freetype-2.9 and ftgl-2.1.3~rc5. You can obtain the source files from the following URLs. Clicking on the first URL of each pair will download the tar file. The second URL will open the third party\'92s home web page. On MacOS the tar file will usually be downloaded into the Downloads folder. You will need to expand the tar files by double-clicking on them, which will create a folder and place the appropriate files into that folder. You will need to move these folders later.\
|
||||
\cf0 BOINC depends on seven third-party libraries: wxWidgets-3.1.5, c-ares-1.13.0, curl-7.73.0, openssl-1.1.0l, freetype-2.9 and ftgl-2.1.3~rc5. You can obtain the source files from the following URLs. Clicking on the first URL of each pair will download the tar file. The second URL will open the third party\'92s home web page. On Mac OS X the tar file will usually be downloaded into the Downloads folder. You will need to expand the tar files by double-clicking on them, which will create a folder and place the appropriate files into that folder. You will need to move these folders later.\
|
||||
\
|
||||
wxWidgets-3.1.0 (needed only if you are building the BOINC Manager):\
|
||||
{\field{\*\fldinst{HYPERLINK "https://github.com/wxWidgets/wxWidgets/releases/download/v3.1.0/wxWidgets-3.1.0.tar.bz2"}}{\fldrslt
|
||||
\f1\fs26 https://github.com/wxWidgets/wxWidgets/releases/download/v3.1.0/wxWidgets-3.1.0.tar.bz2}}
|
||||
wxWidgets-3.1.5 (needed only if you are building the BOINC Manager):\
|
||||
{\field{\*\fldinst{HYPERLINK "https://github.com/wxWidgets/wxWidgets/releases/download/v3.1.5/wxWidgets-3.1.5.tar.bz2"}}{\fldrslt
|
||||
\f1\fs26 https://github.com/wxWidgets/wxWidgets/releases/download/v3.1.5/wxWidgets-3.1.5.tar.bz2}}
|
||||
\f1\fs26 \
|
||||
|
||||
\f0\fs24 {\field{\*\fldinst{HYPERLINK "http://www.wxwidgets.org"}}{\fldrslt
|
||||
|
@ -152,12 +145,12 @@ curl-7.73.0:\
|
|||
\f0\fs24 \cf0 freetype-2.9 (needed only if you are building the BOINC default screensaver or a project screensaver):\
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0
|
||||
|
||||
\f4\fs22 \cf3 \CocoaLigature0 {\field{\*\fldinst{HYPERLINK "https://sourceforge.net/projects/freetype/files/freetype2/2.9/freetype-2.9.tar.bz2"}}{\fldrslt https://sourceforge.net/projects/freetype/files/freetype2/2.9/freetype-2.9.tar.bz2}}\
|
||||
\f3\fs22 \cf3 \CocoaLigature0 {\field{\*\fldinst{HYPERLINK "https://sourceforge.net/projects/freetype/files/freetype2/2.9/freetype-2.9.tar.bz2"}}{\fldrslt https://sourceforge.net/projects/freetype/files/freetype2/2.9/freetype-2.9.tar.bz2}}\
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0
|
||||
|
||||
\f1\fs26 \cf0 \CocoaLigature1 {\field{\*\fldinst{HYPERLINK "http://www.freetype.org/"}}{\fldrslt
|
||||
\f4\fs22 \cf3 \CocoaLigature0 http://www.freetype.org/}}
|
||||
\f4\fs22 \cf3 \CocoaLigature0 \
|
||||
\f3\fs22 \cf3 \CocoaLigature0 http://www.freetype.org/}}
|
||||
\f3\fs22 \cf3 \CocoaLigature0 \
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0
|
||||
|
||||
\f0\fs24 \cf0 \CocoaLigature1 \
|
||||
|
@ -166,7 +159,7 @@ ftgl-2.1.3~rc5 (needed only if you are building the BOINC default screensaver o
|
|||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0
|
||||
|
||||
\f1\fs26 \cf0 {\field{\*\fldinst{HYPERLINK "http://sourceforge.net/projects/ftgl"}}{\fldrslt
|
||||
\f4\fs22 \cf3 \CocoaLigature0 http://sourceforge.net/projects/ftgl}}\
|
||||
\f3\fs22 \cf3 \CocoaLigature0 http://sourceforge.net/projects/ftgl}}\
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0
|
||||
|
||||
\f0\fs24 \cf0 \
|
||||
|
@ -180,7 +173,7 @@ MAC_OS_X_VERSION_MIN_REQUIRED=1090\
|
|||
|
||||
\f0\fs24 \cf0 \
|
||||
\pard\pardeftab720\sa260\partightenfactor0
|
||||
\cf0 These are not done automatically by either the Xcode projects which come with wxWidgets-3.1.0, nor the AutoMake scripts supplied with wxWidgets-3.1.0, c-ares-1.13.0, curl-7.73.0, openssl-1.1.0l, freetype-2.9 and ftgl-2.1.3~rc5. So be sure to use our special scripts to build these packages.\
|
||||
\cf0 These are not done automatically by either the Xcode projects which come with wxWidgets-3.1.5, nor the AutoMake scripts supplied with wxWidgets-3.1.5, c-ares-1.13.0, curl-7.73.0, openssl-1.1.0l, freetype-2.9 and ftgl-2.1.3~rc5. So be sure to use our special scripts to build these packages.\
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\partightenfactor0
|
||||
\cf0 [1] Make sure you are logged into the Mac using an account with administrator privileges. Create a parent directory within which to work. In this description; we will call it BOINC_dev, but you can name it anything you wish.\
|
||||
\
|
||||
|
@ -194,7 +187,7 @@ MAC_OS_X_VERSION_MIN_REQUIRED=1090\
|
|||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0
|
||||
\cf0 openssl-1.1.0l\
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\partightenfactor0
|
||||
\cf0 wxWidgets-3.1.0\
|
||||
\cf0 wxWidgets-3.1.5\
|
||||
freetype-2.9\
|
||||
ftgl-2.1.3~rc5\
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\partightenfactor0
|
||||
|
@ -249,7 +242,7 @@ If you don't wish to force a full rebuild of everything, omit the -clean argumen
|
|||
\f0\fs24 command to run them.\
|
||||
|
||||
\b Note 2:
|
||||
\b0 This script tries to build all seven third-party libraries: wxWidgets-3.1.0, c-ares-1.13.0, curl-7.73.0, openssl-1.1.0l, freetype-2.9 and ftgl-2.1.3~rc5. When the script finishes, it will display a warning about any libraries it was unable to build (for example, if you have not downloaded them.) To make it easier to find the error messages, clear the Terminal display and run the script again without
|
||||
\b0 This script tries to build all seven third-party libraries: wxWidgets-3.1.5, c-ares-1.13.0, curl-7.73.0, openssl-1.1.0l, freetype-2.9 and ftgl-2.1.3~rc5. When the script finishes, it will display a warning about any libraries it was unable to build (for example, if you have not downloaded them.) To make it easier to find the error messages, clear the Terminal display and run the script again without
|
||||
\f1 -clean
|
||||
\f0 .\
|
||||
|
||||
|
@ -274,9 +267,9 @@ If you don't wish to force a full rebuild of everything, omit the -clean argumen
|
|||
\b0 You don't need to type the path to a file or folder into Terminal; just drag the file or folder icon from a Finder window onto the Terminal window.\
|
||||
|
||||
\b Note 5:
|
||||
\b0 To be compatible with OS 10.7 or earlier, the screensaver must be built with Garbage Collection (GC) supported (and without Automatic Reference Counting) , but Xcode versions later than 5.0.2 do not allow building with GC. To allow building with newer versions of Xcode while keeping backward compatibility to OS 10.7, the GIT repository includes the screensaver executable built with GC, while the Xcode project builds the screensaver with ARC (for newer versions of MacOS.) The
|
||||
\b0 To be compatible with OS 10.7 or earlier, the screensaver must be built with Garbage Collection (GC) supported (and without Automatic Reference Counting) , but Xcode versions later than 5.0.2 do not allow building with GC. To allow building with newer versions of Xcode while keeping backward compatibility to OS 10.7, the GIT repository includes the screensaver executable built with GC, while the Xcode project builds the screensaver with ARC (for newer versions of OS X.) The
|
||||
\f1\fs26 release_boinc.sh
|
||||
\f0\fs24 script (described later in this document) adds both the GC and ARC builds of the screensaver to the installer; the installer code selects the correct screensaver for the target version of MacOS at install time.\
|
||||
\f0\fs24 script (described later in this document) adds both the GC and ARC builds of the screensaver to the installer; the installer code selects the correct screensaver for the target version of OS X at install time.\
|
||||
\
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\partightenfactor0
|
||||
\cf0 [6] Build BOINC as follows:\
|
||||
|
@ -408,14 +401,14 @@ source \{path\}/BOINC_dev/boinc/mac_installer/release_boinc.sh x y z\
|
|||
|
||||
\f0\fs24 \cf0 \
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\partightenfactor0
|
||||
\cf0 Substitute the 3 parts of the BOINC version number for x y and z in the above. For example, to build the installer for BOINC version 7.16.14, the command would be\
|
||||
\cf0 Substitute the 3 parts of the BOINC version number for x y and z in the above. For example, to build the installer for BOINC version 7.9.0, the command would be\
|
||||
\pard\pardeftab720\partightenfactor0
|
||||
|
||||
\f1\fs26 \cf0 source \{path\}/BOINC_dev/boinc/mac_installer/release_boinc.sh 7 16 14\
|
||||
\f1\fs26 \cf0 source \{path\}/BOINC_dev/boinc/mac_installer/release_boinc.sh 7 9 0\
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\partightenfactor0
|
||||
|
||||
\f0\fs24 \cf0 This will create a directory "BOINC_Installer/New_Release_7_16_14" in the BOINC_dev directory, and the installer will be located in '
|
||||
\f1\fs26 \{path\}/BOINC_dev/BOINC_Installer/New_Release_7_16_14/boinc_7.16.14_macOSX_universal
|
||||
\f0\fs24 \cf0 This will create a directory "BOINC_Installer/New_Release_7_9_0" in the BOINC_dev directory, and the installer will be located in '
|
||||
\f1\fs26 \{path\}/BOINC_dev/BOINC_Installer/New_Release_7_9_0/boinc_7.9.0_macOSX_x86_64
|
||||
\f0\fs24 '.\
|
||||
\
|
||||
The installer script uses the deployment (release) build of BOINC; it won't work with a development (debug) build.\
|
||||
|
@ -424,14 +417,14 @@ You can find the current version number in the file
|
|||
\fs24 \
|
||||
\pard\pardeftab720\partightenfactor0
|
||||
|
||||
\f2 \cf0 \
|
||||
\f4 \cf0 \
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\qc\partightenfactor0
|
||||
|
||||
\f0\b\fs28 \cf0 Code Signing the BOINC Manager Installer and Uninstaller
|
||||
\b0\fs24 \
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\partightenfactor0
|
||||
|
||||
\f2 \cf0 \
|
||||
\f4 \cf0 \
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\partightenfactor0
|
||||
|
||||
\f0 \cf0 Mac OS 10.8 introduces a security feature called Gatekeeper, whose default settings won't allow a user to run applications or installers downloaded from the Internet unless they are signed by a registered Apple Developer. The
|
||||
|
@ -459,7 +452,17 @@ Developer ID Application: John Smith\
|
|||
\f1\fs26 ~/BOINCCodeSignIdentities.txt
|
||||
\f0\fs24 file, then the script will not sign the installer or uninstaller. Code signing is not necessary if you won't be transferring the built software over the Internet. For more information on code signing identities see the documentation for the {\field{\*\fldinst{HYPERLINK "https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/codesign.1.html"}}{\fldrslt
|
||||
\f1\fs26 codesign}} utility, Apple's {\field{\*\fldinst{HYPERLINK "https://developer.apple.com/library/mac/documentation/Security/Conceptual/CodeSigningGuide/"}}{\fldrslt Code Signing Guide}} and {\field{\*\fldinst{HYPERLINK "https://developer.apple.com/library/content/technotes/tn2206/_index.htm"}}{\fldrslt Tech Note 2206}}.\
|
||||
\
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\partightenfactor0
|
||||
|
||||
\f4 \cf0 \
|
||||
\pard\pardeftab720\partightenfactor0
|
||||
|
||||
\f0\b \cf0 Important:
|
||||
\b0 Code signed under MacOS 11.0 or later is not compatible with MacOS 10.11.6 or earlier and will be rejected with "Signature invalid." If backward compatibility is desired to allow installing and running on systems prior to MacOS 10.12.0, run the
|
||||
\f1\fs26 release_boinc.sh
|
||||
\f0\fs24 script under MacOS 10.15.7 or earlier. You can do this even if you performed the previous steps under MacOS 11.0 or later.\
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\partightenfactor0
|
||||
\cf0 \
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\qc\partightenfactor0
|
||||
|
||||
\b\fs28 \cf0 Debugging and BOINC security
|
||||
|
@ -505,7 +508,7 @@ NOTE to building with XCode.\
|
|||
The general instructions in the mac_build folder in the file HowToBuildBOINC_XCode.pdf should also note that if you want to build using XCode in it's GUI implementation - not command line - alone, you need to put all the downloaded libraries in the folder directly above the build folder. For EG:\
|
||||
All of these external programs:\
|
||||
\
|
||||
wxWidgets-3.1.0 s-3.1.0.tar.bz2\
|
||||
wxWidgets-3.1.0\
|
||||
curl-7.73.0:\
|
||||
c-ares-1.13.0 (used by curl):\
|
||||
openssl-1.1.0l\
|
||||
|
|
|
@ -178,6 +178,7 @@
|
|||
DD407ABB07D2FC7D00163EF5 /* mem_usage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD407AB707D2FC7D00163EF5 /* mem_usage.cpp */; };
|
||||
DD431FAA0A41660D0060585A /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 20286C33FDCF999611CA2CEA /* Carbon.framework */; };
|
||||
DD4329910BA63DEC007CDF2A /* str_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD7BF7D70B8E7A9800A009F7 /* str_util.cpp */; };
|
||||
DD43475826FB397A00B8880F /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD43474F26FB378100B8880F /* QuartzCore.framework */; };
|
||||
DD48091F081A66F100A174AA /* BOINCSaver.nib in Resources */ = {isa = PBXBuildFile; fileRef = DD48091E081A66F100A174AA /* BOINCSaver.nib */; };
|
||||
DD4AE04D13652BD700285859 /* cc_config.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD4AE04B13652BD700285859 /* cc_config.cpp */; };
|
||||
DD4AE05013652C1300285859 /* cc_config.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD4AE04B13652BD700285859 /* cc_config.cpp */; };
|
||||
|
@ -216,6 +217,7 @@
|
|||
DD5F656523606AED009ED2A2 /* hostinfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD344BB607C5AEEE0043025C /* hostinfo.cpp */; };
|
||||
DD5F656623607472009ED2A2 /* gfx_cleanup in Resources */ = {isa = PBXBuildFile; fileRef = DD5F654123605B41009ED2A2 /* gfx_cleanup */; };
|
||||
DD5FE1B517828887003339DF /* translate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DDF9350F176B0D0C00A2793C /* translate.cpp */; };
|
||||
DD64A7782703379F005FE681 /* MacBitmapComboBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD64A774270329AA005FE681 /* MacBitmapComboBox.cpp */; };
|
||||
DD64D8011F6BE5BA00FEEAAA /* MultiGPUMig.defs in Sources */ = {isa = PBXBuildFile; fileRef = DD64D8001F6BE5BA00FEEAAA /* MultiGPUMig.defs */; settings = {ATTRIBUTES = (Client, Server, ); }; };
|
||||
DD6617880A3FFD8C00FFEBEB /* check_security.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD6617870A3FFD8C00FFEBEB /* check_security.cpp */; };
|
||||
DD67F8140ADB9DD000B0015E /* wxPieCtrl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD40E75D0ADB87BC00214518 /* wxPieCtrl.cpp */; };
|
||||
|
@ -243,7 +245,6 @@
|
|||
DD76BF9A17CB46830075936D /* opencl_boinc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD76BF9117CB45870075936D /* opencl_boinc.cpp */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
|
||||
DD7748B50A356D6C0025D05E /* SetupSecurity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD7748B40A356D6C0025D05E /* SetupSecurity.cpp */; };
|
||||
DD7749680A3596380025D05E /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD1929D80918A2F100C31BCF /* Security.framework */; };
|
||||
DD77A71812F2D1C9006B82E9 /* MacBitmapComboBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD77A71612F2D1C9006B82E9 /* MacBitmapComboBox.cpp */; };
|
||||
DD7A5D8312EEBE5E0006268E /* sg_TaskCommandPopup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD7A5D8212EEBE5E0006268E /* sg_TaskCommandPopup.cpp */; };
|
||||
DD7A5D9F12EEBFC20006268E /* sg_ProjectWebSitesPopup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD7A5D9E12EEBFC20006268E /* sg_ProjectWebSitesPopup.cpp */; };
|
||||
DD7A5DAB12EEC37B0006268E /* sg_ProjectCommandPopup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD7A5DAA12EEC37B0006268E /* sg_ProjectCommandPopup.cpp */; };
|
||||
|
@ -1009,6 +1010,7 @@
|
|||
DD40825907D3076400163EF5 /* reduce.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = reduce.h; path = ../api/reduce.h; sourceTree = SOURCE_ROOT; };
|
||||
DD40E75D0ADB87BC00214518 /* wxPieCtrl.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = wxPieCtrl.cpp; path = ../clientgui/common/wxPieCtrl.cpp; sourceTree = SOURCE_ROOT; };
|
||||
DD40E75E0ADB87BC00214518 /* wxPieCtrl.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = wxPieCtrl.h; path = ../clientgui/common/wxPieCtrl.h; sourceTree = SOURCE_ROOT; };
|
||||
DD43474F26FB378100B8880F /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
|
||||
DD4688410C165F3C0089F500 /* Uninstall BOINC.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Uninstall BOINC.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
DD4688430C165F3C0089F500 /* Uninstaller-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Uninstaller-Info.plist"; sourceTree = "<group>"; };
|
||||
DD4688590C1661970089F500 /* uninstall.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = uninstall.cpp; path = ../mac_installer/uninstall.cpp; sourceTree = SOURCE_ROOT; };
|
||||
|
@ -1062,6 +1064,8 @@
|
|||
DD5F654A23605C87009ED2A2 /* gfx_cleanup.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = gfx_cleanup.mm; path = ../clientscr/gfx_cleanup.mm; sourceTree = "<group>"; };
|
||||
DD6381450870DB78007A2F8E /* mac_icon.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = mac_icon.cpp; sourceTree = "<group>"; };
|
||||
DD6381F80870DD83007A2F8E /* make_app_icon_h.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = make_app_icon_h.cpp; sourceTree = "<group>"; };
|
||||
DD64A774270329AA005FE681 /* MacBitmapComboBox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MacBitmapComboBox.cpp; path = ../clientgui/mac/MacBitmapComboBox.cpp; sourceTree = "<group>"; };
|
||||
DD64A775270329AA005FE681 /* MacBitmapComboBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MacBitmapComboBox.h; path = ../clientgui/mac/MacBitmapComboBox.h; sourceTree = "<group>"; };
|
||||
DD64D8001F6BE5BA00FEEAAA /* MultiGPUMig.defs */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.mig; path = MultiGPUMig.defs; sourceTree = "<group>"; };
|
||||
DD64DF0409DCC5E000668B3A /* gutil_text.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = gutil_text.cpp; sourceTree = "<group>"; };
|
||||
DD64E7D507D89DB800B176C8 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = SOURCE_ROOT; };
|
||||
|
@ -1085,8 +1089,6 @@
|
|||
DD76BF9217CB45870075936D /* opencl_boinc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = opencl_boinc.h; sourceTree = "<group>"; };
|
||||
DD7748980A356C880025D05E /* SetUpSecurity */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = SetUpSecurity; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
DD7748B40A356D6C0025D05E /* SetupSecurity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SetupSecurity.cpp; path = ../clientgui/mac/SetupSecurity.cpp; sourceTree = SOURCE_ROOT; };
|
||||
DD77A71612F2D1C9006B82E9 /* MacBitmapComboBox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MacBitmapComboBox.cpp; path = ../clientgui/mac/MacBitmapComboBox.cpp; sourceTree = "<group>"; };
|
||||
DD77A71712F2D1C9006B82E9 /* MacBitmapComboBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MacBitmapComboBox.h; path = ../clientgui/mac/MacBitmapComboBox.h; sourceTree = "<group>"; };
|
||||
DD7A5D8112EEBDF30006268E /* sg_TaskCommandPopup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sg_TaskCommandPopup.h; path = ../clientgui/sg_TaskCommandPopup.h; sourceTree = SOURCE_ROOT; };
|
||||
DD7A5D8212EEBE5E0006268E /* sg_TaskCommandPopup.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = sg_TaskCommandPopup.cpp; path = ../clientgui/sg_TaskCommandPopup.cpp; sourceTree = SOURCE_ROOT; };
|
||||
DD7A5D9D12EEBFC20006268E /* sg_ProjectWebSitesPopup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sg_ProjectWebSitesPopup.h; path = ../clientgui/sg_ProjectWebSitesPopup.h; sourceTree = SOURCE_ROOT; };
|
||||
|
@ -1434,6 +1436,7 @@
|
|||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
DD3E15310A774397007E0084 /* Carbon.framework in Frameworks */,
|
||||
DD43475826FB397A00B8880F /* QuartzCore.framework in Frameworks */,
|
||||
DD3E15320A774397007E0084 /* IOKit.framework in Frameworks */,
|
||||
DD3E15330A774397007E0084 /* Security.framework in Frameworks */,
|
||||
DD21B49D0D750FC600AFFEE5 /* AppKit.framework in Frameworks */,
|
||||
|
@ -1675,6 +1678,7 @@
|
|||
DD89165E0F3B1BC200DE5B1C /* OpenGL.framework */,
|
||||
DD0BB7A11F62B105000151B2 /* IOSurface.framework */,
|
||||
DD000D7324D0244C0083DE77 /* SystemConfiguration.framework */,
|
||||
DD43474F26FB378100B8880F /* QuartzCore.framework */,
|
||||
);
|
||||
name = "External Frameworks and Libraries";
|
||||
sourceTree = SOURCE_ROOT;
|
||||
|
@ -2203,9 +2207,9 @@
|
|||
DD30446A0864332D00D73756 /* config.h */,
|
||||
DD1F0ACD0822069E00AFC5FA /* MacGUI.pch */,
|
||||
DD1907FA17D1A2F100596F03 /* MacAccessiblity.mm */,
|
||||
DD77A71612F2D1C9006B82E9 /* MacBitmapComboBox.cpp */,
|
||||
DD77A71712F2D1C9006B82E9 /* MacBitmapComboBox.h */,
|
||||
DDA9D3BB09189A8C0060E7A7 /* Mac_GUI.cpp */,
|
||||
DD64A774270329AA005FE681 /* MacBitmapComboBox.cpp */,
|
||||
DD64A775270329AA005FE681 /* MacBitmapComboBox.h */,
|
||||
DDB295C8185B0DBD00B9F842 /* MacNotification.mm */,
|
||||
DDA12AAD0A369C5800FBDD12 /* SecurityUtility.cpp */,
|
||||
DD7748B40A356D6C0025D05E /* SetupSecurity.cpp */,
|
||||
|
@ -3179,7 +3183,7 @@
|
|||
DDB295C9185B0DBD00B9F842 /* MacNotification.mm in Sources */,
|
||||
DD7A5D9F12EEBFC20006268E /* sg_ProjectWebSitesPopup.cpp in Sources */,
|
||||
DD7A5DAB12EEC37B0006268E /* sg_ProjectCommandPopup.cpp in Sources */,
|
||||
DD77A71812F2D1C9006B82E9 /* MacBitmapComboBox.cpp in Sources */,
|
||||
DD64A7782703379F005FE681 /* MacBitmapComboBox.cpp in Sources */,
|
||||
DDAEB54012F8295800EDEDBE /* LogBOINC.cpp in Sources */,
|
||||
DD2B6C8013149177005D6F3E /* procinfo.cpp in Sources */,
|
||||
DD80632D131FAA4100DC8971 /* sg_BoincSimpleFrame.cpp in Sources */,
|
||||
|
@ -3949,13 +3953,13 @@
|
|||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = ../clientgui/mac/MacGUI.pch;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../wxWidgets-3.1.0/include",
|
||||
"../../wxWidgets-3.1.0/build/osx/setup/cocoa/include",
|
||||
"../../wxWidgets-3.1.5/include",
|
||||
"../../wxWidgets-3.1.5/build/osx/setup/cocoa/include",
|
||||
../clientgui,
|
||||
"../lib/**",
|
||||
);
|
||||
INFOPLIST_FILE = Info.plist;
|
||||
LIBRARY_SEARCH_PATHS = "../../wxWidgets-3.1.0/build/osx/build/Debug";
|
||||
LIBRARY_SEARCH_PATHS = "../../wxWidgets-3.1.5/build/osx/build/Debug";
|
||||
OTHER_CFLAGS = (
|
||||
"-DHAVE_CONFIG_H",
|
||||
"-D_FILE_OFFSET_BITS=64",
|
||||
|
@ -4026,13 +4030,13 @@
|
|||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = ../clientgui/mac/MacGUI.pch;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../wxWidgets-3.1.0/include",
|
||||
"../../wxWidgets-3.1.0/build/osx/setup/cocoa/include",
|
||||
"../../wxWidgets-3.1.5/include",
|
||||
"../../wxWidgets-3.1.5/build/osx/setup/cocoa/include",
|
||||
../clientgui,
|
||||
"../lib/**",
|
||||
);
|
||||
INFOPLIST_FILE = Info.plist;
|
||||
LIBRARY_SEARCH_PATHS = "../../wxWidgets-3.1.0/build/osx/build/Release";
|
||||
LIBRARY_SEARCH_PATHS = "../../wxWidgets-3.1.5/build/osx/build/Release";
|
||||
OTHER_CFLAGS = (
|
||||
"-DHAVE_CONFIG_H",
|
||||
"-D_FILE_OFFSET_BITS=64",
|
||||
|
|
|
@ -41,6 +41,7 @@
|
|||
# Add patches to build with Xcode 11 and OS 10.15 sdk 3/1/20
|
||||
# Updated 8/4/20 TO build Apple Silicon / arm64 and x86_64 Universal binary
|
||||
# Updated 5/18/21 for compatibility with zsh
|
||||
# Updated 9/30/21 for wxCocoa 3.1.5
|
||||
#
|
||||
## This script requires OS 10.6 or later
|
||||
##
|
||||
|
@ -71,196 +72,118 @@ fi
|
|||
|
||||
echo ""
|
||||
|
||||
# Patch wxWidgets-3.1.0/src/png/pngstruct.h
|
||||
if [ ! -f src/png/pngstruct.h.orig ]; then
|
||||
cat >> /tmp/pngstruct_h_diff << ENDOFFILE
|
||||
--- pngstruct.h 2013-11-11 05:10:39.000000000 -0800
|
||||
+++ pngstruct_patched.h 2014-02-18 01:31:53.000000000 -0800
|
||||
@@ -33,6 +33,13 @@
|
||||
# undef const
|
||||
#endif
|
||||
## Add our custom method SetItemBitmap(unsigned int n, const wxBitmap& bitmap)
|
||||
## to wxChoice. We use this to create our own custom CBOINCBitmapComboBox
|
||||
## which uses native Mac controls instead of wxBitmapComboBox which does not.
|
||||
## By using only native Mac controls in BOINC SImple View, MacOS will provide
|
||||
## accessibility support automatically.
|
||||
##
|
||||
## We patch 4 files to accomplish this.
|
||||
##
|
||||
# Patch wxWidgets-3.1.5/include/wx/osx/choice.h
|
||||
if [ ! -f include/wx/osx/choice.h.orig ]; then
|
||||
cat >> /tmp/choice_h_diff << ENDOFFILE
|
||||
--- include/wx/osx/choice.h 2021-04-12 15:23:58.000000000 -0700
|
||||
+++ include/wx/osx/choice_patched.h 2021-09-29 23:47:19.000000000 -0700
|
||||
@@ -73,6 +73,7 @@
|
||||
virtual int FindString(const wxString& s, bool bCase = false) const wxOVERRIDE;
|
||||
virtual wxString GetString(unsigned int n) const wxOVERRIDE;
|
||||
virtual void SetString(unsigned int pos, const wxString& s) wxOVERRIDE;
|
||||
+ void SetItemBitmap(unsigned int n, const wxBitmap& bitmap);
|
||||
// osx specific event handling common for all osx-ports
|
||||
|
||||
virtual bool OSXHandleClicked(double timestampsec) wxOVERRIDE;
|
||||
ENDOFFILE
|
||||
patch -bfi /tmp/choice_h_diff include/wx/osx/choice.h
|
||||
rm -f /tmp/choice_h_diff
|
||||
else
|
||||
echo "include/wx/osx/choice.h already patched"
|
||||
fi
|
||||
|
||||
+/* BOINC workaround patch to fix crashes on OS 10.5 or 10.6 when
|
||||
+ * built with OS 10.7 SDK or later.
|
||||
+ */
|
||||
+#undef ZLIB_VERNUM
|
||||
+#define ZLIB_VERNUM 0x1230
|
||||
+/* End of BOINC workaround patch */
|
||||
echo ""
|
||||
|
||||
# Patch wxWidgets-3.1.5/src/osx/choice_osx.cpp
|
||||
if [ ! -f src/osx/choice_osx.cpp.orig ]; then
|
||||
cat >> /tmp/choice_osx_cpp_diff << ENDOFFILE
|
||||
--- src/osx/choice_osx.cpp 2021-04-12 15:23:58.000000000 -0700
|
||||
+++ src/osx/choice_osx_patched.cpp 2021-09-30 00:26:06.000000000 -0700
|
||||
@@ -212,6 +212,13 @@
|
||||
return m_strings[n] ;
|
||||
}
|
||||
|
||||
+void wxChoice::SetItemBitmap(unsigned int n, const wxBitmap& bitmap)
|
||||
+{
|
||||
+ wxCHECK_RET( IsValid(n), wxT("wxChoice::SetItemBitmap(): invalid index") );
|
||||
+
|
||||
/* zlib.h has mediocre z_const use before 1.2.6, this stuff is for compatibility
|
||||
* with older builds.
|
||||
*/
|
||||
ENDOFFILE
|
||||
patch -bfi /tmp/pngstruct_h_diff src/png/pngstruct.h
|
||||
rm -f /tmp/pngstruct_h_diff
|
||||
else
|
||||
echo "src/png/pngstruct.h already patched"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
# Patch src/osx/webview_webkit.mm
|
||||
if [ ! -f src/osx/webview_webkit.mm.orig ]; then
|
||||
cat >> /tmp/webview_webkit_mm_diff << ENDOFFILE
|
||||
--- webview_webkit.mm 2016-02-28 13:33:37.000000000 -0800
|
||||
+++ webview_webkit_patched.mm 2020-02-29 03:04:08.000000000 -0800
|
||||
@@ -32,8 +32,8 @@
|
||||
#include <UIKit/UIWebView.h>
|
||||
#else
|
||||
#include <WebKit/WebKit.h>
|
||||
-#include <WebKit/HIWebView.h>
|
||||
-#include <WebKit/CarbonUtils.h>
|
||||
+//#include <WebKit/HIWebView.h>
|
||||
+//#include <WebKit/CarbonUtils.h>
|
||||
#endif
|
||||
#include <Foundation/NSURLError.h>
|
||||
|
||||
ENDOFFILE
|
||||
patch -bfi /tmp/webview_webkit_mm_diff src/osx/webview_webkit.mm
|
||||
rm -f /tmp/webview_webkit_mm_diff
|
||||
else
|
||||
echo "src/osx/webview_webkit.mm already patched"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
# Patch src/html/htmlctrl/webkit/webkit.mm
|
||||
if [ ! -f src/html/htmlctrl/webkit/webkit.mm.orig ]; then
|
||||
cat >> /tmp/webkit_mm_diff << ENDOFFILE
|
||||
--- /Volumes/Dev/BOINC_Dev/wxWidgets-3.1.0/src/html/htmlctrl/webkit/webkit.mm 2016-02-28 13:33:37.000000000 -0800
|
||||
+++ /Volumes/Dev/BOINC_Dev/wxWidgets-3.1.0/src/html/htmlctrl/webkit/webkit_patched.mm 2020-02-29 03:04:07.000000000 -0800
|
||||
@@ -21,8 +21,8 @@
|
||||
#include "wx/osx/private.h"
|
||||
|
||||
#include <WebKit/WebKit.h>
|
||||
-#include <WebKit/HIWebView.h>
|
||||
-#include <WebKit/CarbonUtils.h>
|
||||
+//#include <WebKit/HIWebView.h>
|
||||
+//#include <WebKit/CarbonUtils.h>
|
||||
|
||||
#include "wx/html/webkit.h"
|
||||
|
||||
ENDOFFILE
|
||||
patch -bfi /tmp/webkit_mm_diff src/html/htmlctrl/webkit/webkit.mm
|
||||
rm -f /tmp/webkit_mm_diff
|
||||
else
|
||||
echo "src/html/htmlctrl/webkit/webkit.mm already patched"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
# Patch build/osx/setup/cocoa/include/wx/setup.h
|
||||
if [ ! -f build/osx/setup/cocoa/include/wx/setup.h.orig ]; then
|
||||
|
||||
# First run wxWidget's built-in script to copy setup.h into place
|
||||
cd build/osx || return 1
|
||||
../../distrib/mac/pbsetup-sh ../../src ../../build/osx/setup/cocoa
|
||||
cd ../.. || return 1
|
||||
|
||||
cat >> /tmp/setup_h_diff << ENDOFFILE
|
||||
--- setup.h 2017-10-25 02:22:00.000000000 -0700
|
||||
+++ setup_patched.h 2017-10-25 02:32:21.000000000 -0700
|
||||
@@ -343,7 +343,10 @@
|
||||
// Recommended setting: 1 if you use the standard streams anyhow and so
|
||||
// dependency on the standard streams library is not a
|
||||
// problem
|
||||
-#define wxUSE_STD_IOSTREAM wxUSE_STD_DEFAULT
|
||||
+/* BOINC workaround patch to fix crashes on OS 10.5 when built
|
||||
+ * with OS 10.7 SDK or later.
|
||||
+ */
|
||||
+#define wxUSE_STD_IOSTREAM 0 // wxUSE_STD_DEFAULT
|
||||
|
||||
// Enable minimal interoperability with the standard C++ string class if 1.
|
||||
// "Minimal" means that wxString can be constructed from std::string or
|
||||
@@ -668,7 +671,7 @@
|
||||
// Default is 1.
|
||||
//
|
||||
// Recommended setting: 1
|
||||
-#define wxUSE_MEDIACTRL 1
|
||||
+#define wxUSE_MEDIACTRL 0 // 1
|
||||
|
||||
// Use wxWidget's XRC XML-based resource system. Recommended.
|
||||
//
|
||||
ENDOFFILE
|
||||
patch -bfi /tmp/setup_h_diff build/osx/setup/cocoa/include/wx/setup.h
|
||||
rm -f /tmp/setup_h_diff
|
||||
else
|
||||
echo "build/osx/setup/cocoa/include/wx/setup.h already patched"
|
||||
fi
|
||||
|
||||
# Patch src/osx/window_osx.cpp
|
||||
if [ ! -f src/osx/window_osx.cpp.orig ]; then
|
||||
cat >> /tmp/window_osx_cpp_diff << ENDOFFILE
|
||||
--- window_osx.cpp 2016-02-28 13:33:37.000000000 -0800
|
||||
+++ window_osx_patched.cpp 2018-03-20 01:17:35.000000000 -0700
|
||||
@@ -353,7 +353,8 @@
|
||||
if ( !m_hasFont )
|
||||
DoSetWindowVariant( m_windowVariant );
|
||||
|
||||
- if ( !m_label.empty() )
|
||||
+// Fix wxWidgets 3.1.0 bug drawing wxStaticBox with empty label (fixed in wxWidgets 3.1.1)
|
||||
+// if ( !m_label.empty() )
|
||||
GetPeer()->SetLabel( wxStripMenuCodes(m_label, wxStrip_Mnemonics), GetFont().GetEncoding() ) ;
|
||||
|
||||
// for controls we want to use best size for wxDefaultSize params )
|
||||
ENDOFFILE
|
||||
patch -bfi /tmp/window_osx_cpp_diff src/osx/window_osx.cpp
|
||||
rm -f /tmp/window_osx_cpp_diff
|
||||
else
|
||||
echo "src/osx/window_osx.cpp already patched"
|
||||
fi
|
||||
|
||||
# Patch src/osx/carbon/utilscocoa.mm
|
||||
if [ ! -f src/osx/carbon/utilscocoa.mm.orig ]; then
|
||||
cat >> /tmp/utilscocoa_mm_diff << ENDOFFILE
|
||||
--- utilscocoa.mm 2016-02-28 13:33:37.000000000 -0800
|
||||
+++ utilscocoa-patched.mm 2018-06-03 01:31:43.000000000 -0700
|
||||
@@ -476,7 +476,10 @@
|
||||
|
||||
double wxOSXGetMainScreenContentScaleFactor()
|
||||
{
|
||||
- return [[NSScreen mainScreen] backingScaleFactor];
|
||||
+ if ([[NSScreen mainScreen] respondsToSelector:@selector(backingScaleFactor)])
|
||||
+ return [[NSScreen mainScreen] backingScaleFactor];
|
||||
+ else
|
||||
+ return 1.0;
|
||||
}
|
||||
|
||||
CGImageRef wxOSXCreateCGImageFromNSImage( WX_NSImage nsimage, double *scaleptr )
|
||||
ENDOFFILE
|
||||
patch -bfi /tmp/utilscocoa_mm_diff src/osx/carbon/utilscocoa.mm
|
||||
rm -f /tmp/utilscocoa_mm_diff
|
||||
else
|
||||
echo "src/osx/carbon/utilscocoa.mm already patched"
|
||||
fi
|
||||
|
||||
# Patch src/osx/cocoa/window.mm
|
||||
if [ ! -f src/osx/cocoa/window.mm.orig ]; then
|
||||
cat >> /tmp/window_mm_diff << ENDOFFILE
|
||||
--- window.mm 2016-02-28 13:33:37.000000000 -0800
|
||||
+++ window-patched.mm 2018-06-08 01:28:01.000000000 -0700
|
||||
@@ -1869,7 +1869,10 @@
|
||||
double wxWidgetCocoaImpl::GetContentScaleFactor() const
|
||||
{
|
||||
NSWindow* tlw = [m_osxView window];
|
||||
- return [tlw backingScaleFactor];
|
||||
+ if ([tlw respondsToSelector:@selector(backingScaleFactor)])
|
||||
+ return [tlw backingScaleFactor];
|
||||
+ else
|
||||
+ return 1.0;
|
||||
}
|
||||
|
||||
+ dynamic_cast<wxChoiceWidgetImpl*>(GetPeer())->SetItemBitmap(n, bitmap);
|
||||
+}
|
||||
+
|
||||
// ----------------------------------------------------------------------------
|
||||
// client data
|
||||
// ----------------------------------------------------------------------------
|
||||
ENDOFFILE
|
||||
patch -bfi /tmp/window_mm_diff src/osx/cocoa/window.mm
|
||||
rm -f /tmp/window_mm_diff
|
||||
patch -bfi /tmp/choice_osx_cpp_diff src/osx/choice_osx.cpp
|
||||
rm -f /tmp/choice_osx_cpp_diff
|
||||
else
|
||||
echo "src/osx/cocoa/window.mm already patched"
|
||||
echo "src/osx/choice_osx.cpp already patched"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
# Patch wxWidgets-3.1.5/include/wx/osx/core/private.h
|
||||
if [ ! -f include/wx/osx/core/private.h.orig ]; then
|
||||
cat >> /tmp/private_h_cpp_diff << ENDOFFILE
|
||||
--- include/wx/osx/core/private.h 2021-04-12 15:23:58.000000000 -0700
|
||||
+++ include/wx/osx/core/private_patched.h 2021-09-30 01:11:28.000000000 -0700
|
||||
@@ -809,6 +809,8 @@
|
||||
}
|
||||
|
||||
virtual void SetItem(int pos, const wxString& item) = 0;
|
||||
+
|
||||
+ virtual void SetItemBitmap(unsigned int n, const wxBitmap& bitmap) = 0;
|
||||
};
|
||||
|
||||
|
||||
ENDOFFILE
|
||||
patch -bfi /tmp/private_h_cpp_diff include/wx/osx/core/private.h
|
||||
rm -f /tmp/private_h_cpp_diff
|
||||
else
|
||||
echo "include/wx/osx/core/private.h already patched"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
# Patch wxWidgets-3.1.5/src/osx/cocoa/choice.mm
|
||||
if [ ! -f src/osx/cocoa/choice.mm.orig ]; then
|
||||
cat >> /tmp/choice_mm_diff << ENDOFFILE
|
||||
--- src/osx/cocoa/choice.mm 2021-09-28 22:52:32.000000000 -0700
|
||||
+++ src/osx/cocoa/choice_patched.mm 2021-09-30 01:08:32.000000000 -0700
|
||||
@@ -130,6 +130,12 @@
|
||||
m_popUpMenu->FindItemByPosition( pos )->SetItemLabel( s ) ;
|
||||
}
|
||||
|
||||
+ void SetItemBitmap(unsigned int n, const wxBitmap& bitmap)
|
||||
+ {
|
||||
+ if ( bitmap.Ok() )
|
||||
+ m_popUpMenu->FindItemByPosition( n )->SetBitmap( bitmap ); ;
|
||||
+ }
|
||||
+
|
||||
private:
|
||||
wxMenu* m_popUpMenu;
|
||||
};
|
||||
ENDOFFILE
|
||||
patch -bfi /tmp/choice_mm_diff src/osx/cocoa/choice.mm
|
||||
rm -f /tmp/choice_mm_diff
|
||||
else
|
||||
echo "src/osx/cocoa/choice.mm already patched"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
##***********************************************************
|
||||
##*************** End of patches section ********************
|
||||
##***********************************************************
|
||||
|
||||
doclean=""
|
||||
stdout_target="/dev/stdout"
|
||||
lprefix=""
|
||||
|
@ -298,6 +221,11 @@ fi
|
|||
retval=0
|
||||
alreadyBuilt=0
|
||||
|
||||
# First run wxWidget's built-in script to copy setup.h into place
|
||||
cd build/osx || return 1
|
||||
../../distrib/mac/pbsetup-sh ../../src ../../build/osx/setup/cocoa
|
||||
cd ../.. || return 1
|
||||
|
||||
if [ "${doclean}" != "clean" ] && [ -f "${libPathRel}/libwx_osx_cocoa_static.a" ]; then
|
||||
GCCPATH=`xcrun -find gcc`
|
||||
if [ $? -ne 0 ]; then
|
||||
|
@ -337,7 +265,7 @@ else
|
|||
## $(ARCHS_STANDARD) builds Universal Binary (x86_64 & arm64) library under
|
||||
## Xcode versions that can, otherwise it builds only the X86_64 library.
|
||||
set -o pipefail
|
||||
xcodebuild -project build/osx/wxcocoa.xcodeproj -target static -configuration Release $doclean build ARCHS="\$(ARCHS_STANDARD)" ONLY_ACTIVE_ARCH="NO" MACOSX_DEPLOYMENT_TARGET="10.7" CLANG_CXX_LIBRARY="libc++" OTHER_CFLAGS="-Wall -Wundef -fno-strict-aliasing -fno-common -DWK_API_ENABLED=0 -DHAVE_LOCALTIME_R=1 -DHAVE_GMTIME_R=1 -DwxUSE_UNICODE=1 -DwxDEBUG_LEVEL=0 -DPNG_ARM_NEON_OPT=0 -DNDEBUG -fvisibility=hidden -include unistd.h" OTHER_CPLUSPLUSFLAGS="-Wall -Wundef -fno-strict-aliasing -fno-common -DWK_API_ENABLED=0 -DHAVE_LOCALTIME_R=1 -DHAVE_GMTIME_R=1 -DwxUSE_UNICODE=1 -DwxDEBUG_LEVEL=0 -DPNG_ARM_NEON_OPT=0 -DNDEBUG -fvisibility=hidden -fvisibility-inlines-hidden" GCC_PREPROCESSOR_DEFINITIONS="WXBUILDING __WXOSX_COCOA__ __WX__ wxUSE_BASE=1 _FILE_OFFSET_BITS=64 _LARGE_FILES MACOS_CLASSIC __WXMAC_XCODE__=1 SCI_LEXER WX_PRECOMP=1 wxUSE_UNICODE_UTF8=1 wxUSE_UNICODE_WCHAR=0 __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES=1" | $beautifier; retval=$?
|
||||
xcodebuild -project build/osx/wxcocoa.xcodeproj -target static -configuration Release $doclean build ARCHS="\$(ARCHS_STANDARD)" ONLY_ACTIVE_ARCH="NO" MACOSX_DEPLOYMENT_TARGET="10.9" GCC_C_LANGUAE_STANDARD="compiler-default" CLANG_CXX_LANGUAGE_SANDARD="c++0x" CLANG_CXX_LIBRARY="libc++" OTHER_CFLAGS="-Wall -Wundef -fno-strict-aliasing -fno-common -DHAVE_LOCALTIME_R=1 -DHAVE_GMTIME_R=1 -DwxUSE_UNICODE=1 -DwxDEBUG_LEVEL=0 -DPNG_ARM_NEON_OPT=0 -DNDEBUG -fvisibility=hidden -include unistd.h" OTHER_CPLUSPLUSFLAGS="-Wall -Wundef -fno-strict-aliasing -fno-common -DHAVE_LOCALTIME_R=1 -DHAVE_GMTIME_R=1 -DwxUSE_UNICODE=1 -DwxDEBUG_LEVEL=0 -DPNG_ARM_NEON_OPT=0 -DNDEBUG -fvisibility=hidden -fvisibility-inlines-hidden" GCC_PREPROCESSOR_DEFINITIONS="WXBUILDING __WXOSX_COCOA__ __WX__ wxUSE_BASE=1 _FILE_OFFSET_BITS=64 _LARGE_FILES MACOS_CLASSIC __WXMAC_XCODE__=1 SCI_LEXER NO_CXX11_REGEX WX_PRECOMP=1 wxUSE_UNICODE_UTF8=1 wxUSE_UNICODE_WCHAR=0 __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES=1" | $beautifier; retval=$?
|
||||
if [ ${retval} -ne 0 ]; then return 1; fi
|
||||
if [ "x${lprefix}" != "x" ]; then
|
||||
# copy library and headers to $lprefix
|
||||
|
@ -393,7 +321,7 @@ else
|
|||
## $(ARCHS_STANDARD) builds Universal Binary (x86_64 & arm64) library under
|
||||
## Xcode versions that can, otherwise it builds only the X86_64 library.
|
||||
set -o pipefail
|
||||
xcodebuild -project build/osx/wxcocoa.xcodeproj -target static -configuration Debug build ARCHS="\$(ARCHS_STANDARD)" ONLY_ACTIVE_ARCH="NO" MACOSX_DEPLOYMENT_TARGET="10.7" CLANG_CXX_LIBRARY="libc++" OTHER_CFLAGS="-Wall -Wundef -fno-strict-aliasing -fno-common -DWK_API_ENABLED=0 -DHAVE_LOCALTIME_R=1 -DHAVE_GMTIME_R=1 -DwxUSE_UNICODE=1 -DPNG_ARM_NEON_OPT=0 -DDEBUG -fvisibility=hidden -include unistd.h" OTHER_CPLUSPLUSFLAGS="-Wall -Wundef -fno-strict-aliasing -fno-common -DWK_API_ENABLED=0 -DHAVE_LOCALTIME_R=1 -DHAVE_GMTIME_R=1 -DwxUSE_UNICODE=1 -DPNG_ARM_NEON_OPT=0 -DDEBUG -fvisibility=hidden -fvisibility-inlines-hidden" GCC_PREPROCESSOR_DEFINITIONS="WXBUILDING __WXOSX_COCOA__ __WX__ wxUSE_BASE=1 _FILE_OFFSET_BITS=64 _LARGE_FILES MACOS_CLASSIC __WXMAC_XCODE__=1 SCI_LEXER WX_PRECOMP=1 wxUSE_UNICODE_UTF8=1 wxUSE_UNICODE_WCHAR=0 __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES=1" | $beautifier; retval=$?
|
||||
xcodebuild -project build/osx/wxcocoa.xcodeproj -target static -configuration Debug build ARCHS="\$(ARCHS_STANDARD)" ONLY_ACTIVE_ARCH="NO" MACOSX_DEPLOYMENT_TARGET="10.9" GCC_C_LANGUAE_STANDARD="compiler-default" CLANG_CXX_LANGUAGE_SANDARD="c++0x" CLANG_CXX_LIBRARY="libc++" OTHER_CFLAGS="-Wall -Wundef -fno-strict-aliasing -fno-common -DHAVE_LOCALTIME_R=1 -DHAVE_GMTIME_R=1 -DwxUSE_UNICODE=1 -DPNG_ARM_NEON_OPT=0 -DDEBUG -fvisibility=hidden -include unistd.h" OTHER_CPLUSPLUSFLAGS="-Wall -Wundef -fno-strict-aliasing -fno-common -DHAVE_LOCALTIME_R=1 -DHAVE_GMTIME_R=1 -DwxUSE_UNICODE=1 -DPNG_ARM_NEON_OPT=0 -DDEBUG -fvisibility=hidden -fvisibility-inlines-hidden" GCC_PREPROCESSOR_DEFINITIONS="WXBUILDING __WXOSX_COCOA__ __WX__ wxUSE_BASE=1 _FILE_OFFSET_BITS=64 _LARGE_FILES MACOS_CLASSIC __WXMAC_XCODE__=1 SCI_LEXER NO_CXX11_REGEX WX_PRECOMP=1 wxUSE_UNICODE_UTF8=1 wxUSE_UNICODE_WCHAR=0 __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES=1" | $beautifier; retval=$?
|
||||
if [ ${retval} -ne 0 ]; then return 1; fi
|
||||
if [ "x${lprefix}" != "x" ]; then
|
||||
# copy debug library to $PREFIX
|
||||
|
|
|
@ -49,9 +49,9 @@ curlDirName="curl-7.73.0"
|
|||
curlFileName="curl-7.73.0.tar.gz"
|
||||
curlURL="https://curl.haxx.se/download/curl-7.73.0.tar.gz"
|
||||
|
||||
wxWidgetsDirName="wxWidgets-3.1.0"
|
||||
wxWidgetsFileName="wxWidgets-3.1.0.tar.bz2"
|
||||
wxWidgetsURL="https://github.com/wxWidgets/wxWidgets/releases/download/v3.1.0/wxWidgets-3.1.0.tar.bz2"
|
||||
wxWidgetsDirName="wxWidgets-3.1.5"
|
||||
wxWidgetsFileName="wxWidgets-3.1.5.tar.bz2"
|
||||
wxWidgetsURL="https://github.com/wxWidgets/wxWidgets/releases/download/v3.1.5/wxWidgets-3.1.5.tar.bz2"
|
||||
|
||||
freetypeDirName="freetype-2.9"
|
||||
freetypeFileName="freetype-2.9.tar.bz2"
|
||||
|
|
|
@ -28,7 +28,7 @@ def get_element(node, name, optional=True):
|
|||
raise SystemExit("ERROR: Couldn't find xml node <%s>"% name)
|
||||
|
||||
def _None2Str(object):
|
||||
if object == None:
|
||||
if object is None:
|
||||
return ''
|
||||
else:
|
||||
return object
|
||||
|
@ -135,7 +135,7 @@ class XMLConfig:
|
|||
self._get_elements()
|
||||
except:
|
||||
if not failopen_ok:
|
||||
raise Exception("%s: Couldn't get elements from XML file");
|
||||
raise Exception("%s: Couldn't get elements from XML file")
|
||||
return self
|
||||
def _get_elements(self):
|
||||
pass
|
||||
|
|
|
@ -69,13 +69,13 @@ def _commit_object(tablename, paramdict, id=None):
|
|||
equalcommands = []
|
||||
for key in paramdict.keys():
|
||||
value = paramdict[key]
|
||||
if value == None:
|
||||
if value is None:
|
||||
continue
|
||||
elif isinstance(value, int):
|
||||
equalcommands.append('%s=%d' %(key,value))
|
||||
else:
|
||||
equalcommands.append("%s='%s'"%(key,dbconnection.escape_string(str(value))))
|
||||
if id == None:
|
||||
if id is None:
|
||||
command = 'INSERT INTO %s SET %s' % \
|
||||
(tablename, ', '.join(equalcommands))
|
||||
if debug.mysql:
|
||||
|
@ -97,7 +97,7 @@ def _remove_object(command, id=None):
|
|||
id is given, it assembles the SQL command and deletes the object
|
||||
from the database. Does nothing if no id is given."""
|
||||
assert(dbconnection)
|
||||
if id == None:
|
||||
if id is None:
|
||||
pass
|
||||
else:
|
||||
cursor = dbconnection.cursor()
|
||||
|
@ -122,7 +122,7 @@ def _select_object(table, searchdict, extra_args="", extra_params=[], select_wha
|
|||
if join:
|
||||
command += "," + join
|
||||
for (key,value) in searchdict.items():
|
||||
if value == None:
|
||||
if value is None:
|
||||
value = ''
|
||||
escaped_value = dbconnection.escape_string(str(value))
|
||||
if key == 'text':
|
||||
|
|
|
@ -20,6 +20,6 @@ class SchedMessages:
|
|||
elif kind==DEBUG:
|
||||
kind = "debug "
|
||||
else:
|
||||
kind = "*** internal error: invalid MessageKind ***";
|
||||
kind = "*** internal error: invalid MessageKind ***"
|
||||
sys.stderr.write("%s [%s] " % (time.strftime("%Y/%m/%d %H:%M:%S", time.localtime()), kind))
|
||||
sys.stderr.write(format % args)
|
||||
|
|
|
@ -57,7 +57,7 @@ def verbose_sleep(msg, wait):
|
|||
|
||||
def get_env_var(name, default = None):
|
||||
value = os.environ.get(name, default)
|
||||
if value == None:
|
||||
if value is None:
|
||||
print("Environment variable %s not defined" % name)
|
||||
sys.exit(1)
|
||||
return value
|
||||
|
@ -209,7 +209,7 @@ def _check_vars(dict, **names):
|
|||
for key in names:
|
||||
value = names[key]
|
||||
if not key in dict:
|
||||
if value == None:
|
||||
if value is None:
|
||||
raise SystemExit('error in test script: required parameter "%s" not specified'%key)
|
||||
dict[key] = value
|
||||
for key in dict:
|
||||
|
@ -309,7 +309,7 @@ def install_boinc_files(dest_dir, install_web_files, install_server_files):
|
|||
location = os.path.join(location, d )
|
||||
return location
|
||||
|
||||
create_project_dirs(dest_dir);
|
||||
create_project_dirs(dest_dir)
|
||||
|
||||
# copy html/ops files in all cases.
|
||||
# The critical one is db_update.php,
|
||||
|
@ -555,13 +555,13 @@ class Project:
|
|||
if os.path.exists(self.dest()):
|
||||
raise SystemExit('Project directory "%s" already exists; this would clobber it!'%self.dest())
|
||||
|
||||
verbose_echo(1, "Creating directories");
|
||||
verbose_echo(1, "Creating directories")
|
||||
|
||||
create_project_dirs(self.project_dir);
|
||||
create_project_dirs(self.project_dir)
|
||||
|
||||
if not self.web_only:
|
||||
if not self.keys_exist():
|
||||
verbose_echo(1, "Generating encryption keys");
|
||||
verbose_echo(1, "Generating encryption keys")
|
||||
self.create_keys()
|
||||
|
||||
# copy the user and administrative PHP files to the project dir,
|
||||
|
|
|
@ -67,9 +67,9 @@ class TASK:
|
|||
final_cpu_time = 0.0
|
||||
time_checkpointed = 0
|
||||
# contribution of this task to overall fraction done
|
||||
final_cpu_time = 0;
|
||||
starting_cpu = 0;
|
||||
ready = 0;
|
||||
final_cpu_time = 0
|
||||
starting_cpu = 0
|
||||
ready = 0
|
||||
exitCode = None
|
||||
|
||||
# how much CPU time was used by tasks before this in the job file
|
||||
|
@ -450,7 +450,7 @@ def read_checkpoint(filename):
|
|||
cpu = 0
|
||||
|
||||
try:
|
||||
f = open(filename, "r");
|
||||
f = open(filename, "r")
|
||||
except:
|
||||
return [ntasks, cpu]
|
||||
|
||||
|
|
|
@ -180,7 +180,7 @@ class Assimilator():
|
|||
if result == wu.canonical_result:
|
||||
canonical_result=result
|
||||
|
||||
if canonical_result == None and wu.error_mask == 0:
|
||||
if canonical_result is None and wu.error_mask == 0:
|
||||
# If no canonical result found and WU had no other errors,
|
||||
# something is wrong, e.g. result records got deleted prematurely.
|
||||
# This is probably unrecoverable, so mark the WU as having
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
from test_uc import *
|
||||
|
||||
if __name__ == '__main__':
|
||||
test_msg("multiple projects with resource share");
|
||||
test_msg("multiple projects with resource share")
|
||||
# create two projects with the same host/user
|
||||
host = Host()
|
||||
user = UserUC()
|
||||
|
|
|
@ -74,6 +74,6 @@ class ProjectUC(TestProject):
|
|||
)
|
||||
|
||||
if __name__ == '__main__':
|
||||
test_msg("standard upper_case application");
|
||||
test_msg("standard upper_case application")
|
||||
ProjectUC()
|
||||
run_check_all()
|
||||
|
|
|
@ -125,7 +125,7 @@ def _check_vars(dict, **names):
|
|||
for key in names:
|
||||
value = names[key]
|
||||
if not key in dict:
|
||||
if value == None:
|
||||
if value is None:
|
||||
raise SystemExit('error in test script: required parameter "%s" not specified'%key)
|
||||
dict[key] = value
|
||||
for key in dict:
|
||||
|
@ -508,7 +508,7 @@ class Host:
|
|||
rmtree(self.dir())
|
||||
os.mkdir(self.dir())
|
||||
|
||||
verbose_echo(1, "Setting up host '%s': creating account files" % self.name);
|
||||
verbose_echo(1, "Setting up host '%s': creating account files" % self.name)
|
||||
for (user,project) in map(None,self.users,self.projects):
|
||||
filename = self.dir(account_file_name(project.config.config.master_url))
|
||||
verbose_echo(2, "Setting up host '%s': writing %s" % (self.name, filename))
|
||||
|
@ -611,7 +611,7 @@ class Work:
|
|||
verbose_echo(2, "Linking "+newhandler)
|
||||
os.symlink(handler, newhandler)
|
||||
|
||||
shutil.copy(self.result_template, project.dir());
|
||||
shutil.copy(self.result_template, project.dir())
|
||||
cmd = build_command_line("create_work",
|
||||
config_dir = project.dir(),
|
||||
appname = self.app.name,
|
||||
|
|
|
@ -46,7 +46,7 @@ def make_batch_desc(batch_name):
|
|||
[batch.project, batch.authenticator] = get_auth()
|
||||
batch.app_name = "uppercase"
|
||||
batch.batch_name = batch_name
|
||||
batch.app_version_num = 710;
|
||||
batch.app_version_num = 710
|
||||
batch.jobs = []
|
||||
|
||||
for i in range(2):
|
||||
|
|
|
@ -166,13 +166,19 @@
|
|||
<Exec Command="$(TMP)\7z\7za x $(TMP)\cublas_dev.exe -onvcc -aoa" WorkingDirectory="$(CudaRootDir)" ConsoleToMSBuild="true" />
|
||||
<Touch Files="$(CudaGuardFile)" AlwaysCreate="true" />
|
||||
</Target>
|
||||
<Target Name="InstallVcpkg" BeforeTargets="Build3rdPartyLibraries" DependsOnTargets="CreateFolders" AfterTargets="DownloadCUDA">
|
||||
<Target Name="InstallVcpkg" BeforeTargets="RemoveOutdated3rdPartyLibraries" DependsOnTargets="CreateFolders" AfterTargets="DownloadCUDA">
|
||||
<Exec Command="git clone https://github.com/microsoft/vcpkg" WorkingDirectory="$(Windows3rdPartyBuildDir)" ConsoleToMSBuild="true" Condition="!Exists($(VcpkgRootDir))" />
|
||||
<Exec Command="git pull" WorkingDirectory="$(VcpkgRootDir)" ConsoleToMSBuild="true" />
|
||||
<Exec Command="bootstrap-vcpkg.bat" WorkingDirectory="$(VcpkgRootDir)" ConsoleToMSBuild="true" />
|
||||
</Target>
|
||||
<Target Name="Build3rdPartyLibraries" BeforeTargets="ClCompile" DependsOnTargets="InstallVcpkg" AfterTargets="InstallVcpkg">
|
||||
<Exec Command="vcpkg.exe install curl[core,openssl] wxwidgets opencl rappture gtest --overlay-triplets=../../vcpkg_ports/triplets/$(VcpkgTripletConfig) --triplet $(VcpkgTripletName) --clean-after-build" WorkingDirectory="$(VcpkgRootDir)" ConsoleToMSBuild="true" />
|
||||
<Target Name="RemoveOutdated3rdPartyLibraries" BeforeTargets="Build3rdPartyLibraries" DependsOnTargets="InstallVcpkg" AfterTargets="InstallVcpkg">
|
||||
<Exec Command="vcpkg.exe list | findstr curl\[openssl\]:$(VcpkgTripletName)" WorkingDirectory="$(VcpkgRootDir)" ConsoleToMSBuild="true" ContinueOnError="WarnAndContinue">
|
||||
<Output TaskParameter="ConsoleOutput" PropertyName="OutdatedCurl" />
|
||||
</Exec>
|
||||
<Exec Command="vcpkg.exe remove curl --overlay-triplets=../../vcpkg_ports/triplets/$(VcpkgTripletConfig) --triplet $(VcpkgTripletName)" WorkingDirectory="$(VcpkgRootDir)" ConsoleToMSBuild="true" Condition="$(OutdatedCurl) != ''" />
|
||||
</Target>
|
||||
<Target Name="Build3rdPartyLibraries" BeforeTargets="ClCompile" DependsOnTargets="RemoveOutdated3rdPartyLibraries" AfterTargets="RemoveOutdated3rdPartyLibraries">
|
||||
<Exec Command="vcpkg.exe install openssl curl[core,schannel] wxwidgets opencl rappture gtest --overlay-triplets=../../vcpkg_ports/triplets/$(VcpkgTripletConfig) --triplet $(VcpkgTripletName) --recurse --clean-after-build" WorkingDirectory="$(VcpkgRootDir)" ConsoleToMSBuild="true" />
|
||||
<Exec Command="vcpkg.exe install ftgl --overlay-triplets=../../vcpkg_ports/triplets/$(VcpkgTripletConfig) --triplet $(VcpkgTripletName) --clean-after-build" WorkingDirectory="$(VcpkgRootDir)" ConsoleToMSBuild="true" Condition="'$(Platform)' == 'x64'" />
|
||||
<Exec Command="vcpkg.exe upgrade --no-dry-run --overlay-triplets=../../vcpkg_ports/triplets/$(VcpkgTripletConfig) --triplet $(VcpkgTripletName)" WorkingDirectory="$(VcpkgRootDir)" ConsoleToMSBuild="true" />
|
||||
</Target>
|
||||
|
|
Loading…
Reference in New Issue