File cgminer.spec of Package cgminer
#
# spec file for package cgminer
#
# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
#
# 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/
#
%global flavor @BUILD_FLAVOR@%{nil}
%if "%{flavor}" == ""
%define standard_modules --enable-avalon --enable-avalon2 --enable-avalon4 --enable-avalon7 --enable-avalon-miner --enable-bflsc --enable-bitforce --enable-bitfury --enable-blockerupter --enable-cointerra --enable-drillbit --enable-hashfast --enable-hashratio --enable-icarus --enable-klondike --enable-modminer
%define standalone_modules --disable-ants1 --disable-ants2 --disable-ants3 --disable-bab --disable-bitfury16 --disable-bitmine_A1 --disable-dragonmint_t1 --disable-knc --disable-minion --disable-sp10 --disable-sp30
%else
%define standard_modules --disable-avalon --disable-avalon2 --disable-avalon4 --disable-avalon7 --disable-avalon-miner --disable-bflsc --disable-bitforce --disable-bitfury --disable-blockerupter --disable-cointerra --disable-drillbit --disable-hashfast --disable-hashratio --disable-icarus --disable-klondike --disable-modminer
%if "%{flavor}" == "ants1"
%define standalone_modules --enable-ants1 --disable-ants2 --disable-ants3 --disable-bab --disable-bitfury16 --disable-bitmine_A1 --disable-dragonmint_t1 --disable-knc --disable-minion --disable-sp10 --disable-sp30
%endif
%if "%{flavor}" == "ants2"
%define standalone_modules --disable-ants1 --enable-ants2 --disable-ants3 --disable-bab --disable-bitfury16 --disable-bitmine_A1 --disable-dragonmint_t1 --disable-knc --disable-minion --disable-sp10 --disable-sp30
%endif
%if "%{flavor}" == "ants3"
%define standalone_modules --disable-ants1 --disable-ants2 --enable-ants3 --disable-bab --disable-bitfury16 --disable-bitmine_A1 --disable-dragonmint_t1 --disable-knc --disable-minion --disable-sp10 --disable-sp30
%endif
%if "%{flavor}" == "bab"
%define standalone_modules --disable-ants1 --disable-ants2 --disable-ants3 --enable-bab --disable-bitfury16 --disable-bitmine_A1 --disable-dragonmint_t1 --disable-knc --disable-minion --disable-sp10 --disable-sp30
%endif
%if "%{flavor}" == "bitfury16"
%define standalone_modules --disable-ants1 --disable-ants2 --disable-ants3 --disable-bab --enable-bitfury16 --disable-bitmine_A1 --disable-dragonmint_t1 --disable-knc --disable-minion --disable-sp10 --disable-sp30
%endif
%if "%{flavor}" == "bitmine_A1"
%define standalone_modules --disable-ants1 --disable-ants2 --disable-ants3 --disable-bab --disable-bitfury16 --enable-bitmine_A1 --disable-dragonmint_t1 --disable-knc --disable-minion --disable-sp10 --disable-sp30
%endif
%if "%{flavor}" == "dragonmint_t1"
%define standalone_modules --disable-ants1 --disable-ants2 --disable-ants3 --disable-bab --disable-bitfury16 --disable-bitmine_A1 --enable-dragonmint_t1 --disable-knc --disable-minion --disable-sp10 --disable-sp30
%endif
%if "%{flavor}" == "knc"
%define standalone_modules --disable-ants1 --disable-ants2 --disable-ants3 --disable-bab --disable-bitfury16 --disable-bitmine_A1 --disable-dragonmint_t1 --enable-knc --disable-minion --disable-sp10 --disable-sp30
%endif
%if "%{flavor}" == "minion"
%define standalone_modules --disable-ants1 --disable-ants2 --disable-ants3 --disable-bab --disable-bitfury16 --disable-bitmine_A1 --disable-dragonmint_t1 --disable-knc --enable-minion --disable-sp10 --disable-sp30
%endif
%if "%{flavor}" == "sp10"
%define standalone_modules --disable-ants1 --disable-ants2 --disable-ants3 --disable-bab --disable-bitfury16 --disable-bitmine_A1 --disable-dragonmint_t1 --disable-knc --disable-minion --enable-sp10 --disable-sp30
%endif
%if "%{flavor}" == "sp30"
%define standalone_modules --disable-ants1 --disable-ants2 --disable-ants3 --disable-bab --disable-bitfury16 --disable-bitmine_A1 --disable-dragonmint_t1 --disable-knc --disable-minion --disable-sp10 --enable-sp30
%endif
%endif
%define common_name cgminer
%if "%{flavor}" == ""
Name: %{common_name}
%else
Name: %{common_name}-%{flavor}
%endif
Summary: A BitCoin miner
License: GPL-3.0-or-later
Group: Productivity/Other
Version: 4.11.1
Release: 0
Url: http://%{common_name}.org/
Source0: %{common_name}-%{version}.tar.xz
Source1: start_%{common_name}.in
Source2: %{common_name}.service.in
Patch0: %{common_name}-configure1.patch
Patch1: %{common_name}-configure2.patch
Patch2: %{common_name}-i2c.patch
Patch3: %{common_name}-i2c-legacy1.patch
Patch4: %{common_name}-i2c-legacy2.patch
BuildRequires: automake
%if 0%{?suse_version} && 0%{?is_opensuse} && 0%{?suse_version} <= 1320
BuildRequires: gcc7
%endif
BuildRequires: libcurl-devel
%if 0%{?suse_version} && 0%{?suse_version} > 1320
BuildRequires: libi2c0-devel
%else
BuildRequires: i2c-tools
%endif
%if 0%{?suse_version} && ( 0%{?suse_version} == 1315 || 0%{?suse_version} > 1320 )
BuildRequires: libjansson-devel >= 2.7
%endif
BuildRequires: libtool
BuildRequires: libudev-devel
BuildRequires: libusb-devel
BuildRequires: ncurses-devel
BuildRequires: pkg-config
BuildRequires: shadow
%if 0%{?suse_version} && 0%{?suse_version} >= 1315
BuildRequires: systemd-devel
%endif
BuildRequires: zlib-devel
%if "%{flavor}" != ""
Conflicts: %{common_name}
%endif
%if "%{flavor}" != "ants1"
Conflicts: %{common_name}-ants1
%endif
%if "%{flavor}" != "ants2"
Conflicts: %{common_name}-ants2
%endif
%if "%{flavor}" != "ants3"
Conflicts: %{common_name}-ants3
%endif
%if "%{flavor}" != "ants3"
Conflicts: %{common_name}-ants3
%endif
%if "%{flavor}" != "bab"
Conflicts: %{common_name}-bab
%endif
%if "%{flavor}" != "bitfury16"
Conflicts: %{common_name}-bitfury16
%endif
%if "%{flavor}" != "bitmine_A1"
Conflicts: %{common_name}-bitmine_A1
%endif
%if "%{flavor}" != "dragonmint_t1"
Conflicts: %{common_name}-dragonmint_t1
%endif
%if "%{flavor}" != "knc"
Conflicts: %{common_name}-knc
%endif
%if "%{flavor}" != "minion"
Conflicts: %{common_name}-minion
%endif
%if "%{flavor}" != "sp10"
Conflicts: %{common_name}-sp10
%endif
%if "%{flavor}" != "sp30"
Conflicts: %{common_name}-sp30
%endif
%if "%{flavor}" != "zeus"
Conflicts: %{common_name}-zeus
%endif
%if 0%{?suse_version} && 0%{?suse_version} >= 1315
%define configure_libsystemd --enable-libsystemd
%else
%define configure_libsystemd --disable-libsystemd
%endif
%if 0%{?suse_version} && ( 0%{?suse_version} == 1315 || 0%{?suse_version} > 1320 )
%define configure_libjansson --with-system-jansson
%else
%define configure_libjansson --without-system-jansson
%endif
%define packagename_daemon %{name}-daemon
%define plugdev_gid 46
%define plugdev_gname plugdev
%description
This is a multi-threaded multi-pool FPGA and ASIC miner for bitcoin.
%package -n %{packagename_daemon}
Summary: Daemon for %{name}
Group: Productivity/Other
BuildArch: noarch
Requires: %{name} = %{version}
%{?systemd_requires}
Recommends: logrotate
%description -n %{packagename_daemon}
This package contains a systemd daemon for %{name}.
%package doc
Summary: Documentation for %{name}
Group: Documentation/Man
BuildArch: noarch
%description doc
This package contains the documentation for %{name}.
%prep
%setup -q -n %{common_name}-%{version}
%patch -P 0
%if 0%{?suse_version} && ( 0%{?suse_version} == 1320 || 0%{?suse_version} < 1315 )
%patch -P 1
%patch -P 4
%endif
%if 0%{?suse_version} && 0%{?suse_version} > 1320
%patch -P 2
%else
%if 0%{?suse_version} && 0%{?suse_version} == 1315
%patch -P 3
%endif
%endif
%{__sed} 's#^__SETTINGS__$#cgminer_bin=%{_bindir}/%{common_name}\ncgminer_conf=%{_sysconfdir}/%{common_name}.conf\ncgminer_log=%{_localstatedir}/log/%{common_name}/%{common_name}.log\ncgminer_run=%{_localstatedir}/run/%{common_name}.pid#g' %{S:1} > start_%{common_name}
%{__sed} 's#^__SETTINGS__$#ExecStart=%{_sbindir}/start_%{common_name} start\nExecStop=%{_sbindir}/start_%{common_name} stop#g' %{S:2} > %{common_name}.service
%build
%if 0%{?suse_version} && 0%{?is_opensuse} && 0%{?suse_version} <= 1320
export CC=gcc-7
%endif
%if 0%{?suse_version} && 0%{?suse_version} > 1500
export CFLAGS="${CFLAGS} -fcommon"
%endif
NOCONFIGURE=yes ./autogen.sh
%configure --enable-silent-rules --with-udevrulesdir=%{_usr}/lib/udev/rules.d --docdir=%{_defaultdocdir}/%{name} %{configure_libsystemd} %{configure_libjansson} --with-system-libusb %{standalone_modules} %{standard_modules}
%{__make} %{?_smp_mflags}
%{__strip} -s %{common_name}
%install
%{__make} install DESTDIR=%{buildroot}
%{__mkdir_p} %{buildroot}%{_sbindir}
%{__mkdir_p} %{buildroot}%{_localstatedir}/log/%{common_name}
%{__mkdir_p} %{buildroot}%{_sysconfdir}/logrotate.d
%{__mkdir_p} %{buildroot}%{_usr}/lib/udev/rules.d
%{__mkdir_p} %{buildroot}%{_unitdir}
%{__mkdir_p} %{buildroot}%{_defaultdocdir}/%{name}/bitstreams
%{__install} -m 0644 -p -t %{buildroot}%{_usr}/lib/udev/rules.d 01-%{common_name}.rules
%{__install} -m 0644 -p -t %{buildroot}%{_defaultdocdir}/%{name} AUTHORS ChangeLog NEWS *README
%{__install} -m 0644 -p -t %{buildroot}%{_defaultdocdir}/%{name}/bitstreams bitstreams/README
%{__install} -d -m 0755 %{buildroot}%{_defaultlicensedir}/%{name}/bitstreams
%{__install} -m 0644 -p -t %{buildroot}%{_defaultlicensedir}/%{name} COPYING LICENSE
%{__install} -m 0644 -p -t %{buildroot}%{_defaultlicensedir}/%{name}/bitstreams bitstreams/COPYING_fpgaminer
%{__rm} -fr %{buildroot}%{_bindir}/bitstreams
%{__install} -m 0755 -p -t %{buildroot}%{_sbindir} start_%{common_name}
%{__install} -m 0644 -p -t %{buildroot}%{_unitdir} %{common_name}.service
%{__cp} -a example.conf %{common_name}.conf
%{__install} -m 0644 -p -t %{buildroot}%{_sysconfdir} %{common_name}.conf
%{__ln_s} %{_sbindir}/service %{buildroot}%{_sbindir}/rc%{common_name}
# generate logrotate configuration
echo "%{_localstatedir}/log/%{common_name}/%{common_name}.log {" > %{buildroot}%{_sysconfdir}/logrotate.d/%{packagename_daemon}
echo " compress" >> %{buildroot}%{_sysconfdir}/logrotate.d/%{packagename_daemon}
echo " dateext" >> %{buildroot}%{_sysconfdir}/logrotate.d/%{packagename_daemon}
echo " daily" >> %{buildroot}%{_sysconfdir}/logrotate.d/%{packagename_daemon}
echo " rotate 90" >> %{buildroot}%{_sysconfdir}/logrotate.d/%{packagename_daemon}
echo " notifempty" >> %{buildroot}%{_sysconfdir}/logrotate.d/%{packagename_daemon}
echo " missingok" >> %{buildroot}%{_sysconfdir}/logrotate.d/%{packagename_daemon}
echo " copytruncate" >> %{buildroot}%{_sysconfdir}/logrotate.d/%{packagename_daemon}
echo " create 644" >> %{buildroot}%{_sysconfdir}/logrotate.d/%{packagename_daemon}
echo "}" >> %{buildroot}%{_sysconfdir}/logrotate.d/%{packagename_daemon}
# remove libjansson compatibility build
%if 0%{?suse_version} && ( 0%{?suse_version} == 1320 || 0%{?suse_version} < 1315 )
%{__rm} -fr %{buildroot}%{_includedir} %{buildroot}%{_libdir}/pkgconfig %{buildroot}%{_libdir}/libjansson*
%endif
%check
%pre
getent group %{plugdev_gname} > /dev/null || groupadd -g %{plugdev_gid} %{plugdev_gname}
%pre -n %{packagename_daemon}
%service_add_pre %{common_name}.service
%post -n %{packagename_daemon}
%service_add_post %{common_name}.service
%preun -n %{packagename_daemon}
%service_del_preun %{common_name}.service
%postun -n %{packagename_daemon}
%service_del_postun %{common_name}.service
%files
%defattr(-,root,root,-)
%attr(755,root,root) %{_bindir}/*
%{_usr}/lib/udev/rules.d/
%files -n %{packagename_daemon}
%defattr(-,root,root,-)
%attr(755,root,root) %{_sbindir}/start_%{common_name}
%{_sbindir}/rc%{common_name}
%config(noreplace) %attr(644,root,root) %{_sysconfdir}/%{common_name}.conf
%attr(750,root,root) %dir %{_localstatedir}/log/%{common_name}
%config(noreplace) %{_sysconfdir}/logrotate.d/%{packagename_daemon}
%{_unitdir}/
%files doc
%defattr(-,root,root,-)
%{_defaultdocdir}/%{name}/
%{_defaultlicensedir}/%{name}/
%changelog