summaryrefslogtreecommitdiff
path: root/app-emulation/open-vm-tools
diff options
context:
space:
mode:
authorroot <root@alpha.trunkmasters.com>2026-06-04 05:48:38 -0500
committerroot <root@alpha.trunkmasters.com>2026-06-04 05:48:38 -0500
commitbfd9c39e4712ebdb442d4ca0673061faed1e70e1 (patch)
tree0d7a74b4463ee387f9cf9368ceb1b757f694f72a /app-emulation/open-vm-tools
parentf716a9fe6455d39eef01e718aae68dae61c19704 (diff)
downloadbaldeagleos-repo-bfd9c39e4712ebdb442d4ca0673061faed1e70e1.tar.gz
baldeagleos-repo-bfd9c39e4712ebdb442d4ca0673061faed1e70e1.tar.xz
baldeagleos-repo-bfd9c39e4712ebdb442d4ca0673061faed1e70e1.zip
Revert "Adding metadata"
This reverts commit f716a9fe6455d39eef01e718aae68dae61c19704.
Diffstat (limited to 'app-emulation/open-vm-tools')
-rw-r--r--app-emulation/open-vm-tools/Manifest1
-rw-r--r--app-emulation/open-vm-tools/files/open-vm-tools-12.4.5-Werror.patch24
-rw-r--r--app-emulation/open-vm-tools/files/open-vm-tools-12.4.5-icu.patch26
-rw-r--r--app-emulation/open-vm-tools/files/open-vm-tools-13.0.10-glib-with-glibc-2.43-c23.patch37
-rw-r--r--app-emulation/open-vm-tools/files/open-vm-tools-13.0.10-glibc-2.43-c23.patch145
-rw-r--r--app-emulation/open-vm-tools/files/open-vm-tools.confd2
-rw-r--r--app-emulation/open-vm-tools/files/open-vm-tools.initd59
-rw-r--r--app-emulation/open-vm-tools/files/vgauthd.service14
-rw-r--r--app-emulation/open-vm-tools/files/vmtoolsd.service11
-rw-r--r--app-emulation/open-vm-tools/files/vmtoolsd.vgauth.service14
-rw-r--r--app-emulation/open-vm-tools/metadata.xml28
-rw-r--r--app-emulation/open-vm-tools/open-vm-tools-13.0.10-r1.ebuild171
12 files changed, 532 insertions, 0 deletions
diff --git a/app-emulation/open-vm-tools/Manifest b/app-emulation/open-vm-tools/Manifest
new file mode 100644
index 000000000000..3830a9d6a9b0
--- /dev/null
+++ b/app-emulation/open-vm-tools/Manifest
@@ -0,0 +1 @@
+DIST open-vm-tools-13.0.10-25056151.tar.gz 4341374 BLAKE2B e1198567f598ebae28a0a165b4bccc079db43e53ffd707368f2d16cef35a938fbe9c36ba0363f2315252bc1409bc2544b8ed29aa88e3a8a860a233fb6b7ad6b2 SHA512 c332fd2efb3bc16f2fbb77b7b0d0f4a5bb251b5b4828260bb6cbd96903a38d492f90727dad54ef95e442cf3dcc043032e5581e64e3aee4afb55b9db568a29259
diff --git a/app-emulation/open-vm-tools/files/open-vm-tools-12.4.5-Werror.patch b/app-emulation/open-vm-tools/files/open-vm-tools-12.4.5-Werror.patch
new file mode 100644
index 000000000000..2593ddb80e5f
--- /dev/null
+++ b/app-emulation/open-vm-tools/files/open-vm-tools-12.4.5-Werror.patch
@@ -0,0 +1,24 @@
+From fdf599994d58ef47b73dc94d21d3556a2ec5d9da Mon Sep 17 00:00:00 2001
+From: Mike Gilbert <floppym@gentoo.org>
+Date: Sat, 26 Nov 2016 11:54:33 -0500
+Subject: [PATCH] build: drop -Werror
+
+---
+ configure.ac | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index 8d4604e8..4d925f22 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1137,7 +1137,6 @@ AC_C_VOLATILE
+
+ ### General flags / actions
+ CFLAGS="$CFLAGS -Wall"
+-CFLAGS="$CFLAGS -Werror"
+
+ # -Wno-unknown-pragmas is due to gcc not understanding '#pragma ident'
+ # in Xlib.h on OpenSolaris.
+--
+2.11.0.rc2
+
diff --git a/app-emulation/open-vm-tools/files/open-vm-tools-12.4.5-icu.patch b/app-emulation/open-vm-tools/files/open-vm-tools-12.4.5-icu.patch
new file mode 100644
index 000000000000..ff2731de9481
--- /dev/null
+++ b/app-emulation/open-vm-tools/files/open-vm-tools-12.4.5-icu.patch
@@ -0,0 +1,26 @@
+From 08caf83eaa0e66cee8f3e49479cd201a10bb3919 Mon Sep 17 00:00:00 2001
+From: Mike Gilbert <floppym@gentoo.org>
+Date: Sat, 25 Sep 2021 21:14:25 -0400
+Subject: [PATCH] lib/unicode: add ICU_LIBS to LDADD
+
+---
+ lib/unicode/Makefile.am | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/lib/unicode/Makefile.am b/lib/unicode/Makefile.am
+index 4284c51c..40261fba 100644
+--- a/lib/unicode/Makefile.am
++++ b/lib/unicode/Makefile.am
+@@ -25,7 +25,9 @@ libUnicode_la_SOURCES += unicodeSimpleTypes.c
+ libUnicode_la_SOURCES += unicodeSimpleOperations.c
+ libUnicode_la_SOURCES += unicodeSimpleTransforms.c
+ libUnicode_la_SOURCES += unicodeStatic.c
++libUnicode_la_LIBADD =
+
+ if HAVE_ICU
+ libUnicode_la_SOURCES += unicodeICU.c
++libUnicode_la_LIBADD += @ICU_LIBS@
+ endif
+--
+2.33.0
+
diff --git a/app-emulation/open-vm-tools/files/open-vm-tools-13.0.10-glib-with-glibc-2.43-c23.patch b/app-emulation/open-vm-tools/files/open-vm-tools-13.0.10-glib-with-glibc-2.43-c23.patch
new file mode 100644
index 000000000000..f49d9248f13a
--- /dev/null
+++ b/app-emulation/open-vm-tools/files/open-vm-tools-13.0.10-glib-with-glibc-2.43-c23.patch
@@ -0,0 +1,37 @@
+glib changes how it provides g_free depending on the glibc version.
+
+https://bugs.gentoo.org/969697
+https://github.com/vmware/open-vm-tools/pull/779
+
+From bfd12cf73d81919843383598e4a9e64c6e5fd97a Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 21 Nov 2025 00:29:10 -0800
+Subject: [PATCH] glib_stubs: avoid GLib g_free macro redefinition error
+
+glib 2.78+ defines g_free as an object-size checking macro.
+open-vm-tools overrides g_free(), leading to preprocessor expansion
+inside the function signature and breaking the build.
+
+Undefine the macro before defining the stub.
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ open-vm-tools/lib/rpcChannel/glib_stubs.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/lib/rpcChannel/glib_stubs.c b/lib/rpcChannel/glib_stubs.c
+index c32deb073..cb89c6a87 100644
+--- a/lib/rpcChannel/glib_stubs.c
++++ b/lib/rpcChannel/glib_stubs.c
+@@ -35,6 +35,9 @@
+
+ void *g_malloc0(size_t s) { return Util_SafeCalloc(1, s); }
+ void *g_malloc0_n(size_t n, size_t s) { return Util_SafeCalloc(n, s); }
++/* GLib defines g_free as a macro, so undefine it before providing
++ * our own stub implementation. */
++#undef g_free
+ void g_free(void *p) { free(p); }
+
+ void g_mutex_init(GMutex *mutex) { }
+
diff --git a/app-emulation/open-vm-tools/files/open-vm-tools-13.0.10-glibc-2.43-c23.patch b/app-emulation/open-vm-tools/files/open-vm-tools-13.0.10-glibc-2.43-c23.patch
new file mode 100644
index 000000000000..89589d9e45cf
--- /dev/null
+++ b/app-emulation/open-vm-tools/files/open-vm-tools-13.0.10-glibc-2.43-c23.patch
@@ -0,0 +1,145 @@
+https://bugs.gentoo.org/969697
+https://github.com/vmware/open-vm-tools/pull/779
+
+From b309f5d40619f033bbddef5c95682beed31659ac Mon Sep 17 00:00:00 2001
+From: Rudi Heitbaum <rudi@heitbaum.com>
+Date: Mon, 26 Jan 2026 11:55:03 +0000
+Subject: [PATCH] fix initialization discards 'const' qualifier from pointer
+ target type
+
+Since glibc-2.43:
+
+For ISO C23, the functions bsearch, memchr, strchr, strpbrk, strrchr,
+strstr, wcschr, wcspbrk, wcsrchr, wcsstr and wmemchr that return
+pointers into their input arrays now have definitions as macros that
+return a pointer to a const-qualified type when the input argument is
+a pointer to a const-qualified type.
+
+https://lists.gnu.org/archive/html/info-gnu/2026-01/msg00005.html
+
+Signed-off-by: Rudi Heitbaum <rudi@heitbaum.com>
+---
+ open-vm-tools/lib/hgfs/hgfsEscape.c | 6 +++---
+ open-vm-tools/lib/hgfsServer/hgfsServerLinux.c | 2 +-
+ open-vm-tools/lib/misc/strutil.c | 7 ++++---
+ open-vm-tools/lib/nicInfo/nicInfoPosix.c | 2 +-
+ open-vm-tools/libvmtools/i18n.c | 2 +-
+ open-vm-tools/services/plugins/vix/vixTools.c | 2 +-
+ 6 files changed, 11 insertions(+), 10 deletions(-)
+
+diff --git a/lib/hgfs/hgfsEscape.c b/lib/hgfs/hgfsEscape.c
+index c4d39b12d..212ea1c79 100644
+--- a/lib/hgfs/hgfsEscape.c
++++ b/lib/hgfs/hgfsEscape.c
+@@ -175,7 +175,7 @@ HgfsAddEscapeCharacter(char const * bufIn, // IN: input name
+ HgfsEscapeContext *escapeContext = (HgfsEscapeContext *)context;
+ uint32 charactersToCopy;
+ uint32 outputSpace;
+- char* illegal;
++ const char* illegal;
+ Bool result = TRUE;
+
+ ASSERT(offset >= escapeContext->processedOffset); // Scanning forward
+@@ -573,7 +573,7 @@ HgfsIsEscapeSequence(char const *bufIn, // IN: input name
+ uint32 length) // IN: length of the name in characters
+ {
+ if (bufIn[offset] == HGFS_ESCAPE_CHAR && offset > 0) {
+- char *substitute;
++ const char *substitute;
+ if (bufIn[offset - 1] == HGFS_ESCAPE_SUBSTITUE_CHAR && offset > 1) {
+ /*
+ * Possibly a valid sequence, check it must be preceded with a substitute
+@@ -887,7 +887,7 @@ HgfsEscapeUndoComponent(char *bufIn, // IN: Characters to be unesc
+ size_t offset = escapePointer - bufIn;
+
+ if (HgfsIsEscapeSequence(bufIn, offset, sizeIn)) {
+- char* substitute = strchr(HGFS_SUBSTITUTE_CHARS, bufIn[offset - 1]);
++ const char* substitute = strchr(HGFS_SUBSTITUTE_CHARS, bufIn[offset - 1]);
+ if (substitute != NULL) {
+ bufIn[offset - 1] = HGFS_ILLEGAL_CHARS[substitute - HGFS_SUBSTITUTE_CHARS];
+ } else if (bufIn[offset - 1] == HGFS_ESCAPE_SUBSTITUE_CHAR) {
+diff --git a/lib/hgfsServer/hgfsServerLinux.c b/lib/hgfsServer/hgfsServerLinux.c
+index 4a0bc9378..fd1db4a29 100644
+--- a/lib/hgfsServer/hgfsServerLinux.c
++++ b/lib/hgfsServer/hgfsServerLinux.c
+@@ -1364,7 +1364,7 @@ static void
+ HgfsGetHiddenAttr(char const *fileName, // IN: Input filename
+ HgfsFileAttrInfo *attr) // OUT: Struct to copy into
+ {
+- char *baseName;
++ const char *baseName;
+
+ ASSERT(fileName);
+ ASSERT(attr);
+diff --git a/lib/misc/strutil.c b/lib/misc/strutil.c
+index 4fc6502e4..4be63b7b8 100644
+--- a/lib/misc/strutil.c
++++ b/lib/misc/strutil.c
+@@ -1454,6 +1454,7 @@ StrUtil_ReplaceAll(const char *orig, // IN
+ char *result;
+ const char *current;
+ char *tmp;
++ const char *tmp2;
+ size_t lenWhat;
+ size_t lenWith;
+ size_t occurrences = 0;
+@@ -1467,8 +1468,8 @@ StrUtil_ReplaceAll(const char *orig, // IN
+ lenWith = strlen(with);
+
+ current = orig;
+- while ((tmp = strstr(current, what)) != NULL) {
+- current = tmp + lenWhat;
++ while ((tmp2 = strstr(current, what)) != NULL) {
++ current = tmp2 + lenWhat;
+ ++occurrences;
+ }
+
+@@ -1695,7 +1696,7 @@ StrUtilHasListItem(char const *list, // IN:
+ char const *item, // IN:
+ int (*ncmp)(char const *, char const*, size_t)) // IN:
+ {
+- char *foundDelim;
++ const char *foundDelim;
+ int itemLen = strlen(item);
+
+ if (list == NULL) {
+diff --git a/lib/nicInfo/nicInfoPosix.c b/lib/nicInfo/nicInfoPosix.c
+index 0135e6a09..922b4efe2 100644
+--- a/lib/nicInfo/nicInfoPosix.c
++++ b/lib/nicInfo/nicInfoPosix.c
+@@ -263,7 +263,7 @@ static Bool
+ IpEntryMatchesDevice(const char *devName,
+ const char *label)
+ {
+- char *p;
++ const char *p;
+ size_t n;
+
+ if ((p = strchr(label, ':')) != NULL) {
+diff --git a/libvmtools/i18n.c b/libvmtools/i18n.c
+index 3085f72d7..f61406d14 100644
+--- a/libvmtools/i18n.c
++++ b/libvmtools/i18n.c
+@@ -698,7 +698,7 @@ VMTools_BindTextDomain(const char *domain,
+ * If we couldn't find the catalog file for the user's language, see if
+ * we can find a more generic language (e.g., for "en_US", also try "en").
+ */
+- char *sep = Str_Strrchr(lang, '_');
++ const char *sep = Str_Strrchr(lang, '_');
+ if (sep != NULL) {
+ if (usrlang == NULL) {
+ usrlang = Util_SafeStrdup(lang);
+diff --git a/services/plugins/vix/vixTools.c b/services/plugins/vix/vixTools.c
+index 654512c5e..5c79ca12a 100644
+--- a/services/plugins/vix/vixTools.c
++++ b/services/plugins/vix/vixTools.c
+@@ -930,7 +930,7 @@ VixToolsBuildUserEnvironmentTable(const char * const *envp) // IN: optional
+ for (; NULL != *envp; envp++) {
+ char *name;
+ char *value;
+- char *whereToSplit;
++ const char *whereToSplit;
+ size_t nameLen;
+
+ whereToSplit = strchr(*envp, '=');
+
diff --git a/app-emulation/open-vm-tools/files/open-vm-tools.confd b/app-emulation/open-vm-tools/files/open-vm-tools.confd
new file mode 100644
index 000000000000..4414fabdb46e
--- /dev/null
+++ b/app-emulation/open-vm-tools/files/open-vm-tools.confd
@@ -0,0 +1,2 @@
+# Set this to no to disable drag and drop (and vmblock) loading.
+VM_DRAG_AND_DROP="yes"
diff --git a/app-emulation/open-vm-tools/files/open-vm-tools.initd b/app-emulation/open-vm-tools/files/open-vm-tools.initd
new file mode 100644
index 000000000000..8b91e4fb4c0a
--- /dev/null
+++ b/app-emulation/open-vm-tools/files/open-vm-tools.initd
@@ -0,0 +1,59 @@
+#!/sbin/openrc-run
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+pidfile="/run/vmtoolsd.pid"
+command="/usr/bin/vmtoolsd"
+command_args="-b ${pidfile}"
+
+vmblockmntpt="/proc/fs/vmblock/mountPoint"
+vmblockfusemntpt="/run/vmblock-fuse"
+
+depend() {
+ before checkfs fsck net X
+}
+
+start_vmblock() {
+ checkpath -d -m 1777 /tmp/VMwareDnD
+ if command -v vmware-vmblock-fuse > /dev/null; then
+ modprobe fuse > /dev/null 2>&1
+ checkpath -d "${vmblockfusemntpt}"
+ ebegin "Mounting vmblock-fuse"
+ vmware-vmblock-fuse \
+ -o subtype=vmware-vmblock,default_permissions,allow_other \
+ "${vmblockfusemntpt}"
+ eend $?
+ else
+ modprobe vmblock > /dev/null 2>&1
+ checkpath -d "${vmblockmntpt}"
+ ebegin "Mounting vmblock"
+ mount -t vmblock vmblock "${vmblockmntpt}"
+ eend $?
+ fi
+}
+
+stop_vmblock() {
+ if [ -d "${vmblockfusemntpt}" ]; then
+ ebegin "Unmounting vmblock-fuse"
+ umount "${vmblockfusemntpt}"
+ eend $?
+ else
+ ebegin "Unmounting vmblock"
+ umount "${vmblockmntpt}"
+ eend $?
+ fi
+}
+
+start_pre() {
+ if [ x"${VM_DRAG_AND_DROP}" = xyes ]; then
+ start_vmblock
+ fi
+ return 0
+}
+
+stop_post() {
+ if [ x"${VM_DRAG_AND_DROP}" = xyes ]; then
+ stop_vmblock
+ fi
+ return 0
+}
diff --git a/app-emulation/open-vm-tools/files/vgauthd.service b/app-emulation/open-vm-tools/files/vgauthd.service
new file mode 100644
index 000000000000..db27bd56ef51
--- /dev/null
+++ b/app-emulation/open-vm-tools/files/vgauthd.service
@@ -0,0 +1,14 @@
+[Unit]
+Description=VGAuth Service for open-vm-tools
+Documentation=https://github.com/vmware/open-vm-tools
+ConditionVirtualization=vmware
+PartOf=vmtoolsd.service
+
+[Service]
+# For dev-libs/xerces-c[iconv,-icu]
+EnvironmentFile=-/etc/env.d/50xerces-c
+ExecStart=/usr/bin/VGAuthService -s
+TimeoutStopSec=5
+
+[Install]
+RequiredBy=vmtoolsd.service
diff --git a/app-emulation/open-vm-tools/files/vmtoolsd.service b/app-emulation/open-vm-tools/files/vmtoolsd.service
new file mode 100644
index 000000000000..1226291bc8da
--- /dev/null
+++ b/app-emulation/open-vm-tools/files/vmtoolsd.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=Service for virtual machines hosted on VMware
+Documentation=https://github.com/vmware/open-vm-tools
+ConditionVirtualization=vmware
+
+[Service]
+ExecStart=/usr/bin/vmtoolsd
+TimeoutStopSec=5
+
+[Install]
+WantedBy=multi-user.target
diff --git a/app-emulation/open-vm-tools/files/vmtoolsd.vgauth.service b/app-emulation/open-vm-tools/files/vmtoolsd.vgauth.service
new file mode 100644
index 000000000000..1cb6e00ecf51
--- /dev/null
+++ b/app-emulation/open-vm-tools/files/vmtoolsd.vgauth.service
@@ -0,0 +1,14 @@
+[Unit]
+Description=Service for virtual machines hosted on VMware
+Documentation=https://github.com/vmware/open-vm-tools
+ConditionVirtualization=vmware
+Requires=vgauthd.service
+After=vgauthd.service
+
+[Service]
+ExecStart=/usr/bin/vmtoolsd
+TimeoutStopSec=5
+
+[Install]
+WantedBy=multi-user.target
+Also=vgauthd.service
diff --git a/app-emulation/open-vm-tools/metadata.xml b/app-emulation/open-vm-tools/metadata.xml
new file mode 100644
index 000000000000..85076593c086
--- /dev/null
+++ b/app-emulation/open-vm-tools/metadata.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>soap@gentoo.org</email>
+ <name>David Seifert</name>
+ </maintainer>
+ <longdescription>
+ The Open Virtual Machine Tools (open-vm-tools) are the open source
+ implementation of VMware Tools. They are a set of guest operating system
+ virtualization components that enhance performance and user experience
+ of virtual machines.
+ </longdescription>
+ <use>
+ <flag name="deploypkg">Build deploypkg plugin</flag>
+ <flag name="dnet">Enable support for nicinfo</flag>
+ <flag name="doc">Generate API documentation</flag>
+ <flag name="fuse">Enable vmblock-fuse/vmhgfs-fuse</flag>
+ <flag name="gtkmm">Compile with Gtkmm and sigc++ (Recommended)</flag>
+ <flag name="multimon">Enable multimon (Requires X)</flag>
+ <flag name="resolutionkms">Build the linux/unix resolutionkms module</flag>
+ <flag name="vgauth">Build vgauth</flag>
+ </use>
+ <upstream>
+ <remote-id type="github">vmware/open-vm-tools</remote-id>
+ <remote-id type="cpe">cpe:/a:vmware:tools</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/app-emulation/open-vm-tools/open-vm-tools-13.0.10-r1.ebuild b/app-emulation/open-vm-tools/open-vm-tools-13.0.10-r1.ebuild
new file mode 100644
index 000000000000..919662c83de1
--- /dev/null
+++ b/app-emulation/open-vm-tools/open-vm-tools-13.0.10-r1.ebuild
@@ -0,0 +1,171 @@
+# Copyright 2007-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools linux-info pam systemd udev
+
+MY_P="${P}-25056151"
+
+DESCRIPTION="Tools for VMware guests"
+HOMEPAGE="https://github.com/vmware/open-vm-tools"
+SRC_URI="https://github.com/vmware/open-vm-tools/releases/download/stable-${PV}/${MY_P}.tar.gz"
+S="${WORKDIR}/${MY_P}"
+
+LICENSE="LGPL-2.1"
+SLOT="0"
+KEYWORDS="amd64 arm64 x86"
+IUSE="X +deploypkg +dnet doc +fuse gtkmm +icu multimon pam +resolutionkms selinux +ssl +vgauth"
+REQUIRED_USE="
+ multimon? ( X )
+ vgauth? ( ssl )"
+
+RDEPEND="
+ dev-libs/glib
+ net-libs/libtirpc
+ deploypkg? ( dev-libs/libmspack )
+ fuse? ( sys-fs/fuse:3= )
+ pam? ( sys-libs/pam )
+ !pam? ( virtual/libcrypt:= )
+ ssl? ( dev-libs/openssl:= )
+ vgauth? (
+ dev-libs/libxml2:=
+ dev-libs/xmlsec:=
+ )
+ X? (
+ x11-libs/gtk+:3[X]
+ x11-libs/libSM
+ x11-libs/libXcomposite
+ x11-libs/libXext
+ x11-libs/libXi
+ x11-libs/libXrandr
+ x11-libs/libXrender
+ x11-libs/libXtst
+ gtkmm? (
+ dev-cpp/gtkmm:3.0
+ dev-libs/libsigc++:2
+ )
+ multimon? ( x11-libs/libXinerama )
+ )
+ dnet? ( dev-libs/libdnet )
+ icu? ( dev-libs/icu:= )
+ resolutionkms? (
+ virtual/libudev
+ || (
+ (
+ >=media-libs/mesa-25.2[-video_cards_vmware]
+ x11-base/xorg-server[xorg]
+ x11-libs/libdrm[-video_cards_vmware]
+ )
+ (
+ <media-libs/mesa-25.2[video_cards_vmware,xa]
+ x11-libs/libdrm[video_cards_vmware]
+ )
+ )
+ )"
+DEPEND="${RDEPEND}
+ net-libs/rpcsvc-proto"
+BDEPEND="
+ dev-util/glib-utils
+ virtual/pkgconfig
+ doc? ( app-text/doxygen )"
+RDEPEND+=" selinux? ( sec-policy/selinux-vmware )"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-12.4.5-Werror.patch
+ "${FILESDIR}"/${PN}-12.4.5-icu.patch
+ "${FILESDIR}"/${PN}-13.0.10-glibc-2.43-c23.patch
+ "${FILESDIR}"/${PN}-13.0.10-glib-with-glibc-2.43-c23.patch
+)
+
+pkg_setup() {
+ local CONFIG_CHECK="~VMWARE_BALLOON ~VMWARE_PVSCSI ~VMXNET3 ~VMWARE_VMCI ~VMWARE_VMCI_VSOCKETS ~FUSE_FS"
+ use X && CONFIG_CHECK+=" ~DRM_VMWGFX"
+ kernel_is -lt 5 5 || CONFIG_CHECK+=" ~X86_IOPL_IOPERM"
+ linux-info_pkg_setup
+}
+
+src_prepare() {
+ default
+ eautoreconf
+}
+
+src_configure() {
+ local myeconfargs=(
+ --disable-glibc-check
+ --disable-tests
+ --without-root-privileges
+ $(use_enable multimon)
+ $(use_with X x)
+ $(use_with X gtk3)
+ $(use_with gtkmm gtkmm3)
+ $(use_enable doc docs)
+ $(use_enable resolutionkms)
+ $(use_enable deploypkg)
+ $(use_with pam)
+ $(use_enable vgauth)
+ $(use_with dnet)
+ $(use_with icu)
+ --with-udev-rules-dir="$(get_udevdir)"/rules.d
+ $(use_with fuse fuse 3)
+ # Disable it explicitly, we do not yet list the
+ # containerinfo dependencies in the ebuild
+ --disable-containerinfo
+ # Disable it explicitly, gtk2 is obsolete
+ --without-gtk2
+ # Possibly add a separate USE flag for the utility, or
+ # merge it into resolutionkms
+ --disable-vmwgfxctrl
+ )
+ # Avoid a bug in configure.ac
+ use ssl || myeconfargs+=( --without-ssl )
+
+ # Avoid relying on dnet-config script, which breaks cross-compiling. This
+ # library has no pkg-config file.
+ export CUSTOM_DNET_LIBS="-ldnet"
+
+ econf "${myeconfargs[@]}"
+}
+
+src_install() {
+ default
+ find "${ED}" -name '*.la' -delete || die
+
+ if use pam; then
+ rm "${ED}"/etc/pam.d/vmtoolsd || die
+ pamd_mimic_system vmtoolsd auth account
+ fi
+
+ newinitd "${FILESDIR}/open-vm-tools.initd" vmware-tools
+ newconfd "${FILESDIR}/open-vm-tools.confd" vmware-tools
+
+ if use vgauth; then
+ systemd_newunit "${FILESDIR}"/vmtoolsd.vgauth.service vmtoolsd.service
+ systemd_dounit "${FILESDIR}"/vgauthd.service
+ else
+ systemd_dounit "${FILESDIR}"/vmtoolsd.service
+ fi
+
+ # vmhgfs-fuse is built only when fuse is enabled
+ if use fuse; then
+ # Make fstype = vmhgfs-fuse work in fstab
+ dosym vmhgfs-fuse /usr/bin/mount.vmhgfs-fuse
+ fi
+
+ if use X; then
+ fperms 4711 /usr/bin/vmware-user-suid-wrapper
+ dobin scripts/common/vmware-xdg-detect-de
+ fi
+}
+
+pkg_postinst() {
+ udev_reload
+
+ if has_version ">=media-libs/mesa-25.2" && has_version "x11-drivers/xf86-video-vmware"; then
+ elog "You need to remove x11-drivers/xf86-video-vmware to use the modesetting video driver."
+ fi
+}
+
+pkg_postrm() {
+ udev_reload
+}