# Copyright 2022-2024 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 inherit flag-o-matic systemd desktop DESCRIPTION="Gridcoin Proof-of-Stake based crypto-currency that rewards BOINC computation" HOMEPAGE="https://gridcoin.us/" SRC_URI="https://github.com/${PN}-community/${PN^}-Research/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz" S="${WORKDIR}/${PN^}-Research-${PV}" LICENSE="MIT" SLOT="0" KEYWORDS="~amd64 ~x86" IUSE_GUI="dbus qt5" IUSE_DAEMON="daemon" IUSE_OPTIONAL="+bench +boinc +ccache debug +harden +libraries pic +qrcode static test +upnp +utils systemd" IUSE="${IUSE_GUI} ${IUSE_DAEMON} ${IUSE_OPTIONAL}" RESTRICT="!test? ( test )" # Note: The client *CAN* *NOT* connect to the daemon like the BOINC client does. # Therefore either run the daemon or the GUI client. Furthermore starting the GUI client while # the daemon is running will kill the latter. # See: https://www.reddit.com/r/gridcoin/comments/9x0zsy/comment/e9r85vf/ # "The GUI instance will not RPC to another wallet process." REQUIRED_USE=" ?? ( daemon qt5 ) dbus? ( qt5 ) qrcode? ( qt5 ) " RDEPEND=" >=dev-libs/libevent-2.1.12 daemon? ( acct-group/gridcoin acct-user/gridcoin[boinc=] ) dev-libs/boost dev-libs/openssl-compat:1.1.1 dev-libs/libzip sys-libs/db:5.3[cxx] dbus? ( dev-qt/qtdbus:5 ) qt5? ( dev-qt/qtcore:5 dev-qt/qtgui:5 dev-qt/qtnetwork:5 dev-qt/qtwidgets:5 dev-qt/qtconcurrent:5 dev-qt/qtcharts:5 ) qrcode? ( media-gfx/qrencode ) upnp? ( net-libs/miniupnpc ) boinc? ( sci-misc/boinc ) utils? ( net-p2p/bitcoin-core[cli] ) " DEPEND=" ${RDEPEND} qt5? ( dev-qt/linguist-tools:5 ) " pkg_setup() { BDB_VER="$(best_version sys-libs/db:5.3)" export BDB_CFLAGS="-I/usr/include/db${BDB_VER:12:3}" export BDB_LIBS="-ldb_cxx-${BDB_VER:12:3}" } src_prepare() { if use debug && [[ ! $(portageq envvar FEATURES) =~ .*(splitdebug|nostrip).* ]]; then ewarn "You have enabled debug flags and macros during compilation." ewarn "For these to be useful, you should also have Portage retain debug symbols." ewarn "See https://wiki.gentoo.org/wiki/Debugging on configuring your environment" ewarn "and set your desired FEATURES before (re-)building this package." fi default ./autogen.sh } src_configure() { use harden && append-flags -Wa,--noexecstack econf \ $(use_enable bench) \ $(use_enable ccache ) \ $(use_enable debug) \ $(use_enable harden hardening) \ $(use_enable static) \ $(use_enable test tests) \ $(use_with daemon) \ $(use_with dbus qtdbus) \ $(use_with libraries libs) \ $(use_with pic) \ $(use_with qrcode qrencode) \ $(use_with qt5 gui qt5) \ $(use_with upnp miniupnpc) \ $(use_with utils) } src_install() { if use daemon ; then newbin src/gridcoinresearchd gridcoinresearchd newman doc/gridcoinresearchd.1 gridcoinresearchd.1 newinitd "${FILESDIR}"/gridcoin.init gridcoin if use systemd ; then systemd_dounit "${FILESDIR}"/gridcoin.service fi diropts -o${PN} -g${PN} keepdir /var/lib/${PN}/.GridcoinResearch/ newconfd "${FILESDIR}"/gridcoinresearch.conf gridcoinresearch fowners gridcoin:gridcoin /etc/conf.d/gridcoinresearch fperms 0660 /etc/conf.d/gridcoinresearch dosym ../../../../etc/conf.d/gridcoinresearch /var/lib/${PN}/.GridcoinResearch/gridcoinresearch.conf fi if use qt5 ; then newbin src/qt/gridcoinresearch gridcoinresearch newman doc/gridcoinresearch.1 gridcoinresearch.1 domenu contrib/gridcoinresearch.desktop for size in 16 22 24 32 48 64 128 256 ; do doicon -s "${size}" "share/icons/hicolor/${size}x${size}/apps/gridcoinresearch.png" done doicon -s scalable "share/icons/hicolor/scalable/apps/gridcoinresearch.svg" fi dodoc README.md CHANGELOG.md doc/build-unix.md } pkg_postinst() { elog elog "You are using a source compiled version of gridcoin." use daemon && elog "The daemon can be found at /usr/bin/gridcoinresearchd" use qt5 && elog "The graphical wallet can be found at /usr/bin/gridcoinresearch" elog elog "You need to configure this node with a few basic details to do anything" elog "useful with gridcoin. The wallet configuration file is located at:" use daemon && elog " /etc/conf.d/gridcoinresearch" use qt5 && elog " \$HOME/.GridcoinResearch" elog "The wiki for this configuration file is located at:" elog " http://wiki.gridcoin.us/Gridcoinresearch_config_file" elog }