mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-23 16:49:10 -07:00
app-emulation/open-vm-tools: fix glibc-2.43 compat
Closes: https://bugs.gentoo.org/969697 Signed-off-by: Sam James <sam@gentoo.org>
This commit is contained in:
@@ -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) { }
|
||||
|
||||
@@ -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, '=');
|
||||
|
||||
170
app-emulation/open-vm-tools/open-vm-tools-13.0.10-r1.ebuild
Normal file
170
app-emulation/open-vm-tools/open-vm-tools-13.0.10-r1.ebuild
Normal file
@@ -0,0 +1,170 @@
|
||||
# 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 +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 )"
|
||||
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user