Created
June 9, 2021 09:41
-
-
Save class101/8ecb2c6dc8ebb7428a01eb56b2c5f9c5 to your computer and use it in GitHub Desktop.
Add Load-On-Demand support for the services of ArchLinux aur/vmware-workstation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
From 31d0cce5d03127d69c5628881b300066f0602f94 Mon Sep 17 00:00:00 2001 | |
From: Arnaud Dovi <[email protected]> | |
Date: Wed, 9 Jun 2021 11:40:24 +0200 | |
Subject: [PATCH] Add Load-On-Demand support for the services of | |
aur/vmware-workstation | |
PKGBUILD: added vmware-*.path files | |
vmware-*.service: removed the [Install] section in order to prevent the activation of the service by the user | |
vmware-*.install: enable path files automatically, disable service files | |
--- | |
PKGBUILD | 12 +++++++++--- | |
vmware-networks.path | 8 ++++++++ | |
vmware-networks.service | 3 --- | |
vmware-usbarbitrator.path | 8 ++++++++ | |
vmware-usbarbitrator.service | 3 --- | |
vmware-workstation.install | 10 ++++++---- | |
6 files changed, 31 insertions(+), 13 deletions(-) | |
create mode 100644 vmware-networks.path | |
create mode 100644 vmware-usbarbitrator.path | |
diff --git a/PKGBUILD b/PKGBUILD | |
index acc40bc..86fb649 100644 | |
--- a/PKGBUILD | |
+++ b/PKGBUILD | |
@@ -65,7 +65,9 @@ source=( | |
'vmware-networks-configuration.service' | |
'vmware-networks.service' | |
+ 'vmware-networks.path' | |
'vmware-usbarbitrator.service' | |
+ 'vmware-usbarbitrator.path' | |
'dkms.conf.in' | |
'Makefile' | |
@@ -82,8 +84,10 @@ sha256sums=( | |
'b94959a11b28e51b541321be0588190eb10825e9ff55cbd16eb01483a839a69f' | |
'9b4fbe0ba83f761a2eb9ecd05d48428f8b0a5b3abd8404ccbd928408e682f02b' | |
- 'c0a5aea785db06921fb350d36d5e0fd9a14f5eee0c835686ec6fea1af8c92245' | |
- 'd7a9fbf39a0345ae2f14f7f389f30b1110f605d187e0c241e99bbb18993c250d' | |
+ '359678bee407e4b9ed624af06fd7297bed0b7d904bc332dcd9937ff86f609a0d' | |
+ '7772e6860f055bf4fc0f6233a6ae61cdb3ee34817490319de811c1a42505b170' | |
+ '071fa1a0f8cd23a6b207e7c184af95bdcaf7f4c799fb575be87b9ba1b32f66b1' | |
+ '2e2b1780ad08bcac2f3bc216e0c19bb0cd90ec8dd885b57df8fef3cd13aaaf14' | |
'10562d11d50edab9abc2b29c8948714edcb9b084f99b3766d07ddd21259e372e' | |
'273d4357599a3e54259c78cc49054fef8ecfd2c2eda35cbcde3a53a62777a5ac' | |
@@ -283,7 +287,9 @@ fi | |
for service_file in \ | |
vmware-networks-configuration.service \ | |
vmware-networks.service \ | |
- vmware-usbarbitrator.service | |
+ vmware-usbarbitrator.service \ | |
+ vmware-networks.path \ | |
+ vmware-usbarbitrator.path | |
do | |
install -Dm 644 \ | |
"$srcdir/$service_file" \ | |
diff --git a/vmware-networks.path b/vmware-networks.path | |
new file mode 100644 | |
index 0000000..01beca6 | |
--- /dev/null | |
+++ b/vmware-networks.path | |
@@ -0,0 +1,8 @@ | |
+[Unit] | |
+Description=Monitor to Load-On-Demand the VMware Networks service | |
+ | |
+[Path] | |
+PathModified=/run/vmware | |
+ | |
+[Install] | |
+WantedBy=paths.target | |
diff --git a/vmware-networks.service b/vmware-networks.service | |
index 7d520a2..4e37157 100644 | |
--- a/vmware-networks.service | |
+++ b/vmware-networks.service | |
@@ -8,6 +8,3 @@ Type=forking | |
ExecStartPre=-/sbin/modprobe vmnet | |
ExecStart=/usr/bin/vmware-networks --start | |
ExecStop=/usr/bin/vmware-networks --stop | |
- | |
-[Install] | |
-WantedBy=multi-user.target | |
diff --git a/vmware-usbarbitrator.path b/vmware-usbarbitrator.path | |
new file mode 100644 | |
index 0000000..e79fa8e | |
--- /dev/null | |
+++ b/vmware-usbarbitrator.path | |
@@ -0,0 +1,8 @@ | |
+[Unit] | |
+Description=Monitor to Load-On-Demand the VMware USB Arbitrator | |
+ | |
+[Path] | |
+PathModified=/run/vmware | |
+ | |
+[Install] | |
+WantedBy=paths.target | |
diff --git a/vmware-usbarbitrator.service b/vmware-usbarbitrator.service | |
index fd1d9ca..a2d4445 100644 | |
--- a/vmware-usbarbitrator.service | |
+++ b/vmware-usbarbitrator.service | |
@@ -3,6 +3,3 @@ Description=VMware USB Arbitrator | |
[Service] | |
ExecStart=/usr/lib/vmware/bin/vmware-usbarbitrator -f | |
- | |
-[Install] | |
-WantedBy=multi-user.target | |
diff --git a/vmware-workstation.install b/vmware-workstation.install | |
index 87af854..e465b95 100644 | |
--- a/vmware-workstation.install | |
+++ b/vmware-workstation.install | |
@@ -1,15 +1,17 @@ | |
post_install() { | |
+ modprobe -a vmw_vmci vmmon > /dev/null 2>&1 | |
+ systemctl enable --now vmware-networks.path vmware-usbarbitrator.path | |
cat << EOF | |
-==> Before using VMware, you need to reboot or load vmw_vmci and vmmon kernel modules (in a terminal on root: modprobe -a vmw_vmci vmmon) | |
-==> You may also need to enable some of these services: | |
-- vmware-networks.service: to have network access inside VMs | |
-- vmware-usbarbitrator.service: to connect USB devices inside VMs | |
+==> After the first installation, a reboot of the system might be necessary if you see vmware complaining about a missing vmmon device upon starting up a vm. | |
EOF | |
+# Ensure the old AUR users don't load the vmware service permanently anymore | |
+systemctl disable --now vmware-networks.service vmware-usbarbitrator.service > /dev/null 2>&1 | |
} | |
post_remove() { | |
+ systemctl disable --now vmware-networks.path vmware-usbarbitrator.path | |
cat << EOF | |
==> To remove VMware settings, delete /etc/vmware and /etc/vmware-installer directories. | |
-- | |
2.32.0 | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment