blob: 5cf08045736f52c7c17da8fa6d1f4c8332193a5e (
plain) (
tree)
|
|
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{11..12} )
CMAKE_MAKEFILE_GENERATOR="emake"
inherit cmake flag-o-matic toolchain-funcs python-any-r1 systemd qmake-utils
DESCRIPTION="Secure, private, untraceable cryptocurrency"
HOMEPAGE="https://getmonero.org"
EGIT_COMMIT_EXTERNAL_TREZOR_COMMON="028c9b2e95d83b4164748a12cfdc181f0dd11920"
EGIT_COMMIT_EXTERNAL_SUPERCOP="633500ad8c8759995049ccd022107d1fa8a1bbc9"
EGIT_COMMIT_EXTERNAL_QUIRC="516d91a94d880ca1006fc1d57f318bdff8411f0d"
SRC_URI="https://github.com/monero-project/${PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz
https://github.com/trezor/trezor-common/archive/${EGIT_COMMIT_EXTERNAL_TREZOR_COMMON}.tar.gz -> trezor-common-${EGIT_COMMIT_EXTERNAL_TREZOR_COMMON}.tar.gz
https://github.com/monero-project/supercop/archive/${EGIT_COMMIT_EXTERNAL_SUPERCOP}.tar.gz -> supercop-${EGIT_COMMIT_EXTERNAL_SUPERCOP}.tar.gz
qt5? (
https://github.com/monero-project/${PN}-gui/archive/refs/tags/v${PV}.tar.gz -> ${PN}-gui-${PV}.tar.gz
https://github.com/dlbeer/quirc/archive/${EGIT_COMMIT_EXTERNAL_QUIRC}.tar.gz -> quirc-${EGIT_COMMIT_EXTERNAL_QUIRC}.tar.gz
)"
LICENSE="NEWLIB"
SLOT="0/${PV}"
KEYWORDS="~amd64 ~arm64"
CPU_FLAGS="cpu_flags_arm_aes cpu_flags_x86_aes"
IUSE="doc qt5 nls readline smartcard ${CPU_FLAGS}"
RDEPEND="net-dns/unbound:=[threads]
>=dev-libs/randomx-1.1.9:=
net-libs/miniupnpc:=
dev-libs/openssl:0
>=dev-libs/boost-1.62:=[icu,nls]
>=net-libs/zeromq-4.3:=[sodium]
dev-libs/rapidjson:=
readline? ( sys-libs/readline:= )
smartcard? (
>=dev-libs/hidapi-0.11.0:=
virtual/libusb:=
virtual/libudev:=
dev-libs/protobuf:=
)
qt5? (
dev-qt/qtconcurrent:5
dev-qt/qtcore:5
dev-qt/qtgui:5
dev-qt/qtdeclarative:5
dev-qt/qtnetwork:5
dev-qt/qtsvg:5
dev-qt/qtxmlpatterns:5[qml]
dev-qt/qtwidgets:5
dev-qt/qtmultimedia:5
dev-qt/qtquickcontrols:5
dev-qt/qtquickcontrols2:5
dev-qt/qtgraphicaleffects:5
dev-libs/libgcrypt:=
media-fonts/fontawesome[ttf]
)
acct-user/monero
acct-group/monero"
DEPEND="${RDEPEND}
nls? ( dev-qt/linguist-tools )"
BDEPEND="${PYTHON_DEPS}
doc? (
media-gfx/graphviz
app-text/doxygen
)
qt5? ( dev-qt/linguist-tools:5 )
smartcard? ( $(python_gen_any_dep 'dev-python/protobuf-python[${PYTHON_USEDEP}]') )"
PATCHES_MONERO=(
"${FILESDIR}/monero-${PV}-upnp-drop-in-tree-miniupnpc.patch"
"${FILESDIR}/monero-${PV}-upnp-add-support-for-miniupnpc-API-version-18.patch"
"${FILESDIR}/monero-${PV}-upnp-fix-warning.patch"
"${FILESDIR}/monero-${PV}-use-gentoo-versioning.patch"
"${FILESDIR}/monero-${PV}-use-gentoo-dev-libs-randomx.patch"
"${FILESDIR}/monero-${PV}-translations-use-host-compiler.patch"
"${FILESDIR}/monero-${PV}-build-remove-mcpu-march-mtune.patch"
)
PATCHES_MONERO_GUI=(
"${FILESDIR}/monero-gui-${PV}-cmake-use-gentoo-versioning.patch"
)
CMAKE_BUILD_TYPE=Release
src_unpack() {
default
rm -rf "${S}/external/trezor-common" || die
ln -snf "${WORKDIR}/trezor-common-${EGIT_COMMIT_EXTERNAL_TREZOR_COMMON}" "${S}/external/trezor-common" || die
rm -rf "${S}/external/supercop" || die
ln -snf "${WORKDIR}/supercop-${EGIT_COMMIT_EXTERNAL_SUPERCOP}" "${S}/external/supercop" || die
if use qt5 ; then
rm -rf "${WORKDIR}/monero-gui-${PV}/monero" || die
ln -snf "${WORKDIR}/monero-${PV}" "${WORKDIR}/monero-gui-${PV}/monero" || die
rm -rf "${WORKDIR}/monero-gui-${PV}/external/quirc" || die
ln -snf "${WORKDIR}/quirc-${EGIT_COMMIT_EXTERNAL_QUIRC}" "${WORKDIR}/monero-gui-${PV}/external/quirc" || die
fi
}
src_prepare() {
export AR=$(tc-getAR)
export CC=$(tc-getCC)
export CXX=$(tc-getCXX)
tc-export_build_env BUILD_C{C,XX}
# Needed for lrelease
export PATH="${PATH}:$(qt5_get_bindir)" || die
append-cflags -DUSE_EXTRA_EC_CERT
append-cxxflags -DUSE_EXTRA_EC_CERT
CMAKE_USE_DIR="${WORKDIR}/monero-${PV}"
BUILD_DIR="${WORKDIR}/monero-${PV}_build"
pushd "${CMAKE_USE_DIR}" > /dev/null || die
S="${CMAKE_USE_DIR}" PATCHES="${PATCHES_MONERO[@]}" cmake_src_prepare
popd > /dev/null || die
if use qt5 ; then
CMAKE_USE_DIR="${WORKDIR}/monero-gui-${PV}"
BUILD_DIR="${WORKDIR}/monero-gui-${PV}_build"
pushd "${CMAKE_USE_DIR}" > /dev/null || die
S="${CMAKE_USE_DIR}" PATCHES="${PATCHES_MONERO_GUI[@]}" cmake_src_prepare
popd > /dev/null || die
fi
}
src_configure() {
local mycmakeargs
local cmakeargs_monero=(
-Wno-dev
-DBUILD_TAG="$(tc-arch)"
-DUSE_CCACHE=OFF
-DPYTHON_EXECUTABLE="${PYTHON}"
-DBUILD_DOCUMENTATION="$(usex doc ON OFF)"
-DBUILD_TESTS=OFF
-DUSE_READLINE="$(usex readline ON OFF)"
-DUSE_DEVICE_TREZOR="$(usex smartcard ON OFF)"
-DBUILD_GUI_DEPS="$(usex qt5 ON OFF)"
-DSTACK_TRACE=OFF
-DBUILD_SHARED_LIBS=OFF
-DMANUAL_SUBMODULES=ON
)
if use cpu_flags_arm_aes || use cpu_flags_x86_aes ; then
cmakeargs_monero+=( -DNO_AES=OFF )
else
cmakeargs_monero+=( -DNO_AES=ON )
fi
local cmakeargs_monerogui=(
"${cmakeargs_monero[@]}"
-DWITH_DESKTOP_ENTRY=ON
-DWITH_SCANNER=ON
-DWITH_UPDATER=OFF
-DDEV_MODE=OFF
)
export DATABASE="lmdb"
export DEVELOPER_LOCAL_TOOLS=0
export DEVELOPER_LIBUNBOUND_OLD=0
cat > "${WORKDIR}/monero-${PV}_build/translations.cmake" <<- _EOF_ || die
SET (CMAKE_C_COMPILER "${BUILD_CC}")
SET (CMAKE_C_FLAGS "${BUILD_CFLAGS}")
SET (CMAKE_CXX_COMPILER "${BUILD_CXX}")
SET (CMAKE_CXX_FLAGS "${BUILD_CXXFLAGS}")
SET (CMAKE_EXE_LINKER_FLAGS "${BUILD_LDFLAGS}")
SET (CMAKE_MODULE_LINKER_FLAGS "${BUILD_LDFLAGS}")
SET (CMAKE_SHARED_LINKER_FLAGS "${BUILD_LDFLAGS}")
_EOF_
CMAKE_USE_DIR="${WORKDIR}/monero-${PV}"
BUILD_DIR="${WORKDIR}/monero-${PV}_build"
mycmakeargs=( ${cmakeargs_monero[@]} )
cmake_src_configure
if use qt5 ; then
mkdir -p "${WORKDIR}/monero-gui-${PV}_build/monero" || die
cp "${WORKDIR}/monero-${PV}_build/translations.cmake" "${WORKDIR}/monero-gui-${PV}_build/monero/translations.cmake" || die
CMAKE_USE_DIR="${WORKDIR}/monero-gui-${PV}"
BUILD_DIR="${WORKDIR}/monero-gui-${PV}_build"
mycmakeargs=( ${cmakeargs_monerogui[@]} )
cmake_src_configure
fi
}
src_compile() {
CMAKE_USE_DIR="${WORKDIR}/monero-${PV}"
BUILD_DIR="${WORKDIR}/monero-${PV}_build"
cmake_src_compile
if use qt5 ; then
CMAKE_USE_DIR="${WORKDIR}/monero-gui-${PV}"
BUILD_DIR="${WORKDIR}/monero-gui-${PV}_build"
cmake_src_compile
fi
}
src_install() {
CMAKE_USE_DIR="${WORKDIR}/monero-${PV}"
BUILD_DIR="${WORKDIR}/monero-${PV}_build"
cmake_src_install
if use qt5 ; then
CMAKE_USE_DIR="${WORKDIR}/monero-gui-${PV}"
BUILD_DIR="${WORKDIR}/monero-gui-${PV}_build"
cmake_src_install
fi
rm -rf "${ED}/usr/include" || die
rm -rf "${ED}/usr/lib" || die
insinto /etc
doins utils/conf/monerod.conf
newinitd "${FILESDIR}/monerod.initd" monerod
systemd_dounit utils/systemd/monerod.service
}
|