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

EAPI=8

inherit xdg

DESCRIPTION="Omnissa Horizon Client for Linux"
HOMEPAGE="https://www.omnissa.com/products/horizon-8/
	https://customerconnect.omnissa.com/downloads/info/slug/virtual_desktop_and_apps/omnissa_horizon_clients/8"

MY_BUILD="8.19.0-32216036411"
MY_P="Omnissa-Horizon-Client-Linux-${PV}-${MY_BUILD}"

SRC_URI="https://download3.omnissa.com/software/CART27FQ2_LIN_2606_TARBALL/${MY_P}.tar.gz"
S="${WORKDIR}"

LICENSE="omnissa"
SLOT="0"
KEYWORDS="~amd64"
IUSE="next"
RESTRICT="bindist mirror strip"

RDEPEND="
	app-accessibility/at-spi2-core:2
	app-misc/ca-certificates
	app-shells/bash
	dev-libs/expat
	dev-libs/glib:2
	dev-libs/openssl
	media-libs/fontconfig
	media-libs/freetype
	media-libs/gst-plugins-base:1.0
	media-libs/gstreamer:1.0
	media-libs/harfbuzz
	media-libs/libpng:0/16
	media-libs/libpulse
	media-libs/libv4l
	media-libs/libva[X]
	media-libs/mesa
	sys-apps/pcsc-lite
	sys-apps/util-linux
	virtual/libudev
	virtual/zlib
	x11-libs/cairo[X]
	x11-libs/gdk-pixbuf:2
	x11-libs/gtk+:3[X]
	x11-libs/libX11
	x11-libs/libXcursor
	x11-libs/libXdamage
	x11-libs/libXext
	x11-libs/libXfixes
	x11-libs/libXi
	x11-libs/libXinerama
	x11-libs/libXrandr
	x11-libs/libXrender
	x11-libs/libXtst
	x11-libs/libdrm
	x11-libs/libvdpau
	x11-libs/libxcb
	x11-libs/libxkbfile
	x11-libs/pango[X]
	next? ( dev-util/lttng-ust-compat )
"

QA_PREBUILT="*"

src_unpack() {
	default

	unpack "${MY_P}/x64/Omnissa-Horizon-Client-${PV}-${MY_BUILD}.x64.tar.gz"
	unpack "${MY_P}/x64/Omnissa-Horizon-PCoIP-${PV}-${MY_BUILD}.x64.tar.gz"
}

src_prepare() {
	default

	local client_dir component_dir file
	local libdir
	client_dir="${WORKDIR}/Omnissa-Horizon-Client-${PV}-${MY_BUILD}.x64"
	libdir=$(get_libdir)

	for component_dir in \
		"${WORKDIR}/Omnissa-Horizon-Client-${PV}-${MY_BUILD}.x64" \
		"${WORKDIR}/Omnissa-Horizon-PCoIP-${PV}-${MY_BUILD}.x64"
	do
		while IFS= read -r -d '' file; do
			sed -i -e "s:/usr/lib\\>:/usr/${libdir}:g" "${file}" || die
		done < <(grep -IlRZ '/usr/lib' "${component_dir}")
	done

	# The bundled OpenSSL and curl libraries use build-time CA paths that do not
	# exist on Gentoo.  Default both clients to Gentoo's generated trust store,
	# while retaining any site-specific environment overrides.
	sed -i \
		-e '/^# Input argument from stdin$/i\
export SSL_CERT_DIR="${SSL_CERT_DIR:-/etc/ssl/certs}"\
export SSL_CERT_FILE="${SSL_CERT_FILE:-/etc/ssl/certs/ca-certificates.crt}"\
export CURL_CA_BUNDLE="${CURL_CA_BUNDLE:-${SSL_CERT_FILE}}"\
' \
		"${client_dir}"/usr/bin/horizon-client \
		"${client_dir}"/usr/bin/horizon-client-next || die

	sed -i \
		-e 's/^Categories=Application;Network;$/Categories=Network;RemoteAccess;/' \
		-e '/^Encoding=UTF-8$/d' \
		"${client_dir}"/usr/share/applications/*.desktop || die
}

src_install() {
	local client_dir="${WORKDIR}/Omnissa-Horizon-Client-${PV}-${MY_BUILD}.x64"
	local pcoip_dir="${WORKDIR}/Omnissa-Horizon-PCoIP-${PV}-${MY_BUILD}.x64"
	local component_dir file relative
	local libdir
	libdir=$(get_libdir)

	dobin "${client_dir}"/usr/bin/*

	insinto /usr/share
	doins -r "${client_dir}"/usr/share/*

	insinto "/usr/${libdir}"
	doins -r "${client_dir}"/usr/lib/*
	doins -r "${pcoip_dir}"/usr/lib/*

	for component_dir in "${client_dir}" "${pcoip_dir}"; do
		while IFS= read -r -d '' file; do
			relative=${file#"${component_dir}/usr/lib/"}
			fperms 0755 "/usr/${libdir}/${relative}"
		done < <(find "${component_dir}/usr/lib" -type f -perm /111 -print0)
	done

	if ! use next; then
		rm "${ED}/usr/bin/horizon-client-next" || die
		rm "${ED}/usr/share/applications/horizon-client-next.desktop" || die
		rm -r "${ED}/usr/${libdir}/omnissa/horizon/bin/horizon-client-next-bundle" || die
	fi
}

pkg_postinst() {
	xdg_pkg_postinst
	einfo "Omnissa supports the classic client on X11."
	if use next; then
		einfo "Horizon Client Next is a technology preview."
	fi
}

pkg_postrm() {
	xdg_pkg_postrm
}