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
This commit is contained in:
parent
f07b1acaaa
commit
e0062f011b
|
@ -1,15 +1,11 @@
|
||||||
AUX 329-00-vmmon-quick-workaround-for-objtool-warnings.patch 1555 BLAKE2B dd4a58e78634aed9d5fb64bcb02b999d55be6b87e496c8daf640f7027aba3942f4e415125ba8fb847fa832336560d4bdbb0f539fefea3b4d2c175f2cbb33a9d7 SHA512 892bde81c721c18264e154cdfadd6b560af37260c9a457ec321fdf6bdf78b1704df57532b0919ed7dbc5c1036230b95f0cbacb7acbfd15da2145e3445da795f7
|
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-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-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.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.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.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.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-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-329.1.3.ebuild 3765 BLAKE2B dddfe3d1f5a9bcd1245ceea3333ea13c33ceb52471efef9853fe3af8d5686949be72a282120c3c53328486739b93c8c37eb6900defbec8ce26bb12c549d150e7 SHA512 449bd7875dd96babb22fcbbb0ea69b5be2193746e73d856fd86c19796af6988c590061114795b30b3ebe4f2dd5cb311cfbcbc9b70bf4812575b4b041fe4b31c3
|
||||||
|
EBUILD vmware-modules-330.0.1.ebuild 3330 BLAKE2B f43fa5d255ab0349d874fb28074992032ded368c926f87aafafef423f84459cd550db92c588ca67ed2a0cc9db928c20c8fe8a254afbe316d07c08f59d67610bb SHA512 92d53fd22a40fb9520e52e0073e5e326aaa332797b06d8dcf19987444ba456bb06a8dc1fc4f0c70cb97fb13932db82db1cc0be5b1ad52bc727fce836df6de21a
|
||||||
|
|
|
@ -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 <mkubecek@suse.cz>
|
From: Michal Kubecek <mkubecek@suse.cz>
|
||||||
Date: Sun, 17 Jun 2018 15:54:09 +0200
|
Date: Mon, 20 Aug 2018 07:46:13 +0200
|
||||||
Subject: [PATCH 4/4] vmmon: compatibility with eventpoll switch to poll_mask()
|
Subject: [PATCH] vmmon: check presence of file_operations::poll()
|
||||||
|
|
||||||
Since commit 11c5ad0ec441 ("eventpoll: switch to ->poll_mask") in
|
Commit 11c5ad0ec441 ("eventpoll: switch to ->poll_mask") in v4.18-rc1, made
|
||||||
v4.18-rc1, eventpoll switched from ->poll() to ->poll_mask(). Rather than
|
eventpoll switch from ->poll() to ->poll_mask(), resulting in a null
|
||||||
calling the callback directly (which would result in null pointer
|
pointer dereference as vmmon calls the callback directly without checking
|
||||||
dereference), use vfs_poll() wrapper. As this wrapper is only available
|
its availability.
|
||||||
since 4.18-rc1 cycle as well, provide a copy to use when building against
|
|
||||||
older kernels.
|
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/include/compat_poll.h | 30 ++++++++++++++++++++++++++++++
|
||||||
vmmon-only/linux/hostif.c | 3 ++-
|
vmmon-only/linux/hostif.c | 3 ++-
|
||||||
|
@ -52,7 +60,7 @@ index 0000000..562cdb6
|
||||||
+
|
+
|
||||||
+#endif /* __COMPAT_POLL_H__ */
|
+#endif /* __COMPAT_POLL_H__ */
|
||||||
diff --git a/vmmon-only/linux/hostif.c b/vmmon-only/linux/hostif.c
|
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
|
--- a/vmmon-only/linux/hostif.c
|
||||||
+++ b/vmmon-only/linux/hostif.c
|
+++ b/vmmon-only/linux/hostif.c
|
||||||
@@ -74,6 +74,7 @@
|
@@ -74,6 +74,7 @@
|
||||||
|
@ -63,7 +71,7 @@ index b793539..61d00df 100644
|
||||||
|
|
||||||
#if !defined(CONFIG_HIGH_RES_TIMERS)
|
#if !defined(CONFIG_HIGH_RES_TIMERS)
|
||||||
#error CONFIG_HIGH_RES_TIMERS required for acceptable performance
|
#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);
|
poll_initwait(&table);
|
||||||
current->state = TASK_INTERRUPTIBLE;
|
current->state = TASK_INTERRUPTIBLE;
|
||||||
|
@ -73,5 +81,5 @@ index b793539..61d00df 100644
|
||||||
vm->vmhost->vcpuSemaTask[vcpuid] = current;
|
vm->vmhost->vcpuSemaTask[vcpuid] = current;
|
||||||
schedule_timeout(timeoutms * HZ / 1000); // convert to Hz
|
schedule_timeout(timeoutms * HZ / 1000); // convert to Hz
|
||||||
--
|
--
|
||||||
2.18.0
|
2.19.0
|
||||||
|
|
|
@ -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,
|
|
||||||
+
|
|
||||||
};
|
|
|
@ -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 <linux/stat.h>
|
|
||||||
#include <linux/fs.h>
|
|
||||||
|
|
||||||
-#include <asm/uaccess.h>
|
|
||||||
+#include <linux/uaccess.h>
|
|
||||||
|
|
||||||
#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 <linux/fs.h>
|
|
||||||
#include <linux/time.h>
|
|
||||||
#include <linux/namei.h>
|
|
||||||
+#include <linux/cred.h>
|
|
||||||
|
|
||||||
#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__ */
|
|
|
@ -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 <linux/file.h>
|
|
||||||
#include <linux/fs.h>
|
|
||||||
+#include <linux/vmalloc.h>
|
|
||||||
#include <linux/init.h>
|
|
||||||
#if defined(__x86_64__) && LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 12)
|
|
||||||
# include <linux/ioctl32.h>
|
|
||||||
@@ -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 <linux/socket.h> /* For memcpy_{to,from}iovec(). */
|
|
||||||
#include <linux/vmalloc.h>
|
|
||||||
#include <linux/wait.h>
|
|
||||||
+#include <linux/skbuff.h>
|
|
||||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 99)
|
|
||||||
+#include <linux/sched/signal.h>
|
|
||||||
+#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;
|
|
|
@ -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 <linux/sched/signal.h>
|
|
||||||
+#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;
|
|
|
@ -3,10 +3,7 @@
|
||||||
|
|
||||||
EAPI=6
|
EAPI=6
|
||||||
|
|
||||||
inherit eutils flag-o-matic linux-info linux-mod user versionator udev
|
inherit eapi7-ver eutils flag-o-matic linux-info linux-mod user udev
|
||||||
|
|
||||||
PV_MAJOR=$(get_major_version)
|
|
||||||
PV_MINOR=$(get_version_component_range 2-3)
|
|
||||||
|
|
||||||
DESCRIPTION="VMware kernel modules"
|
DESCRIPTION="VMware kernel modules"
|
||||||
HOMEPAGE="http://www.vmware.com/"
|
HOMEPAGE="http://www.vmware.com/"
|
||||||
|
@ -20,7 +17,7 @@ IUSE=""
|
||||||
|
|
||||||
RDEPEND=""
|
RDEPEND=""
|
||||||
DEPEND="
|
DEPEND="
|
||||||
=app-emulation/vmware-workstation-14.${PV_MINOR}*
|
=app-emulation/vmware-workstation-15.$(ver_cut 2-3)*
|
||||||
"
|
"
|
||||||
|
|
||||||
S=${WORKDIR}
|
S=${WORKDIR}
|
||||||
|
@ -62,14 +59,15 @@ src_unpack() {
|
||||||
|
|
||||||
src_prepare() {
|
src_prepare() {
|
||||||
# from https://github.com/mkubecek/vmware-host-modules/tree/workstation-14.1.1
|
# 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 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}/${PV_MAJOR}-4.10-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}/${PV_MAJOR}-4.12-00-vmmon-use-standard-definition-of-MSR_MISC_FEATURES_E.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}/${PV_MAJOR}-4.13-00-vmmon-use-standard-definition-of-CR3_PCID_MASK-if-av.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}/${PV_MAJOR}-00-vmmon-quick-workaround-for-objtool-warnings.patch"
|
epatch "${FILESDIR}/329-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"
|
kernel_is ge 4 16 0 && epatch "${FILESDIR}/329-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}/329-01-vmmon-fix-always_inline-attribute-usage.patch"
|
||||||
epatch "${FILESDIR}/${PV_MAJOR}-02-vmmon-fix-indirect-call-with-retpoline-build.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
|
# 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"
|
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() {
|
pkg_postinst() {
|
||||||
linux-mod_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
|
|
||||||
}
|
}
|
|
@ -1,13 +1,16 @@
|
||||||
AUX configure-hostd.sh 372 BLAKE2B 0ed2d479a46d69ff8498bfac180f0440fb57fb173fc1a427115872a40a47559725623399652e9663fa8a4ca0d7e020d5445bafb6c37f45449dea341fc9f6cce6 SHA512 87c84f5e51e8b4585a9a55f13771cd8b84f2e4e0bb33679e3a1b23eb84a5be5d523a57b6c770095c1d21712a98e9317bbd215ab027843b0586b35ecf9fb85b49
|
AUX configure-hostd.sh 372 BLAKE2B 0ed2d479a46d69ff8498bfac180f0440fb57fb173fc1a427115872a40a47559725623399652e9663fa8a4ca0d7e020d5445bafb6c37f45449dea341fc9f6cce6 SHA512 87c84f5e51e8b4585a9a55f13771cd8b84f2e4e0bb33679e3a1b23eb84a5be5d523a57b6c770095c1d21712a98e9317bbd215ab027843b0586b35ecf9fb85b49
|
||||||
AUX vmware-14.1.rc 2476 BLAKE2B dff25b43c5fa57186be2a5f0ca4606d26cd1c3f3dbeb91d855fc07a9fd576f446983c852c8e0b112c5616bb95dfddc7e2c738b4d0ca341c781d7addcb45068cd SHA512 9bae224387128b2cd221d509e2933042e3925fb041670907d8a47c70a488214206912fe25ab24c0bdeb31591149e62aba374d3fa63fdd08644e09667e195967f
|
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
|
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 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.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-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-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
|
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-14.1.3.9474260.ebuild 21159 BLAKE2B a6ee13192a6a8bf724bb89db154e5e89a19b66e278cdf957341476c5dfa2f6785837e24d07fb63b14768e5a5fff13774aa6074c298ff9149c06e0d5219b47a1e SHA512 290889884c198e8f763f479007fc5517d6df65097a6c006ca18df56c71c95a311a30f3f3f05aaf225c86c863eae6575f66cb258bfc1140385dcef95c09b32ffc
|
||||||
|
EBUILD vmware-workstation-15.0.1.10737736.ebuild 21218 BLAKE2B 8cbfb26c5ac047a5636059b79de42df233971ff6a61f8e4c377b0807b72a8abda830b2f807108847eab3592dcf8b0ed2c171028db591fe9b5a428894937382e7 SHA512 cb61e5f30b7962c0a880c47436902c1bb013cd8c239f40260ab57615f03a135af18abab9f39b85d5e3516f01ea5ac4369e151f4a8f9b2928ba9808c47eda3a68
|
||||||
|
|
|
@ -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
|
||||||
|
}
|
|
@ -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 $?
|
||||||
|
}
|
|
@ -3,14 +3,14 @@
|
||||||
|
|
||||||
EAPI=6
|
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_PN="VMware-Workstation-Full"
|
||||||
MY_PV=$(get_version_component_range 1-3)
|
MY_PV=$(ver_cut 1-3)
|
||||||
PV_MODULES="329.$(get_version_component_range 2-3)"
|
PV_MODULES="330.$(ver_cut 2-3)"
|
||||||
PV_BUILD=$(get_version_component_range 4)
|
PV_BUILD=$(ver_cut 4)
|
||||||
MY_P="${MY_PN}-${MY_PV}-${PV_BUILD}"
|
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"
|
SYSTEMD_UNITS_TAG="gentoo-02"
|
||||||
|
|
||||||
DESCRIPTION="Emulate a complete PC without the performance overhead of most emulators"
|
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="
|
SRC_URI="
|
||||||
https://download3.vmware.com/software/wkst/file/${MY_P}.x86_64.bundle
|
https://download3.vmware.com/software/wkst/file/${MY_P}.x86_64.bundle
|
||||||
macos-guests? (
|
macos-guests? (
|
||||||
https://github.com/DrDonk/unlocker/archive/b036c40ab1922d9abf4f7d68e34f1eca3b4dc2ad.zip -> unlocker-2.1.1_p1.zip
|
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-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 )
|
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 )
|
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"
|
KEYWORDS="~amd64"
|
||||||
IUSE="bundled-libs cups doc macos-guests +modules ovftool server systemd vix"
|
IUSE="bundled-libs cups doc macos-guests +modules ovftool server systemd vix"
|
||||||
DARWIN_GUESTS="darwin darwinPre15"
|
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
|
for guest in ${IUSE_VMWARE_GUESTS}; do
|
||||||
IUSE+=" vmware-tools-${guest}"
|
IUSE+=" vmware-tools-${guest}"
|
||||||
done
|
done
|
||||||
|
@ -193,7 +193,6 @@ RDEPEND="
|
||||||
cups? ( net-print/cups )
|
cups? ( net-print/cups )
|
||||||
sys-apps/tcp-wrappers
|
sys-apps/tcp-wrappers
|
||||||
sys-apps/util-linux
|
sys-apps/util-linux
|
||||||
x11-libs/gksu
|
|
||||||
x11-libs/libXxf86vm
|
x11-libs/libXxf86vm
|
||||||
x11-libs/libdrm
|
x11-libs/libdrm
|
||||||
x11-libs/libxshmfence
|
x11-libs/libxshmfence
|
||||||
|
@ -211,7 +210,6 @@ PDEPEND="
|
||||||
DEPEND="
|
DEPEND="
|
||||||
dev-lang/python:2.7
|
dev-lang/python:2.7
|
||||||
>=dev-util/patchelf-0.9
|
>=dev-util/patchelf-0.9
|
||||||
macos-guests? ( dev-python/six )
|
|
||||||
ovftool? ( app-admin/chrpath )
|
ovftool? ( app-admin/chrpath )
|
||||||
sys-libs/ncurses:5
|
sys-libs/ncurses:5
|
||||||
sys-libs/readline:0
|
sys-libs/readline:0
|
||||||
|
@ -236,9 +234,10 @@ src_unpack() {
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
local bundle=${MY_P}.x86_64.bundle
|
local bundle="${MY_P}.x86_64.bundle"
|
||||||
chmod 755 ${bundle}
|
chmod 755 "${bundle}"
|
||||||
./${bundle} --console --extract extracted || die "unable to extract 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
|
if ! use ovftool; then
|
||||||
rm -r extracted/vmware-ovftool || die "unable to remove dir"
|
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() {
|
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 "(?<=<version>)[^<]+")
|
local vmware_installer_version=$(cat "${S}/vmware-installer/manifest.xml" | grep -oPm1 "(?<=<version>)[^<]+")
|
||||||
|
|
||||||
# revdep-rebuild entry
|
# revdep-rebuild entry
|
||||||
|
@ -349,12 +348,12 @@ src_install() {
|
||||||
|
|
||||||
# workaround for hardcoded search paths needed during shared objects loading
|
# workaround for hardcoded search paths needed during shared objects loading
|
||||||
if ! use bundled-libs ; then
|
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
|
"${VM_INSTALL_DIR}"/lib/vmware/lib/libglib-2.0.so.0/libglib-2.0.so.0
|
||||||
# Bug 432918
|
# 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
|
"${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
|
"${VM_INSTALL_DIR}"/lib/vmware/lib/libssl.so.1.0.2/libssl.so.1.0.2
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -677,7 +676,7 @@ src_install() {
|
||||||
local version="$(grep -oPm1 '(?<=<version>)[^<]+' ${manifest})"
|
local version="$(grep -oPm1 '(?<=<version>)[^<]+' ${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);"
|
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
|
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
|
fi
|
||||||
insinto "${VM_INSTALL_DIR}/lib/vmware/isoimages"
|
insinto "${VM_INSTALL_DIR}/lib/vmware/isoimages"
|
||||||
doins vmware-tools-${guest}/${guest}.iso
|
doins vmware-tools-${guest}/${guest}.iso
|
Loading…
Reference in New Issue