Apocrypha

amnezia-client-5.0.0.5Miezhiko

# Copyright 2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

SFPM_COMMIT="f2881493e42bd7b7d5b7abe804dad084dd610b71"
QTKEYCHAIN_COMMIT="7460df6a978669290de5b56c2d98b199b61c3f88"

inherit cmake desktop systemd xdg

DESCRIPTION="VPN client that resists DPI detection and censorship"
HOMEPAGE="https://amnezia.org"

SRC_URI="
	https://github.com/amnezia-vpn/amnezia-client/archive/refs/tags/${PV}.tar.gz -> ${P}.gh.tar.gz
	https://github.com/mitchcurtis/SortFilterProxyModel/archive/${SFPM_COMMIT}.tar.gz -> SortFilterProxyModel-${SFPM_COMMIT}.gh.tar.gz
	https://github.com/frankosterfeld/qtkeychain/archive/${QTKEYCHAIN_COMMIT}.tar.gz -> qtkeychain-${QTKEYCHAIN_COMMIT}.gh.tar.gz
"
S="${WORKDIR}/amnezia-client-${PV}"

LICENSE="GPL-3"
SLOT="0"
KEYWORDS="amd64 ~arm64"

# Upstream's build system drives Conan from CMakeLists.txt (conan_provider.cmake)
# to fetch/build 3rd-party deps (openssl, zlib, lz4, ...) that aren't vendored
# in the tarball. This needs network access during src_configure/src_compile,
# which Portage blocks by default under FEATURES=network-sandbox.
RESTRICT="network-sandbox"

DEPEND="
	dev-qt/qtbase:6[concurrent,dbus,gui,network,widgets,xml]
	dev-qt/qt5compat:6
	dev-qt/qtdeclarative:6
	dev-qt/qtremoteobjects:6
	dev-qt/qtsvg:6
	dev-qt/qttools:6
"
RDEPEND="${DEPEND}
	dev-qt/qtshadertools:6
"
BDEPEND="
	dev-util/conan
	dev-qt/qttools:6
"

src_unpack() {
	default

	rmdir "${S}/client/3rd/SortFilterProxyModel" || die
	mv "${WORKDIR}/SortFilterProxyModel-${SFPM_COMMIT}" \
		"${S}/client/3rd/SortFilterProxyModel" || die

	rmdir "${S}/client/3rd/qtkeychain" || die
	mv "${WORKDIR}/qtkeychain-${QTKEYCHAIN_COMMIT}" \
		"${S}/client/3rd/qtkeychain" || die
}

src_configure() {
	conan profile detect --force || die "conan profile detect failed"
	conan remote add amnezia \
		"https://artifactory.amnezia.org/artifactory/api/conan/client-prebuilts" \
		--force || die "conan remote add failed"

	# Upstream's root conanfile.py uses the CMakeConfigDeps generator, which is
	# still gated behind an incubating conf in this Conan release.
	echo "tools.cmake.cmakedeps:new=will_break_next" \
		>> "$(conan config home)/global.conf" || die "failed to enable CMakeConfigDeps conf"

	local mycmakeargs=(
		-DCMAKE_BUILD_TYPE=Release
		-DCMAKE_INSTALL_PREFIX=/opt/AmneziaVPN
	)
	cmake_src_configure
}

src_install() {
	cmake_src_install

	doicon "${S}/deploy/data/linux/AmneziaVPN.png"
	make_desktop_entry AmneziaVPN "Amnezia VPN" AmneziaVPN "Network;VPN"

	systemd_dounit "${S}/deploy/data/linux/AmneziaVPN.service"
}