# # spec file for package boinc-client # # Copyright (c) 2022 SUSE LLC # 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 https://bugs.opensuse.org/ # #Compat macro for new _fillupdir macro introduced in Nov 2017 %if ! %{defined _fillupdir} %define _fillupdir /var/adm/fillup-templates %endif %define sonum 7 %define boinc_dir %{_localstatedir}/lib/boinc # do not build boinc-manager on SLES 11/12 %if 0%{?is_opensuse} %bcond_without manager %else %bcond_with manager %endif Name: boinc-client %define rel_name %{name}_release %define minor_version 7.20 Version: %{minor_version}.1 Release: 0 Summary: Client for Berkeley Open Infrastructure for Network Computing License: GPL-3.0-or-later OR LGPL-3.0-or-later Group: Productivity/Clustering/Computing URL: https://boinc.berkeley.edu/ #Git-Clone: https://github.com/BOINC/boinc Source0: https://github.com/BOINC/boinc/archive/client_release/%{minor_version}/%{version}.tar.gz Source3: README.SUSE Source4: sysconfig.%{name} Source5: boinc-logrotate Source6: boinc-manager Source10: %{name}.init Source20: %{name}.service Source100: %{name}-rpmlintrc Patch2: boinc-docbook2x.patch Patch4: xlocale.patch Patch5: build-client-scripts.patch Patch6: libboinc-shared.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: openssl-devel BuildRequires: pkg-config BuildRequires: sqlite3-devel BuildRequires: xorg-x11-libXmu-devel BuildRequires: pkgconfig(systemd) BuildRequires: pkgconfig(xcb) BuildRequires: pkgconfig(xcb-util) BuildRequires: pkgconfig(xi) Requires(pre): shadow Requires: ca-certificates-mozilla Recommends: boinc-client-lang = %{version} Recommends: logrotate %if %{with manager} BuildRequires: update-desktop-files BuildRequires: wxWidgets-3_0-devel >= 3.0.2 %lang_package -n boinc-manager %endif %lang_package %description The Berkeley Open Infrastructure for Network Computing (BOINC) is a 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 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 -n libboinc%{sonum} Summary: Berkeley Open Infrastructure For Network Computing library Group: System/Libraries %description -n libboinc%{sonum} The Berkeley Open Infrastructure for Network Computing (BOINC) is a software platform which supports distributed computing. %package devel Summary: Development files for libboinc Group: Development/Libraries/C and C++ Requires: libboinc%{sonum} = %{version}-%{release} Conflicts: %{name}-devel Requires: openssl-devel Obsoletes: libboinc-devel < %{version}-%{release} Provides: libboinc-devel = %{version}-%{release} %description devel This package contains development files for libboinc. %prep %global _lto_cflags %{_lto_cflags} -ffat-lto-objects %autosetup -p1 -n %{name}_release-%{minor_version}-%{version} -D %build # Fix default path for boincscr sed -i -e "s,/var/lib/boinc-client,%{boinc_dir},g" \ clientscr/screensaver_x11.cpp # Install user hints install -m0644 %{SOURCE3} README.SUSE # Fix lang directories (refer patch2) mv locale/pt_PT locale/pt # fix utf8 for i in 2005 2009 2010 2011; do iconv -f ISO88591 -t UTF8 < checkin_notes_$i > checkin_notes_$i.utf8 touch -r checkin_notes_$i checkin_notes_$i.utf8 mv checkin_notes_$i.utf8 checkin_notes_$i done ## remove files with questionable licenses # removing NVIDIA owned file that does not clearly allow redistribution or # modification rm -r coprocs/NVIDIA # Remove unnecessary components and files for other platforms. rm -r android drupal mac_build mac_installer win_build xcompile autoreconf -fi export CFLAGS="%optflags -W -pipe -fno-strict-aliasing -D_REENTRANT" echo %sle_version %if 0%{?sle_version} == 120000 echo enablingcxx export CFLAGS="$CFLAGS -std=c++11" %endif export CXXFLAGS="$CFLAGS" %configure \ --enable-optimize \ --enable-shared \ --disable-static \ --enable-dynamic-client-linkage \ --enable-unicode \ --disable-server \ --disable-fcgi \ %if ! %{with manager} --disable-manager \ %endif --with-ssl # 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_build clean make libboinc_la_LIBADD="-L%{_libdir} -lssl -ldl" \ DESTDIR=%{_prefix} %{?_smp_mflags} V=1 %install %make_install %if %{with manager} for i in clientgui locale; do %else for i in locale; do %endif pushd $i %make_install popd done rm -f "%{buildroot}/etc/init.d/boinc-client" # 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} %if %{with manager} # 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 %endif # Use symlink instead of hardlink pushd %{buildroot}%{_bindir} ln -s -f %{name} boinc %if %{with manager} ln -s -f boinc-manager boincmgr ln -s -f boinc-manager boincmanager %endif popd %if %{with manager} # replace @boinc_dir@, @bindir@ sed -i \ -e "s,@boinc_dir@,%{boinc_dir},g" \ -e "s,@bindir@,%{_bindir},g" \ %{buildroot}%{_bindir}/boinc-manager %endif # Remove {buildroot}/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 -dm0755 %{buildroot}%{_sbindir} install -D -m0644 %{SOURCE20} %{buildroot}%{_unitdir}/%{name}.service ln -s %{_sbindir}/service %{buildroot}%{_sbindir}/rc%{name} # Install template for sysconfig install -Dm0644 %{SOURCE4} %{buildroot}%{_fillupdir}/sysconfig.%{name} # Install logrotate install -Dm0644 %{SOURCE5} %{buildroot}%{_sysconfdir}/logrotate.d/%{name} # Install bash completion install -Dpm0644 client/scripts/boinc.bash %{buildroot}%{_datadir}/bash-completion/completions/boinc # Remove static libraries, libtool archives rm %{buildroot}%{_libdir}/*.la # Relinking Manpages %if %{with manager} ln -s -f boincmgr.1.gz %{buildroot}%{_mandir}/man1/boinc-manager.1.gz %endif ln -s -f boinccmd.1.gz %{buildroot}%{_mandir}/man1/boinccmd.1.gz ln -s -f boinc.1.gz %{buildroot}%{_mandir}/man1/boinc.1.gz # Install fake /var/lib/boinc install -dm0755 %{buildroot}%{_var}/lib/boinc # Prepare $LANG Packages %find_lang BOINC-Client %if %{with manager} %find_lang BOINC-Manager %else find %{buildroot}/%{_datadir}/locale/ -name "BOINC-Manager.mo" -delete %endif %fdupes -s %{buildroot} %pre getent group boinc >/dev/null || %{_sbindir}/groupadd -r boinc # add user getent passwd boinc >/dev/null || \ %{_sbindir}/useradd -c "BOINC Client" -d "%{_localstatedir}/lib/boinc" \ -g boinc -r -s /sbin/nologin boinc # fix replacing old sysconfig file (r21) if [ -f %{_sysconfdir}/sysconfig/%{name} ]; then if ! grep -q "BOINC_BOINC_USR" %{_sysconfdir}/sysconfig/boinc-client; then mv -f %{_sysconfdir}/sysconfig/%{name} %{_sysconfdir}/sysconfig/%{name}.save fi fi %service_add_pre %{name}.service %preun %service_del_preun %{name}.service %post %{fillup_only} %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 %files %license COPYING* COPYRIGHT %doc README.SUSE %config(noreplace) %{_sysconfdir}/logrotate.d/%{name} %{_datadir}/bash-completion/completions/* %{_bindir}/boinc %{_bindir}/%{name} %{_bindir}/boinccmd %{_bindir}/switcher %{_mandir}/man1/boinccmd.1.gz %{_mandir}/man1/boinc.1.gz %{_unitdir}/%{name}.service %{_sbindir}/rc%{name} %{_fillupdir}/sysconfig.%{name} %attr(-,boinc,boinc) %{boinc_dir}/ %files -n %{name}-lang -f BOINC-Client.lang %if %{with manager} %files -n boinc-manager %{_bindir}/boinc-gui %{_bindir}/boinc-manager %{_bindir}/boincmgr %{_bindir}/boincmanager %{_bindir}/boincscr %{_datadir}/applications/boinc.desktop %{_datadir}/icons/hicolor/*/apps/* %{_datadir}/boinc-manager/ %{_mandir}/man1/boincmgr.1.gz %{_mandir}/man1/boinc-manager.1.gz %files -n boinc-manager-lang -f BOINC-Manager.lang %endif %files -n libboinc%{sonum} %{_libdir}/*.so.* %files devel %{_libdir}/*.a %{_libdir}/*.so %{_libdir}/pkgconfig/*.pc %{_includedir}/boinc %changelog