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

EAPI=8

inherit desktop multilib-build pax-utils unpacker xdg

MY_PN="${PN/-bin/}"

DESCRIPTION="Video conferencing and web conferencing service"
HOMEPAGE="https://zoom.us"
SRC_URI="https://cdn.zoom.us/prod/${PV}/zoom_amd64.deb -> zoom-${PV}_amd64.deb"

LICENSE="ZOOM"
SLOT="0"
KEYWORDS="-* ~amd64"
IUSE="pulseaudio"
RESTRICT="bindist mirror"

# no bundled libs for EGLFS
RDEPEND="!games-engines/zoom
	!net-im/zoom
	dev-libs/expat:0[${MULTILIB_USEDEP}]
	dev-libs/glib:2[${MULTILIB_USEDEP}]
	dev-libs/libpcre:3[${MULTILIB_USEDEP}]
	dev-libs/nspr[${MULTILIB_USEDEP}]
	dev-libs/nss[${MULTILIB_USEDEP}]
	dev-qt/qt3d[qml]
	dev-qt/qtgui:5[eglfs]
	media-libs/fontconfig:1.0[${MULTILIB_USEDEP}]
	media-libs/freetype:2[${MULTILIB_USEDEP}]
	media-libs/mesa[${MULTILIB_USEDEP}]
	sys-apps/dbus[${MULTILIB_USEDEP}]
	sys-apps/util-linux[${MULTILIB_USEDEP}]
	sys-libs/zlib:=[${MULTILIB_USEDEP}]
	x11-libs/libX11[${MULTILIB_USEDEP}]
	x11-libs/libxcb[${MULTILIB_USEDEP}]
	x11-libs/libXcomposite[${MULTILIB_USEDEP}]
	x11-libs/libXcursor[${MULTILIB_USEDEP}]
	x11-libs/libXdamage[${MULTILIB_USEDEP}]
	x11-libs/libXext[${MULTILIB_USEDEP}]
	x11-libs/libXfixes[${MULTILIB_USEDEP}]
	x11-libs/libXi[${MULTILIB_USEDEP}]
	x11-libs/libXrandr[${MULTILIB_USEDEP}]
	x11-libs/libXrender[${MULTILIB_USEDEP}]
	x11-libs/libXtst[${MULTILIB_USEDEP}]
	x11-libs/xcb-util-image[${MULTILIB_USEDEP}]
	x11-libs/xcb-util-keysyms[${MULTILIB_USEDEP}]
	pulseaudio? ( media-sound/pulseaudio[${MULTILIB_USEDEP}] )
	!pulseaudio? ( media-libs/alsa-lib:0[${MULTILIB_USEDEP}] )"
BDEPEND="sys-apps/fix-gnustack
	!pulseaudio? ( dev-util/bbe )"

QA_PREBUILT="opt/zoom/aomhost
	opt/zoom/audio/libqt*.so
	opt/zoom/egldeviceintegrations/libqeglfs-*-integration.so
	opt/zoom/generic/libq*.plugin.so
	opt/zoom/iconengines/libqsvgicon.so
	opt/zoom/imageformats/libq*.so
	opt/zoom/libaomagent.so
	opt/zoom/libQt5*
	opt/zoom/libOpenCL.so.1
	opt/zoom/platforminputcontexts/lib*platforminputcontextplugin.so
	opt/zoom/platforms/libq*.so
	opt/zoom/platformthemes/libqgtk3.so
	opt/zoom/Qt*
	opt/zoom/qtdiag
	opt/zoom/xcbglintegrations/libqxcb-*.so
	opt/zoom/zoom
	opt/zoom/ZoomLauncher
	opt/zoom/zopen"

S="${WORKDIR}"

src_prepare() {
	default

	# Fix icon, categories and libraries path
	sed -i  -e '/Icon/s/Zoom.png/Zoom/' \
		-e '/Categories/s/Application;//' \
		-e '/Exec/s|=|=/usr/bin/env LD_LIBRARY_PATH="\\$LD_LIBRARY_PATH:/opt/zoom" |' \
		usr/share/applications/Zoom.desktop || die "sed failed for Zoom.desktop"
	scanelf -Xr opt/zoom/platforminputcontexts/libfcitxplatforminputcontextplugin.so \
			opt/zoom/libturbojpeg.so || die "scanelf failed"

	# Zoom cannot use any ALSA sound devices if it finds libpulse.
	# This causes breakage if media-sound/apulse[sdk] is installed.
	if ! use pulseaudio; then
		bbe -e 's/libpulse.so/IgNoRePuLsE/' zoom >zoom.tmp || die "bbe failed"
		mv zoom.tmp zoom || die "mv failed"
	fi
}

src_install() {
	fix-gnustack -f opt/zoom/aomhost > /dev/null \
		|| die "removing execstack flag failed"

	doicon usr/share/pixmaps/Zoom.png usr/share/pixmaps/application-x-zoom.png
	domenu usr/share/applications/Zoom.desktop
	insinto /usr/share/mime/packages
	doins usr/share/mime/packages/zoom.xml

	insinto /opt/zoom
	doins -r opt/zoom/.
	fperms +x /opt/zoom/zoom
	dosym ../../opt/zoom/zoom usr/bin/zoom

	pax-mark -m "${ED}"/opt/zoom/zoom
}