File dogecoin.spec of Package dogecoin
#
# spec file for package dogecoin
#
# Copyright (c) 2024 SUSE LLC
#
# 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/
#
# program names
%define progname dogecoin
%define specname_core %{progname}
%define libname_core_ext %{nil}
# program base names
%define progbase %{progname}
%define libbase lib%{progbase}consensus
# settings
%define specname %{specname_core}
%define specurl https://%{specname}.com/
%define speclicense MIT
%define currency_name Dogecoin
%define display_name DogeCoin
%define libname_ext %{?libname_core_ext}
%define conf_src contrib/debian/examples/dogecoin.conf
%define icon_src share/pixmaps/dogecoin256.png
%define service_src %{nil}
%define doc_list CONTRIBUTING.md README.md README_*.md
%define vendor_ident %{_host_vendor}
%define lic_file COPYING
%define lic_list %{lic_file}
# conf replacements
%define currencyname_src Dogecoin
%define guiname_src Dogecoin-QT
%define progname_src dogecoin
# port settings
%define p2p_port 22556
%define rpc_port 22555
# ancient program
%define ancient_name %{nil}
%define ancient_libname %{nil}
%define ancient_version %{nil}
# settings for dependencies
%define automake_version 1.0
%define libboost_version 1.0
%define libdb_version 5_3
%define libevent_version 1.0
%define libgcc_version 1.0
%define libminiupnpc_version 1.0
%undefine libopenssl_version
%define libqt5_version 5.0.0
%define libqt6_version 6.0.0
%define libsqlite_version 1.0
%define libunivalue_version 1.0.4
%define libzeromq_version 1.0
%define python_version 1.0
# boost version to use
%if 0%{?suse_version} && 0%{?suse_version} <= 1320
%define boost_flavor_version 1_62_0
%endif
# gcc version to use for compiler upgrade
%define compiler_upgrade_version 8
%define compiler_language_upgrade_version 14
# python version to use for testing
%define python_flavor_version 3
# qt version to use for gui
%if 0%{?suse_version} && 0%{?suse_version} >= 1315
%define qt_flavor_version 5
%else
%define qt_flavor_version 4
%endif
# experimental features
%define without_experimental_features 0
# options
%define with_bench 1
%define with_gui 1
%define with_libs 0
%define with_man 1
%define with_util_chainstate 0
%define with_util_cli 1
%define with_util_miner 0
%define with_util_seeder 0
%define with_util_util 0
%define with_util_tx 1
%define with_util_wallet 0
%define with_tests 1
%define with_checks 0
%if 0%{?suse_version} && 0%{?suse_version} == 1310 && ( "%{__isa_name}" == "armv6l" || "%{__isa_name}" == "armv6hl" )
%define with_upnp 0
%else
%define with_upnp 1
%endif
%define with_multiprocessing 0
%define with_mpcodegen 0
%define with_natpmp 0
%define with_external_signer 0
%define with_kernel_lib 0
%if 0%{?suse_version} && 0%{?suse_version} == 1320 && "%{_arch}" == "ppc64le"
%define with_asm 0
%else
%define with_asm 1
%endif
%define with_sqlite 0
%define with_sse2 1
%define with_sandbox 0
%define with_bash_support 1
%define with_fish_support 0
%define with_postfix_support 1
%define with_bip70 0
%define with_docs 1
%define with_docs_html 0
%if 0%{?suse_version} && 0%{?is_opensuse} && 0%{?suse_version} <= 1320
%define with_compiler_upgrade 1
%else
%define with_compiler_upgrade 0
%endif
%if 0%{?suse_version} && 0%{?is_opensuse} && 0%{?suse_version} == 1500 && 0%{?sle_version} && 0%{?sle_version} >= 150600
%define with_compiler_language_upgrade 1
%else
%define with_compiler_language_upgrade 0
%endif
%define with_ancient_program_support 0
%define with_package_conflict_support 0
%define with_legacy_package_support 1
%if 0%{?suse_version} && ( 0%{?suse_version} < 1500 || ( 0%{?is_opensuse} && 0%{?suse_version} == 1500 && 0%{?sle_version} && 0%{?sle_version} <= 150200 ) )
%define with_susefirewall_support 1
%else
%define with_susefirewall_support 0
%endif
%ifarch %arm
%define without_rpath_check 1
%else
%define without_rpath_check 0
%endif
%define with_sys_univalue 1
# options for build type standard
%if "%{?__btype}" == ""
%define without_experimental_features 1
%endif
# options for build type experimental
%if "%{?__btype}" == "experimental"
%define with_docs 0
%endif
# options for build type nightly
%if "%{?__btype}" == "nightly"
%define with_bash_support 0
%define with_docs 0
%define with_man 0
%endif
# disable experimental features
%if %{without_experimental_features}
%{nil}
%endif
Name: %{specname}
Version: 0
Release: 0
Summary: P2P digital currency
License: %{speclicense}
Group: Productivity/Networking/Other
URL: %{specurl}
Source0: %{name}-%{version}.tar.xz
Source1: %{name}-rpmlintrc
BuildRequires: automake >= %{automake_version}
%if %{with_bash_support}
BuildRequires: bash-completion
%endif
BuildRequires: dos2unix
%if %{with_docs} && %{with_docs_html}
BuildRequires: doxygen
BuildRequires: graphviz
%endif
%if %{with_fish_support}
BuildRequires: fish
%endif
BuildRequires: fdupes
%if %{with_compiler_upgrade}
BuildRequires: gcc%{compiler_upgrade_version} >= %{libgcc_version}
BuildRequires: gcc%{compiler_upgrade_version}-c++ >= %{libgcc_version}
%endif
BuildRequires: libboost_filesystem%{?boost_flavor_version}-devel >= %{libboost_version}
BuildRequires: libboost_program_options%{?boost_flavor_version}-devel >= %{libboost_version}
BuildRequires: libboost_system%{?boost_flavor_version}-devel >= %{libboost_version}
%if %{with_tests}
BuildRequires: libboost_test%{?boost_flavor_version}-devel >= %{libboost_version}
%endif
BuildRequires: libboost_thread%{?boost_flavor_version}-devel >= %{libboost_version}
BuildRequires: libdb-%{libdb_version}-devel
BuildRequires: pkgconfig(libevent) >= %{libevent_version}
BuildRequires: pkgconfig(libopenssl%{?libopenssl_version:-}%{?libopenssl_version})
BuildRequires: pkgconfig(libqrencode)
%if %{with_sandbox}
BuildRequires: pkgconfig(libseccomp)
%endif
%if %{with_sys_univalue}
BuildRequires: pkgconfig(libunivalue) >= %{libunivalue_version}
%endif
BuildRequires: pkgconfig(libzmq) >= %{libzeromq_version}
BuildRequires: pkgconfig(protobuf)
%if %{with_sqlite}
BuildRequires: pkgconfig(sqlite3) >= %{libsqlite_version}
%endif
%if %{with_upnp}
BuildRequires: libminiupnpc-devel >= %{libminiupnpc_version}
%endif
%if %{with_multiprocessing}
BuildRequires: capnproto
BuildRequires: libcapnp-devel
BuildRequires: libmultiprocess-devel-static
%endif
%if %{with_natpmp}
BuildRequires: libnatpmp-devel
%endif
BuildRequires: libtool
%if %{with_gui}
%if %{qt_flavor_version} == 6
BuildRequires: qt6-base-devel >= %{libqt6_version}
BuildRequires: qt6-tools-devel >= %{libqt6_version}
%endif
%if %{qt_flavor_version} == 5
BuildRequires: libqt5-qtbase-devel >= %{libqt5_version}
BuildRequires: libqt5-qttools-devel >= %{libqt5_version}
%endif
%if %{qt_flavor_version} == 4
BuildRequires: libqt4-devel
%endif
%endif
%if %{with_checks}
BuildRequires: python%{python_flavor_version} >= %{python_version}
%endif
%if 0%{?suse_version} && ( 0%{?suse_version} == 1310 || 0%{?suse_version} == 1320 || ( 0%{?is_opensuse} && 0%{?suse_version} == 1315 && 0%{?sle_version} && 0%{?sle_version} >= 120100 ) )
BuildRequires: shadow
%endif
%if %{with_gui}
BuildRequires: update-desktop-files
%endif
%if ! %{defined _rundir}
%define _rundir %{_localstatedir}/run
%endif
%define soname 0
%global qt4_version qt
%global qt5_version qt5
%global qt6_version qt6
%if %{qt_flavor_version} == 6
%define qt_version %{qt6_version}
%define qt_version_obsolete %{qt5_version}
%define qt_config %{qt6_version}
%else
%if %{qt_flavor_version} == 5
%define qt_version %{qt5_version}
%define qt_version_obsolete %{qt4_version}
%define qt_config %{qt5_version}
%else
%define qt_version %{qt4_version}
%define qt_version_obsolete %{nil}
%define qt_config %{qt4_version}
%endif
%endif
# set binary names
%define bench_name bench_%{progbase}
%define chainstate_name %{progbase}-chainstate
%define cli_name %{progbase}-cli
%define gui_name %{progbase}-qt
%define guim_name %{progbase}-gui
%define node_name %{progbase}-node
%define seeder_name %{progbase}-seeder
%define tx_name %{progbase}-tx
%define util_name %{progbase}-util
%define wallet_name %{progbase}-wallet
%define daemon_name %{progbase}d
%define lib_name %{libbase}%{soname}
%define test_name test_%{progbase}
%define test_gui_name test_%{gui_name}
%define test_seeder_name test_%{seeder_name}
# set package names
%define daemon_packname %{name}d
%define lib_packname %{lib_name}%{?libname_ext}
%define bash_completion_packname_suffix bash-completion
%define fish_completion_packname_suffix fish-completion
# set package conflict names
%define conflict_name01 %{nil}
%define conflict_soname01 %{nil}
# set runtime parameters
%define prog_confdirbase %{progbase}
%define prog_rundirbase %{progbase}
%define prog_statedirbase %{progbase}
%define prog_confdir %{_sysconfdir}/%{prog_confdirbase}
%define prog_rundir %{_rundir}/%{prog_rundirbase}
%define prog_statedir %{_localstatedir}/lib/%{prog_statedirbase}
%define prog_conffile %{prog_confdir}/%{progbase}.conf
%define prog_pidfile %{prog_rundir}/%{daemon_name}.pid
%define prog_user %{progbase}
%define prog_group %{progbase}
# set install parameters
%define pkg_docdir %{_defaultdocdir}/%{name}
%define pkg_licdir %{_defaultlicensedir}/%{name}
%define service_filename %{daemon_name}.service
%define pkg_rundirconffile %{_tmpfilesdir}/%{progbase}_rundir.conf
%if 0%{?suse_version} && 0%{?suse_version} >= 1500
%define pkg_bashcompdir %{_datadir}/bash-completion/completions
%undefine pkg_bashcompsuffix
%else
%define pkg_bashcompdir %{_sysconfdir}/bash_completion.d
%define pkg_bashcompsuffix .bash-completion
%endif
%define pkg_fishcompdir %{_datadir}/fish/vendor_completions.d
%define pkg_fishcompsuffix .fish
%define pkg_fwconffile %{_sysconfdir}/sysconfig/SuSEfirewall2.d/services/%{daemon_name}
# set configuration options
%if %{with_bench}
%define conf_bench enable
%else
%define conf_bench disable
%endif
%if ! %{with_gui}
%define qt_config no
%endif
%if %{with_libs}
%define conf_libs with
%else
%define conf_libs without
%endif
%if %{with_man}
%define conf_man enable
%else
%define conf_man disable
%endif
%if %{with_util_chainstate}
%define conf_util_chainstate enable
%else
%define conf_util_chainstate disable
%endif
%if %{with_util_cli}
%define conf_util_cli with
%else
%define conf_util_cli without
%endif
%if %{with_util_miner}
%define conf_util_miner with
%else
%define conf_util_miner without
%endif
%if %{with_util_seeder}
%define conf_util_seeder with
%else
%define conf_util_seeder without
%endif
%if %{with_util_util}
%define conf_util_util with
%else
%define conf_util_util without
%endif
%if %{with_util_tx}
%define conf_util_tx with
%else
%define conf_util_tx without
%endif
%if %{with_util_wallet}
%define conf_util_wallet with
%else
%define conf_util_wallet without
%endif
%if %{with_tests}
%define conf_tests enable
%else
%define conf_tests disable
%endif
%if %{with_upnp}
%define conf_upnp with
%else
%define conf_upnp without
%endif
%if %{with_multiprocessing}
%define conf_multiprocessing enable
%define conf_libmultiprocessing yes
%else
%define conf_multiprocessing disable
%define conf_libmultiprocessing no
%endif
%if %{with_mpcodegen}
%define conf_mpcodegen yes
%else
%define conf_mpcodegen no
%endif
%if %{with_natpmp}
%define conf_natpmp with
%else
%define conf_natpmp without
%endif
%if %{with_external_signer}
%define conf_external_signer enable
%else
%define conf_external_signer disable
%endif
%if %{with_sandbox}
%define conf_sandbox with
%else
%define conf_sandbox without
%endif
%if %{with_kernel_lib}
%define conf_kernel_lib with
%else
%define conf_kernel_lib without
%endif
%if %{with_asm}
%define conf_asm enable
%else
%define conf_asm disable
%endif
%if %{with_sqlite}
%define conf_sqlite yes
%else
%define conf_sqlite no
%endif
%if %{with_sse2}
%define conf_sse2 enable
%else
%define conf_sse2 disable
%endif
%if %{with_sys_univalue}
%define conf_univalue with
%else
%define conf_univalue without
%endif
%if %{with_bip70}
%define conf_bip70 enable
%else
%define conf_bip70 disable
%endif
# set description
%define description_text DogeCoin is a cryptocurrency like BitCoin, although it does not use SHA256 as its proof of work (POW). Taking development cues from Tenebrix and LiteCoin, DogeCoin currently employs a simplified variant of scrypt.
# set summary and description for utils and test package
%if %{with_util_cli}
%define pkg_utils_description_cli %{display_name} CLI,
%else
%define pkg_utils_description_cli %{nil}
%endif
%if %{with_util_miner}
%define pkg_utils_description_miner %{display_name} Miner,
%else
%define pkg_utils_description_miner %{nil}
%endif
%if %{with_util_seeder}
%define pkg_utils_description_seeder %{display_name} Seeder,
%else
%define pkg_utils_description_seeder %{nil}
%endif
%if %{with_util_util}
%define pkg_utils_description_util %{display_name} Util,
%else
%define pkg_utils_description_util %{nil}
%endif
%if %{with_util_tx}
%define pkg_utils_description_tx %{display_name} TX,
%else
%define pkg_utils_description_tx %{nil}
%endif
%if %{with_util_wallet}
%define pkg_utils_description_wallet %{display_name} Wallet,
%else
%define pkg_utils_description_wallet %{nil}
%endif
%define pkg_utils_description This package provides %{?pkg_utils_description_cli}%{?pkg_utils_description_miner}%{?pkg_utils_description_seeder}%{?pkg_utils_description_util}%{?pkg_utils_description_tx}%{?pkg_utils_description_wallet} command line interfaces for %{display_name}.
%define pkg_multi_description This package provides the multiprocessing interfaces for %{display_name}.
%if %{with_tests} && %{with_bench}
%define pkg_test_summary Benchmarks and automated tests for %{progname} client
%define pkg_test_description This package provides benchmarks and automated tests for %{gui_name} and %{daemon_name}.
%endif
%if %{with_tests} && ( ! %{with_bench} )
%define pkg_test_summary Automated tests for %{progname} client
%define pkg_test_description This package provides automated tests for %{gui_name} and %{daemon_name}.
%endif
%if ( ! %{with_tests} ) && %{with_bench}
%define pkg_test_summary Benchmarks for %{progname} client
%define pkg_test_description This package provides benchmarks.
%endif
# conflict arrays
%define conflict_pack01 %{progname}%{?conflict_name01}
%define conflict_lib01 lib%{progname}consensus%{conflict_soname01}%{?conflict_name01:_}%{?conflict_name01}
%description
%{description_text}
%if %{with_util_cli} || %{with_util_miner} || %{with_util_seeder} || %{with_util_util} || %{with_util_tx} || %{with_util_wallet}
%package utils
Summary: Utils for the %{display_name} crypto-currency
Group: Productivity/Networking/Other
%if %{with_package_conflict_support}
Conflicts: %{conflict_pack01}-utils
%if %{with_legacy_package_support}
Conflicts: %{conflict_pack01}-cli
%endif
%endif
%if %{with_ancient_program_support}
Obsoletes: %{ancient_name}-utils <= %{ancient_version}
Provides: %{ancient_name}-utils = %{version}
%endif
%if %{with_legacy_package_support}
%if %{with_ancient_program_support}
Obsoletes: %{ancient_name}-cli <= %{ancient_version}
Provides: %{ancient_name}-cli = %{version}
%endif
Obsoletes: %{name}-cli < %{version}
Provides: %{name}-cli = %{version}
%endif
%description utils
%{description_text}
%{pkg_utils_description}
%if %{with_bash_support}
%package utils-%{bash_completion_packname_suffix}
Summary: Bash Completion for %{name}-utils
Group: System/Shells
Requires: %{name}-utils = %{version}
Requires: bash-completion
Supplements: packageand(%{name}-utils:bash-completion)
BuildArch: noarch
%description utils-%{bash_completion_packname_suffix}
Bash command line completion support for %{name}-utils.
%endif
%if %{with_fish_support}
%package utils-%{fish_completion_packname_suffix}
Summary: Fish completion for %{name}-utils
Group: System/Shells
Requires: %{name}-utils = %{version}
Requires: fish
Supplements: packageand(%{name}-utils:fish)
BuildArch: noarch
%description utils-%{fish_completion_packname_suffix}
Fish command line completion support for %{name}-utils.
%endif
%endif
%if %{with_gui}
%package %{qt_version}
Summary: GUI for the %{display_name} crypto-currency
Group: Productivity/Networking/Other
%if %{with_package_conflict_support}
Conflicts: %{conflict_pack01}-%{qt_version}
%if %{with_legacy_package_support}
Conflicts: %{conflict_pack01}-%{qt_version_obsolete}
%endif
%endif
%if %{with_ancient_program_support}
Obsoletes: %{ancient_name}-%{qt_version} <= %{ancient_version}
Provides: %{ancient_name}-%{qt_version} = %{version}
%endif
%if %{with_legacy_package_support}
%if %{with_ancient_program_support}
Obsoletes: %{ancient_name}-%{qt_version_obsolete} <= %{ancient_version}
Provides: %{ancient_name}-%{qt_version_obsolete} = %{version}
%endif
Obsoletes: %{name}-%{qt_version_obsolete} < %{version}
Provides: %{name}-%{qt_version_obsolete} = %{version}
%endif
%description %{qt_version}
%{description_text}
This package provides %{display_name} Qt, a GUI for %{display_name} based on Qt.
%if %{with_fish_support}
%package %{qt_version}-%{fish_completion_packname_suffix}
Summary: Fish completion for %{name}-%{qt_version}
Group: System/Shells
Requires: %{name}-%{qt_version} = %{version}
Requires: fish
Supplements: packageand(%{name}-%{qt_version}:fish)
BuildArch: noarch
%description %{qt_version}-%{fish_completion_packname_suffix}
Fish command line completion support for %{name}-%{qt_version}.
%endif
%endif
%package -n %{daemon_packname}
Summary: Headless daemon for %{progname} crypto-currency
Group: Productivity/Networking/Other
%if %{with_postfix_support}
Recommends: postfix
%endif
%if %{with_package_conflict_support}
Conflicts: %{conflict_pack01}d
%endif
%if %{with_docs}
Suggests: %{name}-doc = %{version}
%endif
%if %{with_ancient_program_support}
Obsoletes: %{ancient_name}d <= %{ancient_version}
Provides: %{ancient_name}d = %{version}
%endif
%if ! %{defined systemd_ordering}
%{?systemd_requires}
%else
%{?systemd_ordering}
%endif
%description -n %{daemon_packname}
%{description_text}
This package provides %{daemon_name}, a headless %{progname} daemon.
%if %{with_bash_support}
%package -n %{daemon_packname}-%{bash_completion_packname_suffix}
Summary: Bash Completion for %{daemon_packname}
Group: System/Shells
Requires: %{daemon_packname} = %{version}
Requires: bash-completion
Supplements: packageand(%{daemon_packname}:bash-completion)
BuildArch: noarch
%description -n %{daemon_packname}-%{bash_completion_packname_suffix}
Bash command line completion support for %{daemon_packname}.
%endif
%if %{with_fish_support}
%package -n %{daemon_packname}-%{fish_completion_packname_suffix}
Summary: Fish completion for %{daemon_packname}
Group: System/Shells
Requires: %{daemon_packname} = %{version}
Requires: fish
Supplements: packageand(%{daemon_packname}:fish)
BuildArch: noarch
%description -n %{daemon_packname}-%{fish_completion_packname_suffix}
Fish command line completion support for %{daemon_packname}.
%endif
%if %{with_multiprocessing}
%package multi
Summary: Multiprocessing for the %{display_name} crypto-currency
Group: Productivity/Networking/Other
%if %{with_package_conflict_support}
Conflicts: %{conflict_pack01}-multi
%endif
%if %{with_ancient_program_support}
Obsoletes: %{ancient_name}-multi <= %{ancient_version}
Provides: %{ancient_name}-multi = %{version}
%endif
%description multi
%{description_text}
%{pkg_multi_description}
%endif
%if %{with_tests} || %{with_bench}
%package test
Summary: %{pkg_test_summary}
Group: Productivity/Networking/Other
%if %{with_package_conflict_support}
Conflicts: %{conflict_pack01}-test
%if %{with_legacy_package_support}
Conflicts: %{conflict_pack01}-bench
%endif
%endif
%if %{with_ancient_program_support}
Obsoletes: %{ancient_name}-test <= %{ancient_version}
Provides: %{ancient_name}-test = %{version}
%endif
%if %{with_bench} && %{with_legacy_package_support}
%if %{with_ancient_program_support}
Obsoletes: %{ancient_name}-bench <= %{ancient_version}
Provides: %{ancient_name}-bench = %{version}
%endif
Obsoletes: %{name}-bench < %{version}
Provides: %{name}-bench = %{version}
%endif
%description test
%{description_text}
%{pkg_test_description}
%endif
%if %{with_libs}
%package -n %{lib_packname}
Summary: Implementation of getblocktemplate protocol
Group: System/Libraries
%if %{with_package_conflict_support}
Conflicts: %{conflict_lib01}
%endif
%if %{with_ancient_program_support}
Obsoletes: %{ancient_libname} <= %{ancient_version}
Provides: %{ancient_libname} = %{version}
%endif
%description -n %{lib_packname}
%{description_text}
This package provides shared libraries for %{progname}.
%package -n %{lib_packname}-devel
Summary: Development files for %{lib_name}
Group: Development/Libraries/C and C++
%if %{with_package_conflict_support}
Conflicts: %{conflict_lib01}-devel
%endif
%if %{with_ancient_program_support}
Obsoletes: %{ancient_libname}-devel <= %{ancient_version}
Provides: %{ancient_libname}-devel = %{version}
%endif
Requires: %{lib_packname} = %{version}
%description -n %{lib_packname}-devel
%{description_text}
The %{lib_name}-devel package contains libraries and header files for developing applications that use %{lib_name}.
%endif
%if %{with_docs}
%package doc
Summary: Documentation for %{progname}
Group: Documentation/Man
BuildArch: noarch
%if %{with_ancient_program_support}
Obsoletes: %{ancient_name}-doc <= %{ancient_version}
Provides: %{ancient_name}-doc = %{version}
%endif
%description doc
%{description_text}
This package contains the documentation for %{progname}.
%endif
%prep
%setup -q
%{_bindir}/dos2unix -k doc/README_windows.txt
# setup distribution identifier
%if "%{?vendor_ident}"
%{__sed} -i 's/^ #define BUILD_SUFFIX "-unk"$/ #define BUILD_SUFFIX "-%{vendor_ident}"/g' src/clientversion.cpp
%endif
# setup systemd service
%if "%{?service_src}"
%{__cp} -a %{service_src} contrib/init/%{service_filename}
%endif
%{__sed} -i 's#^Description=Dogecoin.s distributed currency daemon$#Description=%{display_name} Daemon#g' contrib/init/%{daemon_name}.service
%{__sed} -i 's#^\#/usr/bin/dogecoind$#\#%{_bindir}/%{daemon_name}#g' contrib/init/%{daemon_name}.service
%{__sed} -i 's#^\#/etc/dogecoin/$#\#%{prog_confdir}#g' contrib/init/%{daemon_name}.service
%{__sed} -i 's#^\#/var/lib/dogecoin/$#\#%{prog_statedir}#g' contrib/init/%{daemon_name}.service
%{__sed} -i 's#^KillSignal=SIGINT$#PIDFile=%{prog_pidfile}\nExecReload=/bin/kill -HUP \$MAINPID\nKillSignal=SIGINT#g' contrib/init/%{daemon_name}.service
%{__sed} -i 's#^ExecStart=/usr/bin/dogecoind -conf=/etc/dogecoin/dogecoin.conf -datadir=/var/lib/dogecoin$#ExecStart=%{_bindir}/%{daemon_name} -daemon -pid=%{prog_pidfile} -conf=%{prog_conffile} -datadir=%{prog_statedir} -disablewallet#g' contrib/init/%{daemon_name}.service
%{__sed} -i 's#^TemporaryFileSystem=/:ro$#\#TemporaryFileSystem=/:ro#g' contrib/init/%{daemon_name}.service
%{__sed} -i 's#^BindReadOnlyPaths=/etc/ /lib/ /lib64/$#\#BindReadOnlyPaths=%{_sysconfdir} %{_libdir}#g' contrib/init/%{daemon_name}.service
%{__sed} -i 's#^BindReadOnlyPaths=/usr/bin/dogecoind /etc/dogecoin/$#\#BindReadOnlyPaths=%{_bindir}/%{daemon_name} %{prog_confdir}#g' contrib/init/%{daemon_name}.service
%{__sed} -i 's#^BindPaths=/var/lib/dogecoin$#\#BindPaths=%{prog_statedir}#g' contrib/init/%{daemon_name}.service
%{__sed} -i 's#^RuntimeDirectory=dogecoin$#RuntimeDirectory=%{prog_rundirbase}#g' contrib/init/%{service_filename}
%{__sed} -i 's#^MemoryLimit=$#MemoryMax=#g' contrib/init/%{service_filename}
%{__sed} -i 's#^User=dogecoin$#User=%{prog_user}#g' contrib/init/%{service_filename}
%{__sed} -i 's#^Group=dogecoin$#Group=%{prog_group}#g' contrib/init/%{service_filename}
%{__sed} -i 's#^Restart=always#RuntimeDirectory=%{prog_rundirbase}\nRuntimeDirectoryMode=0710\n\nRestart=always#g' contrib/init/%{service_filename}
# setup default config file
%if "%{?conf_src}"
%{__mkdir_p} share/examples
%{__cp} -a %{conf_src} share/examples/%{progbase}.conf
%endif
%{__sed} -i 's#%{guiname_src}#%{gui_name}#g' share/examples/%{progbase}.conf
%{__sed} -i 's#%{progname_src}#%{progbase}#g' share/examples/%{progbase}.conf
%{__sed} -i 's#%{currencyname_src}#%{progbase}#g' share/examples/%{progbase}.conf
# setup firewall config
%if %{with_susefirewall_support}
echo "## Name: %{display_name} Daemon" > %{progbase}.firewall
echo "## Description: Opens ports for %{daemon_name} in order to allow remote connections." >> %{progbase}.firewall
echo -e "\nTCP=\"%{rpc_port}:%{p2p_port}\"" >> %{progbase}.firewall
%endif
# setup run folder
echo "d %{prog_rundir} 0710 root %{prog_group}" > rundir.conf
%build
%if %{with_compiler_upgrade}
export CC=gcc-%{compiler_upgrade_version} CXX=g++-%{compiler_upgrade_version}
%endif
%if %{with_compiler_language_upgrade}
export CXXFLAGS="${CXXFLAGS} -std=gnu++%{compiler_language_upgrade_version}"
%endif
./autogen.sh
%configure --docdir=%{pkg_docdir} --enable-silent-rules --enable-hardening --enable-reduce-exports --disable-usdt --%{conf_asm}-asm --%{conf_sse2}-sse2 --%{conf_multiprocessing}-multiprocess --%{conf_bip70}-bip70 --enable-zmq --enable-wallet --enable-upnp-default --disable-natpmp-default --%{conf_util_chainstate}-experimental-util-chainstate --%{conf_util_cli}-cli --%{conf_util_miner}-miner --%{conf_util_seeder}-seeder --%{conf_util_util}-util --%{conf_util_tx}-tx --%{conf_util_wallet}-wallet --%{conf_bench}-bench --%{conf_tests}-tests --%{conf_man}-man --%{conf_upnp}-miniupnpc --%{conf_natpmp}-natpmp --%{conf_external_signer}-external-signer --%{conf_sandbox}-seccomp --with-qrencode --with-boost --%{conf_libs}-libs --%{conf_kernel_lib}-experimental-kernel-lib --with-daemon --with-gui=%{qt_config} --with-sqlite=%{conf_sqlite} --with-libmultiprocess=%{conf_libmultiprocessing} --with-mpgen=%{conf_mpcodegen} --with-qtdbus --%{conf_univalue}-system-univalue --disable-static
%make_build
%if %{with_docs} && %{with_docs_html}
%make_build docs
%endif
%if %{with_util_cli}
%{__strip} -s src/%{cli_name}
%endif
%if %{with_util_miner}
%{__strip} -s src/%{miner_name}
%endif
%if %{with_libs}
%{__strip} -s src/.libs/%{libbase}.so.0.0.0
%endif
%if %{with_multiprocessing}
%if %{with_gui}
%{__strip} -s src/%{guim_name}
%endif
%{__strip} -s src/%{node_name}
%endif
%if %{with_util_seeder}
%{__strip} -s src/%{seeder_name}
%endif
%if %{with_util_util}
%{__strip} -s src/%{util_name}
%endif
%if %{with_util_tx}
%{__strip} -s src/%{tx_name}
%endif
%if %{with_util_wallet}
%{__strip} -s src/%{wallet_name}
%endif
%if %{with_bench}
%{__strip} -s src/bench/%{bench_name}
%endif
%if %{with_gui}
%{__strip} -s src/qt/%{gui_name}
%endif
%{__strip} -s src/%{daemon_name}
%if %{with_tests}
%if %{with_gui}
%{__strip} -s src/qt/test/%{test_gui_name}
%endif
%if %{with_util_seeder}
%{__strip} -s src/seeder/test/%{test_seeder_name}
%endif
%{__strip} -s src/test/%{test_name}
%endif
%install
%make_install
# install daemon supplementary files
%{__install} -D -m 0644 -p share/examples/%{progbase}.conf %{buildroot}%{prog_conffile}
%{__install} -D -m 0644 -p contrib/init/%{service_filename} %{buildroot}%{_unitdir}/%{service_filename}
%if %{with_bash_support}
%{__install} -D -m 0644 -p contrib/%{daemon_name}.bash-completion %{buildroot}%{pkg_bashcompdir}/%{daemon_name}%{?pkg_bashcompsuffix}
%if %{with_util_cli}
%{__install} -D -m 0644 -p contrib/%{cli_name}.bash-completion %{buildroot}%{pkg_bashcompdir}/%{cli_name}%{?pkg_bashcompsuffix}
%endif
%if %{with_util_tx}
%{__install} -D -m 0644 -p contrib/%{tx_name}.bash-completion %{buildroot}%{pkg_bashcompdir}/%{tx_name}%{?pkg_bashcompsuffix}
%endif
%endif
%if %{with_fish_support}
%{__install} -D -m 0644 -p contrib/%{daemon_name}.fish %{buildroot}%{pkg_fishcompdir}/%{daemon_name}%{?pkg_fishcompsuffix}
%if %{with_util_cli}
%{__install} -D -m 0644 -p contrib/%{cli_name}.fish %{buildroot}%{pkg_fishcompdir}/%{cli_name}%{?pkg_fishcompsuffix}
%endif
%if %{with_util_tx}
%{__install} -D -m 0644 -p contrib/%{tx_name}.fish %{buildroot}%{pkg_fishcompdir}/%{tx_name}%{?pkg_fishcompsuffix}
%endif
%if %{with_gui}
%{__install} -D -m 0644 -p contrib/%{gui_name}.fish %{buildroot}%{pkg_fishcompdir}/%{gui_name}%{?pkg_fishcompsuffix}
%endif
%if %{with_util_wallet}
%{__install} -D -m 0644 -p contrib/%{wallet_name}.fish %{buildroot}%{pkg_fishcompdir}/%{wallet_name}%{?pkg_fishcompsuffix}
%endif
%if %{with_util_util}
%{__install} -D -m 0644 -p contrib/%{util_name}.fish %{buildroot}%{pkg_fishcompdir}/%{util_name}%{?pkg_fishcompsuffix}
%endif
%endif
%{__mkdir_p} %{buildroot}%{prog_statedir}
%{__install} -d -m 0755 %{buildroot}%{_sbindir}
%{__ln_s} %{_sbindir}/service %{buildroot}%{_sbindir}/rc%{daemon_name}
# install firewall config file
%if %{with_susefirewall_support}
%{__install} -D -m 644 -p %{progbase}.firewall %{buildroot}%{pkg_fwconffile}
%endif
# install desktop file
%if %{with_gui}
%{__install} -D -m 0644 -p %{icon_src} %{buildroot}%{_datadir}/pixmaps/%{name}.png
%suse_update_desktop_file -c %{gui_name} "%{display_name}" "%{display_name} Wallet" %{gui_name} %{name} Office Finance
%endif
# install run folder configuration
%{__install} -D -m 0644 -p rundir.conf %{buildroot}/%{pkg_rundirconffile}
# install documentation
%if %{with_docs}
%{__install} -d -m 0755 %{buildroot}%{pkg_docdir}
%{__install} -m 0644 -p -t %{buildroot}%{pkg_docdir} %{doc_list}
%{__install} -d -m 0755 %{buildroot}%{pkg_docdir}/doc
%{__cp} -a -t %{buildroot}%{pkg_docdir}/doc doc/*.md doc/*.txt
%if %{with_docs} && %{with_docs_html}
%{__cp} -a -t %{buildroot}%{pkg_docdir}/doc doc/doxygen/html
%endif
%{__install} -d -m 0755 %{buildroot}%{pkg_licdir}
%{__install} -m 0644 -p -t %{buildroot}%{pkg_licdir} %{lic_list}
%fdupes %{buildroot}%{pkg_docdir}
%endif
# eliminate files that do not go into the package
%if %{with_libs}
find %{buildroot} -name '*.la' -exec %{__rm} -f {} ';'
%endif
# no rpath check
%if %{without_rpath_check}
export NO_BRP_CHECK_RPATH=true
%endif
%if %{with_checks}
%check
%make_build check
%endif
%pre -n %{daemon_packname}
%{_bindir}/getent group %{prog_group} > /dev/null || %{_sbindir}/groupadd -r %{prog_group}
%{_bindir}/getent passwd %{prog_user} > /dev/null || %{_sbindir}/useradd -r -g %{prog_group} -d %{prog_statedir} -s /sbin/nologin -c "%{progbase} daemon" %{prog_user}
%if %{with_postfix_support}
%{_bindir}/getent group maildrop > /dev/null && %{_sbindir}/usermod -G maildrop %{prog_user}
%endif
%service_add_pre %{service_filename}
%preun -n %{daemon_packname}
%service_del_preun %{service_filename}
%post -n %{daemon_packname}
%service_add_post %{service_filename}
%if 0%{?suse_version} && ( 0%{?suse_version} > 1320 || ( 0%{?is_opensuse} && 0%{?suse_version} == 1315 && 0%{?sle_version} && 0%{?sle_version} >= 120100 ) )
%tmpfiles_create %{pkg_rundirconffile}
%else
systemd-tmpfiles --create %{pkg_rundirconffile} >/dev/null 2>&1 || :
%endif
%postun -n %{daemon_packname}
%service_del_postun %{service_filename}
%if %{with_gui}
%if 0%{?suse_version} && 0%{?suse_version} < 1500
%post %{qt_version}
%desktop_database_post
%postun %{qt_version}
%desktop_database_postun
%endif
%endif
%if %{with_libs}
%post -n %{lib_packname}
/sbin/ldconfig
%postun -n %{lib_packname}
/sbin/ldconfig
%endif
%if %{with_util_chainstate} || %{with_util_cli} || %{with_util_miner} || %{with_util_seeder} || %{with_util_util} || %{with_util_tx} || %{with_util_wallet}
%files utils
%defattr(-,root,root,-)
%if %{with_util_chainstate}
%attr(755,root,root) %{_bindir}/%{chainstate_name}
%endif
%if %{with_util_cli}
%attr(755,root,root) %{_bindir}/%{cli_name}
%endif
%if %{with_util_miner}
%attr(755,root,root) %{_bindir}/%{miner_name}
%endif
%if %{with_util_seeder}
%attr(755,root,root) %{_bindir}/%{seeder_name}
%endif
%if %{with_util_util}
%attr(755,root,root) %{_bindir}/%{util_name}
%endif
%if %{with_util_tx}
%attr(755,root,root) %{_bindir}/%{tx_name}
%endif
%if %{with_util_wallet}
%attr(755,root,root) %{_bindir}/%{wallet_name}
%endif
%if %{with_man}
%if %{with_util_cli}
%{_mandir}/man1/%{cli_name}.1%{?ext_man}
%endif
%if %{with_util_util}
%{_mandir}/man1/%{util_name}.1%{?ext_man}
%endif
%if %{with_util_tx}
%{_mandir}/man1/%{tx_name}.1%{?ext_man}
%endif
%if %{with_util_wallet}
%{_mandir}/man1/%{wallet_name}.1%{?ext_man}
%endif
%endif
%license %{lic_file}
%if %{with_bash_support}
%files utils-%{bash_completion_packname_suffix}
%defattr(-,root,root,-)
%if %{with_util_cli}
%{pkg_bashcompdir}/%{cli_name}%{?pkg_bashcompsuffix}
%endif
%if %{with_util_tx}
%{pkg_bashcompdir}/%{tx_name}%{?pkg_bashcompsuffix}
%endif
%license %{lic_file}
%endif
%if %{with_fish_support}
%files utils-%{fish_completion_packname_suffix}
%defattr(-,root,root,-)
%if %{with_util_cli}
%{pkg_fishcompdir}/%{cli_name}%{?pkg_fishcompsuffix}
%endif
%if %{with_util_util}
%{pkg_fishcompdir}/%{util_name}%{?pkg_fishcompsuffix}
%endif
%if %{with_util_tx}
%{pkg_fishcompdir}/%{tx_name}%{?pkg_fishcompsuffix}
%endif
%if %{with_util_wallet}
%{pkg_fishcompdir}/%{wallet_name}%{?pkg_fishcompsuffix}
%endif
%license %{lic_file}
%endif
%endif
%if %{with_gui}
%files %{qt_version}
%defattr(-,root,root,-)
%attr(755,root,root) %{_bindir}/%{gui_name}
%{_datadir}/pixmaps/%{name}.png
%{_datadir}/applications/%{gui_name}.desktop
%if %{with_man}
%{_mandir}/man1/%{gui_name}.1%{?ext_man}
%endif
%license %{lic_file}
%if %{with_fish_support}
%files %{qt_version}-%{fish_completion_packname_suffix}
%defattr(-,root,root,-)
%{pkg_fishcompdir}/%{gui_name}%{?pkg_fishcompsuffix}
%license %{lic_file}
%endif
%endif
%files -n %{daemon_packname}
%defattr(-,root,root,-)
%attr(755,root,root) %{_bindir}/%{daemon_name}
%{_sbindir}/rc%{daemon_name}
%{_unitdir}/%{service_filename}
%dir %attr(710,root,%{prog_group}) %{prog_confdir}
%config(noreplace) %attr(640,root,%{prog_group}) %{prog_conffile}
%if %{with_susefirewall_support}
%config %{pkg_fwconffile}
%endif
%dir %attr(710,%{prog_user},%{prog_group}) %{prog_statedir}
%ghost %{prog_rundir}
%if 0%{?suse_version} && ( 0%{?suse_version} == 1320 || 0%{?suse_version} <= 1310 || ( 0%{?is_opensuse} && 0%{?suse_version} == 1315 && 0%{?sle_version} && 0%{?sle_version} == 120100 ) )
%dir %{_tmpfilesdir}
%endif
%{pkg_rundirconffile}
%if %{with_man}
%{_mandir}/man1/%{daemon_name}.1%{?ext_man}
%endif
%license %{lic_file}
%if %{with_bash_support}
%files -n %{daemon_packname}-%{bash_completion_packname_suffix}
%defattr(-,root,root,-)
%{pkg_bashcompdir}/%{daemon_name}%{?pkg_bashcompsuffix}
%license %{lic_file}
%endif
%if %{with_fish_support}
%files -n %{daemon_packname}-%{fish_completion_packname_suffix}
%defattr(-,root,root,-)
%{pkg_fishcompdir}/%{daemon_name}%{?pkg_fishcompsuffix}
%license %{lic_file}
%endif
%if %{with_multiprocessing}
%files multi
%defattr(-,root,root,-)
%attr(755,root,root) %{_bindir}/%{node_name}
%if %{with_gui}
%attr(755,root,root) %{_bindir}/%{guim_name}
%endif
%endif
%if %{with_tests} || %{with_bench}
%files test
%defattr(-,root,root,-)
%if %{with_bench}
%attr(755,root,root) %{_bindir}/%{bench_name}
%endif
%if %{with_tests}
%attr(755,root,root) %{_bindir}/%{test_name}
%if %{with_gui}
%attr(755,root,root) %{_bindir}/%{test_gui_name}
%endif
%if %{with_util_seeder}
%attr(755,root,root) %{_bindir}/%{test_seeder_name}
%endif
%endif
%license %{lic_file}
%endif
%if %{with_libs}
%files -n %{lib_packname}
%defattr(-,root,root,-)
%{_libdir}/*.so.*
%license %{lic_file}
%files -n %{lib_packname}-devel
%defattr(-,root,root,-)
%if 0%{?suse_version} && 0%{?suse_version} > 1500
%dir %{_includedir}
%endif
%{_includedir}/*.h
%{_libdir}/pkgconfig/
%{_libdir}/*.so
%license %{lic_file}
%endif
%if %{with_docs}
%files doc
%defattr(-,root,root,-)
%{pkg_docdir}/
%{pkg_licdir}/
%endif
%changelog