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

EAPI=8

inherit linux-mod-r1 udev

DESCRIPTION="Add vmware-worksation/player deps, udev rules and mod aliases"
HOMEPAGE="http://www.vmware.com/products/workstation/"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64"

RDEPEND="
	app-arch/bzip2
	app-arch/unzip
	app-shells/bash
	dev-db/sqlite:3
	dev-libs/dbus-glib
	dev-libs/gmp:0
	dev-libs/icu
	dev-libs/json-c
	dev-libs/nettle:0
	dev-python/jq
	gnome-base/dconf
	media-gfx/graphite2
	media-libs/alsa-lib
	media-libs/libvorbis
	media-libs/mesa
	media-plugins/alsa-plugins[speex]
	net-dns/libidn
	net-libs/gnutls
	sys-apps/tcp-wrappers
	sys-apps/util-linux
	sys-auth/polkit
	sys-kernel/dkms
	virtual/libcrypt:*
	x11-libs/libXinerama
	x11-libs/libXxf86vm
	x11-libs/libdrm
	x11-libs/libxshmfence
	x11-libs/startup-notification
	x11-libs/xcb-util
	x11-themes/hicolor-icon-theme
"
DEPEND="
	${RDEPEND}
	>=dev-util/patchelf-0.9
"

VM_INSTALL_DIR="/usr/lib/vmware"

pkg_setup() {
	CONFIG_CHECK="~HIGH_RES_TIMERS"
	if kernel_is -ge 5 5; then
		CONFIG_CHECK="${CONFIG_CHECK} X86_IOPL_IOPERM"
	fi
	if kernel_is -ge 2 6 37 && kernel_is -lt 2 6 39; then
		CONFIG_CHECK="${CONFIG_CHECK} BKL"
	fi
	CONFIG_CHECK="${CONFIG_CHECK} VMWARE_VMCI ~VMWARE_VMCI_VSOCKETS"
}

src_unpack() {
	# Nothing to do
	mkdir -p "${S}" || or die
}

src_configure() {
	# Nothing to do
	true
}

src_compile() {
	# Nothing to do
	true
}

src_install() {
	local udevrules="${T}/60-vmware.rules"
	cat > "${udevrules}" <<-EOF
		KERNEL=="vmci",  GROUP="vmware", MODE="660"
		KERNEL=="vmw_vmci",  GROUP="vmware", MODE="660"
		KERNEL=="vmmon", GROUP="vmware", MODE="660"
		KERNEL=="vsock", GROUP="vmware", MODE="660"
	EOF
	udev_dorules "${udevrules}"

	dodir /etc/modprobe.d/

	cat > "${D}"/etc/modprobe.d/vmware.conf <<-EOF
		# Support for vmware vmci in kernel module
		alias vmci	vmw_vmci
	EOF

	dodir /etc/modprobe.d/
	cat >> "${D}"/etc/modprobe.d/vmware.conf <<-EOF
		# Support for vmware vsock in kernel module
		alias vsock	vmw_vsock_vmci_transport
	EOF

	export installed_modprobe_conf=1

	# create the environment
	local envd="${T}/90vmware"
	cat > "${envd}" <<-EOF
		PATH='${VM_INSTALL_DIR}/bin'
		ROOTPATH='${VM_INSTALL_DIR}/bin'
		CONFIG_PROTECT_MASK='/etc/vmware-installer'
	EOF

	doenvd "${envd}"
}

pkg_postinst() {
	udev_reload
	ewarn "Check whether libxcb.so.1 exists in any /usr/lib/vmware* directory"
	ewarn " => They are incompatible with Gentoo and have to be disabled!"
	ewarn "    => mv /usr/lib/vmware/lib/libxcb.so.1{,.disabled}"
	ewarn "       mv /usr/lib/vmware-installer/3.1.0/cdsHelper/lib/libxcb.so.1{,.disabled}"
	ewarn
	ewarn "The Installer puts vmware appdata into /usr/share/appdata. Move it to metainfo:"
	ewarn "    => mv /usr/share/appdata/vmware-* /usr/share/metainfo/"
}

pkg_postrm() {
	udev_reload
}