File bitbean.spec of Package bitbean

#
# spec file for package bitbean
#
# 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/
#

Name:           bitbean
Version:        1.1.2.1
Release:        0
Summary:        P2P digital currency
License:        MIT
Group:          Productivity/Networking/Other
Url:            http://www.%{name}.org/
Source0:        %{name}-%{version}.tar.xz
Patch0:         %{name}-boost1.patch
Patch1:         %{name}-boost2.patch
Patch2:         %{name}-qt.patch
Patch3:         %{name}-util.patch
ExcludeArch:    aarch64
%if 0%{?suse_version} && 0%{?suse_version} > 1320
BuildRequires:  libboost_filesystem-devel
BuildRequires:  libboost_program_options-devel
BuildRequires:  libboost_system-devel
BuildRequires:  libboost_thread-devel
%else
BuildRequires:  boost-devel
%endif
BuildRequires:  libdb-5_3-devel
BuildRequires:  libminiupnpc-devel
BuildRequires:  qrencode-devel
%if 0%{?suse_version} && 0%{?suse_version} >= 1315
%if 0%{?suse_version} && 0%{?suse_version} > 1320
BuildRequires:  libopenssl-1_0_0-devel
%else
BuildRequires:  libopenssl-devel
%endif
BuildRequires:  libqt5-qtbase-devel
BuildRequires:  libqt5-qttools-devel
%else
BuildRequires:  libqt4-devel
%endif
%if 0%{?suse_version} && 0%{?is_opensuse} && 0%{?suse_version} == 1315 && 0%{?sle_version} && 0%{?sle_version} >= 120200
BuildRequires:  shadow
%endif
BuildRequires:  update-desktop-files

%if ! %{defined _rundir}
%define _rundir %{_localstatedir}/run
%endif

%global qt4_version qt
%global qt5_version qt5

%if 0%{?suse_version} && 0%{?suse_version} >= 1315
%define qt_version %{qt5_version}
%define qt_version_obsolete %{qt4_version}
%define ___qmake qmake-%{qt_version}
%else
%define qt_version %{qt4_version}
%define qt_version_obsolete %{qt5_version}
%define ___qmake qmake
%endif

%if 0%{?suse_version} && 0%{?is_opensuse} && 0%{?suse_version} == 1315 && 0%{?sle_version} && 0%{?sle_version} >= 120200
%define ___qmake_cxxflags QMAKE_CXXFLAGS="${QMAKE_CXXFLAGS} -DBOOST_NO_CXX11_SCOPED_ENUMS"
%endif

%if 0%{?suse_version} && 0%{?suse_version} > 1320
%define ___qmake_cxxflags QMAKE_CXXFLAGS="${QMAKE_CXXFLAGS} -DBOOST_ASIO_ENABLE_OLD_SERVICES"
%endif

%if 0%{?suse_version} && 0%{?suse_version} > 1500
%define ___qmake_cxxflags QMAKE_CXXFLAGS="${QMAKE_CXXFLAGS} -std=c++14"
%endif

# set binary names
%define daemon_name %{name}d
%define display_name BitBean
%define gui_name %{name}-qt

# set ports
%define p2p_port 22460
%define rpc_port 22461

%define description_text BitBeans (Ticker: BITB) is a new crypto currency designed for scale-ability, speed and lightening fast transactions! It features an innovative Proof of Stake algorithm that more closely resembles traditional Proof of Work crypto currencies. BitBean is the first crypto to implement 20MB blocks, based off Gavin Andersen's proposals to fix BitCoin's scale-ability limitations. BitBean is designed from the ground-up to be transaction-centric and superior form of currency for on-line and brick-and-mortar businesses. Innovative new implementations are planned for BitBean that will set it appart from the rest of the crypto curriencies and lead in the mass adoption of crypto curriencies in the market place.

%description
%{description_text}

%package %{qt_version}
Summary:        GUI for the %{display_name} crypto-currency
Group:          Productivity/Networking/Other
Obsoletes:      %{name}-%{qt_version_obsolete}

%description %{qt_version}
%{description_text}

This package provides %{display_name}-Qt, a GUI for %{display_name} based on Qt.

%package -n %{daemon_name}
Summary:        Headless daemon for %{name} crypto-currency
Group:          Productivity/Networking/Other

%description -n %{daemon_name}
%{description_text}

This package provides %{daemon_name}, a headless %{name} daemon.

%package doc
Summary:        Documentation for %{name}
Group:          Documentation/Man
BuildArch:      noarch

%description doc
%{description_text}

%prep
%setup -q
%if 0%{?suse_version} && 0%{?suse_version} > 1320
%patch0
%endif
%if 0%{?suse_version} && 0%{?suse_version} > 1500
%patch1
%patch2
%endif
%patch3

# setup systemd service
%{__sed} -i '/^ $/d' contrib/initscripts/systemd/%{daemon_name}.service
%{__sed} -i 's#^Description=Bitbean daemon serivce$#Description=%{display_name} Daemon#g' contrib/initscripts/systemd/%{daemon_name}.service
%{__sed} -i 's#^Type=simple$#Type=forking\nPIDFile=%{_rundir}/%{name}/%{daemon_name}.pid#g' contrib/initscripts/systemd/%{daemon_name}.service
%{__sed} -i 's#^User=bitbean$#User=%{name}\nGroup=%{name}#g' contrib/initscripts/systemd/%{daemon_name}.service
%{__sed} -i 's#^ExecStart=/opt/bitbean/bitbeand$#ExecStart=%{_bindir}/%{daemon_name} -daemon -pid=%{_rundir}/%{name}/%{daemon_name}.pid -conf=%{_sysconfdir}/%{name}.conf -datadir=%{_localstatedir}/lib/%{name} -disablewallet\nExecReload=/bin/kill -HUP \$MAINPID\n\nRestart=always\nPrivateTmp=true\nTimeoutStopSec=60s\nTimeoutStartSec=2s\nStartLimitInterval=120s\nStartLimitBurst=5#g' contrib/initscripts/systemd/%{daemon_name}.service

# setup default config file
%{__cp} -a contrib/debian/examples/novacoin.conf contrib/debian/examples/%{name}.conf
%{__sed} -i 's#Bitcoin/bitcoind##g' contrib/debian/examples/%{name}.conf
%{__sed} -i 's#novacoin#%{name}#g' contrib/debian/examples/%{name}.conf
%{__sed} -i 's#NovaCoin#%{name}#g' contrib/debian/examples/%{name}.conf
%{__sed} -i 's#Novacoin#%{name}#g' contrib/debian/examples/%{name}.conf

# setup firewall config
%if 0%{?suse_version} && ( 0%{?suse_version} < 1500 || ( 0%{?is_opensuse} && 0%{?suse_version} == 1500 && 0%{?sle_version} && 0%{?sle_version} <= 150200 ) )
echo "## Name: %{display_name} Daemon" > %{name}.firewall
echo "## Description: Opens ports for %{daemon_name} in order to allow remote connections." >> %{name}.firewall
echo -e "\nTCP=\"%{p2p_port} %{rpc_port}\"" >> %{name}.firewall
%endif

# setup run folder
echo "d %{_rundir}/%{name} 0770 root %{name}" > rundir.conf

%build
%{___qmake} USE_QRCODE=1 USE_DBUS=1 %{?___qmake_cxxflags}
%{__make} %{?_smp_mflags}
%{__mv} %{name} %{gui_name}
%{__strip} -s %{gui_name}
%if 0%{?suse_version} && 0%{?suse_version} > 1320
export CXXFLAGS="${CXXFLAGS} -DBOOST_ASIO_ENABLE_OLD_SERVICES"
%endif
%if 0%{?suse_version} && 0%{?suse_version} > 1500
export CXXFLAGS="${CXXFLAGS} -std=c++14"
%endif
%{__make} -C src -f makefile.unix %{?_smp_mflags}
%{__mv} src/%{display_name}d src/%{daemon_name}
%{__strip} -s src/%{daemon_name}

%install
%{__install} -dm 0755 %{buildroot}%{_bindir}
%{__install} -m 0755 %{gui_name} %{buildroot}%{_bindir}
%{__install} -m 0755 src/%{daemon_name} %{buildroot}%{_bindir}

# install daemon supplementary files
%{__install} -D -m 0644 contrib/debian/examples/%{name}.conf  %{buildroot}%{_sysconfdir}/%{name}.conf
%{__install} -D -m 0644 contrib/initscripts/systemd/%{daemon_name}.service %{buildroot}%{_unitdir}/%{daemon_name}.service
%{__mkdir_p} %{buildroot}%{_localstatedir}/lib/%{name}
%{__install} -d -m 0755 %{buildroot}%{_sbindir}
%{__ln_s} %{_sbindir}/service %{buildroot}%{_sbindir}/rc%{daemon_name}

# install firewall config file
%if 0%{?suse_version} && ( 0%{?suse_version} < 1500 || ( 0%{?is_opensuse} && 0%{?suse_version} == 1500 && 0%{?sle_version} && 0%{?sle_version} <= 150200 ) )
%{__install} -D -m 644 %{name}.firewall %{buildroot}%{_sysconfdir}/sysconfig/SuSEfirewall2.d/services/%{daemon_name}
%endif

# install desktop file
%{__install} -D -m 0644 src/qt/res/icons/bitbean-80.png %{buildroot}%{_datadir}/pixmaps/%{name}.png
%suse_update_desktop_file -c %{gui_name} %{display_name} "%{display_name} Wallet" %{gui_name} %{name} Office Finance

# install run folder configuration
%{__install} -D -m 0644 rundir.conf %{buildroot}/%{_tmpfilesdir}/%{name}_rundir.conf

# install documentation
%{__install} -d -m 0755 %{buildroot}%{_defaultdocdir}/%{name}
%{__install} -m 0644 -p -t %{buildroot}%{_defaultdocdir}/%{name} BitBeanLogo.png README README.html README.md
%{__install} -d -m 0755 %{buildroot}%{_defaultlicensedir}/%{name}
%{__install} -m 0644 -p -t %{buildroot}%{_defaultlicensedir}/%{name} COPYING
%{__cp} -a doc %{buildroot}%{_defaultdocdir}/%{name}/

%pre -n %{daemon_name}
getent group %{name} > /dev/null || groupadd -r %{name}
getent passwd %{name} > /dev/null || useradd -r -g %{name} -d %{_localstatedir}/lib/%{name} -s /sbin/nologin -c "%{name} daemon" %{name}
%service_add_pre %{daemon_name}.service

%preun -n %{daemon_name}
%service_del_preun %{daemon_name}.service

%post -n %{daemon_name}
%service_add_post %{daemon_name}.service
%if 0%{?suse_version} <= 1320
systemd-tmpfiles --create %{_tmpfilesdir}/%{name}_rundir.conf >/dev/null 2>&1 || :
%else
%tmpfiles_create %{_tmpfilesdir}/%{name}_rundir.conf
%endif

%if 0%{?suse_version} && 0%{?suse_version} < 1500
%post %{qt_version}
%desktop_database_post

%postun %{qt_version}
%desktop_database_postun
%endif

%postun -n %{daemon_name}
%service_del_postun %{daemon_name}.service

%files %{qt_version}
%defattr(-,root,root,-)
%attr(755,root,root) %{_bindir}/%{gui_name}
%{_datadir}/pixmaps/%{name}.png
%{_datadir}/applications/%{gui_name}.desktop

%files -n %{daemon_name}
%defattr(-,root,root,-)
%attr(755,root,root) %{_bindir}/%{daemon_name}
%{_sbindir}/rc%{daemon_name}
%{_unitdir}/%{daemon_name}.service
%config(noreplace) %{_sysconfdir}/%{name}.conf
%if 0%{?suse_version} && ( 0%{?suse_version} < 1500 || ( 0%{?is_opensuse} && 0%{?suse_version} == 1500 && 0%{?sle_version} && 0%{?sle_version} <= 150200 ) )
%config %{_sysconfdir}/sysconfig/SuSEfirewall2.d/services/%{daemon_name}
%endif
%dir %attr(700,%{name},%{name}) %{_localstatedir}/lib/%{name}
%ghost %{_rundir}/%{name}
%dir %{_tmpfilesdir}
%{_tmpfilesdir}/%{name}_rundir.conf

%files doc
%defattr(-,root,root,-)
%{_defaultdocdir}/%{name}/
%{_defaultlicensedir}/%{name}/

%changelog
openSUSE Build Service is sponsored by