Advertisement
Guest User

Untitled

a guest
Apr 3rd, 2025
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.05 KB | None | 0 0
  1. pkgname=vmware-workstation
  2. pkgver=17.6.3
  3. _buildver=24583834
  4. _pkgver=${pkgver}_${_buildver}
  5. pkgrel=2
  6. _tools_version=12.5.0-24276846
  7. _legacy_ver=17.5.2
  8. _legacy_buildver=23775571
  9. _legacy_tools_version=12.4.0_23259341
  10. pkgdesc='The industry standard for running multiple operating systems as virtual machines on a single Linux PC.'
  11. arch=(x86_64)
  12. url='https://www.vmware.com/products/workstation-for-linux.html'
  13. license=(custom)
  14. install="vmware-workstation.install"
  15. conflicts=(
  16. vmware-modules-dkms
  17. vmware-ovftool
  18. vmware-patch
  19. vmware-systemd-services
  20. )
  21. provides=(
  22. vmware-ovftool
  23. )
  24. depends=(
  25. dkms
  26. fuse2
  27. gtkmm3
  28. libcanberra
  29. libaio
  30. pcsclite
  31. hicolor-icon-theme
  32. libxcrypt-compat # needed for ovftool
  33. # needed to use Arch GTK3 library (for theme integration)
  34. gtk3
  35. gcr
  36. )
  37. optdepends=(
  38. 'linux-headers: build modules against Arch kernel'
  39. )
  40. makedepends=(
  41. sqlite
  42. )
  43. backup=(
  44. 'etc/vmware/config'
  45. 'etc/conf.d/vmware'
  46. )
  47. source=(
  48. "https://softwareupdate.vmware.com/cds/vmw-desktop/ws/${pkgver}/${_buildver}/linux/core/VMware-Workstation-${_pkgver/_/-}.${CARCH}.bundle.tar"
  49. 'vmware-bootstrap'
  50. 'vmware-vix-bootstrap'
  51. 'config'
  52. 'configure-initscript.sh'
  53. 'vmware-environment.sh'
  54.  
  55. 'vmware-networks-configuration.service'
  56. 'vmware-networks.service'
  57. 'vmware-usbarbitrator.service'
  58. 'vmware-networks.path'
  59. 'vmware-usbarbitrator.path'
  60.  
  61. 'dkms.conf.in'
  62. 'Makefile'
  63. 'vmmon.patch'
  64. 'vmnet.patch'
  65. )
  66. sha256sums=('85ca2c19a13b0d85b121a5f737408c3d7f96dae7cde7cb5f5bbfa4f582fdeef3'
  67. '12e7b16abf8d7e858532edabb8868919c678063c566a6535855b194aac72d55e'
  68. 'da1698bf4e73ae466c1c7fc93891eba4b9c4581856649635e6532275dbfea141'
  69. 'ac81b0470feebba36482fbb2a9f641fef98924711bf761c0e6fdec67178194de'
  70. '48d203450db426e8780f3696a2cf85ee08db004e93f8aca50a9aa24129b1e839'
  71. 'b94959a11b28e51b541321be0588190eb10825e9ff55cbd16eb01483a839a69f'
  72. '9b4fbe0ba83f761a2eb9ecd05d48428f8b0a5b3abd8404ccbd928408e682f02b'
  73. 'c0a5aea785db06921fb350d36d5e0fd9a14f5eee0c835686ec6fea1af8c92245'
  74. 'd7a9fbf39a0345ae2f14f7f389f30b1110f605d187e0c241e99bbb18993c250d'
  75. '16a73931894a65d43da489ff25d07647c0ecddf60d443b103bceca63504910fe'
  76. 'fe1b1be8297f4170406f97dd1f8b385d911faf45afe19cbc0c26b8092b3ddf8d'
  77. '10562d11d50edab9abc2b29c8948714edcb9b084f99b3766d07ddd21259e372e'
  78. '273d4357599a3e54259c78cc49054fef8ecfd2c2eda35cbcde3a53a62777a5ac'
  79. '32ae0ba7836c2212b819e3e7ec3f96667c1ac6d5083003eab1e794f0c032f640'
  80. '74453f184ff57390ea0696144f0fc767cc875635595c964d5d5e7924a01c82d8')
  81. options=(!strip emptydirs !debug)
  82.  
  83. if [ -z "$_remove_vmware_keymaps_dependency" ]; then
  84. depends+=(
  85. vmware-keymaps
  86. )
  87. fi
  88.  
  89.  
  90. _isoimages=(linux linuxPreGlibc25 netware solaris windows winPre2k winPreVista)
  91.  
  92. if [ -n "$_enable_macOS_guests" ]; then
  93.  
  94. _vmware_fusion_ver=13.5.2
  95. _vmware_fusion_buildver=23775688
  96. _vmware_fusion_ver_full=${_vmware_fusion_ver}_${_vmware_fusion_buildver}
  97. # List of VMware Fusion versions: https://softwareupdate.vmware.com/cds/vmw-desktop/fusion/
  98.  
  99. makedepends+=(
  100. python
  101. 7zip
  102. uefitool
  103. )
  104.  
  105. source+=(
  106. "VMware-Fusion-${_vmware_fusion_ver_full/_/-}_universal.zip.tar::https://softwareupdate.vmware.com/cds/vmw-desktop/fusion/${_vmware_fusion_ver}/${_vmware_fusion_buildver}/universal/core/com.vmware.fusion.zip.tar"
  107. "unlocker.py"
  108. "efi-patches.txt"
  109. )
  110.  
  111. sha256sums+=(
  112. '4d470e2160acb5da7d52d478f6ef12829c5ebe3c04e3154652466ba0bfeed3f6'
  113. '8a61e03d0edbbf60c1c84a43aa87a6e950f82d2c71b968888f019345c2f684f3'
  114. '392c1effcdec516000e9f8ffc97f2586524d8953d3e7d6f2c5f93f2acd809d91'
  115. )
  116.  
  117. _fusion_isoimages=(darwin darwinPre15)
  118. fi
  119.  
  120.  
  121. _create_database_file() {
  122. # Create a database which contains the list of guest tools (necessary to avoid that vmware try to download them)
  123. local database_filename="$pkgdir/etc/vmware-installer/database"
  124. echo -n "" > "$database_filename"
  125.  
  126. sqlite3 "$database_filename" "CREATE TABLE settings(key VARCHAR PRIMARY KEY, value VARCHAR NOT NULL, component_name VARCHAR NOT NULL);"
  127. sqlite3 "$database_filename" "INSERT INTO settings(key,value,component_name) VALUES('db.schemaVersion','2','vmware-installer');"
  128. sqlite3 "$database_filename" "CREATE TABLE components(id INTEGER PRIMARY KEY, name VARCHAR NOT NULL, version VARCHAR NOT NULL, buildNumber INTEGER NOT NULL, component_core_id INTEGER NOT NULL, longName VARCHAR NOT NULL, description VARCHAR, type INTEGER NOT NULL);"
  129. }
  130.  
  131. prepare() {
  132. extracted_dir="$srcdir/extracted"
  133. [[ -d "$extracted_dir" ]]
  134.  
  135. if [ -n "$_enable_macOS_guests" ]; then
  136. 7z e -y com.vmware.fusion.zip payload/VMware\ Fusion.app/Contents/Library/isoimages/\* -o"fusion-isoimages" > /dev/null
  137.  
  138. sed -i -e "s|/usr/lib/vmware/|${pkgdir}/usr/lib/vmware/|" "$srcdir/unlocker.py"
  139. fi
  140. }
  141.  
  142. package() {
  143. local vmware_installer_version=$(cat "$srcdir/extracted/vmware-installer/manifest.xml" | grep -oPm1 "(?<=<version>)[^<]+")
  144.  
  145. # Make directories and copy files.
  146.  
  147. mkdir -p \
  148. "$pkgdir/etc"/{pam.d,modprobe.d,vmware} \
  149. "$pkgdir/usr"/{share,bin} \
  150. "$pkgdir/usr/include/vmware-vix" \
  151. "$pkgdir/usr/lib"/{vmware/setup,vmware-vix,vmware-ovftool,vmware-installer/"$vmware_installer_version",modules-load.d} \
  152. "$pkgdir/usr/share"/{doc/vmware-vix,licenses/"$pkgname"} \
  153. "$pkgdir/var/lib/vmware/Shared VMs"
  154.  
  155. cd "$srcdir/extracted"
  156.  
  157. cp -r \
  158. vmware-workstation/share/* \
  159. vmware-workstation/man \
  160. vmware-network-editor-ui/share/* \
  161. vmware-player-app/share/* \
  162. "$pkgdir/usr/share"
  163.  
  164. cp -r \
  165. vmware-workstation/bin/* \
  166. vmware-vmx/{,s}bin/* \
  167. vmware-vix-core/bin/* \
  168. vmware-vprobe/bin/* \
  169. vmware-player-app/bin/* \
  170. "$pkgdir/usr/bin"
  171.  
  172. cp -r \
  173. vmware-workstation/lib/* \
  174. vmware-player-app/lib/* \
  175. vmware-vmx/{lib/*,roms} \
  176. vmware-vprobe/lib/* \
  177. vmware-usbarbitrator/bin \
  178. vmware-network-editor/lib \
  179. "$pkgdir/usr/lib/vmware"
  180.  
  181. cp -r \
  182. vmware-player-setup/vmware-config \
  183. "$pkgdir/usr/lib/vmware/setup"
  184.  
  185. cp -r \
  186. vmware-vix-lib-Workstation1700/lib/Workstation-17.0.0 \
  187. vmware-vix-core/{lib/*,vixwrapper-config.txt} \
  188. "$pkgdir/usr/lib/vmware-vix"
  189.  
  190. cp -r \
  191. vmware-vix-core/doc/* \
  192. "$pkgdir/usr/share/doc/vmware-vix"
  193.  
  194. cp -r \
  195. vmware-ovftool/* \
  196. "$pkgdir/usr/lib/vmware-ovftool"
  197.  
  198. cp -r \
  199. vmware-installer/{python,sopython,vmis,vmis-launcher,vmware-installer,vmware-installer.py} \
  200. "$pkgdir/usr/lib/vmware-installer/$vmware_installer_version"
  201.  
  202. cp -r \
  203. vmware-vix-core/include/* \
  204. "$pkgdir/usr/include/vmware-vix"
  205.  
  206. install -Dm 644 "vmware-workstation/doc/EULA" "$pkgdir/usr/share/doc/vmware-workstation/EULA"
  207. ln -s "/usr/share/doc/vmware-workstation/EULA" "$pkgdir/usr/share/licenses/$pkgname/VMware Workstation - EULA.txt"
  208. ln -s "/usr/lib/vmware-ovftool/vmware.eula" "$pkgdir/usr/share/licenses/$pkgname/VMware OVF Tool - EULA.txt"
  209. install -Dm 644 "vmware-workstation/doc"/open_source_licenses.txt "$pkgdir/usr/share/licenses/$pkgname/VMware Workstation open source license.txt"
  210. install -Dm 644 "vmware-workstation/doc"/ovftool_open_source_licenses.txt "$pkgdir/usr/share/licenses/$pkgname/VMware OVF Tool open source license.txt"
  211. install -Dm 644 "vmware-vix-core"/open_source_licenses.txt "$pkgdir/usr/share/licenses/$pkgname/VMware VIX open source license.txt"
  212. rm "$pkgdir/usr/lib/vmware-ovftool"/{vmware-eula.rtf,open_source_licenses.txt,manifest.xml}
  213.  
  214. install -d -m 755 "$pkgdir/usr/lib/vmware-installer/$vmware_installer_version"/{lib/lib,artwork}
  215. install -Dm 755 "$srcdir/configure-initscript.sh" "$pkgdir/usr/lib/vmware-installer/$vmware_installer_version/bin/configure-initscript.sh"
  216.  
  217. install -Dm 644 "vmware-vmx/etc/modprobe.d/modprobe-vmware-fuse.conf" "$pkgdir/etc/modprobe.d/vmware-fuse.conf"
  218.  
  219. install -Dm 644 vmware-vmx/extra/modules.xml "$pkgdir"/usr/lib/vmware/modules/modules.xml
  220. install -Dm 644 vmware-installer/bootstrap "$pkgdir"/etc/vmware-installer/bootstrap
  221. install -Dm 644 "$srcdir"/vmware-vix-bootstrap "$pkgdir"/etc/vmware-vix/bootstrap
  222. install -Dm 644 "$srcdir"/vmware-bootstrap "$pkgdir"/etc/vmware/bootstrap
  223. install -Dm 644 "$srcdir"/config "$pkgdir"/etc/vmware/config
  224.  
  225. if [ -z "$_remove_vmware_keymaps_dependency" ]; then
  226. rm -r "$pkgdir/usr/lib/vmware/xkeymap" # these files are provided by vmware-keymaps package
  227. fi
  228.  
  229. echo -e "vmw_vmci\nvmmon" > "$pkgdir/usr/lib/modules-load.d/vmware.conf"
  230.  
  231. for service_file in \
  232. vmware-networks-configuration.service \
  233. vmware-networks.service \
  234. vmware-usbarbitrator.service \
  235. vmware-networks.path \
  236. vmware-usbarbitrator.path
  237. do
  238. install -Dm 644 \
  239. "$srcdir/$service_file" \
  240. "$pkgdir/usr/lib/systemd/system/$service_file"
  241. done
  242.  
  243.  
  244. # Apply permissions where necessary.
  245.  
  246. chmod +x \
  247. "$pkgdir/usr/bin"/* \
  248. "$pkgdir/usr/lib/vmware/bin"/* \
  249. "$pkgdir/usr/lib/vmware/setup"/* \
  250. "$pkgdir/usr/lib/vmware/lib"/libvmware-gksu.so/gksu-run-helper \
  251. "$pkgdir/usr/lib/vmware-ovftool"/{ovftool,ovftool.bin} \
  252. "$pkgdir/usr/lib/vmware-installer/$vmware_installer_version"/{vmware-installer,vmis-launcher} \
  253. "$pkgdir/usr/lib/vmware-vix/setup"/*
  254.  
  255. chmod +s \
  256. "$pkgdir/usr/bin"/vmware-authd \
  257. "$pkgdir/usr/lib/vmware/bin"/{vmware-vmx,vmware-vmx-debug,vmware-vmx-stats}
  258.  
  259.  
  260. # Add symlinks the installer would create.
  261.  
  262. for link in \
  263. licenseTool \
  264. vmplayer \
  265. vmware \
  266. vmware-app-control \
  267. vmware-enter-serial \
  268. vmware-fuseUI \
  269. vmware-gksu \
  270. vmware-modconfig \
  271. vmware-modconfig-console \
  272. vmware-mount \
  273. vmware-netcfg \
  274. vmware-setup-helper \
  275. vmware-tray \
  276. vmware-vmblock-fuse \
  277. vmware-vprobe \
  278. vmware-zenity
  279. do
  280. ln -s /usr/lib/vmware/bin/appLoader "$pkgdir/usr/lib/vmware/bin/$link"
  281. done
  282.  
  283. for link in \
  284. vmrest
  285. do
  286. ln -s /usr/lib/vmware/bin/appLoader "$pkgdir/usr/bin/$link"
  287. done
  288.  
  289. for link in \
  290. vmware-fuseUI \
  291. vmware-mount \
  292. vmware-netcfg \
  293. vmware-usbarbitrator
  294. do
  295. ln -s /usr/lib/vmware/bin/$link "$pkgdir/usr/bin/$link"
  296. done
  297.  
  298. ln -s /usr/lib/vmware/icu "$pkgdir/etc/vmware/icu"
  299. ln -s /usr/lib/vmware-ovftool/ovftool "$pkgdir/usr/bin/ovftool"
  300. ln -s /usr/lib/vmware-vix/libvixAllProducts.so "$pkgdir/usr/lib/libvixAllProducts.so"
  301.  
  302.  
  303. # Replace placeholder "variables" with real paths.
  304.  
  305. for file in \
  306. gtk-3.0/gdk-pixbuf.loaders
  307. do
  308. sed -i 's,@@LIBCONF_DIR@@,/usr/lib/vmware/libconf,g' "$pkgdir/usr/lib/vmware/libconf/etc/$file"
  309. done
  310.  
  311. sed -i 's,@@BINARY@@,/usr/bin/vmware,' "$pkgdir/usr/share/applications/vmware-workstation.desktop"
  312. sed -i 's,@@BINARY@@,/usr/bin/vmplayer,' "$pkgdir/usr/share/applications/vmware-player.desktop"
  313. sed -i 's,@@BINARY@@,/usr/bin/vmware-netcfg,' "$pkgdir/usr/share/applications/vmware-netcfg.desktop"
  314.  
  315. sed \
  316. -e "s/@@VERSION@@/$vmware_installer_version/" \
  317. -e "s,@@VMWARE_INSTALLER@@,/usr/lib/vmware-installer/$vmware_installer_version," \
  318. -i "$pkgdir/etc/vmware-installer/bootstrap"
  319.  
  320.  
  321. # Patch up the VMware kernel sources and configure DKMS.
  322.  
  323. dkms_dir="$pkgdir/usr/src/$pkgname-$_pkgver"
  324.  
  325. install -Dm 644 "$srcdir/Makefile" "$dkms_dir/Makefile"
  326. install -Dm 644 "$srcdir/dkms.conf.in" "$dkms_dir/dkms.conf"
  327.  
  328. sed \
  329. -e "s/@PKGNAME@/$pkgname/g" \
  330. -e "s/@PKGVER@/$_pkgver/g" \
  331. -i "$dkms_dir/dkms.conf"
  332.  
  333. for module in vmmon vmnet; do
  334. tar -xf "vmware-vmx/lib/modules/source/$module.tar" -C "$dkms_dir"
  335. msg "Patching $module module for DKMS"
  336. patch -p2 --read-only=ignore --directory="$dkms_dir/$module-only" < "$srcdir/$module.patch"
  337. done
  338.  
  339. rm -r "$pkgdir/usr/lib/vmware/modules/source"
  340.  
  341. if [ -n "$_enable_macOS_guests" ]; then
  342. msg "Patching VMware to enable macOS guest support"
  343. python3 "$srcdir/unlocker.py" > /dev/null
  344.  
  345. for isoimage in ${_fusion_isoimages[@]}
  346. do
  347. install -Dm 644 "$srcdir/fusion-isoimages/$isoimage.iso" "$pkgdir/usr/lib/vmware/isoimages/$isoimage.iso"
  348. done
  349.  
  350. msg "Patching EFI firmwares to disable macOS server checking"
  351. _efi_arch=("32" "64" "20-32" "20-64")
  352. for arch in ${_efi_arch[@]}
  353. do
  354. uefipatch "$pkgdir/usr/lib/vmware/roms/EFI${arch}.ROM" "$srcdir/efi-patches.txt" -o "$pkgdir/usr/lib/vmware/roms/EFI${arch}.ROM" > /dev/null
  355. done
  356. fi
  357.  
  358. _create_database_file
  359.  
  360. # Define some environment variables for VMware and remove the tests about kernel modules
  361. install -Dm 644 "$srcdir/vmware-environment.sh" "$pkgdir/etc/conf.d/vmware"
  362. for program in vmware vmplayer vmware-tray; do
  363. sed -e '/export PRODUCT_NAME/asource /etc/conf.d/vmware' \
  364. -e 's/if "$BINDIR"\/vmware-modconfig --appname=.*/if true ||/' \
  365. -i "$pkgdir/usr/bin/$program"
  366. done
  367.  
  368. # Add StartupWMClass attribute to desktop files
  369. sed -i '/^StartupNotify=.*/a StartupWMClass=vmware' "$pkgdir/usr/share/applications/vmware-workstation.desktop"
  370. sed -i '/^StartupNotify=.*/a StartupWMClass=vmplayer' "$pkgdir/usr/share/applications/vmware-player.desktop"
  371. sed -i '/^StartupNotify=.*/a StartupWMClass=vmware-netcfg' "$pkgdir/usr/share/applications/vmware-netcfg.desktop"
  372. }
  373.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement