diff --git a/_service b/_service new file mode 100644 index 0000000..3411f69 --- /dev/null +++ b/_service @@ -0,0 +1,13 @@ + + + github.com + https + /BOINC/boinc/archive/client_release/7.6/7.6.22.tar.gz + boinc-client_release-7.6-7.6.22.tar.gz + + + _service:download_url:boinc-client_release-7.6-7.6.22.tar.gz + sha256 + b5b2b211725bc46399d3504bd6b0b60a9f9506d9f6b5a04d524991f239c16585 + + diff --git a/_service:download_url:boinc-client_release-7.6-7.6.22.tar.gz b/_service:download_url:boinc-client_release-7.6-7.6.22.tar.gz new file mode 100644 index 0000000..d241b63 --- /dev/null +++ b/_service:download_url:boinc-client_release-7.6-7.6.22.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b5b2b211725bc46399d3504bd6b0b60a9f9506d9f6b5a04d524991f239c16585 +size 44305861 diff --git a/boinc-7.2.42.tar.bz2 b/boinc-7.2.42.tar.bz2 deleted file mode 100644 index bd0a502..0000000 --- a/boinc-7.2.42.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:dfff203487f9d030f916891074f978abde6c0d34b3147cfc36e42a5060b8d4b8 -size 40873943 diff --git a/boinc-LC_MESSAGES.patch b/boinc-LC_MESSAGES.patch deleted file mode 100644 index 5716b06..0000000 --- a/boinc-LC_MESSAGES.patch +++ /dev/null @@ -1,20 +0,0 @@ -Index: locale/Makefile.am -=================================================================== ---- locale/Makefile.am.orig -+++ locale/Makefile.am -@@ -45,12 +45,12 @@ locale_dirs = \ - install-data-hook: - mydir=$(DESTDIR)$(datadir) ;\ - for ldir in $(locale_dirs) ; do \ -- $(INSTALL) -d $$mydir/$$ldir ; \ -+ $(INSTALL) -d $$mydir/$$ldir/LC_MESSAGES ; \ - if [ -f $$ldir/BOINC-Manager.mo ] ; then \ -- $(INSTALL_DATA) $$ldir/BOINC-Manager.mo $$mydir/$$ldir/BOINC-Manager.mo ; \ -+ $(INSTALL_DATA) $$ldir/BOINC-Manager.mo $$mydir/$$ldir/LC_MESSAGES/BOINC-Manager.mo ; \ - fi ;\ - if [ -f $$ldir/BOINC-Client.mo ] ; then \ -- $(INSTALL_DATA) $$ldir/BOINC-Client.mo $$mydir/$$ldir/BOINC-Client.mo ; \ -+ $(INSTALL_DATA) $$ldir/BOINC-Client.mo $$mydir/$$ldir/LC_MESSAGES/BOINC-Client.mo ; \ - fi ;\ - done - diff --git a/boinc-client-AM_CONDITIONAL.patch b/boinc-client-AM_CONDITIONAL.patch index 159e49b..512cb03 100644 --- a/boinc-client-AM_CONDITIONAL.patch +++ b/boinc-client-AM_CONDITIONAL.patch @@ -2,7 +2,7 @@ Index: configure.ac =================================================================== --- configure.ac.orig +++ configure.ac -@@ -45,6 +45,7 @@ m4_ifdef([AC_PROG_OBJCXX],[AC_PROG_OBJCX +@@ -64,6 +64,7 @@ m4_ifdef([AC_PROG_OBJCXX],[AC_PROG_OBJCX dnl ------ AC_PROG_F77 AC_PROG_CPP @@ -10,7 +10,7 @@ Index: configure.ac AC_PROG_MAKE_SET SAH_LINKS AC_LANG_PUSH(C) -@@ -793,6 +794,8 @@ AM_CONDITIONAL(ENABLE_LIBRARIES, [test " +@@ -1071,6 +1072,8 @@ AM_CONDITIONAL(ENABLE_LIBRARIES, [test " AM_CONDITIONAL(INSTALL_HEADERS, [test "${enable_install_headers}" = yes]) AM_CONDITIONAL(HAVE_CUDA_LIB, [test "${enable_client}" = yes -a -f ./coprocs/CUDA/posix/${boinc_platform}/libcudart.so]) @@ -19,19 +19,3 @@ Index: configure.ac dnl ====================================================================== dnl some more vodoo required for building portable client-binary (client, clientgui) dnl ====================================================================== -Index: clientgui/Makefile.am -=================================================================== ---- clientgui/Makefile.am.orig -+++ clientgui/Makefile.am -@@ -117,9 +117,8 @@ EXTRA_DIST = *.h \ - ../lib/error_numbers.h \ - locale $(mac_headers) - --boincmgr_CPPFLAGS = $(AM_CPPFLAGS) $(WX_CPPFLAGS) $(SQLITE3_CPPFLAGS) $(LIBNOTIFY_CFLAGS) $(CLIENTGUIFLAGS) `pkg-config --cflags gtk+-2.0` --boincmgr_CXXFLAGS = $(AM_CXXFLAGS) $(WX_CXXFLAGS) $(SQLITE3_CPPFLAGS) $(LIBNOTIFY_CFLAGS) $(CLIENTGUIFLAGS) `pkg-config --cflags gtk+-2.0` --boincmgr_LDFLAGS = $(LIBBOINC) $(SQLITE3_LIBS) $(LIBNOTIFY_LIBS) $(CLIENTGUILIBS) $(BOINC_EXTRA_LIBS) $(CLIENTLIBS) `pkg-config --libs gtk+-2.0` -lnotify -+boincmgr_CPPFLAGS = $(AM_CPPFLAGS) $(WX_CPPFLAGS) $(SQLITE3_CPPFLAGS) $(LIBNOTIFY_CFLAGS) $(CLIENTGUIFLAGS) $(GTK2_CFLAGS) -+boincmgr_LDFLAGS = $(LIBBOINC) $(SQLITE3_LIBS) $(LIBNOTIFY_LIBS) $(CLIENTGUILIBS) $(BOINC_EXTRA_LIBS) $(CLIENTLIBS) $(GTK2_LIBS) -lnotify - - win_config.h: $(top_srcdir)/config.h - grep '#define.*BOINC.*VERSION' $^ > $@ diff --git a/boinc-client.changes b/boinc-client.changes index 5b78f9c..009253b 100644 --- a/boinc-client.changes +++ b/boinc-client.changes @@ -1,3 +1,35 @@ +------------------------------------------------------------------- +Fri Apr 22 21:48:48 UTC 2016 - aaronpuchert@alice-dsl.net + +- Replaced quick fix for compiler errors by a proper solution, + which is already upstreamed. +- Removed dependency to mysql, because that is only needed for the + BOINC server, which we don't build anyway. +- Removed dependency to libboinc, because it's meant to be + statically linked to science apps and not necessary for end user. + +------------------------------------------------------------------- +Sun Mar 27 22:13:10 UTC 2016 - aaronpuchert@alice-dsl.net + +- Update to version 7.6.22. The main advantage: GPUs running on + the open source stack (Mesa) are now recognized and can be used + for BOINC. Additional packages are needed though: + * libOpenCL1, + * libMesaOpenCL, + * libclc. + Further, the GPU device in /dev/dri needs to have r+w rights for + the BOINC user, since it doesn't have access to the X session. +- Fetch from GitHub instead of SVN, removed the fetch script +- Rebased all patches, removed obsolete boinc-LC_MESSAGES.patch +- Fixed compiler errors because openSUSEs wxWidgets is configured + with wxUSE_STL=1, which is incompatible with BOINC. There is an + open issue on GitHub: https://github.com/BOINC/boinc/issues/1515. +- Building the manager and locales separately is no longer + necessary. +- The icons seem to have disappeared. +- The BOINC manager should be called with the data directory + instead of the binary directory. Otherwise it can't connect. + ------------------------------------------------------------------- Wed Jun 24 10:53:06 UTC 2015 - jengelh@inai.de diff --git a/boinc-client.spec b/boinc-client.spec index 6cc2027..134e897 100644 --- a/boinc-client.spec +++ b/boinc-client.spec @@ -1,7 +1,8 @@ # # spec file for package boinc-client # -# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2016 by Aaron Puchert # Copyright (c) 2011 by Sascha Manns # # All modifications and additions to the file contributed by third parties @@ -19,40 +20,22 @@ # Global definitions %define _use_internal_dependency_generator 0 -%define __find_requires %{wx_requires} %define soname 7 %define boinc_dir %{_localstatedir}/lib/boinc Name: boinc-client -Version: 7.2.42 +Version: 7.6.22 Release: 0 Summary: The BOINC client License: GPL-3.0+ or LGPL-3.0+ Group: Productivity/Clustering/Computing Url: http://boinc.berkeley.edu/ -# There is no real tarball, hence I did -# -# git clone git://boinc.berkeley.edu/boinc.git -# git checkout master -# git checkout -t client_release/7.2/7.2.42 -# -# then I created an archive via git -# -# git archive -v --format=tar --prefix=boinc-7.2.42/ \ -# client_release/7.2/7.2.42 | bzip2 >../boinc-7.2.42.tar.bz2 -Source0: boinc-%{version}.tar.bz2 +Source0: %{name}_release-7.6-%{version}.tar.gz Source1: boinc-icons.tar.bz2 Source2: boinc-gui.desktop Source3: README.SUSE Source4: sysconfig.%{name} Source5: boinc-logrotate Source6: boinc-manager -# The source for this package was pulled from upstream's vcs. Use the -# following commands to generate the tarball: -# -# ./generate-tarball.sh boinc_core_release_VERSION -# -# Trim all binaries and other unnecessary things. -Source8: generate-tarball.sh Source20: %{name}.service Source100: %{name}-rpmlintrc # PATCH-FIX-OPENSUSE boinc-guirpcauth.patch @@ -61,8 +44,6 @@ Source100: %{name}-rpmlintrc # This won't be probably upstreamed as it might be unsafe for common usage # without setting proper group ownership of the password file. Patch0: boinc-guirpcauth.patch -# PATCH-FIX-OPENSUSE boinc-LC_MESSAGES.patch -Patch2: boinc-LC_MESSAGES.patch # PATCH-FIX-OPENSUSE boinc-docbook2x.patch Patch4: boinc-docbook2x.patch # PATCH-FIX-OPENSUSE coolo - #error: am__fastdepOBJCXX does not appear in AM_CONDITIONAL @@ -71,6 +52,15 @@ Patch7: %{name}-AM_CONDITIONAL.patch # configure.ac:898: required file `test/version.inc.in' not found # configure.ac:898: required file `py/Boinc/version.py.in' not found Patch8: boinc-configure.patch +# PATCH-FIX-UPSTREAM boinc-remove-dead-code.patch +# This is a cherry-pick of commit 1c4f391 and removes dead code that wouldn't +# compile on openSUSE +Patch9: boinc-remove-dead-code.patch +# PATCH-FIX-UPSTREAM boinc-use-wxstring.patch +# This is a squashed cherry-pick of the commits 9604566, b7cc65a and 8c11cad. +# This solves the remaining compiler errors on openSUSE by replacing naked +# char* and wxChar* by wxStrings. +Patch10: boinc-use-wxstring.patch BuildRequires: Mesa-devel BuildRequires: docbook2x BuildRequires: docbook_4 @@ -84,21 +74,14 @@ BuildRequires: libjpeg-devel BuildRequires: libnotify-devel BuildRequires: libtool BuildRequires: libxslt -BuildRequires: mysql-devel BuildRequires: openssl-devel BuildRequires: pkg-config BuildRequires: pwdutils -BuildRequires: python-mysql BuildRequires: sqlite3-devel BuildRequires: systemd BuildRequires: update-desktop-files -BuildRequires: wxWidgets-devel >= 2.8.0 +BuildRequires: wxWidgets-3_0-devel >= 3.0.2 BuildRequires: xorg-x11-libXmu-devel -### FIXME: -## updating boinc-client or boinc-manager does not update libboinc6 -## hence we define this dependency -## !! Do not remove this dependency !! -Requires: libboinc%{soname} = %{version}-%{release} Recommends: boinc-client-lang = %{version} Recommends: logrotate Requires(pre): pwdutils @@ -146,7 +129,6 @@ in which all information and all control elements are available. Summary: Development files for boinc-client Group: Development/Libraries/C and C++ Requires: %{name} = %{version}-%{release} -Requires: mysql-devel Requires: openssl-devel %description devel @@ -172,30 +154,19 @@ BuildArch: noarch This package contains documentation files for %{name}. %prep -%setup -q -n boinc-%{version} -D -a 1 +%setup -q -n %{name}_release-7.6-%{version} -D -a 1 %patch0 -%patch2 %patch4 %patch7 %patch8 +%patch9 -p1 +%patch10 -p1 # Install user hints install -m0644 %{SOURCE3} README.SUSE # Fix lang directories (refer patch2) mv locale/pt_PT locale/pt -mv locale/sv_SE locale/sv - -# fix warning: deprecated conversion from string constant to 'char*' -pushd clientgui/common/ -sed -i 's/static char/static const char/g' wxFlatNotebookImages.h -popd -pushd clientgui/res/ -sed -i 's/static char/static const char/g' *.xpm -popd -pushd clientgui/res/skins/default/graphic/ -sed -i 's/static char/static const char/g' *.xpm -popd # fix utf8 iconv -f ISO88591 -t UTF8 < checkin_notes_2005 > checkin_notes_2005.utf8 @@ -214,13 +185,10 @@ mv checkin_notes_2010.utf8 checkin_notes_2010 chmod 644 clientgui/{DlgItemProperties.h,AsyncRPC.cpp,DlgItemProperties.cpp} sed -i 's/\r//' clientgui/DlgItemProperties.cpp -### bnc#745656 ## remove files with questionable licenses # removing NVIDIA owned file that does not clearly allow redistribution or # modification rm coprocs/NVIDIA/include/nvapi.h -# removing unnecessary APSL licensed files -rm client/app_stats_mac.cpp %build #remove run libtoolize and ./_autosetup @@ -228,6 +196,8 @@ rm client/app_stats_mac.cpp ./_autosetup %configure \ + --enable-optimize \ + --enable-shared \ --disable-static \ --enable-dynamic-client-linkage \ --disable-server \ @@ -247,22 +217,6 @@ make libboinc_la_LIBADD="-L%{_libdir} -lssl -ldl" \ CXXFLAGS="%{optflags} -g -W -pipe -fno-strict-aliasing -D_REENTRANT" \ DESTDIR=%{_prefix} %{?_smp_mflags} -### hmm, boincmgr is not build by default (but stated in configure) -# BOINC Default enable values -# --enable-server --enable-client --enable-libraries -# --enable-manager: builds server, client, and libraries -# -# hence we jump into clientgui and build it manually -pushd clientgui -make libboinc_la_LIBADD="-L%{_libdir} -lssl -ldl" \ - CFLAGS="%{optflags} -g -W -pipe -fno-strict-aliasing -D_REENTRANT -lgtk-x11-2.0" \ - CXXFLAGS="%{optflags} -g -W -pipe -fno-strict-aliasing -D_REENTRANT -lgtk-x11-2.0" \ - DESTDIR=%{_prefix} %{?_smp_mflags} -popd -pushd locale -make %{?_smp_mflags} -popd - %install make DESTDIR=%{buildroot} install %{?_smp_mflags} for i in clientgui locale; do @@ -322,11 +276,6 @@ install -Dm0644 boinc-gui-32.png %{buildroot}%{_datadir}/icons/hicolor/32x32/app install -Dm0644 boinc-gui-22.png %{buildroot}%{_datadir}/icons/hicolor/22x22/apps/boinc-gui.png install -Dm0644 boinc-gui-16.png %{buildroot}%{_datadir}/icons/hicolor/16x16/apps/boinc-gui.png -# install icons -install -m0644 clientgui/res/boincmgr.16x16.png %{buildroot}%{_datadir}/icons/hicolor/16x16/apps/boincmanager.png -install -m0644 clientgui/res/boincmgr.32x32.png %{buildroot}%{_datadir}/icons/hicolor/32x32/apps/boincmanager.png -install -m0644 clientgui/res/boincmgr.48x48.png %{buildroot}%{_datadir}/icons/hicolor/48x48/apps/boincmanager.png - # Install *.desktop File %suse_update_desktop_file -i boinc-gui Utility diff --git a/boinc-configure.patch b/boinc-configure.patch index 0b83522..5069f36 100644 --- a/boinc-configure.patch +++ b/boinc-configure.patch @@ -2,7 +2,7 @@ Index: configure.ac =================================================================== --- configure.ac.orig +++ configure.ac -@@ -968,7 +968,6 @@ AC_CONFIG_FILES([ +@@ -1305,7 +1305,6 @@ AC_CONFIG_FILES([ lib/Makefile locale/Makefile Makefile @@ -10,8 +10,8 @@ Index: configure.ac py/Makefile py/boinc_path_config.py:py/boinc_path_config.py.in py/setup.py -@@ -990,7 +989,6 @@ AC_CONFIG_FILES([ - packages/solaris/CSW/boincmanager/prototype +@@ -1328,7 +1327,6 @@ AC_CONFIG_FILES([ + samples/Makefile test/boinc_path_config.py:py/boinc_path_config.py.in test/Makefile - test/version.inc diff --git a/boinc-docbook2x.patch b/boinc-docbook2x.patch index 68a5c1d..fe8f2b0 100644 --- a/boinc-docbook2x.patch +++ b/boinc-docbook2x.patch @@ -2,7 +2,7 @@ Index: configure.ac =================================================================== --- configure.ac.orig +++ configure.ac -@@ -297,7 +297,7 @@ AC_SUBST([TOP_BUILD_DIR], [`pwd`]) +@@ -333,7 +333,7 @@ AC_SUBST([TOP_BUILD_DIR], [`pwd`]) dnl Check for docbook2x-man, which we use to create the manpages in dnl doc/manpages, and set the conditional HAVE_DOCBOOK2X_MAN to build dnl the manpages only if docbook2x-man is available. diff --git a/boinc-guirpcauth.patch b/boinc-guirpcauth.patch index 92b7b5c..4d784b1 100644 --- a/boinc-guirpcauth.patch +++ b/boinc-guirpcauth.patch @@ -2,7 +2,7 @@ Index: client/gui_rpc_server.cpp =================================================================== --- client/gui_rpc_server.cpp.orig +++ client/gui_rpc_server.cpp -@@ -169,12 +169,7 @@ void GUI_RPC_CONN_SET::get_password() { +@@ -175,12 +175,7 @@ void GUI_RPC_CONN_SET::get_password() { // they can cause code to execute as this user. // So better protect it. // diff --git a/boinc-manager b/boinc-manager index 8f72960..31b1670 100644 --- a/boinc-manager +++ b/boinc-manager @@ -7,4 +7,4 @@ if ! test -f ~/gui_rpc_auth.cfg ; then ln -s @boinc_dir@/gui_rpc_auth.cfg ~/. fi -exec boinc-gui -e @bindir@ +exec boinc-gui -d @boinc_dir@ diff --git a/boinc-remove-dead-code.patch b/boinc-remove-dead-code.patch new file mode 100644 index 0000000..732ffc9 --- /dev/null +++ b/boinc-remove-dead-code.patch @@ -0,0 +1,465 @@ +diff --git a/clientgui/AdvancedFrame.cpp b/clientgui/AdvancedFrame.cpp +index e9b08e8..5c41497 100644 +--- a/clientgui/AdvancedFrame.cpp ++++ b/clientgui/AdvancedFrame.cpp +@@ -199,7 +199,6 @@ BEGIN_EVENT_TABLE (CAdvancedFrame, CBOINCBaseFrame) + // Custom Events & Timers + EVT_FRAME_CONNECT(CAdvancedFrame::OnConnect) + EVT_FRAME_NOTIFICATION(CAdvancedFrame::OnNotification) +- EVT_FRAME_UPDATESTATUS(CAdvancedFrame::OnUpdateStatus) + EVT_TIMER(ID_REFRESHSTATETIMER, CAdvancedFrame::OnRefreshState) + EVT_TIMER(ID_FRAMERENDERTIMER, CAdvancedFrame::OnFrameRender) + EVT_NOTEBOOK_PAGE_CHANGED(ID_FRAMENOTEBOOK, CAdvancedFrame::OnNotebookSelectionChanged) +@@ -1951,16 +1950,6 @@ void CAdvancedFrame::OnNotification(CFrameEvent& WXUNUSED(event)) { + } + + +-void CAdvancedFrame::OnUpdateStatus(CFrameEvent& event) { +- wxLogTrace(wxT("Function Start/End"), wxT("CAdvancedFrame::OnUpdateStatus - Function Begin")); +- +- m_pStatusbar->SetStatusText(event.m_message); +- ::wxSleep(0); +- +- wxLogTrace(wxT("Function Start/End"), wxT("CAdvancedFrame::OnUpdateStatus - Function End")); +-} +- +- + void CAdvancedFrame::OnRefreshState(wxTimerEvent& WXUNUSED(event)) { + wxLogTrace(wxT("Function Start/End"), wxT("CAdvancedFrame::OnRefreshState - Function Begin")); + +diff --git a/clientgui/AdvancedFrame.h b/clientgui/AdvancedFrame.h +index a44bce9..4ddfc60 100644 +--- a/clientgui/AdvancedFrame.h ++++ b/clientgui/AdvancedFrame.h +@@ -98,8 +98,6 @@ public: + void OnConnect( CFrameEvent& event ); + void OnNotification( CFrameEvent& event ); + +- void OnUpdateStatus( CFrameEvent& event ); +- + void ResetReminderTimers(); + + bool RestoreState(); +diff --git a/clientgui/BOINCBaseFrame.h b/clientgui/BOINCBaseFrame.h +index 3e226bf..0d4ef92 100644 +--- a/clientgui/BOINCBaseFrame.h ++++ b/clientgui/BOINCBaseFrame.h +@@ -87,8 +87,6 @@ public: + virtual void StopTimers(); + virtual void UpdateRefreshTimerInterval(); + +- inline void UpdateStatusText( const wxChar* ){} +- + void ShowAlert( + const wxString title, + const wxString message, +diff --git a/clientgui/MainDocument.cpp b/clientgui/MainDocument.cpp +index 9fa22c4..fa7b953 100644 +--- a/clientgui/MainDocument.cpp ++++ b/clientgui/MainDocument.cpp +@@ -581,7 +581,6 @@ int CMainDocument::OnPoll() { + } + + if (IsComputerNameLocal(hostName)) { +- pFrame->UpdateStatusText(_("Starting client")); + if (m_pClientManager->StartupBOINCCore()) { + Connect(wxT("localhost"), portNum, password, TRUE, TRUE); + } else { +@@ -589,11 +588,8 @@ int CMainDocument::OnPoll() { + pFrame->ShowDaemonStartFailedAlert(); + } + } else { +- pFrame->UpdateStatusText(_("Connecting to client")); + Connect(hostName, portNum, password, TRUE, password.IsEmpty()); + } +- +- pFrame->UpdateStatusText(wxEmptyString); + } + + // Check connection state, connect if needed. +@@ -1203,7 +1199,6 @@ int CMainDocument::ForceCacheUpdate(bool immediate) { + + if (IsConnected()) { + wxASSERT(wxDynamicCast(pFrame, CBOINCBaseFrame)); +- pFrame->UpdateStatusText(_("Retrieving system state; please wait...")); + + m_dtCachedStateTimestamp = wxDateTime::Now(); + m_iGet_state_rpc_result = rpc.get_state(state); +@@ -1213,7 +1208,6 @@ int CMainDocument::ForceCacheUpdate(bool immediate) { + m_pNetworkConnection->SetStateDisconnected(); + } + +- pFrame->UpdateStatusText(wxEmptyString); + } else { + retval = -1; + } +diff --git a/clientgui/ViewProjects.cpp b/clientgui/ViewProjects.cpp +index e7be8ba..d63f622 100644 +--- a/clientgui/ViewProjects.cpp ++++ b/clientgui/ViewProjects.cpp +@@ -390,7 +390,6 @@ void CViewProjects::OnProjectUpdate( wxCommandEvent& WXUNUSED(event) ) { + wxASSERT(wxDynamicCast(pFrame, CAdvancedFrame)); + wxASSERT(m_pListPane); + +- pFrame->UpdateStatusText(_("Updating project...")); + row = -1; + while (1) { + // Step through all selected items +@@ -399,7 +398,6 @@ void CViewProjects::OnProjectUpdate( wxCommandEvent& WXUNUSED(event) ) { + + pDoc->ProjectUpdate(m_iSortedIndexes[row]); + } +- pFrame->UpdateStatusText(wxT("")); + + m_bForceUpdateSelection = true; + UpdateSelection(); +@@ -432,13 +430,9 @@ void CViewProjects::OnProjectSuspend( wxCommandEvent& WXUNUSED(event) ) { + PROJECT* project = pDoc->project(m_iSortedIndexes[row]); + if (project) { + if (project->suspended_via_gui) { +- pFrame->UpdateStatusText(_("Resuming project...")); + pDoc->ProjectResume(m_iSortedIndexes[row]); +- pFrame->UpdateStatusText(wxT("")); + } else { +- pFrame->UpdateStatusText(_("Suspending project...")); + pDoc->ProjectSuspend(m_iSortedIndexes[row]); +- pFrame->UpdateStatusText(wxT("")); + } + } + } +@@ -473,13 +467,9 @@ void CViewProjects::OnProjectNoNewWork( wxCommandEvent& WXUNUSED(event) ) { + PROJECT* project = pDoc->project(m_iSortedIndexes[row]); + if (project) { + if (project->dont_request_more_work) { +- pFrame->UpdateStatusText(_("Telling project to allow additional task downloads...")); + pDoc->ProjectAllowMoreWork(m_iSortedIndexes[row]); +- pFrame->UpdateStatusText(wxT("")); + } else { +- pFrame->UpdateStatusText(_("Telling project to not fetch any additional tasks...")); + pDoc->ProjectNoMoreWork(m_iSortedIndexes[row]); +- pFrame->UpdateStatusText(wxT("")); + } + } + } +@@ -513,8 +503,6 @@ void CViewProjects::OnProjectReset( wxCommandEvent& WXUNUSED(event) ) { + if (!pDoc->IsUserAuthorized()) + return; + +- pFrame->UpdateStatusText(_("Resetting project...")); +- + row = -1; + while (1) { + // Step through all selected items +@@ -542,8 +530,6 @@ void CViewProjects::OnProjectReset( wxCommandEvent& WXUNUSED(event) ) { + } + } + +- pFrame->UpdateStatusText(wxT("")); +- + m_bForceUpdateSelection = true; + UpdateSelection(); + pFrame->FireRefreshView(); +@@ -571,8 +557,6 @@ void CViewProjects::OnProjectDetach( wxCommandEvent& WXUNUSED(event) ) { + if (!pDoc->IsUserAuthorized()) + return; + +- pFrame->UpdateStatusText(_("Removing project...")); +- + row = -1; + while (1) { + // Step through all selected items +@@ -600,8 +584,6 @@ void CViewProjects::OnProjectDetach( wxCommandEvent& WXUNUSED(event) ) { + } + } + +- pFrame->UpdateStatusText(wxT("")); +- + m_bForceUpdateSelection = true; + UpdateSelection(); + pFrame->FireRefreshView(); +@@ -631,15 +613,12 @@ void CViewProjects::OnProjectWebsiteClicked( wxEvent& event ) { + + wxASSERT(pFrame); + wxASSERT(wxDynamicCast(pFrame, CAdvancedFrame)); +- pFrame->UpdateStatusText(_("Launching browser...")); + + int website_task_index = event.GetId() - ID_TASK_PROJECT_WEB_PROJDEF_MIN; + wxLaunchDefaultBrowser( + m_TaskGroups[1]->m_Tasks[website_task_index]->m_strWebSiteLink + ); + +- pFrame->UpdateStatusText(wxT("")); +- + UpdateSelection(); + pFrame->FireRefreshView(); + +diff --git a/clientgui/ViewStatistics.cpp b/clientgui/ViewStatistics.cpp +index 6706d84..83564ce 100644 +--- a/clientgui/ViewStatistics.cpp ++++ b/clientgui/ViewStatistics.cpp +@@ -2074,12 +2074,10 @@ void CViewStatistics::OnStatisticsUserTotal( wxCommandEvent& WXUNUSED(event) ) { + wxASSERT(pFrame); + wxASSERT(wxDynamicCast(pFrame, CAdvancedFrame)); + +- pFrame->UpdateStatusText(_("Updating charts...")); + m_PaintStatistics->m_SelectedStatistic = show_user_total; + m_PaintStatistics->m_Zoom_Auto = true; + m_PaintStatistics->m_GraphMarker1 = false; + m_PaintStatistics->m_full_repaint = true; +- pFrame->UpdateStatusText(wxT("")); + + UpdateSelection(); + pFrame->FireRefreshView(); +@@ -2095,12 +2093,10 @@ void CViewStatistics::OnStatisticsUserAverage( wxCommandEvent& WXUNUSED(event) ) + wxASSERT(pFrame); + wxASSERT(wxDynamicCast(pFrame, CAdvancedFrame)); + +- pFrame->UpdateStatusText(_("Updating charts...")); + m_PaintStatistics->m_SelectedStatistic = show_user_average; + m_PaintStatistics->m_Zoom_Auto = true; + m_PaintStatistics->m_GraphMarker1 = false; + m_PaintStatistics->m_full_repaint = true; +- pFrame->UpdateStatusText(wxT("")); + + UpdateSelection(); + pFrame->FireRefreshView(); +@@ -2116,12 +2112,10 @@ void CViewStatistics::OnStatisticsHostTotal( wxCommandEvent& WXUNUSED(event) ) { + wxASSERT(pFrame); + wxASSERT(wxDynamicCast(pFrame, CAdvancedFrame)); + +- pFrame->UpdateStatusText(_("Updating charts...")); + m_PaintStatistics->m_SelectedStatistic = show_host_total; + m_PaintStatistics->m_Zoom_Auto = true; + m_PaintStatistics->m_GraphMarker1 = false; + m_PaintStatistics->m_full_repaint = true; +- pFrame->UpdateStatusText(wxT("")); + + UpdateSelection(); + pFrame->FireRefreshView(); +@@ -2138,12 +2132,10 @@ void CViewStatistics::OnStatisticsHostAverage( wxCommandEvent& WXUNUSED(event) ) + wxASSERT(pFrame); + wxASSERT(wxDynamicCast(pFrame, CAdvancedFrame)); + +- pFrame->UpdateStatusText(_("Updating charts...")); + m_PaintStatistics->m_SelectedStatistic = show_host_average; + m_PaintStatistics->m_Zoom_Auto = true; + m_PaintStatistics->m_GraphMarker1 = false; + m_PaintStatistics->m_full_repaint = true; +- pFrame->UpdateStatusText(wxT("")); + + UpdateSelection(); + pFrame->FireRefreshView(); +@@ -2159,12 +2151,10 @@ void CViewStatistics::OnStatisticsModeViewAllSeparate( wxCommandEvent& WXUNUSED( + wxASSERT(pFrame); + wxASSERT(wxDynamicCast(pFrame, CAdvancedFrame)); + +- pFrame->UpdateStatusText(_("Updating charts...")); + m_PaintStatistics->m_ModeViewStatistic = mode_all_separate; + m_PaintStatistics->m_Zoom_Auto = true; + m_PaintStatistics->m_GraphMarker1 = false; + m_PaintStatistics->m_full_repaint = true; +- pFrame->UpdateStatusText(wxT("")); + + UpdateSelection(); + pFrame->FireRefreshView(); +@@ -2180,12 +2170,10 @@ void CViewStatistics::OnStatisticsModeViewOneProject( wxCommandEvent& WXUNUSED(e + wxASSERT(pFrame); + wxASSERT(wxDynamicCast(pFrame, CAdvancedFrame)); + +- pFrame->UpdateStatusText(_("Updating charts...")); + m_PaintStatistics->m_ModeViewStatistic = mode_one_project; + m_PaintStatistics->m_Zoom_Auto = true; + m_PaintStatistics->m_GraphMarker1 = false; + m_PaintStatistics->m_full_repaint = true; +- pFrame->UpdateStatusText(wxT("")); + + UpdateSelection(); + pFrame->FireRefreshView(); +@@ -2201,12 +2189,10 @@ void CViewStatistics::OnStatisticsModeViewAllTogether( wxCommandEvent& WXUNUSED( + wxASSERT(pFrame); + wxASSERT(wxDynamicCast(pFrame, CAdvancedFrame)); + +- pFrame->UpdateStatusText(_("Updating charts...")); + m_PaintStatistics->m_ModeViewStatistic = mode_all_together; + m_PaintStatistics->m_Zoom_Auto = true; + m_PaintStatistics->m_GraphMarker1 = false; + m_PaintStatistics->m_full_repaint = true; +- pFrame->UpdateStatusText(wxT("")); + + UpdateSelection(); + pFrame->FireRefreshView(); +@@ -2222,12 +2208,10 @@ void CViewStatistics::OnStatisticsModeViewSum( wxCommandEvent& WXUNUSED(event) ) + wxASSERT(pFrame); + wxASSERT(wxDynamicCast(pFrame, CAdvancedFrame)); + +- pFrame->UpdateStatusText(_("Updating charts...")); + m_PaintStatistics->m_ModeViewStatistic = mode_sum; + m_PaintStatistics->m_Zoom_Auto = true; + m_PaintStatistics->m_GraphMarker1 = false; + m_PaintStatistics->m_full_repaint = true; +- pFrame->UpdateStatusText(wxT("")); + + UpdateSelection(); + pFrame->FireRefreshView(); +@@ -2243,7 +2227,6 @@ void CViewStatistics::OnStatisticsNextProject( wxCommandEvent& WXUNUSED(event) ) + wxASSERT(pFrame); + wxASSERT(wxDynamicCast(pFrame, CAdvancedFrame)); + +- pFrame->UpdateStatusText(_("Updating charts...")); + if (m_PaintStatistics->m_ModeViewStatistic == mode_one_project) m_PaintStatistics->m_NextProjectStatistic++; + m_PaintStatistics->m_Zoom_Auto = true; + m_PaintStatistics->m_GraphMarker1 = false; +@@ -2251,7 +2234,6 @@ void CViewStatistics::OnStatisticsNextProject( wxCommandEvent& WXUNUSED(event) ) + if (m_PaintStatistics->m_ModeViewStatistic == mode_all_separate) m_PaintStatistics->m_Legend_Shift_Mode2++; + if (m_PaintStatistics->m_ModeViewStatistic == mode_all_together) m_PaintStatistics->m_Legend_Shift_Mode2++; + if (m_PaintStatistics->m_ModeViewStatistic == mode_sum) m_PaintStatistics->m_Legend_Shift_Mode2++; +- pFrame->UpdateStatusText(wxT("")); + + UpdateSelection(); + pFrame->FireRefreshView(); +@@ -2267,7 +2249,6 @@ void CViewStatistics::OnStatisticsPrevProject( wxCommandEvent& WXUNUSED(event) ) + wxASSERT(pFrame); + wxASSERT(wxDynamicCast(pFrame, CAdvancedFrame)); + +- pFrame->UpdateStatusText(_("Updating charts...")); + if (m_PaintStatistics->m_ModeViewStatistic == mode_one_project) m_PaintStatistics->m_NextProjectStatistic--; + m_PaintStatistics->m_Zoom_Auto = true; + m_PaintStatistics->m_GraphMarker1 = false; +@@ -2275,7 +2256,6 @@ void CViewStatistics::OnStatisticsPrevProject( wxCommandEvent& WXUNUSED(event) ) + if (m_PaintStatistics->m_ModeViewStatistic == mode_all_separate) m_PaintStatistics->m_Legend_Shift_Mode2--; + if (m_PaintStatistics->m_ModeViewStatistic == mode_all_together) m_PaintStatistics->m_Legend_Shift_Mode2--; + if (m_PaintStatistics->m_ModeViewStatistic == mode_sum) m_PaintStatistics->m_Legend_Shift_Mode2--; +- pFrame->UpdateStatusText(wxT("")); + + UpdateSelection(); + pFrame->FireRefreshView(); +diff --git a/clientgui/ViewTransfers.cpp b/clientgui/ViewTransfers.cpp +index cc2c4da..fc54121 100644 +--- a/clientgui/ViewTransfers.cpp ++++ b/clientgui/ViewTransfers.cpp +@@ -381,7 +381,6 @@ void CViewTransfers::OnTransfersRetryNow( wxCommandEvent& WXUNUSED(event) ) { + return; + } + +- pFrame->UpdateStatusText(_("Retrying transfer now...")); + row = -1; + while (1) { + // Step through all selected items +@@ -390,7 +389,6 @@ void CViewTransfers::OnTransfersRetryNow( wxCommandEvent& WXUNUSED(event) ) { + + pDoc->TransferRetryNow(m_iSortedIndexes[row]); + } +- pFrame->UpdateStatusText(wxT("")); + + UpdateSelection(); + pFrame->ResetReminderTimers(); +@@ -419,8 +417,6 @@ void CViewTransfers::OnTransfersAbort( wxCommandEvent& WXUNUSED(event) ) { + if (!pDoc->IsUserAuthorized()) + return; + +- pFrame->UpdateStatusText(_("Aborting transfer...")); +- + row = -1; + while (1) { + // Step through all selected items +@@ -448,8 +444,6 @@ void CViewTransfers::OnTransfersAbort( wxCommandEvent& WXUNUSED(event) ) { + } + } + +- pFrame->UpdateStatusText(wxT("")); +- + UpdateSelection(); + pFrame->FireRefreshView(); + +diff --git a/clientgui/ViewWork.cpp b/clientgui/ViewWork.cpp +index cdc7147..a48548f 100644 +--- a/clientgui/ViewWork.cpp ++++ b/clientgui/ViewWork.cpp +@@ -451,17 +451,13 @@ void CViewWork::OnWorkSuspend( wxCommandEvent& WXUNUSED(event) ) { + RESULT* result = pDoc->result(m_iSortedIndexes[row]); + if (result) { + if (result->suspended_via_gui) { +- pFrame->UpdateStatusText(_("Resuming task...")); + pDoc->WorkResume(result->project_url, result->name); + } else { +- pFrame->UpdateStatusText(_("Suspending task...")); + pDoc->WorkSuspend(result->project_url, result->name); + } + } + } + +- pFrame->UpdateStatusText(wxT("")); +- + UpdateSelection(); + pFrame->FireRefreshView(); + +@@ -483,8 +479,6 @@ void CViewWork::OnWorkShowGraphics( wxCommandEvent& WXUNUSED(event) ) { + wxASSERT(wxDynamicCast(pFrame, CAdvancedFrame)); + wxASSERT(m_pListPane); + +- pFrame->UpdateStatusText(_("Showing graphics for task...")); +- + row = -1; + while (1) { + // Step through all selected items +@@ -497,8 +491,6 @@ void CViewWork::OnWorkShowGraphics( wxCommandEvent& WXUNUSED(event) ) { + } + } + +- pFrame->UpdateStatusText(wxT("")); +- + UpdateSelection(); + pFrame->FireRefreshView(); + +@@ -520,8 +512,6 @@ void CViewWork::OnWorkShowVMConsole( wxCommandEvent& WXUNUSED(event) ) { + wxASSERT(wxDynamicCast(pFrame, CAdvancedFrame)); + wxASSERT(m_pListPane); + +- pFrame->UpdateStatusText(_("Showing VM console for task...")); +- + row = -1; + while (1) { + // Step through all selected items +@@ -534,8 +524,6 @@ void CViewWork::OnWorkShowVMConsole( wxCommandEvent& WXUNUSED(event) ) { + } + } + +- pFrame->UpdateStatusText(wxT("")); +- + UpdateSelection(); + pFrame->FireRefreshView(); + +@@ -593,8 +581,6 @@ void CViewWork::OnWorkAbort( wxCommandEvent& WXUNUSED(event) ) { + return; + } + +- pFrame->UpdateStatusText(_("Aborting task...")); +- + row = -1; + while (1) { + // Step through all selected items +@@ -607,8 +593,6 @@ void CViewWork::OnWorkAbort( wxCommandEvent& WXUNUSED(event) ) { + } + } + +- pFrame->UpdateStatusText(wxT("")); +- + UpdateSelection(); + pFrame->FireRefreshView(); + +@@ -693,15 +677,11 @@ void CViewWork::OnProjectWebsiteClicked( wxEvent& event ) { + wxASSERT(m_pTaskPane); + wxASSERT(m_pListPane); + +- pFrame->UpdateStatusText(_("Launching browser...")); +- + int website_task_index = event.GetId() - ID_TASK_PROJECT_WEB_PROJDEF_MIN; + wxLaunchDefaultBrowser( + m_TaskGroups[1]->m_Tasks[website_task_index]->m_strWebSiteLink + ); + +- pFrame->UpdateStatusText(wxT("")); +- + UpdateSelection(); + pFrame->FireRefreshView(); + diff --git a/boinc-use-wxstring.patch b/boinc-use-wxstring.patch new file mode 100644 index 0000000..44e4447 --- /dev/null +++ b/boinc-use-wxstring.patch @@ -0,0 +1,141 @@ +diff --git a/clientgui/BOINCBaseView.cpp b/clientgui/BOINCBaseView.cpp +index 0c64159..4337afc 100644 +--- a/clientgui/BOINCBaseView.cpp ++++ b/clientgui/BOINCBaseView.cpp +@@ -913,11 +913,11 @@ void CBOINCBaseView::AppendColumn(int){ + } + + +-void CBOINCBaseView::append_to_status(wxString& existing, const wxChar* additional) { ++void CBOINCBaseView::append_to_status(wxString& existing, const wxString& additional) { + if (existing.size() == 0) { + existing = additional; + } else { +- existing = existing + wxT(", ") + additional; ++ existing += wxT(", ") + additional; + } + } + +diff --git a/clientgui/BOINCBaseView.h b/clientgui/BOINCBaseView.h +index 811fecb..c7b4fb9 100644 +--- a/clientgui/BOINCBaseView.h ++++ b/clientgui/BOINCBaseView.h +@@ -193,7 +193,7 @@ protected: + bool _EnsureLastItemVisible(); + virtual bool EnsureLastItemVisible(); + +- static void append_to_status(wxString& existing, const wxChar* additional); ++ static void append_to_status(wxString& existing, const wxString& additional); + static wxString HtmlEntityEncode(wxString strRaw); + static wxString HtmlEntityDecode(wxString strRaw); + +diff --git a/clientgui/BOINCGUIApp.cpp b/clientgui/BOINCGUIApp.cpp +index 5674029..91d387a 100644 +--- a/clientgui/BOINCGUIApp.cpp ++++ b/clientgui/BOINCGUIApp.cpp +@@ -626,27 +626,23 @@ void CBOINCGUIApp::SaveState() { + /// + void CBOINCGUIApp::OnInitCmdLine(wxCmdLineParser &parser) { + wxApp::OnInitCmdLine(parser); +- static const wxCmdLineEntryDesc cmdLineDesc[] = { +- { wxCMD_LINE_SWITCH, "a", "autostart", _("BOINC Manager was started by the operating system automatically")}, ++ parser.AddSwitch("a", "autostart", _("BOINC Manager was started by the operating system automatically")); + #if defined(__WXMSW__) || defined(__WXMAC__) +- { wxCMD_LINE_SWITCH, "s", "systray", _("Startup BOINC so only the system tray icon is visible")}, ++ parser.AddSwitch("s", "systray", _("Startup BOINC so only the system tray icon is visible")); + #else +- { wxCMD_LINE_OPTION, "e", "clientdir", _("Directory containing the BOINC Client executable")}, +- { wxCMD_LINE_OPTION, "d", "datadir", _("BOINC data directory")}, ++ parser.AddOption("e", "clientdir", _("Directory containing the BOINC Client executable")); ++ parser.AddOption("d", "datadir", _("BOINC data directory")); + #endif +- { wxCMD_LINE_OPTION, "n", "namehost", _("Host name or IP address")}, +- { wxCMD_LINE_OPTION, "g", "gui_rpc_port", _("GUI RPC port number")}, +- { wxCMD_LINE_OPTION, "p", "password", _("Password")}, +- { wxCMD_LINE_OPTION, "b", "boincargs", _("Startup BOINC with these optional arguments")}, +- { wxCMD_LINE_SWITCH, "i","insecure", _("disable BOINC security users and permissions")}, +- { wxCMD_LINE_SWITCH, "c", "checkskins", _("set skin debugging mode to enable skin manager error messages")}, +- { wxCMD_LINE_SWITCH, "m", "multiple", _("multiple instances of BOINC Manager allowed")}, ++ parser.AddOption("n", "namehost", _("Host name or IP address")); ++ parser.AddOption("g", "gui_rpc_port", _("GUI RPC port number")); ++ parser.AddOption("p", "password", _("Password")); ++ parser.AddOption("b", "boincargs", _("Startup BOINC with these optional arguments")); ++ parser.AddSwitch("i", "insecure", _("disable BOINC security users and permissions")); ++ parser.AddSwitch("c", "checkskins", _("set skin debugging mode to enable skin manager error messages")); ++ parser.AddSwitch("m", "multiple", _("multiple instances of BOINC Manager allowed")); + #if (defined(__WXMAC__) && defined(_DEBUG)) +- { wxCMD_LINE_OPTION, "NSDocumentRevisionsDebugMode", NULL, _("Not used: workaround for bug in XCode 4.2")}, ++ parser.AddLongOption("NSDocumentRevisionsDebugMode", _("Not used: workaround for bug in XCode 4.2")); + #endif +- { wxCMD_LINE_NONE} //DON'T forget this line!! +- }; +- parser.SetDesc(cmdLineDesc); + } + + +diff --git a/clientgui/MainDocument.cpp b/clientgui/MainDocument.cpp +index fa7b953..1b0c165 100644 +--- a/clientgui/MainDocument.cpp ++++ b/clientgui/MainDocument.cpp +@@ -273,7 +273,7 @@ bool CNetworkConnection::IsComputerNameLocal(const wxString& strMachine) { + + + int CNetworkConnection::SetComputer( +- const wxChar* szComputer, const int iPort, const wxChar* szPassword, ++ const wxString& szComputer, const int iPort, const wxString& szPassword, + const bool bUseDefaultPassword + ) { + m_strNewComputerName.Empty(); +@@ -641,7 +641,7 @@ int CMainDocument::ResetState() { + } + + +-int CMainDocument::Connect(const wxChar* szComputer, int iPort, const wxChar* szComputerPassword, const bool bDisconnect, const bool bUseDefaultPassword) { ++int CMainDocument::Connect(const wxString& szComputer, int iPort, const wxString& szComputerPassword, const bool bDisconnect, const bool bUseDefaultPassword) { + if (IsComputerNameLocal(szComputer)) { + // Restart client if not already running + m_pClientManager->AutoRestart(); +@@ -687,7 +687,7 @@ int CMainDocument::GetConnectingComputerName(wxString& strMachine) { + } + + +-bool CMainDocument::IsComputerNameLocal(const wxString strMachine) { ++bool CMainDocument::IsComputerNameLocal(const wxString& strMachine) { + return m_pNetworkConnection->IsComputerNameLocal(strMachine); + } + +diff --git a/clientgui/MainDocument.h b/clientgui/MainDocument.h +index 3b88571..90c10b5 100644 +--- a/clientgui/MainDocument.h ++++ b/clientgui/MainDocument.h +@@ -75,8 +75,7 @@ public: + bool IsComputerNameLocal(const wxString& strMachine); + int GetLocalPassword(wxString& strPassword); + int SetComputer( +- const wxChar* szComputer, const int iPort, const wxChar* szPassword, +- const bool bUseDefaultPassword ++ const wxString& szComputer, const int iPort, const wxString& szPassword, const bool bUseDefaultPassword + ); + void SetStateError(); + void SetStateErrorAuthentication(); +@@ -134,9 +133,9 @@ public: + int ResetState(); + + int Connect( +- const wxChar* szComputer, ++ const wxString& szComputer, + const int iPort, +- const wxChar* szComputerPassword = wxEmptyString, ++ const wxString& szComputerPassword = wxEmptyString, + const bool bDisconnect = FALSE, + const bool bUseDefaultPassword = FALSE + ); +@@ -152,7 +151,7 @@ public: + int GetConnectedComputerName(wxString& strMachine); + int GetConnectedComputerVersion(wxString& strVersion); + int GetConnectingComputerName(wxString& strMachine); +- bool IsComputerNameLocal(const wxString strMachine); ++ bool IsComputerNameLocal(const wxString& strMachine); + bool IsConnected(); + bool IsReconnecting(); + diff --git a/generate-tarball.sh b/generate-tarball.sh deleted file mode 100644 index a256b1c..0000000 --- a/generate-tarball.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh - -VERSION=$1 - -svn co http://boinc.berkeley.edu/svn/tags/boinc_core_release_$VERSION boinc_core_release_$VERSION -if [ -z $1 ]; then - echo "No path specified: use \"trim [PATH_TO_SOURCE_TOP_DIR]\""; - exit 1; - fi - - # remove all binaries and other unnecessary things - - echo "Trimming directories..." - - DIRS="win_build html openssl client/os2 client/win clientgui/mac clientlib clienttray curl/include curl/mswin curl/patches lib/mac mac_build mac_installer zip/zip/macos zip/zip/win32 zip/unzip/macos zip/unzip/win32 zlib RSAEuro stripchart coprocs" - - for DIR in $DIRS; do - /bin/rm -rf $1/$DIR; - echo $1/$DIR; - done - - echo "Trimming wxWidgets translations..." - - # remove wxWidgets translations - find $1/locale -name wxstd.mo -delete - - echo "Done." - -tar -cvjf boinc_core_release-$VERSION.tar.bz2 boinc_core_release_$VERSION --exclude=.svn