From e0062f011b52828097d1888d2c1a7878476ef9d6 Mon Sep 17 00:00:00 2001 From: Sergey Morozov Date: Sun, 18 Nov 2018 15:38:22 +0300 Subject: [PATCH] Upgrade app-emulation/vmware-workstation Added: app-emulation/vmware-workstation-15.0.1.10737736 app-emulation/vmware-modules-330.0.1 Removed: app-emulation/vmware-workstation-14.1.2.8497320-r3 app-emulation/vmware-modules-329.1.2.ebuild --- app-emulation/vmware-modules/Manifest | 8 +- ...ck-presence-of-file_operations-poll.patch} | 32 +- ...4.14-00-vsock-gcc-plugins-randstruct.patch | 84 ---- .../vmware-modules/files/329-vmblock.patch | 461 ------------------ .../vmware-modules/files/329-vmci.patch | 294 ----------- .../vmware-modules/files/329-vsock.patch | 266 ---------- ...2.ebuild => vmware-modules-330.0.1.ebuild} | 31 +- app-emulation/vmware-workstation/Manifest | 11 +- .../vmware-workstation/files/vmware-15.0.rc | 102 ++++ .../files/vmware-server-15.0.rc | 52 ++ ...vmware-workstation-15.0.1.10737736.ebuild} | 37 +- 11 files changed, 212 insertions(+), 1166 deletions(-) rename app-emulation/vmware-modules/files/{329-03-vmmon-compatibility-with-eventpoll-switch-to-poll_ma.patch => 329-03-vmmon-check-presence-of-file_operations-poll.patch} (63%) delete mode 100644 app-emulation/vmware-modules/files/329-4.14-00-vsock-gcc-plugins-randstruct.patch delete mode 100644 app-emulation/vmware-modules/files/329-vmblock.patch delete mode 100644 app-emulation/vmware-modules/files/329-vmci.patch delete mode 100644 app-emulation/vmware-modules/files/329-vsock.patch rename app-emulation/vmware-modules/{vmware-modules-329.1.2.ebuild => vmware-modules-330.0.1.ebuild} (63%) create mode 100644 app-emulation/vmware-workstation/files/vmware-15.0.rc create mode 100644 app-emulation/vmware-workstation/files/vmware-server-15.0.rc rename app-emulation/vmware-workstation/{vmware-workstation-14.1.2.8497320-r3.ebuild => vmware-workstation-15.0.1.10737736.ebuild} (93%) diff --git a/app-emulation/vmware-modules/Manifest b/app-emulation/vmware-modules/Manifest index edb2ea7..dcf7bd5 100644 --- a/app-emulation/vmware-modules/Manifest +++ b/app-emulation/vmware-modules/Manifest @@ -1,15 +1,11 @@ AUX 329-00-vmmon-quick-workaround-for-objtool-warnings.patch 1555 BLAKE2B dd4a58e78634aed9d5fb64bcb02b999d55be6b87e496c8daf640f7027aba3942f4e415125ba8fb847fa832336560d4bdbb0f539fefea3b4d2c175f2cbb33a9d7 SHA512 892bde81c721c18264e154cdfadd6b560af37260c9a457ec321fdf6bdf78b1704df57532b0919ed7dbc5c1036230b95f0cbacb7acbfd15da2145e3445da795f7 AUX 329-01-vmmon-fix-always_inline-attribute-usage.patch 1204 BLAKE2B faa201beb42ac4a04f660aa99d9cad76c12f47048b49f3c48f6932ec367ffebb9e94c5f06fd0957fb8451c183e6bf21954ce88c04910969f80370c2c85e1024b SHA512 b3ab5a62936bc1bed997f84401df998097062ca2b7425dcc2d01191c9b49ddafcee36e859b1bcd60de0d532c1c597aba2b406d6f90062674d5fe54c1534e3235 AUX 329-02-vmmon-fix-indirect-call-with-retpoline-build.patch 1829 BLAKE2B 6b2efbd868cd3ecf9bbd5e9781d9e85fa733b5919b66040e9c6cdf9f65bf5c5aabb43e52af9cd224481fc60943df546b2812ae17a65bbb476651ec399194ac4f SHA512 6ea044d1b9096b48fa3825f474a758aa67698753646e62dd83d427bfbf8ebd2168c9d0130a35b4ee81391c3ce4d4459cee39f0354469d0485d30118b50f3463c -AUX 329-03-vmmon-compatibility-with-eventpoll-switch-to-poll_ma.patch 2400 BLAKE2B c66c6e524166c030aef95024ed560bc1c1ecbfa0f7acaeb7d3e08371c9f6d37dca58539d58e1d2a1d1b815413cd5a0adea6afb62b52181cd93abfa89dcd88c68 SHA512 0c6e346fb92fa9039d0364eefda23f95d686c4b7a1efef7b406b229877210724e177a1f7c264c7fc6e8adc4c01eb349bf8c3d313bd0536d7ffe81078dd6df031 +AUX 329-03-vmmon-check-presence-of-file_operations-poll.patch 2755 BLAKE2B 9a03511a0068d76574ccc7f5dd32c016477a7ede3c319c31cc4212960258aa3ba28edde655101ee39e441322e5a13dce1d6360c22c21f1ead29666f821f0445f SHA512 7dd424858cff634987323052ed331652e6399911c0389c8077109a91407fd549a47ebb222ffc449d42f4f816a54d682778863fe3488dd47b3bfcbfef1064f876 AUX 329-4.09-00-vmnet-use-standard-definition-of-PCI_VENDOR_ID_VMWAR.patch 1169 BLAKE2B 4e5a74961ff512748375bd1d90a6670fc519c2c4c0be94f89d14fdf39e4922b057ae2baa38d07d34aca9ec897b012c4b9326dfd51a44235418919708b789895e SHA512 727fb97a63399d7c19238ae864a38cf2297adccb466fc2deba2a72f0592eb655f653d3c8e45dac06bbd0e09fc71a59a8bfea491b7580b37d41d0729f6adc023d AUX 329-4.10-00-vmnet-use-standard-definition-of-PCI_VENDOR_ID_VMWAR.patch 1131 BLAKE2B 1e07b4a15ff1180349348d84efb606c223f5cfa4accdcc0e1a41c8a0de52fb186bddd3c6cd3f5f48041c52ad2c29110726197f1d9352bd87caf4e646c4c4c001 SHA512 192d6a9a14757706f1c9345ff45592a559729619627a32c9f0a1d7203e60881312a4d0fc92ff750c8ff5b5350cf1a2b55238c16973e9c7eb4c2cfe2966abe7d1 AUX 329-4.12-00-vmmon-use-standard-definition-of-MSR_MISC_FEATURES_E.patch 1603 BLAKE2B 4eea61a743cb443e4a4c22a02a03410adbae66339ac7ed1c1aafe54e447135c1ed976ce3c97f22db9984926de9b9a09b1820e253978f457c0c2b9d22f8e4c59b SHA512 4413cd5e791dd19c4b47ba2178e386160912882b0e1a549151eafcceae484b5e48f527ee45b14584c98e06c11e28ee5bfef34b318e46b45704fbcf93a7b52b56 AUX 329-4.13-00-vmmon-use-standard-definition-of-CR3_PCID_MASK-if-av.patch 1167 BLAKE2B b5c1c4d98d2aed5bb473270ea9b5737da05bab45748aa84b0a83c26abf8d826960ff3251132ae2770bf87168bfb9c01ab7c81ec99036af576ca3fa0eb08b36e2 SHA512 1cf13f9c745bcfcf24ac1e8f762d057f1afde46ec1de4e651a07e63e08d9073eca9bdbaa53c5a1ced556ec83da3bfd80d3c65c979fb91566cf3c7ddae38eaeac -AUX 329-4.14-00-vsock-gcc-plugins-randstruct.patch 3477 BLAKE2B 9d454174bd3cf888d92a5644a2f8078f9368e5db0ee1c1f0ca7f43a897efa69d9d28c3cd89af3e38a790a23c442898364bc9d189f7920cf0dea54ca20af6ece4 SHA512 a3b68de2664807715dff9648744bd345cdf007a7c1d173fc5c1f410baa65e3a8ef3063543fd369e969a60d2f2ec9cda6127b22b09c5e17aefe288de104d58871 AUX 329-4.16-00-vmmon-use-standard-definition-of-MSR_K7_HWCR_SMMLOCK.patch 1097 BLAKE2B edf94d85be2caa69ca8b7856e636dd1fc41d60b43e56e08e913b9decca7f1f3a2a39d98681366a4c2f948a60acdce513f873b1c080d7329720abd0f235ee739a SHA512 f2e359183999f0396406724a8e0a80ceb3551772958a8a1e31eec0af8a746191bf5c7b7a5282d0f59d5a7cdd14744e1b775ad5af45bc5ee030434bcbb686d50c -AUX 329-vmblock.patch 15016 BLAKE2B 887159b5c526eea4fcc7d49664a4c7233ab9c73440bef9e8f4ceb2b9694a72cd9c4dcff131f9a74dabe5a0ec3a4e0437db405f6c74f9cfd49ef590b19a658ab8 SHA512 6cb922537009fe39e2e58e19ba9c8fda6a5ea484f3d28a94793de0fbd63d8d564822f2c83447d135f1c5e7f5da6734af218f86e31c20d322cbf00b675297c712 -AUX 329-vmci.patch 9474 BLAKE2B 9e833fcafc39c4279a9d86c96c0d4b012d6f653d42a76ba7d7d65355876da469c0dcb746a6eab4be795c5c29f1d11ace5cbf705e066d12fff20df758b8ade901 SHA512 b8b46a3df7ee2f906dd474add6c0ec3d76566f1c643278e3a7faeb68c829c78926351359bd78e12ad744bb946a31324ee347bb67413c4d670e7a091379160e2e -AUX 329-vsock.patch 10068 BLAKE2B d84f22a1623e2303c6aa2ea3624857fb2cf2dbb31b4747582285fc506ae208c1fb4b2a5925b02e6473b43ba178d871276584800d06cd2cdfb06273743814cc24 SHA512 73df6466b1df7be6ae40751596834d967b46d48218267afe5244abcdcacf5e263a78ed3bd3c4e6f2a5d81dd9c0c9e9042fc52fa9f1d4d000098ad20f19509001 -EBUILD vmware-modules-329.1.2.ebuild 3669 BLAKE2B 08c3d416e5eb5ce415e85cf6467f3846ec6506294677782c102f72dcb5bd928e62ace4733fda8041f1d12e27dfc130ea9ff6a7f3264d20b0bfe801e1d839bec2 SHA512 9317c9124ca131581fdb71351d5e4255fcf8989daa4199b19f56936d8bc75df8752990f8748d14238e671a534758b4b193ce4e32ee83c94ebd9d89532d6e8188 EBUILD vmware-modules-329.1.3.ebuild 3765 BLAKE2B dddfe3d1f5a9bcd1245ceea3333ea13c33ceb52471efef9853fe3af8d5686949be72a282120c3c53328486739b93c8c37eb6900defbec8ce26bb12c549d150e7 SHA512 449bd7875dd96babb22fcbbb0ea69b5be2193746e73d856fd86c19796af6988c590061114795b30b3ebe4f2dd5cb311cfbcbc9b70bf4812575b4b041fe4b31c3 +EBUILD vmware-modules-330.0.1.ebuild 3330 BLAKE2B f43fa5d255ab0349d874fb28074992032ded368c926f87aafafef423f84459cd550db92c588ca67ed2a0cc9db928c20c8fe8a254afbe316d07c08f59d67610bb SHA512 92d53fd22a40fb9520e52e0073e5e326aaa332797b06d8dcf19987444ba456bb06a8dc1fc4f0c70cb97fb13932db82db1cc0be5b1ad52bc727fce836df6de21a diff --git a/app-emulation/vmware-modules/files/329-03-vmmon-compatibility-with-eventpoll-switch-to-poll_ma.patch b/app-emulation/vmware-modules/files/329-03-vmmon-check-presence-of-file_operations-poll.patch similarity index 63% rename from app-emulation/vmware-modules/files/329-03-vmmon-compatibility-with-eventpoll-switch-to-poll_ma.patch rename to app-emulation/vmware-modules/files/329-03-vmmon-check-presence-of-file_operations-poll.patch index bf4a18e..d470aaf 100644 --- a/app-emulation/vmware-modules/files/329-03-vmmon-compatibility-with-eventpoll-switch-to-poll_ma.patch +++ b/app-emulation/vmware-modules/files/329-03-vmmon-check-presence-of-file_operations-poll.patch @@ -1,14 +1,22 @@ -From 3f2a6c720f68860e3482c81eb49737ad9a05606d Mon Sep 17 00:00:00 2001 +From 70ed9dd2ec64c09fbd0de27dcb10f9948a2b212a Mon Sep 17 00:00:00 2001 From: Michal Kubecek -Date: Sun, 17 Jun 2018 15:54:09 +0200 -Subject: [PATCH 4/4] vmmon: compatibility with eventpoll switch to poll_mask() +Date: Mon, 20 Aug 2018 07:46:13 +0200 +Subject: [PATCH] vmmon: check presence of file_operations::poll() -Since commit 11c5ad0ec441 ("eventpoll: switch to ->poll_mask") in -v4.18-rc1, eventpoll switched from ->poll() to ->poll_mask(). Rather than -calling the callback directly (which would result in null pointer -dereference), use vfs_poll() wrapper. As this wrapper is only available -since 4.18-rc1 cycle as well, provide a copy to use when building against -older kernels. +Commit 11c5ad0ec441 ("eventpoll: switch to ->poll_mask") in v4.18-rc1, made +eventpoll switch from ->poll() to ->poll_mask(), resulting in a null +pointer dereference as vmmon calls the callback directly without checking +its availability. + +Rather than calling the callback directly (which would result in null +pointer dereference), use vfs_poll() wrapper. As this wrapper is only +available since 4.18-rc1 cycle as well, provide a copy to use when building +against older kernels. + +Note: even if the commit revealing the problem was reverted in 4.18-rc3 +(and is unlikely to go back in the same form) so that vmmon no longer +crashes with 4.18 kernel, calling the callback without a check is a bad +practice so let's keep the patch in place. --- vmmon-only/include/compat_poll.h | 30 ++++++++++++++++++++++++++++++ vmmon-only/linux/hostif.c | 3 ++- @@ -52,7 +60,7 @@ index 0000000..562cdb6 + +#endif /* __COMPAT_POLL_H__ */ diff --git a/vmmon-only/linux/hostif.c b/vmmon-only/linux/hostif.c -index b793539..61d00df 100644 +index 21758c2..af4b1d9 100644 --- a/vmmon-only/linux/hostif.c +++ b/vmmon-only/linux/hostif.c @@ -74,6 +74,7 @@ @@ -63,7 +71,7 @@ index b793539..61d00df 100644 #if !defined(CONFIG_HIGH_RES_TIMERS) #error CONFIG_HIGH_RES_TIMERS required for acceptable performance -@@ -2373,7 +2374,7 @@ HostIF_SemaphoreWait(VMDriver *vm, // IN: +@@ -2570,7 +2571,7 @@ HostIF_SemaphoreWait(VMDriver *vm, // IN: poll_initwait(&table); current->state = TASK_INTERRUPTIBLE; @@ -73,5 +81,5 @@ index b793539..61d00df 100644 vm->vmhost->vcpuSemaTask[vcpuid] = current; schedule_timeout(timeoutms * HZ / 1000); // convert to Hz -- -2.18.0 +2.19.0 diff --git a/app-emulation/vmware-modules/files/329-4.14-00-vsock-gcc-plugins-randstruct.patch b/app-emulation/vmware-modules/files/329-4.14-00-vsock-gcc-plugins-randstruct.patch deleted file mode 100644 index 66ef8b9..0000000 --- a/app-emulation/vmware-modules/files/329-4.14-00-vsock-gcc-plugins-randstruct.patch +++ /dev/null @@ -1,84 +0,0 @@ ---- a/vsock-only/linux/notify.c 2017-10-03 06:52:10.953893050 +0300 -+++ b/vsock-only/linux/notify.c 2017-10-03 05:42:48.642701836 +0300 -@@ -1193,20 +1193,20 @@ VSockVmciNotifyPktProcessNegotiate(struc - - - /* Socket control packet based operations. */ --VSockVmciNotifyOps vSockVmciNotifyPktOps = { -- VSockVmciNotifyPktSocketInit, -- VSockVmciNotifyPktSocketDestruct, -- VSockVmciNotifyPktPollIn, -- VSockVmciNotifyPktPollOut, -- VSockVmciNotifyPktHandlePkt, -- VSockVmciNotifyPktRecvInit, -- VSockVmciNotifyPktRecvPreBlock, -- VSockVmciNotifyPktRecvPreDequeue, -- VSockVmciNotifyPktRecvPostDequeue, -- VSockVmciNotifyPktSendInit, -- VSockVmciNotifyPktSendPreBlock, -- VSockVmciNotifyPktSendPreEnqueue, -- VSockVmciNotifyPktSendPostEnqueue, -- VSockVmciNotifyPktProcessRequest, -- VSockVmciNotifyPktProcessNegotiate, -+VSockVmciNotifyOps vSockVmciNotifyPktOps __refdata = { -+ .socketInit = VSockVmciNotifyPktSocketInit, -+ .socketDestruct = VSockVmciNotifyPktSocketDestruct, -+ .pollIn = VSockVmciNotifyPktPollIn, -+ .pollOut = VSockVmciNotifyPktPollOut, -+ .handleNotifyPkt = VSockVmciNotifyPktHandlePkt, -+ .recvInit = VSockVmciNotifyPktRecvInit, -+ .recvPreBlock = VSockVmciNotifyPktRecvPreBlock, -+ .recvPreDequeue = VSockVmciNotifyPktRecvPreDequeue, -+ .recvPostDequeue = VSockVmciNotifyPktRecvPostDequeue, -+ .sendInit = VSockVmciNotifyPktSendInit, -+ .sendPreBlock = VSockVmciNotifyPktSendPreBlock, -+ .sendPreEnqueue = VSockVmciNotifyPktSendPreEnqueue, -+ .sendPostEnqueue = VSockVmciNotifyPktSendPostEnqueue, -+ .processRequest = VSockVmciNotifyPktProcessRequest, -+ .processNegotiate = VSockVmciNotifyPktProcessNegotiate, - }; -diff -urp a/vsock-only/linux/notifyQState.c b/vsock-only/linux/notifyQState.c ---- a/vsock-only/linux/notifyQState.c 2017-10-03 06:52:10.952893329 +0300 -+++ b/vsock-only/linux/notifyQState.c 2017-10-03 05:43:02.950697125 +0300 -@@ -771,21 +770,24 @@ VSockVmciNotifyPktProcessNegotiate(struc - } - - --/* Socket always on control packet based operations. */ --VSockVmciNotifyOps vSockVmciNotifyPktQStateOps = { -- VSockVmciNotifyPktSocketInit, -- VSockVmciNotifyPktSocketDestruct, -- VSockVmciNotifyPktPollIn, -- VSockVmciNotifyPktPollOut, -- VSockVmciNotifyPktHandlePkt, -- VSockVmciNotifyPktRecvInit, -- VSockVmciNotifyPktRecvPreBlock, -- NULL, /* recvPreDequeue */ -- VSockVmciNotifyPktRecvPostDequeue, -- VSockVmciNotifyPktSendInit, -- NULL, /* sendPreBlock */ -- NULL, /* sendPreEnqueue */ -- VSockVmciNotifyPktSendPostEnqueue, -- VSockVmciNotifyPktProcessRequest, -- VSockVmciNotifyPktProcessNegotiate, -+ -+ -+// Socket always on control packet based operations. -+VSockVmciNotifyOps vSockVmciNotifyPktQStateOps __refdata = { -+ .socketInit = VSockVmciNotifyPktSocketInit, -+ .socketDestruct = VSockVmciNotifyPktSocketDestruct, -+ .pollIn = VSockVmciNotifyPktPollIn, -+ .pollOut = VSockVmciNotifyPktPollOut, -+ .handleNotifyPkt = VSockVmciNotifyPktHandlePkt, -+ .recvInit = VSockVmciNotifyPktRecvInit, -+ .recvPreBlock = VSockVmciNotifyPktRecvPreBlock, -+ .recvPreDequeue = NULL, -+ .recvPostDequeue = VSockVmciNotifyPktRecvPostDequeue, -+ .sendInit = VSockVmciNotifyPktSendInit, -+ .sendPreBlock = NULL, -+ .sendPreEnqueue = NULL, -+ .sendPostEnqueue = VSockVmciNotifyPktSendPostEnqueue, -+ .processRequest = VSockVmciNotifyPktProcessRequest, -+ .processNegotiate = VSockVmciNotifyPktProcessNegotiate, -+ - }; diff --git a/app-emulation/vmware-modules/files/329-vmblock.patch b/app-emulation/vmware-modules/files/329-vmblock.patch deleted file mode 100644 index bddb978..0000000 --- a/app-emulation/vmware-modules/files/329-vmblock.patch +++ /dev/null @@ -1,461 +0,0 @@ -diff --git a/vmblock-only/Makefile b/vmblock-only/Makefile -index bbfe225..8ec1a86 100644 ---- a/vmblock-only/Makefile -+++ b/vmblock-only/Makefile -@@ -43,7 +43,11 @@ INCLUDE += -I$(SRCROOT)/shared - endif - - -+ifdef KVERSION -+VM_UNAME = $(KVERSION) -+else - VM_UNAME = $(shell uname -r) -+endif - - # Header directory for the running kernel - ifdef LINUXINCLUDE -diff --git a/vmblock-only/Makefile.kernel b/vmblock-only/Makefile.kernel -index ab7a727..e3ec9d2 100644 ---- a/vmblock-only/Makefile.kernel -+++ b/vmblock-only/Makefile.kernel -@@ -19,7 +19,7 @@ - - INCLUDE += -I$(SRCROOT)/include - --EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) -+EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) $(LINUXINCLUDE) - - EXTRA_CFLAGS += $(call vm_check_build, $(AUTOCONF_DIR)/cachecreate.c, -DVMW_KMEMCR_HAS_DTOR, ) - EXTRA_CFLAGS += $(call vm_check_build, $(AUTOCONF_DIR)/cachector.c, -DVMW_KMEMCR_CTOR_HAS_3_ARGS, ) -diff --git a/vmblock-only/linux/control.c b/vmblock-only/linux/control.c -index 79716bd..5b6acb2 100644 ---- a/vmblock-only/linux/control.c -+++ b/vmblock-only/linux/control.c -@@ -29,7 +29,7 @@ - #include - #include - --#include -+#include - - #include "vmblockInt.h" - #include "block.h" -@@ -208,9 +208,17 @@ SetupProcDevice(void) - VMBlockSetProcEntryOwner(controlProcMountpoint); - - /* Create /proc/fs/vmblock/dev */ -+ // create_proc_entry deprecated in 3.10 -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) -+ controlProcEntry = proc_create(VMBLOCK_CONTROL_DEVNAME, -+ VMBLOCK_CONTROL_MODE, -+ controlProcDirEntry, -+ &ControlFileOps); -+#else - controlProcEntry = create_proc_entry(VMBLOCK_CONTROL_DEVNAME, - VMBLOCK_CONTROL_MODE, - controlProcDirEntry); -+#endif - if (!controlProcEntry) { - Warning("SetupProcDevice: could not create " VMBLOCK_DEVICE "\n"); - remove_proc_entry(VMBLOCK_CONTROL_MOUNTPOINT, controlProcDirEntry); -@@ -218,7 +226,9 @@ SetupProcDevice(void) - return -EINVAL; - } - -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0) //Maybe 3.14? 3.13? - controlProcEntry->proc_fops = &ControlFileOps; -+#endif - return 0; - } - -@@ -272,17 +282,50 @@ CleanupProcDevice(void) - *---------------------------------------------------------------------------- - */ - -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 13, 0) -+/* copy-paste from Lustre FS by pavlinux */ -+static inline char *ll_getname(const char __user *filename) -+{ -+ int ret = 0, len; -+ char *tmp = __getname(); -+ -+ if (!tmp) -+ return ERR_PTR(-ENOMEM); -+ -+ len = strncpy_from_user(tmp, filename, PATH_MAX); -+ if (len == 0) -+ ret = -ENOENT; -+ else if (len > PATH_MAX) -+ ret = -ENAMETOOLONG; -+ -+ if (ret) { -+ __putname(tmp); -+ tmp = ERR_PTR(ret); -+ } -+ return tmp; -+}; -+#endif -+ - static int - ExecuteBlockOp(const char __user *buf, // IN: buffer with name - const os_blocker_id_t blocker, // IN: blocker ID (file) - int (*blockOp)(const char *filename, // IN: block operation - const os_blocker_id_t blocker)) - { -- char *name; -+ struct filename *fn = NULL; -+ char *name = (char *)fn->name; - int i; - int retval; - -- name = getname(buf); -+ // Not sure what changed in 3.13 to neccessitate this. -+ // Gentoo uses __getname(), though. -+ // https://github.com/gentoo/vmware/blob/master/app-emulation/vmware-modules/files/308-3.10-02-control.patch#L36 -+ // ~MK -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 13, 0) -+ name = (char *)getname(buf); -+#else -+ name = (char *)ll_getname(buf); -+#endif - if (IS_ERR(name)) { - return PTR_ERR(name); - } -@@ -293,7 +336,13 @@ ExecuteBlockOp(const char __user *buf, // IN: buffer with name - - retval = i < 0 ? -EINVAL : blockOp(name, blocker); - -- putname(name); -+ // I'm not sure what this does, but you seem to know what you're doing ~MK -+ if (fn->name != fn->iname) { /* add by pavlinux */ -+ __putname(fn->name); -+ kvfree(fn); -+ } else { -+ __putname(fn); -+ } - - return retval; - } -diff --git a/vmblock-only/linux/dentry.c b/vmblock-only/linux/dentry.c -index 05ea95a..1245358 100644 ---- a/vmblock-only/linux/dentry.c -+++ b/vmblock-only/linux/dentry.c -@@ -32,7 +32,13 @@ - #include "block.h" - - --static int DentryOpRevalidate(struct dentry *dentry, struct nameidata *nd); -+// From what I can tell, this should've always been an unsigned int? -+static int DentryOpRevalidate(struct dentry *dentry, -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0) // Maybe 3.14 or 3.13? -+ struct nameidata *nd); -+#else -+ unsigned int flags); -+#endif - - struct dentry_operations LinkDentryOps = { - .d_revalidate = DentryOpRevalidate, -@@ -60,7 +66,11 @@ struct dentry_operations LinkDentryOps = { - - static int - DentryOpRevalidate(struct dentry *dentry, // IN: dentry revalidating -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0) - struct nameidata *nd) // IN: lookup flags & intent -+#else -+ unsigned int flags) // IN: lookup flags & intent -+#endif - { - VMBlockInodeInfo *iinfo; - struct nameidata actualNd; -@@ -101,7 +111,11 @@ DentryOpRevalidate(struct dentry *dentry, // IN: dentry revalidating - if (actualDentry && - actualDentry->d_op && - actualDentry->d_op->d_revalidate) { -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 0) -+ return actualDentry->d_op->d_revalidate(actualDentry, flags); -+#else - return actualDentry->d_op->d_revalidate(actualDentry, nd); -+#endif - } - - if (compat_path_lookup(iinfo->name, 0, &actualNd)) { -diff --git a/vmblock-only/linux/file.c b/vmblock-only/linux/file.c -index d7ac1f6..c5e6604 100644 ---- a/vmblock-only/linux/file.c -+++ b/vmblock-only/linux/file.c -@@ -39,6 +39,7 @@ typedef ino_t inode_num_t; - #endif - - /* Specifically for our filldir_t callback */ -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,11,0) - typedef struct FilldirInfo { - filldir_t filldir; - void *dirent; -@@ -76,6 +77,7 @@ Filldir(void *buf, // IN: Dirent buffer passed from FileOpReaddir - /* Specify DT_LNK regardless */ - return info->filldir(info->dirent, name, namelen, offset, ino, DT_LNK); - } -+#endif - - - /* File operations */ -@@ -132,7 +134,12 @@ FileOpOpen(struct inode *inode, // IN - * and that would try to acquire the inode's semaphore; if the two inodes - * are the same we'll deadlock. - */ -+ // f_dentry is defined as f_path.dentry until 3.19 -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,19,0) - if (actualFile->f_dentry && inode == actualFile->f_dentry->d_inode) { -+#else -+ if (actualFile->f_path.dentry && inode == actualFile->f_path.dentry->d_inode) { -+#endif - Warning("FileOpOpen: identical inode encountered, open cannot succeed.\n"); - if (filp_close(actualFile, current->files) < 0) { - Warning("FileOpOpen: unable to close opened file.\n"); -@@ -164,13 +171,20 @@ FileOpOpen(struct inode *inode, // IN - *---------------------------------------------------------------------------- - */ - -+// pavlinux's patch completely removes this bit for kernels older than 3.13 - static int - FileOpReaddir(struct file *file, // IN -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,11,0) - void *dirent, // IN - filldir_t filldir) // IN -+#else -+ struct dir_context* ctx) //IN -+#endif - { - int ret; -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,11,0) - FilldirInfo info; -+#endif - struct file *actualFile; - - if (!file) { -@@ -184,12 +198,20 @@ FileOpReaddir(struct file *file, // IN - return -EINVAL; - } - -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,11,0) - info.filldir = filldir; - info.dirent = dirent; - - actualFile->f_pos = file->f_pos; - ret = vfs_readdir(actualFile, Filldir, &info); - file->f_pos = actualFile->f_pos; -+#else -+ /* Ricky Wong Yung Fei: -+ * Manipulation of pos is now handled internally by iterate_dir(). -+ */ -+ ret = iterate_dir(actualFile, ctx); -+ file->f_pos = actualFile->f_pos; -+#endif - - return ret; - } -@@ -236,8 +258,15 @@ FileOpRelease(struct inode *inode, // IN - } - - -+// pavlinux's patch drops FileOpReaddr for < 3.13 -+// pavlinux's patch sets .owner = THIS_MODULE and .llseek = no_llseek - struct file_operations RootFileOps = { -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,11,0) - .readdir = FileOpReaddir, -+#else -+ .iterate = FileOpReaddir, -+#endif -+ .owner = THIS_MODULE, - .open = FileOpOpen, - .release = FileOpRelease, - }; -diff --git a/vmblock-only/linux/inode.c b/vmblock-only/linux/inode.c -index 098c94c..7aed6e7 100644 ---- a/vmblock-only/linux/inode.c -+++ b/vmblock-only/linux/inode.c -@@ -28,20 +28,32 @@ - #include - #include - #include -+#include - - #include "vmblockInt.h" - #include "filesystem.h" - #include "block.h" - - - /* Inode operations */ -+// Again, it looks like last arg should've always been unsigned int ~MK - static struct dentry *InodeOpLookup(struct inode *dir, -- struct dentry *dentry, struct nameidata *nd); --static int InodeOpReadlink(struct dentry *dentry, char __user *buffer, int buflen); --#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) --static void *InodeOpFollowlink(struct dentry *dentry, struct nameidata *nd); -+ struct dentry *dentry, -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0) // Maybe 3.12 or 3.13? -+ struct nameidata *nd); - #else -+ unsigned int flags); -+#endif -+static int InodeOpReadlink(struct dentry *dentry, char __user *buffer, int buflen); -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 13) - static int InodeOpFollowlink(struct dentry *dentry, struct nameidata *nd); -+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 99) -+static const char *InodeOpGetLink(struct dentry *dentry, struct inode *inode, -+ struct delayed_call *done); -+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 99) -+static const char *InodeOpFollowlink(struct dentry *dentry, void **cookie); -+#else -+static void *InodeOpFollowlink(struct dentry *dentry, struct nameidata *nd); - #endif - - -@@ -49,9 +60,13 @@ struct inode_operations RootInodeOps = { - .lookup = InodeOpLookup, - }; - --static struct inode_operations LinkInodeOps = { -+struct inode_operations LinkInodeOps = { - .readlink = InodeOpReadlink, -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 99) -+ .get_link = InodeOpGetLink, -+#else - .follow_link = InodeOpFollowlink, -+#endif - }; - - -@@ -75,7 +90,11 @@ static struct inode_operations LinkInodeOps = { - static struct dentry * - InodeOpLookup(struct inode *dir, // IN: parent directory's inode - struct dentry *dentry, // IN: dentry to lookup -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0) - struct nameidata *nd) // IN: lookup intent and information -+#else -+ unsigned int flags) // IN: lookup intent and information -+#endif - { - char *filename; - struct inode *inode; -@@ -135,7 +154,16 @@ InodeOpLookup(struct inode *dir, // IN: parent directory's inode - inode->i_size = INODE_TO_IINFO(inode)->nameLen; - inode->i_version = 1; -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 12, 0) - inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME; -+#else -+ inode->i_atime = inode->i_mtime = inode->i_ctime = current_kernel_time(); -+#endif -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0) - inode->i_uid = inode->i_gid = 0; -+#else -+ inode->i_gid = make_kgid(current_user_ns(), 0); -+ inode->i_uid = make_kuid(current_user_ns(), 0); -+#endif - inode->i_op = &LinkInodeOps; - - d_add(dentry, inode); -@@ -176,8 +200,15 @@ InodeOpReadlink(struct dentry *dentry, // IN : dentry of symlink - if (!iinfo) { - return -EINVAL; - } -- -+#if LINUX_VERSION_CODE <= KERNEL_VERSION(3, 14, 99) - return vfs_readlink(dentry, buffer, buflen, iinfo->name); -+#elif LINUX_VERSION_CODE <= KERNEL_VERSION(4, 6, 99) -+ return readlink_copy(buffer, buflen, iinfo->name); -+#elif LINUX_VERSION_CODE <= KERNEL_VERSION(4, 9, 99) -+ return generic_readlink(dentry, buffer, buflen); -+#else -+ return vfs_readlink(dentry, buffer, buflen); -+#endif - } - - -@@ -198,30 +229,58 @@ InodeOpReadlink(struct dentry *dentry, // IN : dentry of symlink - *---------------------------------------------------------------------------- - */ - --#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) --static void * -+static -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 13) -+int -+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 99) -+const char * - #else --static int -+void * - #endif -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 99) -+InodeOpGetLink(struct dentry *dentry, struct inode *inode, -+ struct delayed_call *done) -+#else - InodeOpFollowlink(struct dentry *dentry, // IN : dentry of symlink -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 99) -+ void **cookie) -+#else - struct nameidata *nd) // OUT: stores result -+#endif -+#endif - { - int ret; - VMBlockInodeInfo *iinfo; - - if (!dentry) { -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 99) -+ ret = -ECHILD; -+#else - Warning("InodeOpReadlink: invalid args from kernel\n"); - ret = -EINVAL; -+#endif - goto out; - } - -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 99) -+ iinfo = INODE_TO_IINFO(inode); -+#else - iinfo = INODE_TO_IINFO(dentry->d_inode); -+#endif - if (!iinfo) { - ret = -EINVAL; - goto out; - } - -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 12, 0) - ret = vfs_follow_link(nd, iinfo->name); -+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 99) -+ return (char *)(iinfo->name); -+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 99) -+ return *cookie = (char *)(iinfo->name); -+#else -+ nd_set_link(nd, iinfo->name); -+#endif - - out: - #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) -diff --git a/vmblock-only/shared/compat_namei.h b/vmblock-only/shared/compat_namei.h -index f82dd49..426d40b 100644 ---- a/vmblock-only/shared/compat_namei.h -+++ b/vmblock-only/shared/compat_namei.h -@@ -45,4 +45,20 @@ - #define compat_path_lookup(name, flags, nd) path_lookup(name, flags, nd) - #endif - -+/* nameidata struct for 4.2+ */ -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,2,0) -+struct nameidata { -+ struct path path; -+ struct qstr last; -+ struct path root; -+ struct inode *inode; /* path.dentry.d_inode */ -+ unsigned int flags; -+ unsigned seq, m_seq; -+ int last_type; -+ unsigned depth; -+ struct file *base; -+ char *saved_names[MAX_NESTED_LINKS + 1]; -+}; -+#endif -+ - #endif /* __COMPAT_NAMEI_H__ */ diff --git a/app-emulation/vmware-modules/files/329-vmci.patch b/app-emulation/vmware-modules/files/329-vmci.patch deleted file mode 100644 index 764f858..0000000 --- a/app-emulation/vmware-modules/files/329-vmci.patch +++ /dev/null @@ -1,294 +0,0 @@ -diff --git a/vmci-only/Makefile b/vmci-only/Makefile -index c630705..18357e5 100644 ---- a/vmci-only/Makefile -+++ b/vmci-only/Makefile -@@ -43,7 +43,11 @@ INCLUDE += -I$(SRCROOT)/shared - endif - - -+ifdef KVERSION -+VM_UNAME = $(KVERSION) -+else - VM_UNAME = $(shell uname -r) -+endif - - # Header directory for the running kernel - ifdef LINUXINCLUDE -diff --git a/vmci-only/Makefile.kernel b/vmci-only/Makefile.kernel -index 8e6e7d0..28eb503 100644 ---- a/vmci-only/Makefile.kernel -+++ b/vmci-only/Makefile.kernel -@@ -21,7 +21,7 @@ CC_OPTS += -DVMCI - - INCLUDE += -I$(SRCROOT)/shared -I$(SRCROOT)/common -I$(SRCROOT)/linux - --EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) -+EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) $(LINUXINCLUDE) - - obj-m += $(DRIVER).o - -diff --git a/vmci-only/linux/driver.c b/vmci-only/linux/driver.c -index f676166..9e42f3f 100644 ---- a/vmci-only/linux/driver.c -+++ b/vmci-only/linux/driver.c -@@ -26,6 +26,7 @@ - - #include - #include -+#include - #include - #if defined(__x86_64__) && LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 12) - # include -@@ -1466,12 +1467,19 @@ VMCIUserVALockPage(VA addr) // IN: - int retval; - - down_read(¤t->mm->mmap_sem); --#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0) -- retval = get_user_pages(addr, 1, 1, 0, &page, NULL); -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 5, 99) -+ retval = get_user_pages(addr, - #else - retval = get_user_pages(current, current->mm, addr, -- 1, 1, 0, &page, NULL); - #endif -+ 1, -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 9, 0) -+ 1, 0, -+#else -+ FOLL_WRITE, -+#endif -+ &page, NULL); -+ - up_read(¤t->mm->mmap_sem); - - if (retval != 1) { -@@ -1686,7 +1694,11 @@ vmci_guest_init(void) - /* This should be last to make sure we are done initializing. */ - retval = pci_register_driver(&vmci_driver); - if (retval < 0) { -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 15, 0) - vfree(data_buffer); -+#else -+ kvfree(data_buffer); -+#endif - data_buffer = NULL; - return retval; - } -@@ -1722,12 +1734,25 @@ - vmci_dev.msix_entries[i].vector = i; - } - -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 12, 0) - result = pci_enable_msix(pdev, vmci_dev.msix_entries, VMCI_MAX_INTRS); - if (!result) { - vmci_dev.exclusive_vectors = TRUE; - } else if (result > 0) { - result = pci_enable_msix(pdev, vmci_dev.msix_entries, 1); - } -+#else -+ result = pci_enable_msix_range(pdev, vmci_dev.msix_entries, VMCI_MAX_INTRS, -+ VMCI_MAX_INTRS); -+ if (result > 0) { -+ vmci_dev.exclusive_vectors = TRUE; -+ } else if (result == -ENOSPC) { -+ result = pci_enable_msix_range(pdev, vmci_dev.msix_entries, 1, 1); -+ } -+ -+ if (result > 0) -+ result = 0; -+#endif - return result; - } - -@@ -2480,7 +2505,11 @@ vmci_exit(void) - - if (guestDeviceInit) { - pci_unregister_driver(&vmci_driver); -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 15, 0) - vfree(data_buffer); -+#else -+ kvfree(data_buffer); -+#endif - data_buffer = NULL; - guestDeviceInit = FALSE; - } -@@ -2490,7 +2519,7 @@ vmci_exit(void) - - VMCI_HostCleanup(); - -- retval = misc_deregister(&linuxState.misc); -+ retval = compat_misc_deregister(&linuxState.misc); - if (retval) { - Warning(LGPFX "Module %s: error unregistering\n", VMCI_MODULE_NAME); - } else { -diff --git a/vmci-only/linux/vmciKernelIf.c b/vmci-only/linux/vmciKernelIf.c -index 3fba8b6..1836442 100644 ---- a/vmci-only/linux/vmciKernelIf.c -+++ b/vmci-only/linux/vmciKernelIf.c -@@ -40,6 +40,10 @@ - #include /* For memcpy_{to,from}iovec(). */ - #include - #include -+#include -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 99) -+#include -+#endif - - #include "compat_highmem.h" - #include "compat_interrupt.h" -@@ -1198,16 +1199,29 @@ __VMCIMemcpyToQueue(VMCIQueue *queue, // OUT: - } - - if (isIovec) { -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0) - struct iovec *iov = (struct iovec *)src; -+#else -+ struct msghdr *msg = (struct msghdr *)src; -+#endif - int err; - - /* The iovec will track bytesCopied internally. */ -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0) - err = memcpy_fromiovec((uint8 *)va + pageOffset, iov, toCopy); -+#else -+ err = memcpy_from_msg((uint8 *)va + pageOffset, msg, toCopy); -+#endif - if (err != 0) { - if (kernelIf->host) { - kunmap(kernelIf->u.h.page[pageIndex]); -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0) - } - return VMCI_ERROR_INVALID_ARGS; -+#else -+ return VMCI_ERROR_INVALID_ARGS; -+ } -+#endif - } - } else { - memcpy((uint8 *)va + pageOffset, (uint8 *)src + bytesCopied, toCopy); -@@ -1273,11 +1287,19 @@ __VMCIMemcpyFromQueue(void *dest, // OUT: - } - - if (isIovec) { -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0) - struct iovec *iov = (struct iovec *)dest; -+#else -+ struct msghdr *msg = (struct msghdr *)dest; -+#endif - int err; - - /* The iovec will track bytesCopied internally. */ -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0) - err = memcpy_toiovec(iov, (uint8 *)va + pageOffset, toCopy); -+#else -+ err = memcpy_to_msg(msg, (uint8 *)va + pageOffset, toCopy); -+#endif - if (err != 0) { - if (kernelIf->host) { - kunmap(kernelIf->u.h.page[pageIndex]); -@@ -1834,7 +1856,11 @@ VMCIReleasePages(struct page **pages, // IN - if (dirty) { - set_page_dirty(pages[i]); - } -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 5, 99) -+ put_page(pages[i]); -+#else - page_cache_release(pages[i]); -+#endif - pages[i] = NULL; - } - } -@@ -2048,21 +2074,22 @@ VMCIHost_GetUserMemory(VA64 produceUVA, // IN - int err = VMCI_SUCCESS; - - down_write(¤t->mm->mmap_sem); --#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0) -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 5, 99) - retval = get_user_pages((VA)produceUVA, -- produceQ->kernelIf->numPages, -- 1, 0, -- produceQ->kernelIf->u.h.headerPage, -- NULL); - #else - retval = get_user_pages(current, - current->mm, - (VA)produceUVA, -+#endif - produceQ->kernelIf->numPages, -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 9, 0) - 1, 0, -+#else -+ FOLL_WRITE, -+#endif - produceQ->kernelIf->u.h.headerPage, - NULL); --#endif -+ - if (retval < produceQ->kernelIf->numPages) { - Log("get_user_pages(produce) failed (retval=%d)\n", retval); - VMCIReleasePages(produceQ->kernelIf->u.h.headerPage, retval, FALSE); -@@ -2070,11 +2097,19 @@ VMCIHost_GetUserMemory(VA64 produceUVA, // IN - goto out; - } - -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 5, 99) -+ retval = get_user_pages((VA)consumeUVA, -+#else - retval = get_user_pages(current, - current->mm, - (VA)consumeUVA, -+#endif - consumeQ->kernelIf->numPages, -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 9, 0) - 1, 0, -+#else -+ FOLL_WRITE, -+#endif - consumeQ->kernelIf->u.h.headerPage, - NULL); - if (retval < consumeQ->kernelIf->numPages) { -diff --git a/vmci-only/shared/compat_module.h b/vmci-only/shared/compat_module.h -index 2af7372..729aedc 100644 ---- a/vmci-only/shared/compat_module.h -+++ b/vmci-only/shared/compat_module.h -@@ -80,4 +80,13 @@ static const char __module_cat(tag, __LINE__)[] \ - typedef int compat_mod_param_bool; - #endif - -+/* -+ * Linux kernel >= 4.2.99 does not return anything from misc_deregister -+ */ -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 2, 99) -+#define compat_misc_deregister(misc) misc_deregister(misc) -+#else -+#define compat_misc_deregister(misc) ({misc_deregister(misc);0;}) -+#endif -+ - #endif /* __COMPAT_MODULE_H__ */ -diff --git a/vmci-only/shared/vm_device_version.h b/vmci-only/shared/vm_device_version.h -index e2cb477..3dd7097 100644 ---- a/vmci-only/shared/vm_device_version.h -+++ b/vmci-only/shared/vm_device_version.h -@@ -53,7 +53,9 @@ - * VMware HD Audio codec - * VMware HD Audio controller - */ -+#ifndef PCI_VENDOR_ID_VMWARE - #define PCI_VENDOR_ID_VMWARE 0x15AD -+#endif - #define PCI_DEVICE_ID_VMWARE_SVGA2 0x0405 - #define PCI_DEVICE_ID_VMWARE_SVGA 0x0710 - #define PCI_DEVICE_ID_VMWARE_VGA 0x0711 -diff --git a/vmci-only/shared/vmci_kernel_if.h b/vmci-only/shared/vmci_kernel_if.h -index 9def671..082fe59 100644 ---- a/vmci-only/shared/vmci_kernel_if.h -+++ b/vmci-only/shared/vmci_kernel_if.h -@@ -100,7 +100,7 @@ - typedef Semaphore VMCIEvent; - typedef Semaphore VMCIMutex; - typedef World_ID VMCIHostVmID; -- typedef uint32 VMCIHostUser; -+ typedef uint32_t VMCIHostUser; - typedef PPN *VMCIQPGuestMem; - #elif defined(__linux__) - typedef spinlock_t VMCILock; diff --git a/app-emulation/vmware-modules/files/329-vsock.patch b/app-emulation/vmware-modules/files/329-vsock.patch deleted file mode 100644 index d77402a..0000000 --- a/app-emulation/vmware-modules/files/329-vsock.patch +++ /dev/null @@ -1,266 +0,0 @@ -diff --git a/vsock-only/Makefile b/vsock-only/Makefile -index 5d92e9b..7d315e8 100644 ---- a/vsock-only/Makefile -+++ b/vsock-only/Makefile -@@ -42,8 +42,11 @@ AUTOCONF_DIR := $(SRCROOT)/shared/autoconf - INCLUDE += -I$(SRCROOT)/shared - endif - -- -+ifdef KVERSION -+VM_UNAME = $(KVERSION) -+else - VM_UNAME = $(shell uname -r) -+endif - - # Header directory for the running kernel - ifdef LINUXINCLUDE -diff --git a/vsock-only/Makefile.kernel b/vsock-only/Makefile.kernel -index 5218df2..374cc1f 100644 ---- a/vsock-only/Makefile.kernel -+++ b/vsock-only/Makefile.kernel -@@ -25,7 +25,7 @@ INCLUDE += -I$(SRCROOT)/include - INCLUDE += -I$(SRCROOT)/linux - INCLUDE += -I$(SRCROOT)/common - --EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) -+EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) $(LINUXINCLUDE) - EXTRA_CFLAGS += $(call vm_check_build, $(AUTOCONF_DIR)/netcreate_num_params.c, -DVMW_NETCREATE_KERNARG, ) - - -diff --git a/vsock-only/linux/af_vsock.c b/vsock-only/linux/af_vsock.c -index bde1497..9f8f843 100644 ---- a/vsock-only/linux/af_vsock.c -+++ b/vsock-only/linux/af_vsock.c -@@ -113,6 +113,9 @@ - asmlinkage __attribute__((weak)) long - sys_ioctl(unsigned int fd, unsigned int cmd, unsigned long arg); - #endif -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 99) -+#include -+#endif - - #include "compat_cred.h" - #include "compat_module.h" -@@ -213,7 +216,11 @@ - struct sockaddr *addr, int addrLen, int flags); - static int VSockVmciStreamConnect(struct socket *sock, - struct sockaddr *addr, int addrLen, int flags); -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 11, 0) - static int VSockVmciAccept(struct socket *sock, struct socket *newsock, int flags); -+#else -+static int VSockVmciAccept(struct socket *sock, struct socket *newsock, int flags, bool kern); -+#endif - static int VSockVmciGetname(struct socket *sock, - struct sockaddr *addr, int *addrLen, int peer); - static unsigned int VSockVmciPoll(struct file *file, -@@ -233,13 +240,29 @@ static int VSockVmciStreamSetsockopt(struct socket *sock, int level, int optname - static int VSockVmciStreamGetsockopt(struct socket *sock, int level, int optname, - char __user *optval, int __user * optlen); - -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 99) - static int VSockVmciDgramSendmsg(struct kiocb *kiocb, -+#else -+static int VSockVmciDgramSendmsg( -+#endif - struct socket *sock, struct msghdr *msg, size_t len); -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 99) - static int VSockVmciDgramRecvmsg(struct kiocb *kiocb, struct socket *sock, -+#else -+static int VSockVmciDgramRecvmsg(struct socket *sock, -+#endif - struct msghdr *msg, size_t len, int flags); -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 99) - static int VSockVmciStreamSendmsg(struct kiocb *kiocb, -+#else -+static int VSockVmciStreamSendmsg( -+#endif - struct socket *sock, struct msghdr *msg, size_t len); -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 99) - static int VSockVmciStreamRecvmsg(struct kiocb *kiocb, struct socket *sock, -+#else -+static int VSockVmciStreamRecvmsg(struct socket *sock, -+#endif - struct msghdr *msg, size_t len, int flags); - - static int VSockVmciCreate( -@@ -2872,11 +2895,18 @@ __VSockVmciCreate(struct net *net, // IN: Network namespace - * From 2.6.9 to until 2.6.12 sk_alloc() used a cache in - * the protocol structure, but you still had to specify the size and cache - * yourself. -- * Most recently (in 2.6.24), sk_alloc() was changed to expect the -+ * In 2.6.24, sk_alloc() was changed to expect the - * network namespace, and the option to zero the sock was dropped. - * -+ * In 4.2, another parameter was added to sk_alloc() allowing you to specify -+ * whether or not the socket is to be a kernel socket. Previously, we passed -+ * 1 to this new parameter, but following Gentoo's lead -+ * ( https://github.com/gentoo/vmware/blob/master/app-emulation/vmware-modules/files/308-4.02-01-sk_alloc.patch#L19 ) -+ * we have switched to passing 0. - */ --#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 12) -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 99) -+ sk = sk_alloc(net, vsockVmciFamilyOps.family, priority, &vsockVmciProto, 0); -+#elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 12) - sk = sk_alloc(vsockVmciFamilyOps.family, priority, - vsockVmciProto.slab_obj_size, vsockVmciProto.slab); - #elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 24) -@@ -3825,7 +3855,12 @@ - static int - VSockVmciAccept(struct socket *sock, // IN - struct socket *newsock, // IN/OUT -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 11, 0) - int flags) // IN -+#else -+ int flags, // IN -+ bool kern) -+#endif - { - struct sock *listener; - int err; -@@ -4260,7 +4295,11 @@ VSockVmciShutdown(struct socket *sock, // IN - */ - - static int -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 99) - VSockVmciDgramSendmsg(struct kiocb *kiocb, // UNUSED -+#else -+VSockVmciDgramSendmsg( -+#endif - struct socket *sock, // IN: socket to send on - struct msghdr *msg, // IN: message to send - size_t len) // IN: length of message -@@ -4352,7 +4391,11 @@ VSockVmciDgramSendmsg(struct kiocb *kiocb, // UNUSED - goto out; - } - -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0) - memcpy_fromiovec(VMCI_DG_PAYLOAD(dg), msg->msg_iov, len); -+#else -+ memcpy_from_msg(VMCI_DG_PAYLOAD(dg), msg, len); -+#endif - - dg->dst = VMCI_MAKE_HANDLE(remoteAddr->svm_cid, remoteAddr->svm_port); - dg->src = VMCI_MAKE_HANDLE(vsk->localAddr.svm_cid, vsk->localAddr.svm_port); -@@ -4590,7 +4633,11 @@ VSockVmciStreamGetsockopt(struct socket *sock, // IN - */ - - static int -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 99) - VSockVmciStreamSendmsg(struct kiocb *kiocb, // UNUSED -+#else -+VSockVmciStreamSendmsg( -+#endif - struct socket *sock, // IN: socket to send on - struct msghdr *msg, // IN: message to send - size_t len) // IN: length of message -@@ -4712,7 +4759,11 @@ VSockVmciStreamSendmsg(struct kiocb *kiocb, // UNUSED - * able to send. - */ - -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0) - written = vmci_qpair_enquev(vsk->qpair, msg->msg_iov, -+#else -+ written = vmci_qpair_enquev(vsk->qpair, &msg->msg_iter.iov, -+#endif - len - totalWritten, 0); - if (written < 0) { - err = -ENOMEM; -@@ -4759,7 +4810,11 @@ out: - */ - - static int -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 99) - VSockVmciDgramRecvmsg(struct kiocb *kiocb, // UNUSED -+#else -+VSockVmciDgramRecvmsg( -+#endif - struct socket *sock, // IN: socket to receive from - struct msghdr *msg, // IN/OUT: message to receive into - size_t len, // IN: length of receive buffer -@@ -4809,7 +4864,11 @@ VSockVmciDgramRecvmsg(struct kiocb *kiocb, // UNUSED - } - - /* Place the datagram payload in the user's iovec. */ -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0) - err = skb_copy_datagram_iovec(skb, sizeof *dg, msg->msg_iov, payloadLen); -+#else -+ err = skb_copy_datagram_iter(skb, sizeof *dg, &msg->msg_iter, payloadLen); -+#endif - if (err) { - goto out; - } -@@ -4850,7 +4909,11 @@ out: - */ - - static int -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 99) - VSockVmciStreamRecvmsg(struct kiocb *kiocb, // UNUSED -+#else -+VSockVmciStreamRecvmsg( -+#endif - struct socket *sock, // IN: socket to receive from - struct msghdr *msg, // IN/OUT: message to receive into - size_t len, // IN: length of receive buffer -@@ -4955,9 +5018,17 @@ VSockVmciStreamRecvmsg(struct kiocb *kiocb, // UNUSED - } - - if (flags & MSG_PEEK) { -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0) - read = vmci_qpair_peekv(vsk->qpair, msg->msg_iov, len - copied, 0); -+#else -+ read = vmci_qpair_peekv(vsk->qpair, &msg->msg_iter.iov, len - copied, 0); -+#endif - } else { -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0) - read = vmci_qpair_dequev(vsk->qpair, msg->msg_iov, len - copied, 0); -+#else -+ read = vmci_qpair_dequev(vsk->qpair, &msg->msg_iter.iov, len - copied, 0); -+#endif - } - - if (read < 0) { -diff --git a/vsock-only/linux/notify.c b/vsock-only/linux/notify.c -index 5b1e134..82d8738 100644 ---- a/vsock-only/linux/notify.c -+++ b/vsock-only/linux/notify.c -@@ -516,7 +516,11 @@ VSockVmciHandleWrote(struct sock *sk, // IN - PKT_FIELD(vsk, sentWaitingRead) = FALSE; - #endif - -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 15, 0) - sk->sk_data_ready(sk, 0); -+#else -+ sk->sk_data_ready(sk); -+#endif - } - - -diff --git a/vsock-only/linux/notifyQState.c b/vsock-only/linux/notifyQState.c -index 464454b..7933be7 100644 ---- a/vsock-only/linux/notifyQState.c -+++ b/vsock-only/linux/notifyQState.c -@@ -164,7 +164,11 @@ VSockVmciHandleWrote(struct sock *sk, // IN - struct sockaddr_vm *dst, // IN: unused - struct sockaddr_vm *src) // IN: unused - { -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 15, 0) - sk->sk_data_ready(sk, 0); -+#else -+ sk->sk_data_ready(sk); -+#endif - } - - -@@ -566,7 +570,11 @@ VSockVmciNotifyPktRecvPostDequeue(struct sock *sk, // IN - } - - /* See the comment in VSockVmciNotifyPktSendPostEnqueue */ -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 15, 0) - sk->sk_data_ready(sk, 0); -+#else -+ sk->sk_data_ready(sk); -+#endif - } - - return err; diff --git a/app-emulation/vmware-modules/vmware-modules-329.1.2.ebuild b/app-emulation/vmware-modules/vmware-modules-330.0.1.ebuild similarity index 63% rename from app-emulation/vmware-modules/vmware-modules-329.1.2.ebuild rename to app-emulation/vmware-modules/vmware-modules-330.0.1.ebuild index 9e4356d..3bdd988 100644 --- a/app-emulation/vmware-modules/vmware-modules-329.1.2.ebuild +++ b/app-emulation/vmware-modules/vmware-modules-330.0.1.ebuild @@ -3,10 +3,7 @@ EAPI=6 -inherit eutils flag-o-matic linux-info linux-mod user versionator udev - -PV_MAJOR=$(get_major_version) -PV_MINOR=$(get_version_component_range 2-3) +inherit eapi7-ver eutils flag-o-matic linux-info linux-mod user udev DESCRIPTION="VMware kernel modules" HOMEPAGE="http://www.vmware.com/" @@ -20,7 +17,7 @@ IUSE="" RDEPEND="" DEPEND=" - =app-emulation/vmware-workstation-14.${PV_MINOR}* + =app-emulation/vmware-workstation-15.$(ver_cut 2-3)* " S=${WORKDIR} @@ -62,14 +59,15 @@ src_unpack() { src_prepare() { # from https://github.com/mkubecek/vmware-host-modules/tree/workstation-14.1.1 - kernel_is ge 4 9 0 && epatch "${FILESDIR}/${PV_MAJOR}-4.09-00-vmnet-use-standard-definition-of-PCI_VENDOR_ID_VMWAR.patch" - kernel_is ge 4 10 0 && epatch "${FILESDIR}/${PV_MAJOR}-4.10-00-vmnet-use-standard-definition-of-PCI_VENDOR_ID_VMWAR.patch" - kernel_is ge 4 12 0 && epatch "${FILESDIR}/${PV_MAJOR}-4.12-00-vmmon-use-standard-definition-of-MSR_MISC_FEATURES_E.patch" - kernel_is ge 4 13 0 && epatch "${FILESDIR}/${PV_MAJOR}-4.13-00-vmmon-use-standard-definition-of-CR3_PCID_MASK-if-av.patch" - epatch "${FILESDIR}/${PV_MAJOR}-00-vmmon-quick-workaround-for-objtool-warnings.patch" - kernel_is ge 4 16 0 && epatch "${FILESDIR}/${PV_MAJOR}-4.16-00-vmmon-use-standard-definition-of-MSR_K7_HWCR_SMMLOCK.patch" - epatch "${FILESDIR}/${PV_MAJOR}-01-vmmon-fix-always_inline-attribute-usage.patch" - epatch "${FILESDIR}/${PV_MAJOR}-02-vmmon-fix-indirect-call-with-retpoline-build.patch" + kernel_is ge 4 9 0 && epatch "${FILESDIR}/329-4.09-00-vmnet-use-standard-definition-of-PCI_VENDOR_ID_VMWAR.patch" + kernel_is ge 4 10 0 && epatch "${FILESDIR}/329-4.10-00-vmnet-use-standard-definition-of-PCI_VENDOR_ID_VMWAR.patch" + kernel_is ge 4 12 0 && epatch "${FILESDIR}/329-4.12-00-vmmon-use-standard-definition-of-MSR_MISC_FEATURES_E.patch" + kernel_is ge 4 13 0 && epatch "${FILESDIR}/329-4.13-00-vmmon-use-standard-definition-of-CR3_PCID_MASK-if-av.patch" + epatch "${FILESDIR}/329-00-vmmon-quick-workaround-for-objtool-warnings.patch" + kernel_is ge 4 16 0 && epatch "${FILESDIR}/329-4.16-00-vmmon-use-standard-definition-of-MSR_K7_HWCR_SMMLOCK.patch" + epatch "${FILESDIR}/329-01-vmmon-fix-always_inline-attribute-usage.patch" + epatch "${FILESDIR}/329-02-vmmon-fix-indirect-call-with-retpoline-build.patch" + epatch "${FILESDIR}/329-03-vmmon-check-presence-of-file_operations-poll.patch" # decouple the kernel include dir from the running kernel version: https://github.com/stefantalpalaru/gentoo-overlay/issues/17 sed -i -e "s%HEADER_DIR = /lib/modules/\$(VM_UNAME)/build/include%HEADER_DIR = ${KERNEL_DIR}/include%" */Makefile || die "sed failed" @@ -108,11 +106,4 @@ src_install() { pkg_postinst() { linux-mod_pkg_postinst - if [ "${installed_modprobe_conf}"x == "x" ] ; then - if [ -f "${ROOT}/etc/modprobe.d/vmware.conf" ] ; then - ewarn "Please check the /etc/modprobe.d/vmware.conf file and" - ewarn "possible conflicts when using vmci and/or vsock modules built" - ewarn "out of kernel" - fi - fi } diff --git a/app-emulation/vmware-workstation/Manifest b/app-emulation/vmware-workstation/Manifest index c76a628..0066bc8 100644 --- a/app-emulation/vmware-workstation/Manifest +++ b/app-emulation/vmware-workstation/Manifest @@ -1,13 +1,16 @@ AUX configure-hostd.sh 372 BLAKE2B 0ed2d479a46d69ff8498bfac180f0440fb57fb173fc1a427115872a40a47559725623399652e9663fa8a4ca0d7e020d5445bafb6c37f45449dea341fc9f6cce6 SHA512 87c84f5e51e8b4585a9a55f13771cd8b84f2e4e0bb33679e3a1b23eb84a5be5d523a57b6c770095c1d21712a98e9317bbd215ab027843b0586b35ecf9fb85b49 AUX vmware-14.1.rc 2476 BLAKE2B dff25b43c5fa57186be2a5f0ca4606d26cd1c3f3dbeb91d855fc07a9fd576f446983c852c8e0b112c5616bb95dfddc7e2c738b4d0ca341c781d7addcb45068cd SHA512 9bae224387128b2cd221d509e2933042e3925fb041670907d8a47c70a488214206912fe25ab24c0bdeb31591149e62aba374d3fa63fdd08644e09667e195967f +AUX vmware-15.0.rc 2476 BLAKE2B dff25b43c5fa57186be2a5f0ca4606d26cd1c3f3dbeb91d855fc07a9fd576f446983c852c8e0b112c5616bb95dfddc7e2c738b4d0ca341c781d7addcb45068cd SHA512 9bae224387128b2cd221d509e2933042e3925fb041670907d8a47c70a488214206912fe25ab24c0bdeb31591149e62aba374d3fa63fdd08644e09667e195967f AUX vmware-server-14.1.rc 1506 BLAKE2B 886ed1de7a99320611a28a43b48cf17715fcab8bf533a73c28a1aa2f8d150ee2b84e1e510e864b18347f3bd7e43faec3cfc90f09d5ac9c0afe821f67654a68c4 SHA512 548ff69f87bee2b6c82bd931d22dd560370c4a00641ae47d05af05bbc72cedc8fd25054abc405a590b72227b10c5997d79f16ded67f3e0cfac142eb248b47d44 -DIST VMware-Workstation-Full-14.1.2-8497320.x86_64.bundle 461102809 BLAKE2B c0f3e8783e1c144aec5ac789d74f43099688034d7d23ab7159d118a60f3d8bc056641eddecf78a12d3275321be5f888668c0a9ba77f9c65d2c3f989dc16f6ffa SHA512 02432f8cd3000a334a04d20a4f9d0ad47801d3a582cc971f292d10be9346140c2b82bff7e4f32b6477882bc22f06d13046e1fe3b9236d00362f5f93d8a9f0f4d +AUX vmware-server-15.0.rc 1506 BLAKE2B 886ed1de7a99320611a28a43b48cf17715fcab8bf533a73c28a1aa2f8d150ee2b84e1e510e864b18347f3bd7e43faec3cfc90f09d5ac9c0afe821f67654a68c4 SHA512 548ff69f87bee2b6c82bd931d22dd560370c4a00641ae47d05af05bbc72cedc8fd25054abc405a590b72227b10c5997d79f16ded67f3e0cfac142eb248b47d44 DIST VMware-Workstation-Full-14.1.3-9474260.x86_64.bundle 461108241 BLAKE2B a52e336d0820b0bb3d5ffadaea5b626db3cadeedb07dc95a82b8f721bf416f52b7d6ce58e2c6a89176efcaa71d12e04e7b1f76244c44898c370b0347492bb6a3 SHA512 54ff9b9f9c134c17323539dbdd0b6fc2527274850cc8be3c1a432f3bdcd9f0d9a1663feff879ad10f39d99be6cb04f3cec15ac06ab63de56ba4564657a52e0bf -DIST com.vmware.fusion.tools.darwin-14.1.2.8497320.zip.tar 2805760 BLAKE2B 66cedcbca1240ae20e2aabd7399ccfcf2f2fd8bfdbbe0b0020015307c0f7e166b24f3721387a3d1e11a8e8adb741f04da12c329643dc3c511eefc78957f215d9 SHA512 0c21860c3536745d9e3d838c405669c44ff5b337d64f1ab2a96973aabc2e3b8d116f333bcfc04953ff7bbdff73b1e023f01de2ef35296ac1829efb85873757ae +DIST VMware-Workstation-Full-15.0.1-10737736.x86_64.bundle 495671642 BLAKE2B 5a509938870696966acf72f49c7c72425807bb9c25283ee99235b6fd8ddbe8f5f14bdd0ff2886b69ef9a2e4a0331e8f992b7e9d49f62e9026e122dffb9a10f1b SHA512 b20f35bf01f86fb85213da43675d26a7f5ba0d0a6ca6d1c43aba7f391c659689522801e2b5e065bf6f801fb8be81c1f59877fd189186917901605cedad9e0ffe DIST com.vmware.fusion.tools.darwin-14.1.3.9474260.zip.tar 2805760 BLAKE2B 0a052e0090ba667cef0a8c1253d77e2bdaec45cd1f31012ad66cea26c15f0cc6326879b747a4df685056628dc93b1db99eb46b22faab2b4548dfc5d62b99fd0e SHA512 83465b4b4299905f7e7828bb7db6641eb86569b0f7dc61780fc993084ceec180c31838ea16f01cc8d6aec26cfca9879dd3ff3de2af09f309dc53b8c59a90ab28 -DIST com.vmware.fusion.tools.darwinPre15-14.1.2.8497320.zip.tar 2478080 BLAKE2B b3d6582eb57525bc6844f8f363b0935c58b6f516fb8d87435538de4e5f8c0ac5e93cdf7a8f34c250c3a14852a9b9eaa592d7167d8b134c569151a713a009b693 SHA512 9e09e4d74707dbc55426929ad3fb762dfef602ab276c820e563e42a01c482d76cfbe78b39f725b421fcaabbac711366a0a51dfa6afc6d0ae5807246a1c9856d3 +DIST com.vmware.fusion.tools.darwin-15.0.1.10737736.zip.tar 2795520 BLAKE2B a767ba710534eb46254e52d0226bf4794cb8ae1d2b25b0f6e070abb89e84c24ccf3310fa310765c56d8e82b2d157bcd4bbd3d0388f4658a0939f17a1f2c6910d SHA512 15af65df39ea066969847e43a145edb1b2bcf288cea485ead7aca86375d9ae08915151c7e0ad865efd39bc0826846c17fc7002b6d89fbb958ae67ff0083903ba DIST com.vmware.fusion.tools.darwinPre15-14.1.3.9474260.zip.tar 2478080 BLAKE2B 40a8406406eb342096b6d34871cf08df20c540c3913afbaee0fcc5be857961e30df16a4a89ef780dfa9ce770e166232425bfac5fd8ce8eefab3c2c98f8fc4019 SHA512 1d6895956949532158b0c4aa3f714746d8573d3d95da2a8697bdf6f02f71b71df4defd572a2f714bf787e9e26c72ea26819a75b129839c2bb060937a4a9e5d73 +DIST com.vmware.fusion.tools.darwinPre15-15.0.1.10737736.zip.tar 2478080 BLAKE2B 1b702b9514a649c702ade9eec1a33dfc2a9789fc6442778a6a96cceaa9cb502bd90f7915f33fb027f84209da3a6d0f106a936fbff8d785e3d7861a2c85e0c0d8 SHA512 48946da14ea5e64ed514fdfaef233294e647860e90bca114d402d71cc49d8b5b8ab9c743393656a8b1d67a2aa69878f5b441843eb2d90d79f03599c3156fd330 DIST unlocker-2.1.1_p1.zip 16201234 BLAKE2B 486597ba7ef12d2ec5b021ff9f5b56a9d1a58251e26f7bd9df4e84d34df9602ada3eaf69967ea645082e3919187f14801e7f506fa08b457d5763bdba9ec75493 SHA512 4ccea825339ae9303e8676dc773ca54cc929ab4970d8a2ac225f05bf18bad0e0945b7df3dd2b65c5596fd164642296da0f64774b27d7c066597f4d1d4db82bee +DIST unlocker-3.0.2.tar.gz 15984801 BLAKE2B e157ed24ad6cea1ab16dd5fc11935b7cdbb3fb0a1e0a9c059eb100f0c57508b749884111b93a9f272ad2c5a9ecd4fadb177ccac47d7688665c5fa8f100fcd2b1 SHA512 83a390562761791531574c05d2a5caacd936b45b32f26a1e5ba953ce32e27af29cb3ac0984c552c2eb9cfdf033d4b95fae1c33a70f2b169563d74d1ea188dacf DIST vmware-systemd-gentoo-02.tgz 14064 BLAKE2B 24ac2c2f295130f4aadad867ec88d652bd292cc60e6b471bb2e01069fe01d84dac3d8b0ca7690ebf218d663adfe0c1dc889d3f4f53cf3178b68291461260748b SHA512 3a382bfd5f1eb2b218d8012588ea55c1f22786dba35a1fc0fdfdb4e40b05e0e735ed09c6961684f6442e863c3ed72024ce01f19113bbd9ca47c32e3f43c55f42 -EBUILD vmware-workstation-14.1.2.8497320-r3.ebuild 21159 BLAKE2B 89f1dfe69f80dd5b3331a42f13759bf9c56b6ca5bb04ecf173a0bd352f527d4843e4573a7a46519ac4a81736d245c8d20b3189b8132d7ec85eee7d6f66fd6d88 SHA512 7cb301a6e9bccc907af690855ab0cf902650eed5f0cb4dc1e13e7a49e00f9389e44e881b2bb9d9c0515e90df4f73e53193574703d4fd1599037dfbf14488371b EBUILD vmware-workstation-14.1.3.9474260.ebuild 21159 BLAKE2B a6ee13192a6a8bf724bb89db154e5e89a19b66e278cdf957341476c5dfa2f6785837e24d07fb63b14768e5a5fff13774aa6074c298ff9149c06e0d5219b47a1e SHA512 290889884c198e8f763f479007fc5517d6df65097a6c006ca18df56c71c95a311a30f3f3f05aaf225c86c863eae6575f66cb258bfc1140385dcef95c09b32ffc +EBUILD vmware-workstation-15.0.1.10737736.ebuild 21218 BLAKE2B 8cbfb26c5ac047a5636059b79de42df233971ff6a61f8e4c377b0807b72a8abda830b2f807108847eab3592dcf8b0ed2c171028db591fe9b5a428894937382e7 SHA512 cb61e5f30b7962c0a880c47436902c1bb013cd8c239f40260ab57615f03a135af18abab9f39b85d5e3516f01ea5ac4369e151f4a8f9b2928ba9808c47eda3a68 diff --git a/app-emulation/vmware-workstation/files/vmware-15.0.rc b/app-emulation/vmware-workstation/files/vmware-15.0.rc new file mode 100644 index 0000000..b627869 --- /dev/null +++ b/app-emulation/vmware-workstation/files/vmware-15.0.rc @@ -0,0 +1,102 @@ +#!/sbin/openrc-run +# Copyright 1999-2018 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +depend() { + need localmount + use net +} + +start() { + ebegin Starting VMware USB Arbitrator + @@BINDIR@@/vmware-usbarbitrator + eend $? + ebegin Starting VMware services + + # vmci might be: + # 1) built as external kernel module + # 2) built as internal kernel module (with name vmw_vmci) + # 3) embedded in the kernel + for mod in /lib/modules/$(uname -r)/misc/vmci.ko \ + /lib/modules/$(uname -r)/kernel/drivers/misc/vmw_vmci/vmw_vmci.ko ; + do + if [[ -f "${mod}" ]] ; then + modprobe -v $(basename "${mod}" .ko) + eend $? + break + fi + done + + # vsock might be: + # 1) built as external kernel module + # 2) built as internal kernel module (with name vmw_vsock_vmci_transport) + # 3) embedded in the kernel + for mod in /lib/modules/$(uname -r)/misc/vsock.ko \ + /lib/modules/$(uname -r)/kernel/net/vmw_vsock/vmw_vsock_vmci_transport.ko ; + do + if [[ -f "${mod}" ]] ; then + modprobe -v $(basename "${mod}" .ko) + eend $? + break + fi + done + + # vmblock + if [[ -f /lib/modules/$(uname -r)/misc/vmblock.ko ]]; then + modprobe -v vmblock + eend $? + fi + + # vmci or vsock were already loaded by the previous modprobe, + # no need to do it here + # quiet for vmci because it may not be there + modprobe -av vmmon vmnet + eend $? + @@BINDIR@@/vmware-networks --start + eend $? +} + +stop() { + ebegin Stopping VMware USB Arbitrator + killall --wait vmware-usbarbitrator + eend $? + @@BINDIR@@/vmware-networks --stop + eend $? + ebegin Stopping VMware services + modprobe -rv vmmon vmnet + eend $? + + # vsock might be: + # 1) built as external kernel module + # 2) built as internal kernel module (with name vmw_vsock_vmci_transport) + # 3) embedded in the kernel + for mod in /lib/modules/$(uname -r)/misc/vsock.ko \ + /lib/modules/$(uname -r)/kernel/net/vmw_vsock/vmw_vsock_vmci_transport.ko ; + do + if [[ -f "${mod}" ]] ; then + modprobe -rv $(basename "${mod}" .ko) + eend $? + break + fi + done + + # vmci might be: + # 1) built as external kernel module + # 2) built as internal kernel module (with name vmw_vmci) + # 3) embedded in the kernel + for mod in /lib/modules/$(uname -r)/misc/vmci.ko \ + /lib/modules/$(uname -r)/kernel/drivers/misc/vmw_vmci/vmw_vmci.ko ; + do + if [[ -f "${mod}" ]] ; then + modprobe -rv $(basename "${mod}" .ko) + eend $? + break + fi + done + + # vmblock + if [[ -f /lib/modules/$(uname -r)/misc/vmblock.ko ]]; then + modprobe -rv vmblock + eend $? + fi +} diff --git a/app-emulation/vmware-workstation/files/vmware-server-15.0.rc b/app-emulation/vmware-workstation/files/vmware-server-15.0.rc new file mode 100644 index 0000000..8f9b7dd --- /dev/null +++ b/app-emulation/vmware-workstation/files/vmware-server-15.0.rc @@ -0,0 +1,52 @@ +#!/sbin/openrc-run +# Copyright 1999-2017 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +depend() { + need localmount vmware + use net +} + +checkconfig() { + checkpath -d /var/run/vmware + + # Check if certificates exist. If not, we need to generate them, ala sshd. + if [ ! -e @@ETCDIR@@/ssl/rui.key -o ! -e @@ETCDIR@@/ssl/rui.crt ]; then + checkpath -d -m 0600 @@ETCDIR@@/ssl + openssl req -x509 -days 365 -newkey rsa:2048 -keyout @@ETCDIR@@/ssl/rui.key -out @@ETCDIR@@/ssl/rui.crt -config @@ETCDIR@@/ssl/hostd.ssl.config + checkpath -f -m 0600 @@ETCDIR@@/ssl/rui.key @@ETCDIR@@/ssl/rui.crt + fi +} + +start() { + checkconfig + + ebegin Starting VMware Authentication Daemon + start-stop-daemon --start \ + --exec @@PREFIX@@/sbin/vmware-authdlauncher + eend $? + ebegin Starting VMware Workstation Server + start-stop-daemon --start \ + --pidfile /var/run/vmware/vmware-hostd.PID \ + --exec @@BINDIR@@/vmware-hostd \ + -- -a -d @@ETCDIR@@/hostd/config.xml + eend $? +} + +stop() { + ebegin "Shutdown VMs in the AutoStart Sequence" + local HOHO_ADMIN="$(@@BINDIR@@/vmware-wssc-adminTool "@@ETCDIR@@/hostd/authorization.xml" 2>/dev/null)" + + if [ "x" != "x${HOHO_ADMIN}" ]; then + @@BINDIR@@/vmware-vim-cmd -U "${HOHO_ADMIN}" hostsvc/autostartmanager/autostop + fi + eend $? + + ebegin Stopping VMware Workstation Server + start-stop-daemon --stop \ + --pidfile /var/run/vmware/vmware-hostd.PID + eend $? + ebegin Stopping VMware Authentication Daemon + killall --wait vmware-authdlauncher + eend $? +} diff --git a/app-emulation/vmware-workstation/vmware-workstation-14.1.2.8497320-r3.ebuild b/app-emulation/vmware-workstation/vmware-workstation-15.0.1.10737736.ebuild similarity index 93% rename from app-emulation/vmware-workstation/vmware-workstation-14.1.2.8497320-r3.ebuild rename to app-emulation/vmware-workstation/vmware-workstation-15.0.1.10737736.ebuild index f4e4e73..0e3fe2d 100644 --- a/app-emulation/vmware-workstation/vmware-workstation-14.1.2.8497320-r3.ebuild +++ b/app-emulation/vmware-workstation/vmware-workstation-15.0.1.10737736.ebuild @@ -3,14 +3,14 @@ EAPI=6 -inherit eutils versionator readme.gentoo-r1 gnome2-utils pam systemd xdg-utils +inherit eapi7-ver eutils readme.gentoo-r1 gnome2-utils pam systemd xdg-utils MY_PN="VMware-Workstation-Full" -MY_PV=$(get_version_component_range 1-3) -PV_MODULES="329.$(get_version_component_range 2-3)" -PV_BUILD=$(get_version_component_range 4) +MY_PV=$(ver_cut 1-3) +PV_MODULES="330.$(ver_cut 2-3)" +PV_BUILD=$(ver_cut 4) MY_P="${MY_PN}-${MY_PV}-${PV_BUILD}" -VMWARE_FUSION_VER="10.1.2_8502123" +VMWARE_FUSION_VER="11.0.1/10738065" # https://softwareupdate.vmware.com/cds/vmw-desktop/fusion/ SYSTEMD_UNITS_TAG="gentoo-02" DESCRIPTION="Emulate a complete PC without the performance overhead of most emulators" @@ -18,9 +18,9 @@ HOMEPAGE="http://www.vmware.com/products/workstation/" SRC_URI=" https://download3.vmware.com/software/wkst/file/${MY_P}.x86_64.bundle macos-guests? ( - https://github.com/DrDonk/unlocker/archive/b036c40ab1922d9abf4f7d68e34f1eca3b4dc2ad.zip -> unlocker-2.1.1_p1.zip - vmware-tools-darwinPre15? ( https://softwareupdate.vmware.com/cds/vmw-desktop/fusion/${VMWARE_FUSION_VER/_//}/packages/com.vmware.fusion.tools.darwinPre15.zip.tar -> com.vmware.fusion.tools.darwinPre15-${PV}.zip.tar ) - vmware-tools-darwin? ( https://softwareupdate.vmware.com/cds/vmw-desktop/fusion/${VMWARE_FUSION_VER/_//}/packages/com.vmware.fusion.tools.darwin.zip.tar -> com.vmware.fusion.tools.darwin-${PV}.zip.tar ) + https://github.com/DrDonk/unlocker/archive/3.0.2.tar.gz -> unlocker-3.0.2.tar.gz + vmware-tools-darwinPre15? ( https://softwareupdate.vmware.com/cds/vmw-desktop/fusion/${VMWARE_FUSION_VER}/packages/com.vmware.fusion.tools.darwinPre15.zip.tar -> com.vmware.fusion.tools.darwinPre15-${PV}.zip.tar ) + vmware-tools-darwin? ( https://softwareupdate.vmware.com/cds/vmw-desktop/fusion/${VMWARE_FUSION_VER}/packages/com.vmware.fusion.tools.darwin.zip.tar -> com.vmware.fusion.tools.darwin-${PV}.zip.tar ) ) systemd? ( https://github.com/akhuettel/systemd-vmware/archive/${SYSTEMD_UNITS_TAG}.tar.gz -> vmware-systemd-${SYSTEMD_UNITS_TAG}.tgz ) " @@ -30,7 +30,7 @@ SLOT="0" KEYWORDS="~amd64" IUSE="bundled-libs cups doc macos-guests +modules ovftool server systemd vix" DARWIN_GUESTS="darwin darwinPre15" -IUSE_VMWARE_GUESTS="${DARWIN_GUESTS} freebsd linux linuxPreGlibc25 netware solaris windows winPre2k winPreVista" +IUSE_VMWARE_GUESTS="${DARWIN_GUESTS} linux linuxPreGlibc25 netware solaris windows winPre2k winPreVista" for guest in ${IUSE_VMWARE_GUESTS}; do IUSE+=" vmware-tools-${guest}" done @@ -193,7 +193,6 @@ RDEPEND=" cups? ( net-print/cups ) sys-apps/tcp-wrappers sys-apps/util-linux - x11-libs/gksu x11-libs/libXxf86vm x11-libs/libdrm x11-libs/libxshmfence @@ -211,7 +210,6 @@ PDEPEND=" DEPEND=" dev-lang/python:2.7 >=dev-util/patchelf-0.9 - macos-guests? ( dev-python/six ) ovftool? ( app-admin/chrpath ) sys-libs/ncurses:5 sys-libs/readline:0 @@ -236,9 +234,10 @@ src_unpack() { fi done - local bundle=${MY_P}.x86_64.bundle - chmod 755 ${bundle} - ./${bundle} --console --extract extracted || die "unable to extract bundle" + local bundle="${MY_P}.x86_64.bundle" + chmod 755 "${bundle}" + # this needs a /tmp mounted without "noexec" because it extracts and executes scripts in there + ./${bundle} --console --required --eulas-agreed --extract=extracted || die "unable to extract bundle" if ! use ovftool; then rm -r extracted/vmware-ovftool || die "unable to remove dir" @@ -323,7 +322,7 @@ To be able to run ${PN} your user must be in the vmware group.\n } src_install() { - local major_minor=$(get_version_component_range 1-2 "${PV}") + local major_minor=$(ver_cut 1-2 "${PV}") local vmware_installer_version=$(cat "${S}/vmware-installer/manifest.xml" | grep -oPm1 "(?<=)[^<]+") # revdep-rebuild entry @@ -349,12 +348,12 @@ src_install() { # workaround for hardcoded search paths needed during shared objects loading if ! use bundled-libs ; then - dosym /usr/$(get_libdir)/libglib-2.0.so.0 \ + dosym ../../../../../../usr/$(get_libdir)/libglib-2.0.so.0 \ "${VM_INSTALL_DIR}"/lib/vmware/lib/libglib-2.0.so.0/libglib-2.0.so.0 # Bug 432918 - dosym /usr/$(get_libdir)/libcrypto.so.1.0.0 \ + dosym ../../../../../../usr/$(get_libdir)/libcrypto.so.1.0.0 \ "${VM_INSTALL_DIR}"/lib/vmware/lib/libcrypto.so.1.0.2/libcrypto.so.1.0.2 - dosym /usr/$(get_libdir)/libssl.so.1.0.0 \ + dosym ../../../../../../usr/$(get_libdir)/libssl.so.1.0.0 \ "${VM_INSTALL_DIR}"/lib/vmware/lib/libssl.so.1.0.2/libssl.so.1.0.2 fi @@ -677,7 +676,7 @@ src_install() { local version="$(grep -oPm1 '(?<=)[^<]+' ${manifest})" sqlite3 "${dbfile}" "INSERT INTO components(name,version,buildNumber,component_core_id,longName,description,type) VALUES(\"vmware-tools-$guest\",\"$version\",\"${PV_BUILD}\",1,\"$guest\",\"$guest\",1);" else - sqlite3 "${dbfile}" "INSERT INTO components(name,version,buildNumber,component_core_id,longName,description,type) VALUES(\"vmware-tools-$guest\",\"${VMWARE_FUSION_VER%_*}\",\"${VMWARE_FUSION_VER#*_}\",1,\"$guest\",\"$guest\",1);" + sqlite3 "${dbfile}" "INSERT INTO components(name,version,buildNumber,component_core_id,longName,description,type) VALUES(\"vmware-tools-$guest\",\"${VMWARE_FUSION_VER%/*}\",\"${VMWARE_FUSION_VER#*/}\",1,\"$guest\",\"$guest\",1);" fi insinto "${VM_INSTALL_DIR}/lib/vmware/isoimages" doins vmware-tools-${guest}/${guest}.iso