Accepting request 267265 from Virtualization:VMware
Work around pesign messing up RPM scriptlets - not sure if/when this is ever going to be fixed OBS-URL: https://build.opensuse.org/request/show/267265 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/open-vm-tools?expand=0&rev=55
This commit is contained in:
commit
076cb8c601
33
0001-Remove-unused-DEPRECATED-macro.patch
Normal file
33
0001-Remove-unused-DEPRECATED-macro.patch
Normal file
@ -0,0 +1,33 @@
|
||||
From 0a49c04428ff99fdf29edf32e043e04fae492b6d Mon Sep 17 00:00:00 2001
|
||||
From: "Scott M. Kroll" <skroll@gmail.com>
|
||||
Date: Mon, 14 Jul 2014 11:24:44 -0400
|
||||
Subject: [PATCH 1/5] Remove unused DEPRECATED macro
|
||||
|
||||
---
|
||||
open-vm-tools/lib/include/vm_assert.h | 10 ----------
|
||||
1 file changed, 10 deletions(-)
|
||||
|
||||
diff --git a/open-vm-tools/lib/include/vm_assert.h b/open-vm-tools/lib/include/vm_assert.h
|
||||
index 5b02eed..48c9f1d 100644
|
||||
--- a/open-vm-tools/lib/include/vm_assert.h
|
||||
+++ b/open-vm-tools/lib/include/vm_assert.h
|
||||
@@ -282,16 +282,6 @@ void WarningThrottled(uint32 *count, const char *fmt, ...)
|
||||
|
||||
#define LOG_ONCE(_s) DO_ONCE(Log _s)
|
||||
|
||||
-#ifdef VMX86_DEVEL
|
||||
- #define DEPRECATED(_fix) DO_ONCE( \
|
||||
- Warning("%s:%d: %s is DEPRECATED; %s\n", \
|
||||
- __FILE__, __LINE__, __FUNCTION__, \
|
||||
- _fix))
|
||||
-#else
|
||||
- #define DEPRECATED(_fix) do {} while (0)
|
||||
-#endif
|
||||
-
|
||||
-
|
||||
/*
|
||||
* Redefine macros that are only in debug versions
|
||||
*/
|
||||
--
|
||||
2.0.1
|
||||
|
34
0002-Conditionally-define-g_info-macro.patch
Normal file
34
0002-Conditionally-define-g_info-macro.patch
Normal file
@ -0,0 +1,34 @@
|
||||
From 9a38a9da20c898c4c21e84e1cf4f97c5b63f6a87 Mon Sep 17 00:00:00 2001
|
||||
From: "Scott M. Kroll" <skroll@gmail.com>
|
||||
Date: Mon, 14 Jul 2014 11:25:10 -0400
|
||||
Subject: [PATCH 2/5] Conditionally define g_info macro
|
||||
|
||||
* Some versions of GLib define this macro.
|
||||
---
|
||||
open-vm-tools/lib/include/vmware/tools/log.h | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/open-vm-tools/lib/include/vmware/tools/log.h b/open-vm-tools/lib/include/vmware/tools/log.h
|
||||
index 526b7c2..fa7deb4 100644
|
||||
--- a/open-vm-tools/lib/include/vmware/tools/log.h
|
||||
+++ b/open-vm-tools/lib/include/vmware/tools/log.h
|
||||
@@ -121,6 +121,7 @@
|
||||
# define FUNC __FUNCTION__
|
||||
#endif
|
||||
|
||||
+#ifndef g_info
|
||||
/*
|
||||
*******************************************************************************
|
||||
* g_info -- */ /**
|
||||
@@ -135,7 +136,7 @@
|
||||
*/
|
||||
|
||||
#define g_info(fmt, ...) g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO, fmt, ## __VA_ARGS__)
|
||||
-
|
||||
+#endif
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
--
|
||||
2.0.1
|
||||
|
311
0003-Add-kuid_t-kgid_t-compatibility-layer.patch
Normal file
311
0003-Add-kuid_t-kgid_t-compatibility-layer.patch
Normal file
@ -0,0 +1,311 @@
|
||||
From 327938705e9223cdc15c5e0d85b0cdfafb4b6cd7 Mon Sep 17 00:00:00 2001
|
||||
From: "Scott M. Kroll" <skroll@gmail.com>
|
||||
Date: Sun, 13 Jul 2014 18:19:35 -0400
|
||||
Subject: [PATCH 3/5] Add kuid_t/kgid_t compatibility layer
|
||||
|
||||
---
|
||||
open-vm-tools/modules/linux/vmhgfs/filesystem.c | 20 ++--
|
||||
open-vm-tools/modules/linux/vmhgfs/fsutil.c | 118 ++++++++++++++++++++----
|
||||
open-vm-tools/modules/linux/vmhgfs/fsutil.h | 5 +-
|
||||
open-vm-tools/modules/linux/vmhgfs/inode.c | 18 +++-
|
||||
open-vm-tools/modules/linux/vmhgfs/module.h | 14 ++-
|
||||
5 files changed, 145 insertions(+), 30 deletions(-)
|
||||
|
||||
diff --git a/open-vm-tools/modules/linux/vmhgfs/filesystem.c b/open-vm-tools/modules/linux/vmhgfs/filesystem.c
|
||||
index f101ca7..c845b36 100644
|
||||
--- a/open-vm-tools/modules/linux/vmhgfs/filesystem.c
|
||||
+++ b/open-vm-tools/modules/linux/vmhgfs/filesystem.c
|
||||
@@ -228,17 +228,25 @@ HgfsInitSuperInfo(HgfsMountInfo *mountInfo) // IN: Passed down from the user
|
||||
* or gid given to us by the server.
|
||||
*/
|
||||
si->uidSet = mountInfo->uidSet;
|
||||
+ si->uid = current_uid();
|
||||
if (si->uidSet) {
|
||||
- si->uid = mountInfo->uid;
|
||||
- } else {
|
||||
- si->uid = current_uid();
|
||||
+ kuid_t mntUid = make_kuid(current_user_ns(), mountInfo->uid);
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 5, 0)
|
||||
+ if (uid_valid(mntUid))
|
||||
+#endif
|
||||
+ si->uid = mntUid;
|
||||
}
|
||||
+
|
||||
si->gidSet = mountInfo->gidSet;
|
||||
+ si->gid = current_gid();
|
||||
if (si->gidSet) {
|
||||
- si->gid = mountInfo->gid;
|
||||
- } else {
|
||||
- si->gid = current_gid();
|
||||
+ kgid_t mntGid = make_kgid(current_user_ns(), mountInfo->gid);
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 5, 0)
|
||||
+ if (gid_valid(mntGid))
|
||||
+#endif
|
||||
+ si->gid = mntGid;
|
||||
}
|
||||
+
|
||||
si->fmask = mountInfo->fmask;
|
||||
si->dmask = mountInfo->dmask;
|
||||
si->ttl = mountInfo->ttl * HZ; // in ticks
|
||||
diff --git a/open-vm-tools/modules/linux/vmhgfs/fsutil.c b/open-vm-tools/modules/linux/vmhgfs/fsutil.c
|
||||
index 28858bc..1028cc9 100644
|
||||
--- a/open-vm-tools/modules/linux/vmhgfs/fsutil.c
|
||||
+++ b/open-vm-tools/modules/linux/vmhgfs/fsutil.c
|
||||
@@ -545,6 +545,105 @@ HgfsUnpackCommonAttr(HgfsReq *req, // IN: Reply packet
|
||||
/*
|
||||
*----------------------------------------------------------------------
|
||||
*
|
||||
+ * HgfsCalcBlockSize --
|
||||
+ *
|
||||
+ * Calculate the number of 512 byte blocks used.
|
||||
+ *
|
||||
+ * Round the size to the next whole block and divide by the block size
|
||||
+ * to get the number of 512 byte blocks.
|
||||
+ * Note, this is taken from the nfs client and is simply performing:
|
||||
+ * (size + 512-1)/ 512)
|
||||
+ *
|
||||
+ * Results:
|
||||
+ * The number of 512 byte blocks for the size.
|
||||
+ *
|
||||
+ * Side effects:
|
||||
+ * None
|
||||
+ *
|
||||
+ *----------------------------------------------------------------------
|
||||
+ */
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 17)
|
||||
+static inline blkcnt_t
|
||||
+HgfsCalcBlockSize(uint64 tsize)
|
||||
+{
|
||||
+ blkcnt_t used = (tsize + 511) >> 9;
|
||||
+ return (used > ULONG_MAX) ? ULONG_MAX : used;
|
||||
+}
|
||||
+#else
|
||||
+static inline unsigned long
|
||||
+HgfsCalcBlockSize(uint64 tsize)
|
||||
+{
|
||||
+ loff_t used = (tsize + 511) >> 9;
|
||||
+ return (used > ULONG_MAX) ? ULONG_MAX : used;
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
+/*
|
||||
+ *----------------------------------------------------------------------
|
||||
+ *
|
||||
+ * HgfsSetInodeUidGid --
|
||||
+ *
|
||||
+ * Set the UID and GID of the inode.
|
||||
+ *
|
||||
+ * Update an inode's UID and GID to match those of the HgfsAttr returned
|
||||
+ * by the server.
|
||||
+ *
|
||||
+ * Results:
|
||||
+ * The number of 512 byte blocks for the size.
|
||||
+ *
|
||||
+ * Side effects:
|
||||
+ * None
|
||||
+ *
|
||||
+ *----------------------------------------------------------------------
|
||||
+ */
|
||||
+
|
||||
+static void
|
||||
+HgfsSetInodeUidGid(struct inode *inode, // IN/OUT: Inode
|
||||
+ HgfsSuperInfo *si, // IN: New attrs
|
||||
+ HgfsAttrInfo const *attr) // IN: New attrs
|
||||
+{
|
||||
+ /*
|
||||
+ * Use the stored uid and gid if we were given them at mount-time, or if
|
||||
+ * the server didn't give us a uid or gid.
|
||||
+ */
|
||||
+ if (si->uidSet || (attr->mask & HGFS_ATTR_VALID_USERID) == 0) {
|
||||
+ inode->i_uid = si->uid;
|
||||
+ } else {
|
||||
+ kuid_t attrUid = make_kuid(&init_user_ns, attr->userId);
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 5, 0)
|
||||
+ if (uid_valid(attrUid)) {
|
||||
+ inode->i_uid = attrUid;
|
||||
+ } else {
|
||||
+ inode->i_uid = si->uid;
|
||||
+ }
|
||||
+#else
|
||||
+ inode->i_uid = attrUid;
|
||||
+#endif
|
||||
+ LOG(6, (KERN_DEBUG "VMware hgfs: %s: inode uid %u\n",
|
||||
+ __func__, from_kuid(&init_user_ns, inode->i_uid)));
|
||||
+ }
|
||||
+ if (si->gidSet || (attr->mask & HGFS_ATTR_VALID_GROUPID) == 0) {
|
||||
+ inode->i_gid = si->gid;
|
||||
+ } else {
|
||||
+ kgid_t attrGid = make_kgid(&init_user_ns, attr->groupId);
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 5, 0)
|
||||
+ if (gid_valid(attrGid)) {
|
||||
+ inode->i_gid = attrGid;
|
||||
+ } else {
|
||||
+ inode->i_gid = si->gid;
|
||||
+ }
|
||||
+#else
|
||||
+ inode->i_gid = attrGid;
|
||||
+#endif
|
||||
+ LOG(6, (KERN_DEBUG "VMware hgfs: %s: inode gid %u\n",
|
||||
+ __func__, from_kgid(&init_user_ns, inode->i_gid)));
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+
|
||||
+/*
|
||||
+ *----------------------------------------------------------------------
|
||||
+ *
|
||||
* HgfsChangeFileAttributes --
|
||||
*
|
||||
* Update an inode's attributes to match those of the HgfsAttr. May
|
||||
@@ -634,20 +733,7 @@ HgfsChangeFileAttributes(struct inode *inode, // IN/OUT: Inode
|
||||
*/
|
||||
set_nlink(inode, 1);
|
||||
|
||||
- /*
|
||||
- * Use the stored uid and gid if we were given them at mount-time, or if
|
||||
- * the server didn't give us a uid or gid.
|
||||
- */
|
||||
- if (si->uidSet || (attr->mask & HGFS_ATTR_VALID_USERID) == 0) {
|
||||
- inode->i_uid = si->uid;
|
||||
- } else {
|
||||
- inode->i_uid = attr->userId;
|
||||
- }
|
||||
- if (si->gidSet || (attr->mask & HGFS_ATTR_VALID_GROUPID) == 0) {
|
||||
- inode->i_gid = si->gid;
|
||||
- } else {
|
||||
- inode->i_gid = attr->groupId;
|
||||
- }
|
||||
+ HgfsSetInodeUidGid(inode, si, attr);
|
||||
|
||||
inode->i_rdev = 0; /* Device nodes are not supported */
|
||||
#if !defined VMW_INODE_2618
|
||||
@@ -1618,8 +1704,8 @@ HgfsStatusConvertToLinux(HgfsStatus hgfsStatus) // IN: Status code to convert
|
||||
void
|
||||
HgfsSetUidGid(struct inode *parent, // IN: parent inode
|
||||
struct dentry *dentry, // IN: dentry of file to update
|
||||
- uid_t uid, // IN: uid to set
|
||||
- gid_t gid) // IN: gid to set
|
||||
+ kuid_t uid, // IN: uid to set
|
||||
+ kgid_t gid) // IN: gid to set
|
||||
{
|
||||
struct iattr setUidGid;
|
||||
|
||||
diff --git a/open-vm-tools/modules/linux/vmhgfs/fsutil.h b/open-vm-tools/modules/linux/vmhgfs/fsutil.h
|
||||
index da5c5a1..2767099 100644
|
||||
--- a/open-vm-tools/modules/linux/vmhgfs/fsutil.h
|
||||
+++ b/open-vm-tools/modules/linux/vmhgfs/fsutil.h
|
||||
@@ -32,6 +32,7 @@
|
||||
#include <linux/signal.h>
|
||||
#include "compat_fs.h"
|
||||
|
||||
+#include "module.h" /* For kuid_t kgid_t types. */
|
||||
#include "inode.h"
|
||||
#include "request.h"
|
||||
#include "vm_basic_types.h"
|
||||
@@ -91,8 +92,8 @@ int HgfsGetHandle(struct inode *inode,
|
||||
int HgfsStatusConvertToLinux(HgfsStatus hgfsStatus);
|
||||
void HgfsSetUidGid(struct inode *parent,
|
||||
struct dentry *dentry,
|
||||
- uid_t uid,
|
||||
- gid_t gid);
|
||||
+ kuid_t uid,
|
||||
+ kgid_t gid);
|
||||
struct inode *HgfsGetInode(struct super_block *sb, ino_t ino);
|
||||
void HgfsDoReadInode(struct inode *inode);
|
||||
|
||||
diff --git a/open-vm-tools/modules/linux/vmhgfs/inode.c b/open-vm-tools/modules/linux/vmhgfs/inode.c
|
||||
index 859b3ff..caaa41a 100644
|
||||
--- a/open-vm-tools/modules/linux/vmhgfs/inode.c
|
||||
+++ b/open-vm-tools/modules/linux/vmhgfs/inode.c
|
||||
@@ -404,6 +404,8 @@ HgfsPackSetattrRequest(struct iattr *iattr, // IN: Inode attrs to update from
|
||||
size_t reqBufferSize;
|
||||
size_t reqSize;
|
||||
int result = 0;
|
||||
+ uid_t attrUid = -1;
|
||||
+ gid_t attrGid = -1;
|
||||
|
||||
ASSERT(iattr);
|
||||
ASSERT(dentry);
|
||||
@@ -412,6 +414,14 @@ HgfsPackSetattrRequest(struct iattr *iattr, // IN: Inode attrs to update from
|
||||
|
||||
valid = iattr->ia_valid;
|
||||
|
||||
+ if (valid & ATTR_UID) {
|
||||
+ attrUid = from_kuid(&init_user_ns, iattr->ia_uid);
|
||||
+ }
|
||||
+
|
||||
+ if (valid & ATTR_GID) {
|
||||
+ attrGid = from_kgid(&init_user_ns, iattr->ia_gid);
|
||||
+ }
|
||||
+
|
||||
switch (opUsed) {
|
||||
case HGFS_OP_SETATTR_V3: {
|
||||
HgfsRequest *requestHeader;
|
||||
@@ -488,13 +498,13 @@ HgfsPackSetattrRequest(struct iattr *iattr, // IN: Inode attrs to update from
|
||||
|
||||
if (valid & ATTR_UID) {
|
||||
attrV2->mask |= HGFS_ATTR_VALID_USERID;
|
||||
- attrV2->userId = iattr->ia_uid;
|
||||
+ attrV2->userId = attrUid;
|
||||
*changed = TRUE;
|
||||
}
|
||||
|
||||
if (valid & ATTR_GID) {
|
||||
attrV2->mask |= HGFS_ATTR_VALID_GROUPID;
|
||||
- attrV2->groupId = iattr->ia_gid;
|
||||
+ attrV2->groupId = attrGid;
|
||||
*changed = TRUE;
|
||||
}
|
||||
|
||||
@@ -591,13 +601,13 @@ HgfsPackSetattrRequest(struct iattr *iattr, // IN: Inode attrs to update from
|
||||
|
||||
if (valid & ATTR_UID) {
|
||||
attrV2->mask |= HGFS_ATTR_VALID_USERID;
|
||||
- attrV2->userId = iattr->ia_uid;
|
||||
+ attrV2->userId = attrUid;
|
||||
*changed = TRUE;
|
||||
}
|
||||
|
||||
if (valid & ATTR_GID) {
|
||||
attrV2->mask |= HGFS_ATTR_VALID_GROUPID;
|
||||
- attrV2->groupId = iattr->ia_gid;
|
||||
+ attrV2->groupId = attrGid;
|
||||
*changed = TRUE;
|
||||
}
|
||||
|
||||
diff --git a/open-vm-tools/modules/linux/vmhgfs/module.h b/open-vm-tools/modules/linux/vmhgfs/module.h
|
||||
index 3e0973b..b6bcd1e 100644
|
||||
--- a/open-vm-tools/modules/linux/vmhgfs/module.h
|
||||
+++ b/open-vm-tools/modules/linux/vmhgfs/module.h
|
||||
@@ -74,6 +74,16 @@ extern int LOGLEVEL_THRESHOLD;
|
||||
* Macros for accessing members that are private to this code in
|
||||
* sb/inode/file structs.
|
||||
*/
|
||||
+
|
||||
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 5, 0)
|
||||
+typedef uid_t kuid_t;
|
||||
+typedef gid_t kgid_t;
|
||||
+#define from_kuid(_ns, _kuid) (_kuid)
|
||||
+#define from_kgid(_ns, _kgid) (_kgid)
|
||||
+#define make_kuid(_ns, _uid) (_uid)
|
||||
+#define make_kgid(_ns, _gid) (_gid)
|
||||
+#endif
|
||||
+
|
||||
#define HGFS_SET_SB_TO_COMMON(sb, common) do { (sb)->s_fs_info = (common); } while (0)
|
||||
#define HGFS_SB_TO_COMMON(sb) ((HgfsSuperInfo *)(sb)->s_fs_info)
|
||||
|
||||
@@ -110,9 +120,9 @@ extern int LOGLEVEL_THRESHOLD;
|
||||
|
||||
/* Data kept in each superblock in sb->u. */
|
||||
typedef struct HgfsSuperInfo {
|
||||
- uid_t uid; /* UID of user who mounted this fs. */
|
||||
+ kuid_t uid; /* UID of user who mounted this fs. */
|
||||
+ kgid_t gid; /* GID of user who mounted this fs. */
|
||||
Bool uidSet; /* Was the UID specified at mount-time? */
|
||||
- gid_t gid; /* GID of user who mounted this fs. */
|
||||
Bool gidSet; /* Was the GID specified at mount-time? */
|
||||
mode_t fmask; /* File permission mask. */
|
||||
mode_t dmask; /* Directory permission mask. */
|
||||
--
|
||||
2.0.1
|
||||
|
53
0004-Use-new-link-helpers.patch
Normal file
53
0004-Use-new-link-helpers.patch
Normal file
@ -0,0 +1,53 @@
|
||||
From 20437d731289126ee5363a6f73e4171d39f2e3d9 Mon Sep 17 00:00:00 2001
|
||||
From: "Scott M. Kroll" <skroll@gmail.com>
|
||||
Date: Mon, 14 Jul 2014 11:32:35 -0400
|
||||
Subject: [PATCH 4/5] Use new link helpers
|
||||
|
||||
* vfs_follow_link was removed in 3.12.
|
||||
* vfs_readlink was removed in 3.15.
|
||||
---
|
||||
open-vm-tools/modules/linux/vmhgfs/link.c | 15 +++++++++++++++
|
||||
1 file changed, 15 insertions(+)
|
||||
|
||||
diff --git a/open-vm-tools/modules/linux/vmhgfs/link.c b/open-vm-tools/modules/linux/vmhgfs/link.c
|
||||
index 9fb95a5..06ea953 100644
|
||||
--- a/open-vm-tools/modules/linux/vmhgfs/link.c
|
||||
+++ b/open-vm-tools/modules/linux/vmhgfs/link.c
|
||||
@@ -110,9 +110,15 @@ HgfsFollowlink(struct dentry *dentry, // IN: Dentry containing link
|
||||
"on something that wasn't a symlink\n"));
|
||||
error = -EINVAL;
|
||||
} else {
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 12, 0)
|
||||
+ LOG(6, (KERN_DEBUG "VMware hgfs: HgfsFollowlink: calling "
|
||||
+ "nd_set_link\n"));
|
||||
+ nd_set_link(nd, fileName);
|
||||
+#else
|
||||
LOG(6, (KERN_DEBUG "VMware hgfs: HgfsFollowlink: calling "
|
||||
"vfs_follow_link\n"));
|
||||
error = vfs_follow_link(nd, fileName);
|
||||
+#endif
|
||||
}
|
||||
kfree(fileName);
|
||||
}
|
||||
@@ -172,9 +178,18 @@ HgfsReadlink(struct dentry *dentry, // IN: Dentry containing link
|
||||
"on something that wasn't a symlink\n"));
|
||||
error = -EINVAL;
|
||||
} else {
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0)
|
||||
+ LOG(6, (KERN_DEBUG "VMware hgfs: HgfsReadlink: calling "
|
||||
+ "readlink_copy\n"));
|
||||
+ LOG(6, (KERN_DEBUG "VMware hgfs: %s: calling "
|
||||
+ "readlink_copy\n",
|
||||
+ __func__));
|
||||
+ error = readlink_copy(buffer, buflen, fileName);
|
||||
+#else
|
||||
LOG(6, (KERN_DEBUG "VMware hgfs: HgfsReadlink: calling "
|
||||
"vfs_readlink\n"));
|
||||
error = vfs_readlink(dentry, buffer, buflen, fileName);
|
||||
+#endif
|
||||
}
|
||||
kfree(fileName);
|
||||
}
|
||||
--
|
||||
2.0.1
|
||||
|
2688
0005-Update-hgfs-file-operations-for-newer-kernels.patch
Normal file
2688
0005-Update-hgfs-file-operations-for-newer-kernels.patch
Normal file
File diff suppressed because it is too large
Load Diff
74
0006-Fix-vmxnet-module-on-kernels-3.16.patch
Normal file
74
0006-Fix-vmxnet-module-on-kernels-3.16.patch
Normal file
@ -0,0 +1,74 @@
|
||||
From 4601d767d60e9a377c285994266c6fef49cae550 Mon Sep 17 00:00:00 2001
|
||||
From: "Scott M. Kroll" <skroll@gmail.com>
|
||||
Date: Fri, 15 Aug 2014 10:40:38 -0400
|
||||
Subject: [PATCH 10/11] Fix vmxnet module on kernels >= 3.16
|
||||
|
||||
* Add compat check for ethtool_ops in net_device struct.
|
||||
* SET_ETHTOOL_OPS is no longer defined, but can be manually.
|
||||
---
|
||||
open-vm-tools/modules/linux/shared/compat_netdevice.h | 4 ++++
|
||||
open-vm-tools/modules/linux/vmxnet/vmxnet.c | 13 ++++++++-----
|
||||
2 files changed, 12 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/open-vm-tools/modules/linux/shared/compat_netdevice.h b/open-vm-tools/modules/linux/shared/compat_netdevice.h
|
||||
index 3aec25b..a65d59b 100644
|
||||
--- a/open-vm-tools/modules/linux/shared/compat_netdevice.h
|
||||
+++ b/open-vm-tools/modules/linux/shared/compat_netdevice.h
|
||||
@@ -337,4 +337,8 @@ typedef netdev_features_t compat_netdev_features_t;
|
||||
typedef u32 compat_netdev_features_t;
|
||||
#endif
|
||||
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 16, 0) || defined(SET_ETHTOOL_OPS)
|
||||
+#define VMW_HAVE_ETHTOOL_OPS 1
|
||||
+#endif
|
||||
+
|
||||
#endif /* __COMPAT_NETDEVICE_H__ */
|
||||
diff --git a/open-vm-tools/modules/linux/vmxnet/vmxnet.c b/open-vm-tools/modules/linux/vmxnet/vmxnet.c
|
||||
index 54b4590..7fb5692 100644
|
||||
--- a/open-vm-tools/modules/linux/vmxnet/vmxnet.c
|
||||
+++ b/open-vm-tools/modules/linux/vmxnet/vmxnet.c
|
||||
@@ -283,8 +283,7 @@ vmxnet_change_mtu(struct net_device *dev, int new_mtu)
|
||||
|
||||
#endif
|
||||
|
||||
-
|
||||
-#ifdef SET_ETHTOOL_OPS
|
||||
+#ifdef VMW_HAVE_ETHTOOL_OPS
|
||||
/*
|
||||
*----------------------------------------------------------------------------
|
||||
*
|
||||
@@ -530,7 +529,7 @@ vmxnet_ethtool_ops = {
|
||||
};
|
||||
|
||||
|
||||
-#else /* !defined(SET_ETHTOOL_OPS) */
|
||||
+#else /* !defined(VMW_HAVE_ETHTOOL_OPS) */
|
||||
|
||||
|
||||
/*
|
||||
@@ -743,7 +742,7 @@ vmxnet_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
|
||||
}
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
-#endif /* SET_ETHTOOL_OPS */
|
||||
+#endif /* !defined(VMW_HAVE_ETHTOOL_OPS) */
|
||||
|
||||
|
||||
/*
|
||||
@@ -1142,8 +1141,12 @@ vmxnet_probe_device(struct pci_dev *pdev, // IN: vmxnet PCI device
|
||||
dev->watchdog_timeo = VMXNET_WATCHDOG_TIMEOUT;
|
||||
#endif
|
||||
|
||||
-#ifdef SET_ETHTOOL_OPS
|
||||
+#ifdef VMW_HAVE_ETHTOOL_OPS
|
||||
+# ifdef SET_ETHTOOL_OPS
|
||||
SET_ETHTOOL_OPS(dev, &vmxnet_ethtool_ops);
|
||||
+# else
|
||||
+ dev->ethtool_ops = &vmxnet_ethtool_ops;
|
||||
+# endif
|
||||
#else
|
||||
dev->do_ioctl = vmxnet_ioctl;
|
||||
#endif
|
||||
--
|
||||
2.0.4
|
||||
|
75
0007-Fix-vmhgfs-module-on-kernels-3.16.patch
Normal file
75
0007-Fix-vmhgfs-module-on-kernels-3.16.patch
Normal file
@ -0,0 +1,75 @@
|
||||
From 6497dbbabb9506df8e16b60bf2cd396a8c6bb26b Mon Sep 17 00:00:00 2001
|
||||
From: "Scott M. Kroll" <skroll@gmail.com>
|
||||
Date: Fri, 15 Aug 2014 10:42:30 -0400
|
||||
Subject: [PATCH 11/11] Fix vmhgfs module on kernels >= 3.16
|
||||
|
||||
* Use read_iter/write_iter file operations on kernels >= 3.16.
|
||||
* Do not set aio_read/aio_write on kernels >= 3.16.
|
||||
---
|
||||
open-vm-tools/modules/linux/vmhgfs/file.c | 16 ++++++++++++----
|
||||
1 file changed, 12 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/open-vm-tools/modules/linux/vmhgfs/file.c b/open-vm-tools/modules/linux/vmhgfs/file.c
|
||||
index 825cebe..67606fd 100644
|
||||
--- a/open-vm-tools/modules/linux/vmhgfs/file.c
|
||||
+++ b/open-vm-tools/modules/linux/vmhgfs/file.c
|
||||
@@ -76,6 +76,7 @@ static int HgfsGetOpenFlags(uint32 flags);
|
||||
static int HgfsOpen(struct inode *inode,
|
||||
struct file *file);
|
||||
#if defined VMW_USE_AIO
|
||||
+# if LINUX_VERSION_CODE < KERNEL_VERSION(3, 16, 0)
|
||||
static ssize_t HgfsAioRead(struct kiocb *iocb,
|
||||
const struct iovec *iov,
|
||||
unsigned long numSegs,
|
||||
@@ -84,6 +85,7 @@ static ssize_t HgfsAioWrite(struct kiocb *iocb,
|
||||
const struct iovec *iov,
|
||||
unsigned long numSegs,
|
||||
loff_t offset);
|
||||
+# endif
|
||||
#else
|
||||
static ssize_t HgfsRead(struct file *file,
|
||||
char __user *buf,
|
||||
@@ -150,15 +152,20 @@ struct file_operations HgfsFileFileOperations = {
|
||||
.open = HgfsOpen,
|
||||
.llseek = HgfsSeek,
|
||||
.flush = HgfsFlush,
|
||||
-#if defined VMW_USE_AIO
|
||||
+#ifdef VMW_USE_AIO
|
||||
.read = do_sync_read,
|
||||
.write = do_sync_write,
|
||||
+# if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 16, 0)
|
||||
+ .read_iter = generic_file_read_iter,
|
||||
+ .write_iter = generic_file_write_iter,
|
||||
+# else
|
||||
.aio_read = HgfsAioRead,
|
||||
.aio_write = HgfsAioWrite,
|
||||
-#else
|
||||
+# endif
|
||||
+#else /* !VMW_USE_AIO */
|
||||
.read = HgfsRead,
|
||||
.write = HgfsWrite,
|
||||
-#endif
|
||||
+#endif /* !VMW_USE_AIO */
|
||||
.fsync = HgfsFsync,
|
||||
.mmap = HgfsMmap,
|
||||
.release = HgfsRelease,
|
||||
@@ -748,6 +755,7 @@ out:
|
||||
|
||||
|
||||
#if defined VMW_USE_AIO
|
||||
+# if LINUX_VERSION_CODE < KERNEL_VERSION(3, 16, 0)
|
||||
/*
|
||||
*----------------------------------------------------------------------
|
||||
*
|
||||
@@ -883,7 +891,7 @@ out:
|
||||
return result;
|
||||
}
|
||||
|
||||
-
|
||||
+# endif /* if LINUX_VERSION_CODE < KERNEL_VERSION(3, 16, 0) */
|
||||
#else
|
||||
/*
|
||||
*----------------------------------------------------------------------
|
||||
--
|
||||
2.0.4
|
||||
|
110
0008-Fix-segfault-in-vmhgfs.patch
Normal file
110
0008-Fix-segfault-in-vmhgfs.patch
Normal file
@ -0,0 +1,110 @@
|
||||
From e75a7401a72607476f7a248f5a7fe4f11d6d129d Mon Sep 17 00:00:00 2001
|
||||
From: "Scott M. Kroll" <skroll@gmail.com>
|
||||
Date: Fri, 15 Aug 2014 11:11:12 -0400
|
||||
Subject: [PATCH 12/12] Fix segfault in vmhgfs
|
||||
|
||||
* Need to use sync read/write but also set the read_iter/write_iter
|
||||
operations.
|
||||
---
|
||||
open-vm-tools/modules/linux/shared/compat_fs.h | 3 ++-
|
||||
open-vm-tools/modules/linux/vmhgfs/file.c | 23 ++++++++++++-----------
|
||||
2 files changed, 14 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/open-vm-tools/modules/linux/shared/compat_fs.h b/open-vm-tools/modules/linux/shared/compat_fs.h
|
||||
index f762f6f..eb53ee7 100644
|
||||
--- a/open-vm-tools/modules/linux/shared/compat_fs.h
|
||||
+++ b/open-vm-tools/modules/linux/shared/compat_fs.h
|
||||
@@ -89,7 +89,8 @@
|
||||
* changed over time, so for simplicity, we'll only enable it from 2.6.19 and
|
||||
* on.
|
||||
*/
|
||||
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 19)
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 19) && \
|
||||
+ LINUX_VERSION_CODE < KERNEL_VERSION(3, 16, 0)
|
||||
# define VMW_USE_AIO
|
||||
#endif
|
||||
|
||||
diff --git a/open-vm-tools/modules/linux/vmhgfs/file.c b/open-vm-tools/modules/linux/vmhgfs/file.c
|
||||
index 67606fd..fcf0681 100644
|
||||
--- a/open-vm-tools/modules/linux/vmhgfs/file.c
|
||||
+++ b/open-vm-tools/modules/linux/vmhgfs/file.c
|
||||
@@ -76,7 +76,6 @@ static int HgfsGetOpenFlags(uint32 flags);
|
||||
static int HgfsOpen(struct inode *inode,
|
||||
struct file *file);
|
||||
#if defined VMW_USE_AIO
|
||||
-# if LINUX_VERSION_CODE < KERNEL_VERSION(3, 16, 0)
|
||||
static ssize_t HgfsAioRead(struct kiocb *iocb,
|
||||
const struct iovec *iov,
|
||||
unsigned long numSegs,
|
||||
@@ -85,7 +84,6 @@ static ssize_t HgfsAioWrite(struct kiocb *iocb,
|
||||
const struct iovec *iov,
|
||||
unsigned long numSegs,
|
||||
loff_t offset);
|
||||
-# endif
|
||||
#else
|
||||
static ssize_t HgfsRead(struct file *file,
|
||||
char __user *buf,
|
||||
@@ -155,14 +153,13 @@ struct file_operations HgfsFileFileOperations = {
|
||||
#ifdef VMW_USE_AIO
|
||||
.read = do_sync_read,
|
||||
.write = do_sync_write,
|
||||
-# if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 16, 0)
|
||||
- .read_iter = generic_file_read_iter,
|
||||
- .write_iter = generic_file_write_iter,
|
||||
-# else
|
||||
.aio_read = HgfsAioRead,
|
||||
.aio_write = HgfsAioWrite,
|
||||
-# endif
|
||||
#else /* !VMW_USE_AIO */
|
||||
+# if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 16, 0)
|
||||
+ .read_iter = generic_file_read_iter,
|
||||
+ .write_iter = generic_file_write_iter,
|
||||
+# endif
|
||||
.read = HgfsRead,
|
||||
.write = HgfsWrite,
|
||||
#endif /* !VMW_USE_AIO */
|
||||
@@ -755,7 +752,6 @@ out:
|
||||
|
||||
|
||||
#if defined VMW_USE_AIO
|
||||
-# if LINUX_VERSION_CODE < KERNEL_VERSION(3, 16, 0)
|
||||
/*
|
||||
*----------------------------------------------------------------------
|
||||
*
|
||||
@@ -890,8 +886,6 @@ out:
|
||||
spin_unlock(&writeDentry->d_inode->i_lock);
|
||||
return result;
|
||||
}
|
||||
-
|
||||
-# endif /* if LINUX_VERSION_CODE < KERNEL_VERSION(3, 16, 0) */
|
||||
#else
|
||||
/*
|
||||
*----------------------------------------------------------------------
|
||||
@@ -933,8 +927,11 @@ HgfsRead(struct file *file, // IN: File to read from
|
||||
LOG(4, (KERN_DEBUG "VMware hgfs: HgfsRead: invalid dentry\n"));
|
||||
goto out;
|
||||
}
|
||||
-
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 16, 0)
|
||||
+ result = new_sync_read(file, buf, count, offset);
|
||||
+#else
|
||||
result = generic_file_read(file, buf, count, offset);
|
||||
+#endif
|
||||
out:
|
||||
return result;
|
||||
}
|
||||
@@ -985,7 +982,11 @@ HgfsWrite(struct file *file, // IN: File to write to
|
||||
goto out;
|
||||
}
|
||||
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 16, 0)
|
||||
+ result = new_sync_write(file, buf, count, offset);
|
||||
+#else
|
||||
result = generic_file_write(file, buf, count, offset);
|
||||
+#endif
|
||||
out:
|
||||
return result;
|
||||
}
|
||||
--
|
||||
2.0.4
|
||||
|
@ -1,14 +0,0 @@
|
||||
diff -uNr open-vm-tools-9.4.0-1280544.orig/lib/include/vmware/tools/log.h open-vm-tools-9.4.0-1280544/lib/include/vmware/tools/log.h
|
||||
--- open-vm-tools-9.4.0-1280544.orig/lib/include/vmware/tools/log.h 2013-09-23 19:51:10.000000000 +0400
|
||||
+++ open-vm-tools-9.4.0-1280544/lib/include/vmware/tools/log.h 2014-02-18 10:56:50.368604176 +0400
|
||||
@@ -134,7 +134,9 @@
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
-#define g_info(fmt, ...) g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO, fmt, ## __VA_ARGS__)
|
||||
+#if !defined(g_info)
|
||||
+# define g_info(fmt, ...) g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO, fmt, ## __VA_ARGS__)
|
||||
+#endif
|
||||
|
||||
|
||||
/*
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:5d30652eb0f6dc5e930781029c184837e700be5543b6a7116db4c62a6f3ca399
|
||||
size 3659504
|
3
open-vm-tools-9.4.6-1770165.tar.gz
Normal file
3
open-vm-tools-9.4.6-1770165.tar.gz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:54d7a83d8115124e4b809098b08d7017ba50828801c2f105cdadbc85a064a079
|
||||
size 2434586
|
1007
open-vm-tools-KMP.changes
Normal file
1007
open-vm-tools-KMP.changes
Normal file
File diff suppressed because it is too large
Load Diff
517
open-vm-tools-KMP.spec
Normal file
517
open-vm-tools-KMP.spec
Normal file
@ -0,0 +1,517 @@
|
||||
#
|
||||
# spec file for package open-vm-tools-KMP
|
||||
#
|
||||
# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||
# Copyright (c) 2010 Dominique Leuenberger, Amsterdam, Netherlands.
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
# upon. The license for this file, and modifications and additions to the
|
||||
# file, is the same license as for the pristine package itself (unless the
|
||||
# license for the pristine package is not an Open Source License, in which
|
||||
# case the license is the MIT License). An "Open Source License" is a
|
||||
# license that conforms to the Open Source Definition (Version 1.9)
|
||||
# published by the Open Source Initiative.
|
||||
|
||||
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
||||
#
|
||||
|
||||
|
||||
%define with_systemd 1
|
||||
%define KMP 1
|
||||
|
||||
# The vmhgfs modules is used with all versions
|
||||
%define vmhgfs vmhgfs
|
||||
|
||||
# disable systemd if before 13.1
|
||||
%if 0%{suse_version} < 1310
|
||||
%define with_systemd 0
|
||||
%endif
|
||||
|
||||
# exclude AMD PCnet32 LANCE pci.id from Supplements list [bnc#397554]
|
||||
%define __find_supplements sh -c '/usr/lib/rpm/find-supplements %{name} | grep -v pci:v00001022d00002000'
|
||||
|
||||
%if 0%{?suse_version} <= 1230
|
||||
# Modules to be built up to openSUSE 12.3, possibly not building on newer versions.
|
||||
%define vm_modules1230 vmci vsock
|
||||
%endif
|
||||
|
||||
%if 0%{?suse_version} <= 1220
|
||||
# Modules to be built up to openSUSE 12.1, possibly not building on newer versions.
|
||||
%define vm_modules1220 vmsync
|
||||
%endif
|
||||
|
||||
%if 0%{?suse_version} <= 1210
|
||||
# Modules to be built up to openSUSE 12.1, possibly not building on newer versions.
|
||||
%define vm_modules1210 vmxnet
|
||||
%endif
|
||||
|
||||
# Modules that have to be build up to version 12.3 (Last checked on 2012-02-05 with kernel 3.2.0)
|
||||
%define vm_modules %{?vm_modules1230} %{?vmhgfs} %{?vm_modules1210} %{?vm_modules1220}
|
||||
|
||||
# X modules are lower prio upstream and once in a while fail. Offer an easy way to enable/disable them.
|
||||
%define with_X 1
|
||||
|
||||
Name: open-vm-tools-KMP
|
||||
%define tarname open-vm-tools
|
||||
Version: 9.4.6
|
||||
Release: 0
|
||||
%define svn_rev 1770165
|
||||
Summary: Open Virtual Machine Tools
|
||||
License: BSD-3-Clause and GPL-2.0 and LGPL-2.1
|
||||
Group: System/Emulators/PC
|
||||
Url: http://open-vm-tools.sourceforge.net/
|
||||
Source: http://sourceforge.net/projects/open-vm-tools/files/open-vm-tools/stable-9.4.x/%{tarname}-%{version}-%{svn_rev}.tar.gz
|
||||
Source1: vmtoolsd
|
||||
Source2: vmtoolsd.service
|
||||
Source3: vmware-user-autostart.desktop
|
||||
Source5: vmware-user-autostart-wrapper
|
||||
Source6: open-vm-tools-modprobe.conf
|
||||
Source7: tools.conf
|
||||
Source98: preamble
|
||||
Patch1: 0001-Remove-unused-DEPRECATED-macro.patch
|
||||
Patch2: 0002-Conditionally-define-g_info-macro.patch
|
||||
Patch3: 0003-Add-kuid_t-kgid_t-compatibility-layer.patch
|
||||
Patch4: 0004-Use-new-link-helpers.patch
|
||||
Patch5: 0005-Update-hgfs-file-operations-for-newer-kernels.patch
|
||||
Patch6: 0006-Fix-vmxnet-module-on-kernels-3.16.patch
|
||||
Patch7: 0007-Fix-vmhgfs-module-on-kernels-3.16.patch
|
||||
Patch8: 0008-Fix-segfault-in-vmhgfs.patch
|
||||
Patch10: open-vm-tools-linux-3.17.patch
|
||||
Patch11: open-vm-tools-linux-3.17.7.patch
|
||||
Patch12: open-vm-tools-linux-3.18.0.patch
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||
BuildRequires: gcc-c++
|
||||
# don't use pkgconfig(gtk+-2.0) so we can build on SLE
|
||||
BuildRequires: gtk2-devel
|
||||
BuildRequires: gtkmm2-devel
|
||||
# Only require kernel packages if kernel modules are being built
|
||||
%if "%{?vm_modules}" != " " && %{KMP}
|
||||
BuildRequires: kernel-source
|
||||
BuildRequires: kernel-syms
|
||||
BuildRequires: module-init-tools
|
||||
%else
|
||||
BuildRequires: autoconf
|
||||
BuildRequires: automake
|
||||
BuildRequires: doxygen
|
||||
BuildRequires: libdnet-devel
|
||||
BuildRequires: libicu-devel
|
||||
BuildRequires: libtool
|
||||
BuildRequires: pam-devel
|
||||
BuildRequires: pcre-devel
|
||||
BuildRequires: update-desktop-files
|
||||
BuildRequires: xorg-x11-devel
|
||||
BuildRequires: pkgconfig(fuse)
|
||||
# libprocps is required with 12.3 and above
|
||||
%if 0%{?suse_version} >= 1230
|
||||
BuildRequires: procps-devel
|
||||
%endif
|
||||
%if "%{?vmhgfs}"
|
||||
# Fuse is optional and enables vmblock-fuse
|
||||
BuildRequires: fuse-devel
|
||||
%endif
|
||||
%endif
|
||||
Requires: net-tools
|
||||
Requires: tar
|
||||
%if 0%{?suse_version} >= 1310
|
||||
Requires: which
|
||||
%endif
|
||||
%if 0%{?suse_version} < 1310
|
||||
Requires: vmware-guest-kmp
|
||||
%endif
|
||||
Supplements: modalias(pci:v000015ADd*sv*sd*bc*sc*i*)
|
||||
Requires(pre): %fillup_prereq
|
||||
Requires(pre): %insserv_prereq
|
||||
ExclusiveArch: %ix86 x86_64
|
||||
|
||||
%if %{KMP}
|
||||
%suse_kernel_module_package -n vmware-guest -p %{SOURCE98} xen um
|
||||
%endif
|
||||
|
||||
%if %{with_systemd}
|
||||
%systemd_requires
|
||||
%endif
|
||||
|
||||
%description
|
||||
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. As virtualization technology rapidly
|
||||
becomes mainstream, each virtualization solution provider implements
|
||||
their own set of tools and utilities to supplement the guest virtual
|
||||
machine. However, most of the implementations are proprietary and are
|
||||
tied to a specific virtualization platform.
|
||||
|
||||
With the Open Virtual Machine Tools project, we are hoping to solve
|
||||
this and other related problems. The tools are currently composed of
|
||||
kernel modules for Linux and user-space programs for all VMware
|
||||
supported Unix-like guest operating systems. They provide several
|
||||
useful functions like:
|
||||
|
||||
* File transfer between a host and guest
|
||||
|
||||
* Improved memory management and network performance under
|
||||
virtualization
|
||||
|
||||
* General mechanisms and protocols for communication between host and
|
||||
guests and from guest to guest
|
||||
|
||||
%package -n vmware-guest-KMP
|
||||
Summary: Open Virtual Machine Tools - for VM GUESTS
|
||||
Group: System/Emulators/PC
|
||||
|
||||
%description -n vmware-guest-KMP
|
||||
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. As virtualization technology rapidly
|
||||
becomes mainstream, each virtualization solution provider implements
|
||||
their own set of tools and utilities to supplement the guest virtual
|
||||
machine. However, most of the implementations are proprietary and are
|
||||
tied to a specific virtualization platform.
|
||||
|
||||
With the Open Virtual Machine Tools project, we are hoping to solve
|
||||
this and other related problems. The tools are currently composed of
|
||||
kernel modules for Linux and user-space programs for all VMware
|
||||
supported Unix-like guest operating systems. They provide several
|
||||
useful functions like:
|
||||
|
||||
* File transfer between a host and guest
|
||||
|
||||
* Improved memory management and network performance under
|
||||
virtualization
|
||||
|
||||
* General mechanisms and protocols for communication between host and
|
||||
guests and from guest to guest
|
||||
|
||||
%if %{with_X}
|
||||
|
||||
%package desktop
|
||||
Summary: User experience components for Open Virtual Machine Tools
|
||||
Group: System/Emulators/PC
|
||||
Requires: %{name}%{?_isa} = %{version}-%{release}
|
||||
Obsoletes: %{name}-gui < %{version}
|
||||
Provides: %{name}-gui = %{version}
|
||||
Supplements: packageand(open-vm-tools:xorg-x11-server)
|
||||
Requires(pre): permissions
|
||||
|
||||
%description desktop
|
||||
This package contains only the user-space programs and libraries of
|
||||
%{name} that are essential for improved user experience of VMware virtual
|
||||
machines.
|
||||
%endif
|
||||
|
||||
%package -n libvmtools0
|
||||
Summary: Open Virtual Machine Tools - shared library
|
||||
Group: System/Libraries
|
||||
|
||||
%description -n libvmtools0
|
||||
This is a shared library used by several Open VM Tools components,
|
||||
such as vmware-toolbox-cmd and vmtoolsd (and its plugins).
|
||||
|
||||
%package -n libvmtools-devel
|
||||
Summary: Open Virtual Machine Tools - Development headers
|
||||
Group: Development
|
||||
Requires: libvmtools0 = %{version}
|
||||
|
||||
%description -n libvmtools-devel
|
||||
Those are the development headers for libvmtools. They are needed
|
||||
if you intend to create own plugins for vmtoolsd.
|
||||
|
||||
%prep
|
||||
%setup -q -n %{tarname}-%{version}-%{svn_rev}
|
||||
chmod -x AUTHORS COPYING ChangeLog NEWS README
|
||||
# fix for an rpmlint warning regarding wrong line feeds
|
||||
sed -i -e "s/\r//" README
|
||||
%patch1 -p2
|
||||
%patch2 -p2
|
||||
%patch3 -p2
|
||||
%patch4 -p2
|
||||
%patch5 -p2
|
||||
%patch6 -p2
|
||||
%patch7 -p2
|
||||
%patch8 -p2
|
||||
%patch10 -p1
|
||||
%patch11 -p1
|
||||
%patch12 -p1
|
||||
|
||||
%build
|
||||
%if ! %{KMP}
|
||||
# disable warning unused-but-set-variable which will raise error because of -Werror
|
||||
# disable warning deprecated-declarations which will raise error because of -Werror
|
||||
# disable warning sizeof-pointer-memaccess which will raise error because of -Werror
|
||||
# (this is because of 'g_static_mutex_init' usage which is now deprecated)
|
||||
%if 0%{?suse_version} > 1110
|
||||
export CFLAGS="%{optflags} -Wno-unused-local-typedefs -Wno-unused-but-set-variable -Wno-deprecated-declarations -Wno-sizeof-pointer-memaccess -Wno-cpp -fPIE"
|
||||
export CXXFLAGS="%{optflags} -Wno-unused-local-typedefs -Wno-unused-but-set-variable -Wno-deprecated-declarations -Wno-sizeof-pointer-memaccess -Wno-cpp -fPIE"
|
||||
%else
|
||||
export CFLAGS="%{optflags} -Wno-deprecated-declarations -fPIE"
|
||||
export CXXFLAGS="%{optflags} -Wno-deprecated-declarations -fPIE"
|
||||
%endif
|
||||
export LDFLAGS="-pie"
|
||||
# Required for version 9.4.0
|
||||
export CUSTOM_PROCPS_NAME=procps
|
||||
autoreconf -fi
|
||||
echo 'HTML_TIMESTAMP=NO' >> docs/api/doxygen.conf
|
||||
%configure \
|
||||
--without-kernel-modules \
|
||||
--without-root-privileges \
|
||||
%if 0%{?suse_version} < 1230
|
||||
--without-procps \
|
||||
%endif
|
||||
%if %{with_X}
|
||||
--with-x \
|
||||
%else
|
||||
--without-x \
|
||||
%endif
|
||||
--disable-dependency-tracking \
|
||||
--disable-static
|
||||
make
|
||||
%endif
|
||||
|
||||
# If a KMP is not being built, flavors_to_build will be undefined and no modules should be built
|
||||
%if "%{?flavors_to_build}"
|
||||
TOPDIR=$PWD
|
||||
cd ..
|
||||
mkdir -p obj
|
||||
for flavor in %{flavors_to_build}; do
|
||||
rm -rf obj/$flavor
|
||||
cp -r %{tarname}-%{version}-%{svn_rev} obj/$flavor
|
||||
pushd obj/$flavor
|
||||
for module in %{vm_modules}; do
|
||||
pushd modules/linux/$module
|
||||
if [ -f ../vmci/Module.symvers ]; then
|
||||
cp ../vmci/Module.symvers .
|
||||
fi
|
||||
make -C /usr/src/linux-obj/%{_target_cpu}/$flavor modules M=$PWD VM_CCVER=$(gcc -dumpversion) HEADER_DIR="/usr/src/linux-obj/$(uname -i)/default/include" SRCROOT=$PWD OVT_SOURCE_DIR=$TOPDIR
|
||||
popd
|
||||
done
|
||||
popd
|
||||
done
|
||||
%endif
|
||||
|
||||
%install
|
||||
# If a KMP is not being built, flavors_to_build will be undefined and no modules can be installed
|
||||
%if "%{?flavors_to_build}"
|
||||
# let's use the kernel's own modules_install routine
|
||||
export INSTALL_MOD_PATH=%{buildroot}
|
||||
export INSTALL_MOD_DIR=updates
|
||||
pushd ..
|
||||
for flavor in %{flavors_to_build}; do
|
||||
pushd obj/$flavor
|
||||
for module in %{vm_modules}; do
|
||||
make -C /usr/src/linux-obj/%_target_cpu/$flavor modules_install M=$PWD/modules/linux/$module
|
||||
done
|
||||
popd
|
||||
done
|
||||
popd
|
||||
|
||||
# fix some rights on the kernel modules, to have a complete -debuginfo package; do not fail if there are no modules left.
|
||||
chmod u+x %{buildroot}/lib/modules/*/updates/* || :
|
||||
%endif
|
||||
|
||||
%if ! %{KMP}
|
||||
%if 0%{?suse_version} > 1110
|
||||
%make_install
|
||||
%else
|
||||
%makeinstall
|
||||
%endif
|
||||
|
||||
# Remove exec bit from config files
|
||||
chmod a-x %{buildroot}%{_sysconfdir}/pam.d/*
|
||||
|
||||
# Remove unnecessary files from packaging
|
||||
find %{buildroot}%{_libdir} -name '*.la' -delete
|
||||
rm -fr %{buildroot}%{_defaultdocdir}
|
||||
rm -fr %{buildroot}/usr/share/doc/open-vm-tools/api
|
||||
rm -f docs/api/build/html/FreeSans.ttf
|
||||
|
||||
# Move vm-support to /usr/bin (bnc#874931)
|
||||
mv %{buildroot}%{_sysconfdir}/vmware-tools/vm-support %{buildroot}%{_bindir}
|
||||
|
||||
# install systemd/sysvinit init scripts and symlinks
|
||||
%if %{with_systemd}
|
||||
install -p -m 644 -D %{SOURCE2} %{buildroot}%{_unitdir}/vmtoolsd.service
|
||||
ln -sf service %{buildroot}%{_sbindir}/rcvmtoolsd
|
||||
%else
|
||||
install -D -m 0755 %{SOURCE1} %{buildroot}%{_sysconfdir}/init.d/vmtoolsd
|
||||
ln -sf ../../etc/init.d/vmtoolsd %{buildroot}%{_sbindir}/rcvmtoolsd
|
||||
%endif
|
||||
|
||||
%if %{with_X}
|
||||
# vmware-user is started by vmware-user-suid-wrapper by xdg-autostart
|
||||
# unfortunately, vmware-user-suid-wrapper does not wait for it's block device
|
||||
# to appear. For this reason we have now a vmware-user-autostart-wrapper
|
||||
# which checks for /proc/fs/vmblock/dev to appear and then starts vmware-user-suid-wrapper
|
||||
install -D -m 0755 %{SOURCE5} %{buildroot}%{_bindir}/vmware-user-autostart-wrapper
|
||||
install -D -m 0644 %{SOURCE3} %{buildroot}%{_sysconfdir}/xdg/autostart/vmware-user-autostart.desktop
|
||||
|
||||
# Install the default tools.conf
|
||||
install -D -m 0644 %{S:7} %{buildroot}%{_sysconfdir}/vmware-tools/tools.conf
|
||||
# Remove the 'disable-perl-mon=1' setting if procps is available
|
||||
%if 0%{?suse_version} > 1220
|
||||
sed -i '/openSUSE/,+2d' %{buildroot}%{_sysconfdir}/vmware-tools/tools.conf
|
||||
%endif
|
||||
|
||||
# We have our own 'safe' autostart wrapper, which checks for modules to start in autologin mode...
|
||||
# Thus we drop the 'original' autostartup
|
||||
rm %{buildroot}%{_sysconfdir}/xdg/autostart/vmware-user.desktop
|
||||
|
||||
# handle the .destop files for translations
|
||||
%suse_update_desktop_file vmware-user-autostart
|
||||
%endif
|
||||
|
||||
# modprobe configuration for vmnics - only include if before SLE-12
|
||||
%if 0%{?suse_version} < 1315
|
||||
install -D -m 0644 %{SOURCE6} %{buildroot}%{_sysconfdir}/modprobe.d/50-vmnics.conf
|
||||
%endif
|
||||
|
||||
%if "%{?vmhgfs}"
|
||||
# fix a link pointing to the buildroot for mount.vmhgfs
|
||||
( cd %{buildroot}/sbin; rm mount.vmhgfs; ln -s ..%{_sbindir}/mount.vmhgfs )
|
||||
%else
|
||||
find %{buildroot} -name '*vmhgfs*' -delete -print
|
||||
%endif
|
||||
|
||||
%endif
|
||||
|
||||
%pre
|
||||
%if %{with_systemd}
|
||||
%service_add_pre vmtoolsd.service
|
||||
%endif
|
||||
|
||||
%post
|
||||
/sbin/ldconfig
|
||||
%if %{with_systemd}
|
||||
%service_add_post vmtoolsd.service
|
||||
%else
|
||||
%{fillup_and_insserv -Y vmtoolsd}
|
||||
%endif
|
||||
|
||||
%if %{with_X}
|
||||
|
||||
%verifyscript desktop
|
||||
%verify_permissions -e /usr/bin/vmware-user-suid-wrapper
|
||||
|
||||
%post desktop
|
||||
%if 0%{?suse_version} <= 1130
|
||||
%run_permissions
|
||||
%else
|
||||
%set_permissions /usr/bin/vmware-user-suid-wrapper
|
||||
%endif
|
||||
|
||||
%endif
|
||||
|
||||
%preun
|
||||
%if %{with_systemd}
|
||||
%service_del_preun vmtoolsd.service
|
||||
%else
|
||||
# stop service with the old name (if exists) on update (something like %%stop_on_update)
|
||||
test -n "$FIRST_ARG" || FIRST_ARG=$1
|
||||
if test "$FIRST_ARG" -ge 1 ; then
|
||||
test -f /etc/sysconfig/services && . /etc/sysconfig/services
|
||||
if test "$YAST_IS_RUNNING" != "instsys" ; then
|
||||
/etc/init.d/vmware-guestd stop > /dev/null 2>&1 || :
|
||||
fi
|
||||
fi
|
||||
%stop_on_removal vmtoolsd
|
||||
%endif
|
||||
# Tell VMware that open-vm-tools is being uninstalled
|
||||
if [ "$1" = "0" -a \
|
||||
-e %{_bindir}/vmware-checkvm -a \
|
||||
-e %{_bindir}/vmware-rpctool ] && \
|
||||
%{_bindir}/vmware-checkvm > /dev/null 2>&1; then
|
||||
%{_bindir}/vmware-rpctool 'tools.set.version 0' > /dev/null 2>&1 || true
|
||||
fi
|
||||
|
||||
%postun
|
||||
%if %{with_systemd}
|
||||
%service_del_postun vmtoolsd.service
|
||||
%else
|
||||
%restart_on_update vmtoolsd
|
||||
%insserv_cleanup
|
||||
%endif
|
||||
/sbin/ldconfig
|
||||
|
||||
%post -n libvmtools0 -p /sbin/ldconfig
|
||||
|
||||
%postun -n libvmtools0 -p /sbin/ldconfig
|
||||
|
||||
%clean
|
||||
rm -rf %{buildroot}
|
||||
|
||||
%if ! %{KMP}
|
||||
%files
|
||||
%defattr(-, root, root)
|
||||
%doc AUTHORS COPYING ChangeLog NEWS README
|
||||
%{_bindir}/vmtoolsd
|
||||
%dir %{_libdir}/%{name}
|
||||
%dir %{_libdir}/%{name}/plugins
|
||||
%dir %{_libdir}/%{name}/plugins/common
|
||||
%dir %{_libdir}/%{name}/plugins/vmsvc
|
||||
%{_libdir}/%{name}/plugins/vmsvc/libguestInfo.so
|
||||
%{_libdir}/%{name}/plugins/vmsvc/libpowerOps.so
|
||||
%{_libdir}/%{name}/plugins/vmsvc/libtimeSync.so
|
||||
%{_libdir}/%{name}/plugins/vmsvc/libvmbackup.so
|
||||
%{_libdir}/%{name}/plugins/common/libhgfsServer.so
|
||||
%{_libdir}/%{name}/plugins/common/libvix.so
|
||||
%{_bindir}/vmware-checkvm
|
||||
%{_bindir}/vmware-hgfsclient
|
||||
%{_bindir}/vmware-rpctool
|
||||
%{_bindir}/vmware-toolbox-cmd
|
||||
%{_bindir}/vmware-xferlogs
|
||||
%{_bindir}/vm-support
|
||||
%if "%{?vmhgfs}"
|
||||
%{_sbindir}/mount.vmhgfs
|
||||
/sbin/mount.vmhgfs
|
||||
%endif
|
||||
%config(noreplace) %{_sysconfdir}/pam.d/vmtoolsd
|
||||
%dir %{_sysconfdir}/vmware-tools
|
||||
%dir %{_sysconfdir}/vmware-tools/scripts
|
||||
%dir %{_sysconfdir}/vmware-tools/scripts/vmware
|
||||
%{_sysconfdir}/vmware-tools/poweroff-vm-default
|
||||
%{_sysconfdir}/vmware-tools/poweron-vm-default
|
||||
%{_sysconfdir}/vmware-tools/resume-vm-default
|
||||
%{_sysconfdir}/vmware-tools/scripts/vmware/network
|
||||
%{_sysconfdir}/vmware-tools/statechange.subr
|
||||
%{_sysconfdir}/vmware-tools/suspend-vm-default
|
||||
%config(noreplace) %{_sysconfdir}/vmware-tools/tools.conf
|
||||
%if 0%{?suse_version} < 1315
|
||||
%dir %{_sysconfdir}/modprobe.d
|
||||
%config %{_sysconfdir}/modprobe.d/50-vmnics.conf
|
||||
%endif
|
||||
%{_datadir}/%{name}/
|
||||
%if %{with_systemd}
|
||||
%{_unitdir}/vmtoolsd.service
|
||||
%else
|
||||
%{_sysconfdir}/init.d/vmtoolsd
|
||||
%endif
|
||||
%{_sbindir}/rcvmtoolsd
|
||||
%exclude %{_libdir}/*.so
|
||||
|
||||
%if %{with_X}
|
||||
|
||||
%files desktop
|
||||
%defattr(-, root, root)
|
||||
%{_sysconfdir}/xdg/autostart/vmware-user-autostart.desktop
|
||||
%verify(not mode) %attr(0755, root, root) %{_bindir}/vmware-user-suid-wrapper
|
||||
%{_libdir}/%{name}/plugins/vmusr/
|
||||
%{_bindir}/vmware-user-autostart-wrapper
|
||||
%{_bindir}/vmware-vmblock-fuse
|
||||
%endif
|
||||
|
||||
%files -n libvmtools0
|
||||
%defattr(-, root, root)
|
||||
%{_libdir}/libvmtools.so.*
|
||||
%{_libdir}/libguestlib.so.*
|
||||
%{_libdir}/libhgfs.so.*
|
||||
|
||||
%files -n libvmtools-devel
|
||||
%defattr(-,root,root)
|
||||
%doc docs/api/build/*
|
||||
%{_includedir}/vmGuestLib
|
||||
%{_libdir}/*.so
|
||||
%{_libdir}/pkgconfig/vmguestlib.pc
|
||||
%endif
|
||||
|
||||
%changelog
|
17
open-vm-tools-linux-3.17.7.patch
Normal file
17
open-vm-tools-linux-3.17.7.patch
Normal file
@ -0,0 +1,17 @@
|
||||
Index: open-vm-tools-9.4.6-1770165/modules/linux/vmhgfs/inode.c
|
||||
===================================================================
|
||||
--- open-vm-tools-9.4.6-1770165.orig/modules/linux/vmhgfs/inode.c
|
||||
+++ open-vm-tools-9.4.6-1770165/modules/linux/vmhgfs/inode.c
|
||||
@@ -1900,7 +1900,11 @@ HgfsPermission(struct inode *inode,
|
||||
p,
|
||||
#endif
|
||||
&inode->i_dentry,
|
||||
- d_alias) {
|
||||
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 7)
|
||||
+ d_alias) {
|
||||
+#else
|
||||
+ d_u.d_alias) {
|
||||
+#endif
|
||||
int dcount = compat_d_count(dentry);
|
||||
if (dcount) {
|
||||
LOG(4, ("Found %s %d \n", dentry->d_name.name, dcount));
|
14
open-vm-tools-linux-3.17.patch
Normal file
14
open-vm-tools-linux-3.17.patch
Normal file
@ -0,0 +1,14 @@
|
||||
Index: open-vm-tools-9.4.6-1770165/modules/linux/vmhgfs/page.c
|
||||
===================================================================
|
||||
--- open-vm-tools-9.4.6-1770165.orig/modules/linux/vmhgfs/page.c
|
||||
+++ open-vm-tools-9.4.6-1770165/modules/linux/vmhgfs/page.c
|
||||
@@ -1385,7 +1385,9 @@ HgfsWbRequestWait(HgfsWbPage *req) // I
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13)
|
||||
return wait_on_bit(&req->wb_flags,
|
||||
PG_BUSY,
|
||||
+# if LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0)
|
||||
HgfsWbRequestWaitUninterruptible,
|
||||
+# endif
|
||||
TASK_UNINTERRUPTIBLE);
|
||||
#else
|
||||
wait_event(req->wb_queue,
|
23
open-vm-tools-linux-3.18.0.patch
Normal file
23
open-vm-tools-linux-3.18.0.patch
Normal file
@ -0,0 +1,23 @@
|
||||
Index: open-vm-tools-9.4.6-1770165/modules/linux/vmhgfs/page.c
|
||||
===================================================================
|
||||
--- open-vm-tools-9.4.6-1770165.orig/modules/linux/vmhgfs/page.c
|
||||
+++ open-vm-tools-9.4.6-1770165/modules/linux/vmhgfs/page.c
|
||||
@@ -1444,9 +1444,18 @@ HgfsWbRequestUnlock(HgfsWbPage *req) //
|
||||
LOG(6, (KERN_WARNING "VMware Hgfs: HgfsWbRequestUnlock: Invalid unlock attempted\n"));
|
||||
return;
|
||||
}
|
||||
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 18, 0)
|
||||
smp_mb__before_clear_bit();
|
||||
+#else
|
||||
+ smp_mb__before_atomic();
|
||||
+#endif
|
||||
clear_bit(PG_BUSY, &req->wb_flags);
|
||||
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 18, 0)
|
||||
smp_mb__after_clear_bit();
|
||||
+#else
|
||||
+ smp_mb__after_atomic();
|
||||
+#endif
|
||||
+
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13)
|
||||
wake_up_bit(&req->wb_flags, PG_BUSY);
|
||||
#else
|
@ -1,3 +1,70 @@
|
||||
-------------------------------------------------------------------
|
||||
Mon Jan 5 10:07:50 UTC 2015 - dimstar@opensuse.org
|
||||
|
||||
- Add open-vm-tools-linux-3.17.7.patch: Fix building of vmhgfs with
|
||||
Kernel 3.17.7+.
|
||||
- Add open-vm-tools-linux-3.18.0.patch: Fix building of vmhgfs with
|
||||
Kernel 3.18.0+.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Jan 5 08:42:04 UTC 2015 - dimstar@opensuse.org
|
||||
|
||||
- Split building of KMPs into own spec file: open-vm-tools-KMP:
|
||||
the resulting KMP packages keep their existing name, as this is
|
||||
handled through the kernel_package macros. This split allows to
|
||||
work around boo#905420.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sat Nov 29 19:40:00 UTC 2014 - Led <ledest@gmail.com>
|
||||
|
||||
- fix bashisms in vmware-user-autostart-wrapper script
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Nov 12 10:04:48 UTC 2014 - dimstar@opensuse.org
|
||||
|
||||
- Add open-vm-tools-linux-3.17.patch: Fix build with Linux 3.17.0.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Nov 10 16:01:56 UTC 2014 - dimstar@opensuse.org
|
||||
|
||||
- Sync up patches with ArchLinux:
|
||||
+ Added 0001-Remove-unused-DEPRECATED-macro.patch
|
||||
+ Added 0002-Conditionally-define-g_info-macro.patch
|
||||
+ Added 0003-Add-kuid_t-kgid_t-compatibility-layer.patch
|
||||
+ Added 0004-Use-new-link-helpers.patch
|
||||
+ Added 0005-Update-hgfs-file-operations-for-newer-kernels.patch
|
||||
+ Added 0006-Fix-vmxnet-module-on-kernels-3.16.patch
|
||||
+ Added 0007-Fix-vmhgfs-module-on-kernels-3.16.patch
|
||||
+ Added 0008-Fix-segfault-in-vmhgfs.patch
|
||||
+ Droped g_info_redefine.patch (now named
|
||||
0002-Conditionally-define-g_info-macro.patch).
|
||||
- Enable building of KMP packages.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Nov 10 01:03:00 UTC 2014 - Led <ledest@gmail.com>
|
||||
|
||||
- Fix bashisms in preun script.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Oct 31 00:34:20 UTC 2014 - crrodriguez@opensuse.org
|
||||
|
||||
- Do not generate timestamps in the doxygen docs.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Oct 20 15:35:41 UTC 2014 - dimstar@opensuse.org
|
||||
|
||||
- Add -Wno-cpp to CFLAGS.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Oct 6 22:25:36 UTC 2014 - boris@steki.net
|
||||
|
||||
- Updated to latest release 9.4.6-1770165
|
||||
+ Release matching the vSphere 5.5p02 release
|
||||
- "which" as separate package does not exist on older opensuse versions
|
||||
so removed from Requires for older distributions
|
||||
- used autoreconf as source package does not provide configure script anymore
|
||||
- removed vmsync module from OS12.3 build target as it does not compile
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri May 16 16:57:16 UTC 2014 - mlatimer@suse.com
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# spec file for package open-vm-tools
|
||||
#
|
||||
# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||
# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||
# Copyright (c) 2010 Dominique Leuenberger, Amsterdam, Netherlands.
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
@ -18,11 +18,10 @@
|
||||
|
||||
|
||||
%define with_systemd 1
|
||||
%define KMP 0
|
||||
|
||||
# vmhgfs modules does not build on kernel 3.11
|
||||
%if 0%{suse_version} < 1310
|
||||
# The vmhgfs modules is used with all versions
|
||||
%define vmhgfs vmhgfs
|
||||
%endif
|
||||
|
||||
# disable systemd if before 13.1
|
||||
%if 0%{suse_version} < 1310
|
||||
@ -32,31 +31,37 @@
|
||||
# exclude AMD PCnet32 LANCE pci.id from Supplements list [bnc#397554]
|
||||
%define __find_supplements sh -c '/usr/lib/rpm/find-supplements %{name} | grep -v pci:v00001022d00002000'
|
||||
|
||||
%if 0%{?suse_version} <= 1230
|
||||
# Modules to be built up to openSUSE 12.3, possibly not building on newer versions.
|
||||
%define vm_modules1230 vmci vsock
|
||||
%endif
|
||||
|
||||
%if 0%{?suse_version} <= 1220
|
||||
# Modules to be built up to openSUSE 12.1, possibly not building on newer versions.
|
||||
%define vm_modules1220 vmsync
|
||||
%endif
|
||||
|
||||
%if 0%{?suse_version} <= 1210
|
||||
# Modules to be built up to openSUSE 12.1, possibly not building on newer versions.
|
||||
%define vm_modules1210 vmxnet
|
||||
%endif
|
||||
|
||||
%if 0%{?suse_version} <= 1230
|
||||
# Modules to be built up to openSUSE 12.3, possibly not building on newer versions.
|
||||
%define vm_modules1230 vmci vsock vmsync
|
||||
%endif
|
||||
|
||||
# Modules that have to be build up to version 12.3 (Last checked on 2012-02-05 with kernel 3.2.0)
|
||||
%define vm_modules %{?vm_modules1230} %{?vmhgfs} %{?vm_modules1210}
|
||||
%define vm_modules %{?vm_modules1230} %{?vmhgfs} %{?vm_modules1210} %{?vm_modules1220}
|
||||
|
||||
# X modules are lower prio upstream and once in a while fail. Offer an easy way to enable/disable them.
|
||||
%define with_X 1
|
||||
|
||||
Name: open-vm-tools
|
||||
Version: 9.4.0
|
||||
%define tarname open-vm-tools
|
||||
Version: 9.4.6
|
||||
Release: 0
|
||||
%define svn_rev 1280544
|
||||
%define svn_rev 1770165
|
||||
Summary: Open Virtual Machine Tools
|
||||
License: BSD-3-Clause and GPL-2.0 and LGPL-2.1
|
||||
Group: System/Emulators/PC
|
||||
Url: http://open-vm-tools.sourceforge.net/
|
||||
Source: http://sourceforge.net/projects/open-vm-tools/files/open-vm-tools/stable-9.4.x/%{name}-%{version}-%{svn_rev}.tar.gz
|
||||
Source: http://sourceforge.net/projects/open-vm-tools/files/open-vm-tools/stable-9.4.x/%{tarname}-%{version}-%{svn_rev}.tar.gz
|
||||
Source1: vmtoolsd
|
||||
Source2: vmtoolsd.service
|
||||
Source3: vmware-user-autostart.desktop
|
||||
@ -64,22 +69,34 @@ Source5: vmware-user-autostart-wrapper
|
||||
Source6: open-vm-tools-modprobe.conf
|
||||
Source7: tools.conf
|
||||
Source98: preamble
|
||||
# PATCH-FIX-UPSTREAM g_info_redefine.patch (RHBZ#1063847)
|
||||
Patch0: g_info_redefine.patch
|
||||
Patch1: 0001-Remove-unused-DEPRECATED-macro.patch
|
||||
Patch2: 0002-Conditionally-define-g_info-macro.patch
|
||||
Patch3: 0003-Add-kuid_t-kgid_t-compatibility-layer.patch
|
||||
Patch4: 0004-Use-new-link-helpers.patch
|
||||
Patch5: 0005-Update-hgfs-file-operations-for-newer-kernels.patch
|
||||
Patch6: 0006-Fix-vmxnet-module-on-kernels-3.16.patch
|
||||
Patch7: 0007-Fix-vmhgfs-module-on-kernels-3.16.patch
|
||||
Patch8: 0008-Fix-segfault-in-vmhgfs.patch
|
||||
Patch10: open-vm-tools-linux-3.17.patch
|
||||
Patch11: open-vm-tools-linux-3.17.7.patch
|
||||
Patch12: open-vm-tools-linux-3.18.0.patch
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||
BuildRequires: gcc-c++
|
||||
# don't use pkgconfig(gtk+-2.0) so we can build on SLE
|
||||
BuildRequires: gtk2-devel
|
||||
BuildRequires: gtkmm2-devel
|
||||
# Only require kernel packages if kernel modules are being built
|
||||
%if "%{?vm_modules}" != " "
|
||||
%if "%{?vm_modules}" != " " && %{KMP}
|
||||
BuildRequires: kernel-source
|
||||
BuildRequires: kernel-syms
|
||||
%endif
|
||||
BuildRequires: module-init-tools
|
||||
%else
|
||||
BuildRequires: autoconf
|
||||
BuildRequires: automake
|
||||
BuildRequires: doxygen
|
||||
BuildRequires: libdnet-devel
|
||||
BuildRequires: libicu-devel
|
||||
BuildRequires: module-init-tools
|
||||
BuildRequires: libtool
|
||||
BuildRequires: pam-devel
|
||||
BuildRequires: pcre-devel
|
||||
BuildRequires: update-desktop-files
|
||||
@ -93,20 +110,21 @@ BuildRequires: procps-devel
|
||||
# Fuse is optional and enables vmblock-fuse
|
||||
BuildRequires: fuse-devel
|
||||
%endif
|
||||
%endif
|
||||
Requires: net-tools
|
||||
Requires: tar
|
||||
%if 0%{?suse_version} >= 1310
|
||||
Requires: which
|
||||
%endif
|
||||
%if 0%{?suse_version} < 1310
|
||||
Requires: vmware-guest-kmp
|
||||
%endif
|
||||
Supplements: modalias(pci:v000015ADd*sv*sd*bc*sc*i*)
|
||||
Requires(pre): %fillup_prereq
|
||||
Requires(pre): %insserv_prereq
|
||||
Requires(pre): permissions
|
||||
ExclusiveArch: %ix86 x86_64
|
||||
|
||||
# Only build KMP on versions below 13.1
|
||||
%if 0%{?suse_version} < 1310
|
||||
%if %{KMP}
|
||||
%suse_kernel_module_package -n vmware-guest -p %{SOURCE98} xen um
|
||||
%endif
|
||||
|
||||
@ -201,19 +219,31 @@ Those are the development headers for libvmtools. They are needed
|
||||
if you intend to create own plugins for vmtoolsd.
|
||||
|
||||
%prep
|
||||
%setup -q -n %{name}-%{version}-%{svn_rev}
|
||||
%setup -q -n %{tarname}-%{version}-%{svn_rev}
|
||||
chmod -x AUTHORS COPYING ChangeLog NEWS README
|
||||
# fix for an rpmlint warning regarding wrong line feeds
|
||||
sed -i -e "s/\r//" README
|
||||
%patch0 -p1 -b .g_info
|
||||
%patch1 -p2
|
||||
%patch2 -p2
|
||||
%patch3 -p2
|
||||
%patch4 -p2
|
||||
%patch5 -p2
|
||||
%patch6 -p2
|
||||
%patch7 -p2
|
||||
%patch8 -p2
|
||||
%patch10 -p1
|
||||
%patch11 -p1
|
||||
%patch12 -p1
|
||||
|
||||
%build
|
||||
%if ! %{KMP}
|
||||
# disable warning unused-but-set-variable which will raise error because of -Werror
|
||||
# disable warning deprecated-declarations which will raise error because of -Werror
|
||||
# disable warning sizeof-pointer-memaccess which will raise error because of -Werror
|
||||
# (this is because of 'g_static_mutex_init' usage which is now deprecated)
|
||||
%if 0%{?suse_version} > 1110
|
||||
export CFLAGS="%{optflags} -Wno-unused-local-typedefs -Wno-unused-but-set-variable -Wno-deprecated-declarations -fPIE"
|
||||
export CXXFLAGS="%{optflags} -Wno-unused-local-typedefs -Wno-unused-but-set-variable -Wno-deprecated-declarations -fPIE"
|
||||
export CFLAGS="%{optflags} -Wno-unused-local-typedefs -Wno-unused-but-set-variable -Wno-deprecated-declarations -Wno-sizeof-pointer-memaccess -Wno-cpp -fPIE"
|
||||
export CXXFLAGS="%{optflags} -Wno-unused-local-typedefs -Wno-unused-but-set-variable -Wno-deprecated-declarations -Wno-sizeof-pointer-memaccess -Wno-cpp -fPIE"
|
||||
%else
|
||||
export CFLAGS="%{optflags} -Wno-deprecated-declarations -fPIE"
|
||||
export CXXFLAGS="%{optflags} -Wno-deprecated-declarations -fPIE"
|
||||
@ -221,6 +251,8 @@ export CXXFLAGS="%{optflags} -Wno-deprecated-declarations -fPIE"
|
||||
export LDFLAGS="-pie"
|
||||
# Required for version 9.4.0
|
||||
export CUSTOM_PROCPS_NAME=procps
|
||||
autoreconf -fi
|
||||
echo 'HTML_TIMESTAMP=NO' >> docs/api/doxygen.conf
|
||||
%configure \
|
||||
--without-kernel-modules \
|
||||
--without-root-privileges \
|
||||
@ -235,6 +267,7 @@ export CUSTOM_PROCPS_NAME=procps
|
||||
--disable-dependency-tracking \
|
||||
--disable-static
|
||||
make
|
||||
%endif
|
||||
|
||||
# If a KMP is not being built, flavors_to_build will be undefined and no modules should be built
|
||||
%if "%{?flavors_to_build}"
|
||||
@ -243,7 +276,7 @@ cd ..
|
||||
mkdir -p obj
|
||||
for flavor in %{flavors_to_build}; do
|
||||
rm -rf obj/$flavor
|
||||
cp -r %{name}-%{version}-%{svn_rev} obj/$flavor
|
||||
cp -r %{tarname}-%{version}-%{svn_rev} obj/$flavor
|
||||
pushd obj/$flavor
|
||||
for module in %{vm_modules}; do
|
||||
pushd modules/linux/$module
|
||||
@ -277,6 +310,7 @@ popd
|
||||
chmod u+x %{buildroot}/lib/modules/*/updates/* || :
|
||||
%endif
|
||||
|
||||
%if ! %{KMP}
|
||||
%if 0%{?suse_version} > 1110
|
||||
%make_install
|
||||
%else
|
||||
@ -339,17 +373,14 @@ install -D -m 0644 %{SOURCE6} %{buildroot}%{_sysconfdir}/modprobe.d/50-vmnics.co
|
||||
find %{buildroot} -name '*vmhgfs*' -delete -print
|
||||
%endif
|
||||
|
||||
%endif
|
||||
|
||||
%pre
|
||||
%if %{with_systemd}
|
||||
%service_add_pre vmtoolsd.service
|
||||
%endif
|
||||
|
||||
%post
|
||||
%if 0%{?suse_version} <= 1130
|
||||
%run_permissions
|
||||
%else
|
||||
%set_permissions /usr/bin/vmware-user-suid-wrapper
|
||||
%endif
|
||||
/sbin/ldconfig
|
||||
%if %{with_systemd}
|
||||
%service_add_post vmtoolsd.service
|
||||
@ -380,7 +411,7 @@ test -n "$FIRST_ARG" || FIRST_ARG=$1
|
||||
if test "$FIRST_ARG" -ge 1 ; then
|
||||
test -f /etc/sysconfig/services && . /etc/sysconfig/services
|
||||
if test "$YAST_IS_RUNNING" != "instsys" ; then
|
||||
/etc/init.d/vmware-guestd stop &> /dev/null || :
|
||||
/etc/init.d/vmware-guestd stop > /dev/null 2>&1 || :
|
||||
fi
|
||||
fi
|
||||
%stop_on_removal vmtoolsd
|
||||
@ -389,8 +420,8 @@ fi
|
||||
if [ "$1" = "0" -a \
|
||||
-e %{_bindir}/vmware-checkvm -a \
|
||||
-e %{_bindir}/vmware-rpctool ] && \
|
||||
%{_bindir}/vmware-checkvm &> /dev/null; then
|
||||
%{_bindir}/vmware-rpctool 'tools.set.version 0' &> /dev/null || /bin/true
|
||||
%{_bindir}/vmware-checkvm > /dev/null 2>&1; then
|
||||
%{_bindir}/vmware-rpctool 'tools.set.version 0' > /dev/null 2>&1 || true
|
||||
fi
|
||||
|
||||
%postun
|
||||
@ -409,6 +440,7 @@ fi
|
||||
%clean
|
||||
rm -rf %{buildroot}
|
||||
|
||||
%if ! %{KMP}
|
||||
%files
|
||||
%defattr(-, root, root)
|
||||
%doc AUTHORS COPYING ChangeLog NEWS README
|
||||
@ -445,6 +477,7 @@ rm -rf %{buildroot}
|
||||
%{_sysconfdir}/vmware-tools/suspend-vm-default
|
||||
%config(noreplace) %{_sysconfdir}/vmware-tools/tools.conf
|
||||
%if 0%{?suse_version} < 1315
|
||||
%dir %{_sysconfdir}/modprobe.d
|
||||
%config %{_sysconfdir}/modprobe.d/50-vmnics.conf
|
||||
%endif
|
||||
%{_datadir}/%{name}/
|
||||
@ -461,7 +494,7 @@ rm -rf %{buildroot}
|
||||
%files desktop
|
||||
%defattr(-, root, root)
|
||||
%{_sysconfdir}/xdg/autostart/vmware-user-autostart.desktop
|
||||
%verify(not mode) %attr(0755,root,root) %{_bindir}/vmware-user-suid-wrapper
|
||||
%verify(not mode) %attr(0755, root, root) %{_bindir}/vmware-user-suid-wrapper
|
||||
%{_libdir}/%{name}/plugins/vmusr/
|
||||
%{_bindir}/vmware-user-autostart-wrapper
|
||||
%{_bindir}/vmware-vmblock-fuse
|
||||
@ -479,5 +512,6 @@ rm -rf %{buildroot}
|
||||
%{_includedir}/vmGuestLib
|
||||
%{_libdir}/*.so
|
||||
%{_libdir}/pkgconfig/vmguestlib.pc
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
|
9
pre_checkin.sh
Normal file
9
pre_checkin.sh
Normal file
@ -0,0 +1,9 @@
|
||||
#!/bin/bash
|
||||
|
||||
NAME=open-vm-tools
|
||||
NAMEKMP=open-vm-tools-KMP
|
||||
|
||||
sed "s:%define.*KMP.*0:%define KMP 1:" ${NAME}.spec > ${NAMEKMP}.spec
|
||||
sed -i "s/\(Name:.*\)${NAME}/\1${NAMEKMP}/" ${NAMEKMP}.spec
|
||||
|
||||
cp ${NAME}.changes ${NAMEKMP}.changes
|
@ -6,7 +6,7 @@ SLEEP=1
|
||||
unset SESSION_MANAGER
|
||||
|
||||
# If running systemd, skip the delay loop as starting vmblock-fuse is not enforced
|
||||
if ! (file /sbin/init | grep "systemd" &>/dev/null); then
|
||||
if file /sbin/init | grep -qv "systemd"; then
|
||||
|
||||
while [ $RETRY -lt $MAX_RETRY ]; do
|
||||
|
||||
@ -15,8 +15,8 @@ if ! (file /sbin/init | grep "systemd" &>/dev/null); then
|
||||
else
|
||||
logger "Try $RETRY/$MAX_RETRY : /var/run/vmblock-fuse/dev not available. sleeping for $SLEEP seconds"
|
||||
sleep $SLEEP
|
||||
RETRY=$[ $RETRY + 1 ]
|
||||
SLEEP=$[ $SLEEP * 2 ]
|
||||
RETRY=$(($RETRY + 1))
|
||||
SLEEP=$(($SLEEP * 2))
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
Loading…
Reference in New Issue
Block a user