Accepting request 238395 from network

- Remove needless rpmlintrc lines to ease error spotting when there
  really are some.

- Cleanup with spec-cleaner for better readability
- Move lang packages from Requires to Recommends

- Remove unused patch:
  * boinc-completion.patch
- Remove comments with unused patches
- Remove conditionals with inits as we don't build for such release
  anyway
- Provide rcboinc symlink for easier usage.

- some RPMLINT fixes
  * fix License: remove ','
  * non-standard-gid /var/lib/boinc boinc
    * SR #227671 to rpmlint
- fix deps for libxcb

- fix README.SUSE

# fix for bnc#779335
  * disabled boinc-completion.patch
- update to 7.2.42
  * Fix problem that was causing scheduler RPCs to fail on Yoyo@home
    (HTTP status code 400) 
  * for mor info have a look at
    http://boinc.berkeley.edu/wiki/Release_Notes
- removed obsolete patches:
  * boinc-client-dynamic_buffers.patch

OBS-URL: https://build.opensuse.org/request/show/238395
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/boinc-client?expand=0&rev=28
This commit is contained in:
Stephan Kulow 2014-06-26 13:07:15 +00:00 committed by Git OBS Bridge
commit 519bbc6c58
16 changed files with 237 additions and 564 deletions

View File

@ -34,8 +34,8 @@ are:
What the installer does
1. Creates the daemon script at /etc/init.d/boinc-client.
2. Places the BOINC binaries (boinc_client, boinc_cmd and boincmgr)
in /usr/bin/.
2. Places the BOINC binaries (boinc-client, boinccmd, boinc-gui
and boincmgr) in /usr/bin/.
3. Creates /var/lib/boinc/ for BOINC data files and the slots and
projects directories.
4. Names the daemon boinc-client.
@ -52,7 +52,7 @@ are:
2. If you elected to not have Linux start the daemon at boot time,
start the daemon manually with |/sbin/service boinc-client start|
3. Open a terminal and enter |ps aux | grep boinc| to print a partial
list of running processes. You should see |boinc_client --daemon|
list of running processes. You should see |boinc-client --dir ...|
in that list, if not then something went wrong in the steps above.
@ -95,7 +95,7 @@ manager, you can:
directory without becoming root. As you type in each command
below, substitute your Linux username wherever you see |username|.
Enter the following commands in a terminal, as root:
1. |/usr/sbin/usermod -G boinc -a username|
1. |/usr/sbin/usermod -A boinc username|
2. |chmod g+rw /var/lib/boinc|
3. |chmod g+rw /var/lib/boinc/*.*|
4. |ln -s /var/lib/boinc/gui_rpc_auth.cfg

3
boinc-7.2.42.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:dfff203487f9d030f916891074f978abde6c0d34b3147cfc36e42a5060b8d4b8
size 40873943

View File

@ -3,18 +3,18 @@ Index: locale/Makefile.am
--- locale/Makefile.am.orig
+++ locale/Makefile.am
@@ -45,12 +45,12 @@ locale_dirs = \
install-exec-hook:
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) $$ldir/BOINC-Manager.mo $$mydir/$$ldir/BOINC-Manager.mo ; \
+ $(INSTALL) $$ldir/BOINC-Manager.mo $$mydir/$$ldir/LC_MESSAGES/BOINC-Manager.mo ; \
- $(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) $$ldir/BOINC-Client.mo $$mydir/$$ldir/BOINC-Client.mo ; \
+ $(INSTALL) $$ldir/BOINC-Client.mo $$mydir/$$ldir/LC_MESSAGES/BOINC-Client.mo ; \
- $(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

View File

@ -1,41 +0,0 @@
Index: lib/filesys.cpp
===================================================================
--- lib/filesys.cpp.orig
+++ lib/filesys.cpp
@@ -47,6 +47,7 @@
#include <sys/time.h>
#include <unistd.h>
#include <dirent.h>
+#include <climits>
#if HAVE_SYS_RESOURCE_H
#include <sys/resource.h>
@@ -412,7 +413,8 @@
} while (FindNextFileA(hFind, &findData));
::FindClose(hFind);
#else
- char filename[1024], subdir[1024];
+ char filename[PATH_MAX];
+ char *subdir;;
int retval=0;
DIRREF dirp;
double x;
@@ -423,7 +425,7 @@
while (1) {
retval = dir_scan(filename, dirp, sizeof(filename));
if (retval) break;
- sprintf(subdir, "%s/%s", dirpath, filename);
+ asprintf(&subdir, "%s/%s", dirpath, filename);
if (is_dir(subdir)) {
if (recurse) {
@@ -436,6 +438,9 @@
if (retval) continue;
size += x;
}
+
+ if(subdir != NULL)
+ free(subdir);
}
dir_close(dirp);
#endif

View File

@ -2,15 +2,15 @@ Index: configure.ac
===================================================================
--- configure.ac.orig
+++ configure.ac
@@ -39,6 +39,7 @@
AC_PROG_CXX
@@ -45,6 +45,7 @@ m4_ifdef([AC_PROG_OBJCXX],[AC_PROG_OBJCX
dnl ------
AC_PROG_F77
AC_PROG_CPP
+AC_PROG_OBJCXX
AC_PROG_MAKE_SET
SAH_LINKS
AC_LANG_PUSH(C)
@@ -744,6 +745,8 @@
@@ -793,6 +794,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,9 +19,11 @@ 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
@@ -118,9 +118,8 @@
@@ -117,9 +117,8 @@ EXTRA_DIST = *.h \
../lib/error_numbers.h \
locale $(mac_headers)
@ -29,7 +31,7 @@ Index: configure.ac
-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)
+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' $^ > $@

View File

@ -1,8 +1 @@
# This line is mandatory to access the configuration functions
from Config import *
addFilter("suse-branding-unversioned-requires hicolor-icon-theme")
addFilter("non-standard-uid")
addFilter("libdir-macro-in-noarch-package")
addFilter("no-manual-page-for-binary")
addFilter("macro-in-comment")

View File

@ -1,3 +1,61 @@
-------------------------------------------------------------------
Tue Jun 17 13:39:32 UTC 2014 - tchvatal@suse.com
- Remove needless rpmlintrc lines to ease error spotting when there
really are some.
-------------------------------------------------------------------
Tue Jun 17 13:30:10 UTC 2014 - tchvatal@suse.com
- Cleanup with spec-cleaner for better readability
- Move lang packages from Requires to Recommends
-------------------------------------------------------------------
Tue Jun 17 13:13:14 UTC 2014 - tchvatal@suse.com
- Remove unused patch:
* boinc-completion.patch
- Remove comments with unused patches
- Remove conditionals with inits as we don't build for such release
anyway
- Provide rcboinc symlink for easier usage.
-------------------------------------------------------------------
Wed Mar 26 22:34:18 UTC 2014 - chris@computersalat.de
- some RPMLINT fixes
* fix License: remove ','
* non-standard-gid /var/lib/boinc boinc
* SR #227671 to rpmlint
- fix deps for libxcb
-------------------------------------------------------------------
Tue Mar 18 15:21:19 UTC 2014 - chris@computersalat.de
- fix README.SUSE
-------------------------------------------------------------------
Sun Mar 16 22:23:48 UTC 2014 - chris@computersalat.de
# fix for bnc#779335
* disabled boinc-completion.patch
- update to 7.2.42
* Fix problem that was causing scheduler RPCs to fail on Yoyo@home
(HTTP status code 400)
* for mor info have a look at
http://boinc.berkeley.edu/wiki/Release_Notes
- removed obsolete patches:
* boinc-client-dynamic_buffers.patch
* boinc-init.patch
* boinc-client-7.0.36-AM_CONDITIONAL.patch
* boinc-client-7.0.36-dynamic_buffers.patch
- rebased patches:
* boinc-LC_MESSAGES.patch
* boinc-client-AM_CONDITIONAL.patch
* boinc-configure.patch
* boinc-docbook2x.patch
* boinc-guirpcauth.patch
-------------------------------------------------------------------
Sat Oct 26 09:45:58 UTC 2013 - p.drouand@gmail.com
@ -10,6 +68,16 @@ Sat Oct 26 09:45:58 UTC 2013 - p.drouand@gmail.com
- Remove boinc-client-glib_h.patch; fixed on upstream
- Do not copy INSTALL in documentation
-------------------------------------------------------------------
Wed May 1 20:53:41 UTC 2013 - chris@computersalat.de
- update to 7.0.28
* sorry but there is no ChangeLog :(
- rebase patches
* dynamic_buffers, guirpcauth, AM_CONDITIONAL
- add configure patch
- remove obsolete glib_h patch
-------------------------------------------------------------------
Wed Apr 3 11:12:16 UTC 2013 - coolo@suse.com

View File

@ -1,216 +0,0 @@
#!/bin/sh
#
# Copyright (c) 2012 Scorpio IT, Deidesheim, Germany
# All rights reserved
#
# Author: Christian Wittmer <rpm@scorpio-it.net>
#
# /etc/init.d/boinc-client
# and its symbolic link
# /(usr/)sbin/rcboinc-client
#
### BEGIN INIT INFO
# Provides: boinc-client
# Required-Start: $syslog $network $remote_fs
# Should-Start: $time
# Required-Stop: $syslog $network $remote_fs
# Should-Stop: $time
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Short-Description: BOINC daemon providing boinc-client
# Description: Start BOINC client
# For more information about BOINC (the Berkeley Open Infrastructure
# for Network Computing) see http://boinc.berkeley.edu
### END INIT INFO
#
# Note on runlevels:
# 0 - halt/poweroff 6 - reboot
# 1 - single user 2 - multiuser without network exported
# 3 - multiuser w/ network (text mode) 5 - multiuser w/ network and X11 (xdm)
#
# Note on script names:
# http://www.linuxbase.org/spec/refspecs/LSB_1.3.0/gLSB/gLSB/scrptnames.html
# A registry has been set up to manage the init script namespace.
# http://www.lanana.org/
# Please use the names already registered or register one or use a
# vendor prefix.
# Check for missing binaries (stale symlinks should not happen)
# Note: Special treatment of stop for LSB conformance
BOINC_BIN=/usr/bin/boinc-client
test -x $BOINC_BIN || { echo "$BOINC_BIN not installed";
if [ "$1" = "stop" ]; then exit 0;
else exit 5; fi; }
# Check for existence of needed config file and read it
BOINC_CONFIG=/etc/sysconfig/boinc-client
test -r $BOINC_CONFIG || { echo "$BOINC_CONFIG not existing";
if [ "$1" = "stop" ]; then exit 0;
else exit 6; fi; }
# Read config
. $BOINC_CONFIG
# some other VARS
BOINC_SVC="BOINC Client"
BOINCCMD_BIN="/usr/bin/boinccmd"
BOINC_LOG="/var/log/boinc-client.log"
BOINC_ERRLOG="/var/log/boinc-client.err.log"
BOINC_PIDFILE="/var/run/boinc-client.pid"
BOINC_LOCKFILE="/var/run/boinc-client.lock"
BOINC_USR=${BOINC_BOINC_USR:="boinc"}
BOINC_GRP=${BOINC_BOINC_GRP:="boinc"}
BOINC_DIR=${BOINC_BOINC_DIR:="/var/lib/boinc"}
BOINC_OPTS=${BOINC_BOINC_OPTS:=""}
# Source LSB init functions
# providing start_daemon, killproc, pidofproc,
# log_success_msg, log_failure_msg and log_warning_msg.
# This is currently not used by UnitedLinux based distributions and
# not needed for init scripts for UnitedLinux only. If it is used,
# the functions from rc.status should not be sourced or used.
#. /lib/lsb/init-functions
# Shell functions sourced from /etc/rc.status:
# rc_check check and set local and overall rc status
# rc_status check and set local and overall rc status
# rc_status -v be verbose in local rc status and clear it afterwards
# rc_status -v -r ditto and clear both the local and overall rc status
# rc_status -s display "skipped" and exit with status 3
# rc_status -u display "unused" and exit with status 3
# rc_failed set local and overall rc status to failed
# rc_failed <num> set local and overall rc status to <num>
# rc_reset clear both the local and overall rc status
# rc_exit exit appropriate to overall rc status
# rc_active checks whether a service is activated by symlinks
. /etc/rc.status
# Reset status of this service
rc_reset
# Return values acc. to LSB for all commands but status:
# 0 - success
# 1 - generic or unspecified error
# 2 - invalid or excess argument(s)
# 3 - unimplemented feature (e.g. "reload")
# 4 - user had insufficient privileges
# 5 - program is not installed
# 6 - program is not configured
# 7 - program is not running
# 8--199 - reserved (8--99 LSB, 100--149 distrib, 150--199 appl)
#
# Note that starting an already running service, stopping
# or restarting a not-running service as well as the restart
# with force-reload (in case signaling is not supported) are
# considered a success.
case "$1" in
start)
echo -n "Starting ${BOINC_SVC} "
## Start daemon with startproc(8). If this fails
## the return value is set appropriately by startproc.
/sbin/startproc -u $BOINC_USR -g $BOINC_GRP -l $BOINC_LOG -s $BOINC_BIN --dir $BOINC_DIR $BOINC_OPTS
# Remember status and be verbose
rc_status -v
;;
stop)
echo -n "Shutting down ${BOINC_SVC} "
## Stop daemon with killproc(8) and if this fails
## killproc sets the return value according to LSB.
/sbin/killproc $BOINC_BIN
# Remember status and be verbose
rc_status -v
;;
try-restart|condrestart)
## Do a restart only if the service was active before.
## Note: try-restart is now part of LSB (as of 1.9).
## RH has a similar command named condrestart.
if test "$1" = "condrestart"; then
echo "${attn} Use try-restart ${done}(LSB)${attn} rather than condrestart ${warn}(RH)${norm}"
fi
$0 status
if test $? = 0; then
$0 restart
else
rc_reset # Not running is not a failure.
fi
# Remember status and be quiet
rc_status
;;
restart)
## Stop the service and regardless of whether it was
## running or not, start it again.
$0 stop
$0 start
# Remember status and be quiet
rc_status
;;
force-reload)
## Signal the daemon to reload its config. Most daemons
## do this on signal 1 (SIGHUP).
## If it does not support it, restart the service if it
## is running.
echo -n "Reload service ${BOINC_SVC} "
## if it supports it:
#/sbin/killproc -HUP $BOINC_BIN
#touch /var/run/$BOINC_PIDFILE
# Remember status and be verbose
#rc_status -v
## Otherwise:
$0 try-restart
# Remember status and be quiet
rc_status
;;
reload)
## Like force-reload, but if daemon does not support
## signaling, do nothing (!)
# If it supports signaling:
echo -n "Reload service ${BOINC_SVC} "
#/sbin/killproc -HUP $BOINC_BIN
#touch /var/run/FOO.pid
# Remember status and be verbose
#rc_status -v
## Otherwise if it does not support reload:
rc_failed 3
# Remember status and be verbose
rc_status -v
;;
status)
echo -n "Checking for service ${BOINC_SVC} "
## Check status with checkproc(8), if process is running
## checkproc will return with exit status 0.
# Return value is slightly different for the status command:
# 0 - service up and running
# 1 - service dead, but /var/run/ pid file exists
# 2 - service dead, but /var/lock/ lock file exists
# 3 - service not running (unused)
# 4 - service status unknown :-(
# 5--199 reserved (5--99 LSB, 100--149 distro, 150--199 appl.)
# NOTE: checkproc returns LSB compliant status values.
/sbin/checkproc $BOINC_BIN
# NOTE: rc_status knows that we called this init script with
# "status" option and adapts its messages accordingly.
rc_status -v
;;
*)
echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload}"
exit 1
;;
esac
rc_exit

View File

@ -1,7 +1,7 @@
#
# spec file for package boinc-client
#
# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
# Copyright (c) 2011 by Sascha Manns <saigkill@opensuse.org>
#
# All modifications and additions to the file contributed by third parties
@ -19,21 +19,27 @@
# Global definitions
%define _use_internal_dependency_generator 0
%if 0%{?suse_version} >= 1140
%define __find_requires %wx_requires
%endif
%define version_ 7_0_36
%define __find_requires %{wx_requires}
%define soname 7
%define boinc_dir %{_localstatedir}/lib/boinc
Name: boinc-client
Version: 7.0.36
Version: 7.2.42
Release: 0
Summary: The BOINC client core
License: LGPL-3.0
Summary: The BOINC client
License: GPL-3.0+ or LGPL-3.0+
Group: Productivity/Clustering/Computing
Url: http://boinc.berkeley.edu/
Source0: boinc_core_release-%{version_}.tar.bz2
# 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
Source1: boinc-icons.tar.bz2
Source2: boinc-gui.desktop
Source3: README.SUSE
@ -43,86 +49,70 @@ 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_}
# ./generate-tarball.sh boinc_core_release_VERSION
#
# Trim all binaries and other unnecessary things.
Source8: generate-tarball.sh
Source10: %{name}.init
Source20: boinc-client-systemd
Source20: %{name}.service
Source100: %{name}-rpmlintrc
# PATCH-FIX-OPENSUSE boinc-guirpcauth.patch
# Create password file rw for group, this enables passwordless connection
# of manager from users of the boinc group.
# 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-init.patch
Patch1: boinc-init.patch
# PATCH-FIX-OPENSUSE boinc-LC_MESSAGES.patch
Patch2: boinc-LC_MESSAGES.patch
# PATCH-FIX-OPENSUSE boinc-completion.patch
Patch3: boinc-completion.patch
# PATCH-FIX-OPENSUSE boinc-docbook2x.patch
Patch4: boinc-docbook2x.patch
# PATCH-FIX-OPENSUSE pth@suse.de use asprintf to fix buffer overflow
Patch5: boinc-client-7.0.36-dynamic_buffers.patch
# PATCH-FIX-OPENSUSE coolo - #error: am__fastdepOBJCXX does not appear in AM_CONDITIONAL
Patch7: boinc-client-7.0.36-AM_CONDITIONAL.patch
#
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Requires(pre): pwdutils
%if 0%{?suse_version} < 1230
Requires(pre): %insserv_prereq
Requires(pre): %fillup_prereq
%else
BuildRequires: pkgconfig(systemd)
%{?systemd_requires}
%endif
Patch7: %{name}-AM_CONDITIONAL.patch
# PATCH-FIX-OPENSUSE computersalat - error:
# 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
BuildRequires: Mesa-devel
#BuildRequires: autoconf
#BuildRequires: automake
BuildRequires: docbook2x
BuildRequires: docbook_4
BuildRequires: update-desktop-files
#BuildRequires: fcgi-devel
BuildRequires: fdupes
BuildRequires: freeglut-devel
BuildRequires: gcc-c++
BuildRequires: gcc-fortran
BuildRequires: gettext-runtime
#BuildRequires: gnutls-devel
BuildRequires: libcurl-devel >= 7.17.1
BuildRequires: libjpeg-devel
BuildRequires: libnotify-devel
BuildRequires: libtool
BuildRequires: libxslt
#BuildRequires: m4
#BuildRequires: make
BuildRequires: mysql-devel
BuildRequires: openssl-devel
#BuildRequires: patch
BuildRequires: pkg-config
BuildRequires: pwdutils
BuildRequires: python-mysql
BuildRequires: sqlite3-devel
BuildRequires: systemd
BuildRequires: update-desktop-files
BuildRequires: wxWidgets-devel >= 2.8.0
BuildRequires: xorg-x11-libXmu-devel
%if 0%{?suse_version} <= 1130
BuildRequires: wxGTK-devel >= 2.6.0
%else
BuildRequires: wxWidgets-devel >= 2.8.7
%endif
Requires: cron
Requires: logrotate
### 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}
Requires: logrotate
Requires(pre): pwdutils
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%{?systemd_requires}
%if 0%{?suse_version} >= 1310
BuildRequires: libXScrnSaver-devel
BuildRequires: libXi-devel
BuildRequires: libxcb-devel
BuildRequires: xcb-util-devel
%else
BuildRequires: xorg-x11-libxcb-devel
%endif
%lang_package
%lang_package -n boinc-manager
@ -144,7 +134,7 @@ of scientific and mathematical research.
%package -n boinc-manager
Summary: GUI to control and monitor boinc-client
Group: Productivity/Scientific/Astronomy
Requires: boinc-manager-lang = %{version}-%{release}
Recommends: boinc-manager-lang = %{version}
Requires: hicolor-icon-theme
%description -n boinc-manager
@ -178,59 +168,49 @@ in which all information and all control elements are available.
%package doc
Summary: Documentation files for %{name}
Group: Documentation/Other
%if 0%{?suse_version} >= 1120
BuildArch: noarch
%endif
%description doc
This package contains documentation files for %{name}.
%prep
%setup -q -n boinc_core_release_%{version_} -D -a 1
%setup -q -n boinc-%{version} -D -a 1
%patch0
%patch1
%patch2
%patch3
%patch4
%patch5
%if 0%{?suse_version} >= 1220
%patch7
%endif
%patch8
# Install user hints
%{__install} -m0644 %{S:3} README.SUSE
install -m0644 %{SOURCE3} README.SUSE
# Fix lang directories (refer patch2)
%{__mv} locale/pt_PT locale/pt
%{__mv} locale/sv_SE locale/sv
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
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
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
sed -i 's/static char/static const char/g' *.xpm
popd
# fix utf8
iconv -f ISO88591 -t UTF8 < checkin_notes > checkin_notes.utf8
touch -r checkin_notes checkin_notes.utf8
mv checkin_notes.utf8 checkin_notes
iconv -f ISO88591 -t UTF8 < checkin_notes_2004 > checkin_notes_2004.utf8
touch -r checkin_notes_2004 checkin_notes_2004.utf8
mv checkin_notes_2004.utf8 checkin_notes_2004
iconv -f ISO88591 -t UTF8 < checkin_notes_2005 > checkin_notes_2005.utf8
touch -r checkin_notes_2005 checkin_notes_2005.utf8
mv checkin_notes_2005.utf8 checkin_notes_2005
iconv -f ISO88591 -t UTF8 < checkin_notes_2006 > checkin_notes_2006.utf8
touch -r checkin_notes_2006 checkin_notes_2006.utf8
mv checkin_notes_2006.utf8 checkin_notes_2006
iconv -f ISO88591 -t UTF8 < checkin_notes_2009 > checkin_notes_2009.utf8
touch -r checkin_notes_2009 checkin_notes_2009.utf8
mv checkin_notes_2009.utf8 checkin_notes_2009
iconv -f ISO88591 -t UTF8 < checkin_notes_2010 > checkin_notes_2010.utf8
touch -r checkin_notes_2010 checkin_notes_2010.utf8
mv checkin_notes_2010.utf8 checkin_notes_2010
# fix permissions and newlines on source files
chmod 644 clientgui/{DlgItemProperties.h,AsyncRPC.cpp,DlgItemProperties.cpp}
@ -240,13 +220,13 @@ sed -i 's/\r//' clientgui/DlgItemProperties.cpp
## remove files with questionable licenses
# removing NVIDIA owned file that does not clearly allow redistribution or
# modification
%{__rm} coprocs/NVIDIA/include/nvapi.h
rm coprocs/NVIDIA/include/nvapi.h
# removing unnecessary APSL licensed files
%{__rm} client/app_stats_mac.cpp
rm client/app_stats_mac.cpp
%build
#remove run libtoolize and ./_autosetup
/usr/bin/libtoolize --force
%{_bindir}/libtoolize --force
./_autosetup
%configure \
@ -259,12 +239,12 @@ sed -i 's/\r//' clientgui/DlgItemProperties.cpp
--with-x
# Disable rpaths
%{__sed} -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool
%{__sed} -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool
sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
# Export Path and make
%{__make} clean
%{__make} libboinc_la_LIBADD="-L%{_libdir} -lssl -ldl" \
make clean %{?_smp_mflags}
make libboinc_la_LIBADD="-L%{_libdir} -lssl -ldl" \
CFLAGS="%{optflags} -g -W -pipe -fno-strict-aliasing -D_REENTRANT" \
CXXFLAGS="%{optflags} -g -W -pipe -fno-strict-aliasing -D_REENTRANT" \
DESTDIR=%{_prefix} %{?_smp_mflags}
@ -276,112 +256,95 @@ sed -i 's/\r//' clientgui/DlgItemProperties.cpp
#
# hence we jump into clientgui and build it manually
pushd clientgui
%{__make} libboinc_la_LIBADD="-L%{_libdir} -lssl -ldl" \
%if 0%{?suse_version} >= 1210
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" \
%else
CFLAGS="%{optflags} -g -W -pipe -fno-strict-aliasing -D_REENTRANT" \
CXXFLAGS="%{optflags} -g -W -pipe -fno-strict-aliasing -D_REENTRANT" \
%endif
DESTDIR=%{_prefix} %{?_smp_mflags}
popd
pushd locale
%{__make}
make %{?_smp_mflags}
popd
%install
%{makeinstall}
make DESTDIR=%{buildroot} install %{?_smp_mflags}
for i in clientgui locale; do
pushd $i
%{makeinstall}
make DESTDIR=%{buildroot} install %{?_smp_mflags}
popd
done
# Creates default folders
%{__install} -dm0755 %{buildroot}%{boinc_dir}
%{__install} -dm0755 %{buildroot}%{_mandir}/man1
install -dm0755 %{buildroot}%{boinc_dir}
install -dm0755 %{buildroot}%{_mandir}/man1
# Remove old boinc & rename boinc_client to boinc-client
%{__rm} -f %{buildroot}%{_bindir}/boinc
%{__mv} -f %{buildroot}%{_bindir}/boinc_client %{buildroot}%{_bindir}/%{name}
rm -f %{buildroot}%{_bindir}/boinc
mv -f %{buildroot}%{_bindir}/boinc_client %{buildroot}%{_bindir}/%{name}
# Rename boincmgr and wrap it
%{__mv} %{buildroot}%{_bindir}/boincmgr %{buildroot}%{_bindir}/boinc-gui
mv %{buildroot}%{_bindir}/boincmgr %{buildroot}%{_bindir}/boinc-gui
# Install boinc-manager wrapper script
%{__install} -Dm0755 %{S:6} %{buildroot}%{_bindir}/boinc-manager
install -Dm0755 %{SOURCE6} %{buildroot}%{_bindir}/boinc-manager
# Use symlink instead of hardlink
pushd %{buildroot}%{_bindir}
%{__ln_s} -f %{name} boinc
%{__ln_s} -f boinc-manager boincmgr
%{__ln_s} -f boinc-manager boincmanager
ln -s -f %{name} boinc
ln -s -f boinc-manager boincmgr
ln -s -f boinc-manager boincmanager
popd
# replace @boinc_dir@, @bindir@
%{__sed} -i \
sed -i \
-e "s,@boinc_dir@,%{boinc_dir},g" \
-e "s,@bindir@,%{_bindir},g" \
%{buildroot}%{_bindir}/boinc-manager
# Remove /etc/sysconfig/boinc-client, it is added by %%fillup_and_insserv
%{__rm} -f %{buildroot}%{_sysconfdir}/sysconfig/%{name}
rm -f %{buildroot}%{_sysconfdir}/sysconfig/%{name}
# Install init and create symlink to /etc/init.d/boinc-client
%if 0%{?suse_version} >=1230
chmod -x %{S:20}
%{__install} -Dm0755 %{S:20} %{buildroot}%{_unitdir}/%{name}.service
# Install init and create symlink for rcboinc
install -D -m0644 %{SOURCE20} %{buildroot}%{_unitdir}/%{name}.service
mkdir -p %{buildroot}%{_sbindir}
ln -s %{_sbindir}/service %{buildroot}%{_sbindir}/rc%{name}
# And remove sysvinit script installed by boinc
rm -r %{buildroot}/%{_initrddir}
%else
%{__install} -Dm0755 %{S:10} %{buildroot}%{_initrddir}/%{name}
%{__install} -dm0755 %{buildroot}%{_sbindir}
/bin/ln -sf %{_sysconfdir}/init.d/%{name} %{buildroot}%{_sbindir}/rc%{name}
# Install template for sysconfig
%{__install} -Dm0644 %{S:4} %{buildroot}/var/adm/fillup-templates/sysconfig.%{name}
%endif
rm -r %{buildroot}/%{_initddir}
# Install logrotate
%{__install} -Dm0644 %{S:5} %{buildroot}%{_sysconfdir}/logrotate.d/%{name}
install -Dm0644 %{SOURCE5} %{buildroot}%{_sysconfdir}/logrotate.d/%{name}
# Install bash completion
%{__install} -Dpm0644 client/scripts/boinc.bash %{buildroot}%{_sysconfdir}/bash_completion.d/boinc
install -Dpm0644 client/scripts/boinc.bash %{buildroot}%{_sysconfdir}/bash_completion.d/boinc
# Install desktop-file and icons
%{__install} -Dm0644 boinc-gui-128.png %{buildroot}%{_datadir}/icons/hicolor/128x128/apps/boinc-gui.png
%{__install} -Dm0644 boinc-gui-64.png %{buildroot}%{_datadir}/icons/hicolor/64x64/apps/boinc-gui.png
%{__install} -Dm0644 boinc-gui-48.png %{buildroot}%{_datadir}/icons/hicolor/48x48/apps/boinc-gui.png
%{__install} -Dm0644 boinc-gui-32.png %{buildroot}%{_datadir}/icons/hicolor/32x32/apps/boinc-gui.png
%{__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 -Dm0644 boinc-gui-128.png %{buildroot}%{_datadir}/icons/hicolor/128x128/apps/boinc-gui.png
install -Dm0644 boinc-gui-64.png %{buildroot}%{_datadir}/icons/hicolor/64x64/apps/boinc-gui.png
install -Dm0644 boinc-gui-48.png %{buildroot}%{_datadir}/icons/hicolor/48x48/apps/boinc-gui.png
install -Dm0644 boinc-gui-32.png %{buildroot}%{_datadir}/icons/hicolor/32x32/apps/boinc-gui.png
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 -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
# Remove libtool archives
%{__rm} %{buildroot}%{_libdir}/*.la
# Remove static libraries
%{__rm} %{buildroot}%{_libdir}/*.a
# Remove static libraries, libtool archives
rm %{buildroot}%{_libdir}/*.{a,la}
# Relinking Manpages
%{__ln_s} -f boincmgr.1.gz %{buildroot}%{_mandir}/man1/boinc-manager.1.gz
%{__ln_s} -f boinccmd.1.gz %{buildroot}%{_mandir}/man1/boinccmd.1.gz
%{__ln_s} -f boinc.1.gz %{buildroot}%{_mandir}/man1/boinc.1.gz
ln -s -f boincmgr.1.gz %{buildroot}%{_mandir}/man1/boinc-manager.1.gz
ln -s -f boinccmd.1.gz %{buildroot}%{_mandir}/man1/boinccmd.1.gz
ln -s -f boinc.1.gz %{buildroot}%{_mandir}/man1/boinc.1.gz
# Fix spurious-executable-perm
%{__chmod} 0644 doc/*.php
# Don't pick INSTALL file in %doc macro
chmod 0644 doc/*.php
# Install fake /var/lib/boinc
%{__install} -dm0755 %{buildroot}%{_var}/lib/boinc
install -dm0755 %{buildroot}%{_var}/lib/boinc
# Prepare $LANG Packages
%find_lang BOINC-Client
@ -396,42 +359,30 @@ rm -r %{buildroot}/%{_initrddir}
%{_sbindir}/useradd -c "BOINC Client" -d "%{_localstatedir}/lib/boinc" \
-g boinc -r -s /sbin/nologin boinc 2>/dev/null || :
if [ -f %{_sysconfdir}/sysconfig/%{name} ]; then
if [ "$(grep "BOINC_BOINC_USR" /etc/sysconfig/boinc-client | grep -v grep >/dev/null; echo $?)" == 1 ]; then
if [ "$(grep "BOINC_BOINC_USR" %{_sysconfdir}/sysconfig/boinc-client | grep -v grep >/dev/null; echo $?)" == 1 ]; then
mv -f %{_sysconfdir}/sysconfig/%{name} %{_sysconfdir}/sysconfig/%{name}.save
fi
fi
%service_add_pre %{name}.service
%preun
%if 0%{?suse_version} >=1230
%service_del_preun %{name}.service
%else
%stop_on_removal %{name}
%endif
%post
%if 0%{?suse_version} >=1230
%service_add_post %{name}.service
%else
%fillup_and_insserv %{name}
%endif
%{_sbindir}/usermod -c "BOINC Client" -s /sbin/nologin boinc 2>/dev/null || :
%postun
%if 0%{?suse_version} >=1230
%service_del_postun
%else
%restart_on_update %{name}
%insserv_cleanup
%endif
%service_del_postun %{name}.service
%post -n boinc-manager
/usr/bin/touch --no-create %{_datadir}/icons/hicolor || :
%{_bindir}/touch --no-create %{_datadir}/icons/hicolor || :
if [ -x %{_bindir}/gtk-update-icon-cache ]; then
%{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor || :
fi
%postun -n boinc-manager
/usr/bin/touch --no-create %{_datadir}/icons/hicolor || :
%{_bindir}/touch --no-create %{_datadir}/icons/hicolor || :
if [ -x %{_bindir}/gtk-update-icon-cache ]; then
%{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor || :
fi
@ -446,22 +397,18 @@ fi
%files
%defattr(-,root,root,-)
%doc COPYING* COPYRIGHT notes todo TODO_OLD README.SUSE
%doc COPYING* COPYRIGHT notes todo README.SUSE
%config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
%config(noreplace) %{_sysconfdir}/bash_completion.d/*
%if 0%{?suse_version} >=1230
%{_unitdir}/%{name}.service
%else
/var/adm/fillup-templates/sysconfig.%{name}
%{_sbindir}/rc%{name}
%{_initrddir}/%{name}
%endif
%{_bindir}/boinc
%{_bindir}/%{name}
%{_bindir}/boinccmd
%{_bindir}/boincscr
%{_bindir}/switcher
%{_mandir}/man1/boinccmd.1.gz
%{_mandir}/man1/boinc.1.gz
%{_unitdir}/%{name}.service
%{_sbindir}/rc%{name}
%defattr(-,boinc,boinc,-)
%{_localstatedir}/lib/boinc/
@ -482,8 +429,10 @@ fi
%{_mandir}/man1/boinc-manager.1.gz
%files -n %{name}-lang -f BOINC-Client.lang
%defattr(-,root,root)
%files -n boinc-manager-lang -f BOINC-Manager.lang
%defattr(-,root,root)
%files -n libboinc%{soname}
%defattr(-,root,root,-)

View File

@ -1,13 +0,0 @@
Index: client/scripts/boinc.bash
===================================================================
--- client/scripts/boinc.bash.orig
+++ client/scripts/boinc.bash
@@ -36,7 +36,7 @@ _boinc()
return 0
fi
}
-complete -F _boinc -o default boinc
+complete -F _boinc -o default-boinc
_boinccmd()
{

20
boinc-configure.patch Normal file
View File

@ -0,0 +1,20 @@
Index: configure.ac
===================================================================
--- configure.ac.orig
+++ configure.ac
@@ -968,7 +968,6 @@ AC_CONFIG_FILES([
lib/Makefile
locale/Makefile
Makefile
- py/Boinc/version.py
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
test/boinc_path_config.py:py/boinc_path_config.py.in
test/Makefile
- test/version.inc
tools/boinc_path_config.py:py/boinc_path_config.py.in
tools/Makefile
vda/Makefile

View File

@ -2,7 +2,7 @@ Index: configure.ac
===================================================================
--- configure.ac.orig
+++ configure.ac
@@ -285,7 +285,7 @@ AC_SUBST([TOP_BUILD_DIR], [`pwd`])
@@ -297,7 +297,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.

View File

@ -2,17 +2,17 @@ Index: client/gui_rpc_server.cpp
===================================================================
--- client/gui_rpc_server.cpp.orig
+++ client/gui_rpc_server.cpp
@@ -145,12 +145,7 @@ int GUI_RPC_CONN_SET::get_password() {
// they can cause code to execute as this user.
// So better protect it.
//
- if (g_use_sandbox) {
- // Allow group access so authorized administrator can modify it
- chmod(GUI_RPC_PASSWD_FILE, S_IRUSR|S_IWUSR | S_IRGRP | S_IWGRP);
- } else {
- chmod(GUI_RPC_PASSWD_FILE, S_IRUSR|S_IWUSR);
- }
+ chmod(GUI_RPC_PASSWD_FILE, S_IRUSR|S_IWUSR | S_IRGRP | S_IWGRP);
@@ -169,12 +169,7 @@ void GUI_RPC_CONN_SET::get_password() {
// they can cause code to execute as this user.
// So better protect it.
//
- if (g_use_sandbox) {
- // Allow group access so authorized administrator can modify it
- chmod(GUI_RPC_PASSWD_FILE, S_IRUSR|S_IWUSR | S_IRGRP | S_IWGRP);
- } else {
- chmod(GUI_RPC_PASSWD_FILE, S_IRUSR|S_IWUSR);
- }
+ chmod(GUI_RPC_PASSWD_FILE, S_IRUSR|S_IWUSR | S_IRGRP | S_IWGRP);
#endif
}
}
}

View File

@ -1,89 +0,0 @@
Index: client/scripts/boinc-client.in
===================================================================
--- client/scripts/boinc-client.in.orig
+++ client/scripts/boinc-client.in
@@ -19,14 +19,16 @@
# For more information about BOINC (the Berkeley Open Infrastructure
# for Network Computing) see http://boinc.berkeley.edu
# processname: boinc
-# config: /etc/sysconfig/boinc
+# config: /etc/sysconfig/boinc-client
#
### BEGIN INIT INFO
-# Provides: boinc
-# Required-Start: $network
-# Required-Stop: $network
-# Default-Start: 3 4 5
-# Default-Stop: 0 1 2 6
+# Provides: boinc-client
+# Required-Start: $network $remote_fs
+# Should-Start: $time
+# Required-Stop: $network $remote_fs
+# Should-Stop: $time
+# Default-Start: 3 5
+# Default-Stop: 0 1 2 6
# Short-Description: This script monitors the BOINC client.
# Description: This script starts the local BOINC client as a daemon
# For more information about BOINC (the Berkeley Open Infrastructure
@@ -117,6 +119,10 @@ fi
#
BOINCUSER=boinc
+# Name of group to run as:
+#
+BOINCUSER=boinc
+
# Working directory. Could be /home/boinc, /var/lib/boinc, etc..
# The reason I prefer /var/lib/boinc is that this works best for a
# cluster of computers where /home/anything might be shared between machines
@@ -128,7 +134,7 @@ BOINCDIR=/var/lib/boinc
# but I like to rename it and put it in a public place.
# (Hint: move boincmgr to /usr/local/bin too so anyone can easily use it).
#
-BOINCEXE_NAME=boinc_client
+BOINCEXE_NAME=boinc-client
BOINCEXE=${bindir}/${BOINCEXE_NAME}
BOINCCMD_NAME=boinccmd
BOINCCMD=${bindir}/${BOINCCMD_NAME}
@@ -161,9 +167,7 @@ BOINCOPTS=
# Subsys lock file ...
# If there is the subsys directory, then use it ...
-if [ -d /var/lock/subsys/ ]; then
- LOCKFILE=/var/lock/subsys/${BOINCEXE_NAME}
-elif [ -d /var/lock ]; then
+if [ -d /var/lock ]; then
LOCKFILE=/var/lock/${BOINCEXE_NAME}
elif [ -d /var/run ]; then
LOCKFILE=/var/run/${BOINCEXE_NAME}.lock
@@ -178,8 +182,8 @@ export TERM=dumb
# but if the functions are not found we create our own simple replacements.
# (The idea for replacing the functions comes from OpenAFS. Thanks guys!)
-if [ -f /etc/rc.d/init.d/functions ] ; then
- . /etc/rc.d/init.d/functions
+if [ -f /etc/init.d/functions ] ; then
+ . /etc/init.d/functions
else
if printf "Hello" >/dev/null 2>/dev/null ; then
# printf works
@@ -279,7 +283,7 @@ if [ ! -d $BOINCDIR ]; then
echo -n "Creating $BOINCDIR "
if mkdir -p $BOINCDIR 2>/dev/null ; then
if [ -n "$BOINCUSER" ] ; then
- if chown $BOINCUSER $BOINCDIR ; then
+ if chown $BOINCUSER $BOINCGROUP $BOINCDIR ; then
echo_success
else
echo_failure
@@ -329,8 +333,8 @@ if [ "${USERNOW}" = "${BOINCUSER}" ] ; t
exit 8
fi
elif [ "${USERNOW}" = "root" ] ; then
- cmd="if test -O ${BOINCDIR} ; then echo success ; fi"
- if [ -z `su $BOINCUSER -c "$cmd"` ]; then
+ # cmd="if test -O ${BOINCDIR} ; then echo success ; fi"
+ # if [ -z `su $BOINCUSER -c "$cmd"` ]; then
echo -n ERROR: $BOINCDIR is not owned by $BOINCUSER.
echo_failure
echo

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:061700382a0bdedb182e501f8ce51d5e84831a010bdc322c03820cc5bab0291e
size 39793308