# # spec file for package boinc-client # # 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 # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via http://bugs.opensuse.org/ # %define sonum 7 %define boinc_dir %{_localstatedir}/lib/boinc Name: boinc-client Version: 7.6.33 Release: 0 Summary: The BOINC client License: GPL-3.0+ or LGPL-3.0+ Group: Productivity/Clustering/Computing Url: http://boinc.berkeley.edu/ #Git-Clone: git://github.com/BOINC/boinc Source: https://github.com/BOINC/boinc/archive/client_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 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-docbook2x.patch Patch4: boinc-docbook2x.patch Patch5: 0001-Fix-1530-null-pointer-dereference.patch BuildRequires: Mesa-devel BuildRequires: docbook2x BuildRequires: docbook_4 BuildRequires: fdupes BuildRequires: freeglut-devel BuildRequires: gcc-c++ BuildRequires: gcc-fortran BuildRequires: gettext-runtime BuildRequires: libcurl-devel >= 7.17.1 BuildRequires: libjpeg-devel BuildRequires: libnotify-devel BuildRequires: libtool BuildRequires: libxslt BuildRequires: openssl-devel BuildRequires: pkg-config BuildRequires: pwdutils BuildRequires: sqlite3-devel BuildRequires: systemd BuildRequires: update-desktop-files BuildRequires: wxWidgets-3_0-devel >= 3.0.2 BuildRequires: xorg-x11-libXmu-devel Recommends: boinc-client-lang = %{version} Recommends: logrotate Requires(pre): pwdutils BuildRoot: %{_tmppath}/%{name}-%{version}-build %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 %description The Berkeley Open Infrastructure for Network Computing (BOINC) is an open- source software platform which supports distributed computing, primarily in the form of "volunteer" computing and "desktop Grid" computing. It is well suited for problems which are often described as "trivially parallel". BOINC is the underlying software used by projects such as SETI@home, Einstein@Home, ClimatePrediciton.net, the World Community Grid, and many other distributed computing projects. This package installs the BOINC client software, which will allow your computer to participate in one or more BOINC projects, using your spare computer time to search for cures for diseases, model protein folding, study global warming, discover sources of gravitational waves, and many other types of scientific and mathematical research. %package -n boinc-manager Summary: GUI to control and monitor boinc-client Group: Productivity/Scientific/Astronomy Recommends: boinc-manager-lang = %{version} Requires: hicolor-icon-theme %description -n boinc-manager The BOINC Manager is a graphical monitor and control utility for the BOINC core client. It gives a detailed overview of the state of the client it is monitoring. The BOINC Manager has two modes of operation, the "Simple View" in which it only displays the most important information and the "Advanced View" in which all information and all control elements are available. %package devel Summary: Development files for boinc-client Group: Development/Libraries/C and C++ Requires: %{name} = %{version}-%{release} Requires: openssl-devel %description devel This package contains development files for %{name}. %package -n libboinc%{sonum} Summary: Berkeley Open Infrastructure For Network Computing library Group: System/Libraries %description -n libboinc%{sonum} The BOINC Manager is a graphical monitor and control utility for the BOINC core client. It gives a detailed overview of the state of the client it is monitoring. The BOINC Manager has two modes of operation, the "Simple View" in which it only displays the most important information and the "Advanced View" in which all information and all control elements are available. %package doc Summary: Documentation files for boinc-client Group: Documentation/Other BuildArch: noarch %description doc This package contains documentation files for the BOINC client. %prep %setup -q -n %{name}_release-7.6-%{version} -D -a 1 %patch0 %patch4 %patch -P 5 -p1 %build # Install user hints install -m0644 %{SOURCE3} README.SUSE # Fix lang directories (refer patch2) mv locale/pt_PT locale/pt # fix utf8 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_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} 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 autoreconf -fi %configure \ --enable-optimize \ --enable-shared \ --disable-static \ --enable-dynamic-client-linkage \ --disable-server \ --disable-fcgi \ --enable-unicode \ --with-ssl \ --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 # Export Path and make 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} %install make DESTDIR=%{buildroot} install %{?_smp_mflags} for i in clientgui locale; do pushd $i make DESTDIR=%{buildroot} install %{?_smp_mflags} popd done # Creates default folders 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} # Rename boincmgr and wrap it mv %{buildroot}%{_bindir}/boincmgr %{buildroot}%{_bindir}/boinc-gui # Install boinc-manager wrapper script 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 popd # replace @boinc_dir@, @bindir@ 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} # 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}/%{_initddir} # Install logrotate install -Dm0644 %{SOURCE5} %{buildroot}%{_sysconfdir}/logrotate.d/%{name} # Install bash completion 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 *.desktop File %suse_update_desktop_file -i boinc-gui Utility # 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 # Fix spurious-executable-perm chmod 0644 doc/*.php # Install fake /var/lib/boinc install -dm0755 %{buildroot}%{_var}/lib/boinc # Prepare $LANG Packages %find_lang BOINC-Client %find_lang BOINC-Manager %fdupes -s %{buildroot} %pre # add group %{_sbindir}/groupadd -r boinc 2>/dev/null || : # add user %{_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" %{_sysconfdir}/sysconfig/boinc-client | grep -q grep; then mv -f %{_sysconfdir}/sysconfig/%{name} %{_sysconfdir}/sysconfig/%{name}.save fi fi %service_add_pre %{name}.service %preun %service_del_preun %{name}.service %post %service_add_post %{name}.service %{_sbindir}/usermod -c "BOINC Client" -s /sbin/nologin boinc 2>/dev/null || : %postun %service_del_postun %{name}.service %post -n boinc-manager %{_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 %{_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 %post -n libboinc%{sonum} -p /sbin/ldconfig %postun -n libboinc%{sonum} -p /sbin/ldconfig %post devel -p /sbin/ldconfig %postun devel -p /sbin/ldconfig %files %defattr(-,root,root,-) %doc COPYING* COPYRIGHT notes todo README.SUSE %config(noreplace) %{_sysconfdir}/logrotate.d/%{name} %config(noreplace) %{_sysconfdir}/bash_completion.d/* %{_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/ %files doc %defattr(-,root,root,-) %doc checkin_* %doc doc/*.txt doc/bolt doc/logo doc/*.php doc/*.png doc/*.html %files -n boinc-manager %defattr(-,root,root,-) %{_bindir}/boinc-gui %{_bindir}/boinc-manager %{_bindir}/boincmgr %{_bindir}/boincmanager %{_datadir}/applications/boinc-gui.desktop %{_datadir}/icons/hicolor/*/apps/* %{_mandir}/man1/boincmgr.1.gz %{_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%{sonum} %defattr(-,root,root,-) %{_libdir}/*.so.* %files devel %defattr(-,root,root,-) %{_libdir}/*.so %{_includedir}/boinc %changelog