summaryrefslogtreecommitdiff
blob: 15fd6b28b93548591bb723043f07f504c091f35f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
# 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 )
"

PATCHES=(
	"${FILESDIR}"/${P}-fix_upnp_call.patch
)

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
}