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
openSUSE Build Service is sponsored by