diff --git a/net-p2p/monero/Manifest b/net-p2p/monero/Manifest index 331035cd55..8cdc906cbd 100644 --- a/net-p2p/monero/Manifest +++ b/net-p2p/monero/Manifest @@ -1,2 +1,4 @@ DIST monero-0.18.5.0-release-hashes.txt 3041 BLAKE2B c21d6a5f3f42b83d08f65b96c233c8eb922e47e785c1682000ab2cb36f342c4510c98c30d5e831798f557b3919f4deb5a6ab75bc136443932af12d922b470ed7 SHA512 3f217e6cbc34a72a6f190c6a009393eb7f42c203e20cf03cbbedd1d0f150f65ad6f10565f0bb9dabd2097ed302fbe53a0bd5e8e9ebf05fd860cc2ab4102c387b +DIST monero-0.18.5.1-release-hashes.txt 3041 BLAKE2B 01af2dcbfc6b2546192f3d7fa5fa69758f044992d272715f49307f957d7d0a07732723c624be6c49b8f3539293e3e3616b9032d996ec076f280498e0a5cf3169 SHA512 a36a723003affb158ba8cd4a306b0d110de0d53b676ef84911b6219f2bb7a8cdab1a33b5faed411339e053798ed088d93c3b365d1372f8d718bd939a272aa92c DIST monero-source-v0.18.5.0.tar.bz2 15639008 BLAKE2B 1de04747241ee066c596334ce3d81f2ac23b19e97f3a84057b54f80f4201eb2cff9264dad80694930bebbba3ae49044dd24be12e73aba3400ef8e5da500aeb46 SHA512 a453d6a935fad97ceb630b2ece2b6e39b7b48fcb33586b4d9b3c0861dddf67ba42c3ccd65b13886a76e4a91666b40f9a738bd8a9a644c12e211c9bd43672d310 +DIST monero-source-v0.18.5.1.tar.bz2 15650430 BLAKE2B 00304ac3af603bdebae6973c735286898a00af4a29d73d2d9662f70ddfc28ad40027e1d68a8d693ced582571cc00bc61862cfd53dc2d6b424abf89d271f4ba14 SHA512 d3c1e9536792baeda58e046e4622cb1c418535b3221db39fe35482f08fb88bd3570c4027bb29cdfbe01964d310fa7350179df1a3c117656eca05591d07ca1ba7 diff --git a/net-p2p/monero/monero-0.18.5.1.ebuild b/net-p2p/monero/monero-0.18.5.1.ebuild new file mode 100644 index 0000000000..7337a26b18 --- /dev/null +++ b/net-p2p/monero/monero-0.18.5.1.ebuild @@ -0,0 +1,171 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DOCS_BUILDER=doxygen + +inherit cmake docs systemd verify-sig + +DESCRIPTION="The secure, private, untraceable cryptocurrency" +HOMEPAGE="https://www.getmonero.org" + +LICENSE="BSD MIT" +SLOT="0" +IUSE="+daemon hw-wallet readline +tools +wallet-cli +wallet-rpc cpu_flags_x86_aes verify-sig" +REQUIRED_USE="|| ( daemon tools wallet-cli wallet-rpc )" +RESTRICT="test" + +SOURCE_NAME="${PN}-source-v${PV}" +SOURCE_ARCHIVE="${SOURCE_NAME}.tar.bz2" + +if [[ ${PV} == 9999 ]]; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/monero-project/monero.git" + EGIT_SUBMODULES=() +else + VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/monero/binaryfate.asc + SRC_URI=" + https://downloads.getmonero.org/cli/source/${SOURCE_ARCHIVE} + verify-sig? ( https://raw.githubusercontent.com/monero-project/monero-site/71456b9f871ead4e77db84d8fe5dc4109578af45/downloads/hashes.txt -> ${P}-release-hashes.txt ) + " + # Todo: replace this hashes.txt URL with one based on ${P} (See https://github.com/monero-project/monero/issues/10760) + KEYWORDS="~amd64" +fi + +# Test requires python's requests, psutil, deepdiff which are packaged +# but also monotonic & zmq which we do not have + +DEPEND=" + app-crypt/libmd + dev-libs/boost:=[nls] + dev-libs/libsodium:= + dev-libs/libbsd + dev-libs/openssl:= + dev-libs/randomx + dev-libs/rapidjson + dev-libs/supercop + net-dns/unbound:=[threads(+)] + net-libs/zeromq:= + daemon? ( + acct-group/monero + acct-user/monero + ) + readline? ( sys-libs/readline:= ) + hw-wallet? ( + dev-libs/hidapi + dev-libs/protobuf:= + virtual/libusb:1 + ) +" +RDEPEND="${DEPEND}" +BDEPEND=" + virtual/pkgconfig + verify-sig? ( sec-keys/openpgp-keys-monero ) +" + +PATCHES=( + "${FILESDIR}"/${PN}-0.18.5.0-unbundle-dependencies.patch +) + +src_unpack() { + if use verify-sig; then + pushd "${DISTDIR}" > /dev/null || die + verify-sig_verify_message "${DISTDIR}"/"${P}"-release-hashes.txt - | \ + grep -F "${SOURCE_ARCHIVE}" | \ + verify-sig_verify_unsigned_checksums - sha256 "${SOURCE_ARCHIVE}" + popd || die + fi + unpack "${SOURCE_ARCHIVE}" || die + mv "${SOURCE_NAME}" "${S}" || die + # The previous github source archive didn't have these external directories, + # I will just remove them here in case they interfere with dependency de-vendorization: + rm -r "${S}"/external/{randomx,rapidjson,supercop,trezor-common} || die +} + +src_prepare() { + # The build system does not recognize the release tarball (bug?) + # so we patch the GitVersion file. + # Change the release string from "unknown" to "gentoo-${PR}" + sed -i "s/unknown/gentoo-${PR}/g" cmake/GitVersion.cmake || die + cmake_src_prepare +} + +src_configure() { + local mycmakeargs=( + # TODO: Update CMake to install built libraries (help wanted) + -DBUILD_SHARED_LIBS=OFF + -DBUILD_DOCUMENTATION=OFF # easier to do it manually + -DMANUAL_SUBMODULES=ON + -DUSE_CCACHE=OFF + -DNO_AES=$(usex !cpu_flags_x86_aes) + -DUSE_DEVICE_TREZOR=$(usex hw-wallet) + -DUSE_READLINE=$(usex readline) + ) + + use elibc_musl && mycmakeargs+=( -DSTACK_TRACE=OFF ) + + cmake_src_configure +} + +src_compile() { + local targets=( + $(usev daemon) + $(usev wallet-cli simplewallet) + $(usev wallet-rpc wallet_rpc_server) + ) + use tools && targets+=( + blockchain_{ancestry,blackball,db,depth,export,import,prune,prune_known_spent_data,stats,usage} + ) + + cmake_build ${targets[@]} + + docs_compile +} + +src_install() { + einstalldocs + + # Install all binaries. + find "${BUILD_DIR}/bin/" -type f -executable -print0 | + while IFS= read -r -d '' line; do + dobin "$line" + done + + if use daemon; then + dodoc utils/conf/monerod.conf + + # data-dir + keepdir /var/lib/monero + fowners monero:monero /var/lib/monero + fperms 0755 /var/lib/monero + + # log-file dir + keepdir /var/log/monero + fowners monero:monero /var/log/monero + fperms 0755 /var/log/monero + + # /etc/monero/monerod.conf + insinto /etc/monero + doins "${FILESDIR}"/monerod.conf + + # OpenRC + newconfd "${FILESDIR}"/monerod-0.18.4.0.confd monerod + newinitd "${FILESDIR}"/monerod-0.18.4.0.initd monerod + + # systemd + systemd_dounit "${FILESDIR}"/monerod.service + fi +} + +pkg_postinst() { + if use daemon; then + elog "To get sync status and other stats run" + elog " $ monerod status" + elog + elog "The Monero blockchain can take up a lot of space (250 GiB) and is stored" + elog "in /var/lib/monero by default. You may want to enable pruning by adding" + elog "'prune-blockchain=1' to /etc/monero/monerod.conf to prune the blockchain" + elog "or move the data directory to another disk." + fi +}