summarylogtreecommitdiffstats
path: root/PKGBUILD
diff options
context:
space:
mode:
Diffstat (limited to 'PKGBUILD')
-rw-r--r--PKGBUILD163
1 files changed, 140 insertions, 23 deletions
diff --git a/PKGBUILD b/PKGBUILD
index bf38a6c2f5f2..5fd673205927 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,21 +1,48 @@
-# Maintainer: Maxwell Pray a.k.a. Synthead <synthead@gmail.com>
+# Maintainer: Jean-Marc Lenoir <archlinux "at" jihemel "dot" com>
+# Contributor: Maxwell Pray a.k.a. Synthead <synthead@gmail.com>
+################################################################################
+# Patch VMware Workstation to enable macOS guests support
+# Uncomment the line below to enable it
+
+#_enable_macOS_guests=y
+
+# CAUTION: Run macOS on a non Apple computer may be forbidden in your country.
+# Source of the patch: https://github.com/DrDonk/unlocker
+# Forum: http://www.insanelymac.com/forum/topic/303311-workstation-1112-player-712-fusion-78-and-esxi-6-mac-os-x-unlocker-2
+################################################################################
+
+#PKGEXT=.pkg.tar
pkgname=vmware-workstation
-pkgver=12.5.2_4638234
-pkgrel=14
+pkgver=12.5.5_5234757
+pkgrel=1
pkgdesc='The industry standard for running multiple operating systems as virtual machines on a single Linux PC.'
arch=(x86_64)
url='https://www.vmware.com/products/workstation-for-linux.html'
license=(custom)
+install="vmware-workstation.install"
conflicts=(
vmware-modules-dkms
vmware-ovftool
+ vmware-patch
vmware-systemd-services
)
+provides=(
+ vmware-ovftool
+)
depends=(
dkms
- linux-headers
+ # needed to replace internal libs:
+ fontconfig
+ zlib
+)
+optdepends=(
+ 'linux-headers: build modules against Arch kernel'
)
+makedepends=(
+ sqlite
+)
+backup=('etc/vmware/config')
source=(
"https://download3.vmware.com/software/wkst/file/VMware-Workstation-Full-${pkgver/_/-}.x86_64.bundle"
@@ -41,7 +68,7 @@ source=(
vsock.patch
)
sha1sums=(
- 70f81c36f13e957fded9577fcd7b9b0fe1481c0c
+ 85082ae7d79ae42b5debe4be1dc210ec5ea69bae
a91b3d711846dafe10f45d89c531dab703bfb113
e57f7715c092d9b1fb74a7baadc07ef214cfb4cd
@@ -57,15 +84,66 @@ sha1sums=(
529556a0db5564dc8237ee327a2ee176bcf2c02d
c1dbfbad3473d12e9c82b75c5f1faf795f3cc217
- 3f6f14f8047941c015e9067f62ae403acc7b563c
- be1fb82253f1a95518c990e930c449eaa426c16b
- b4bd05f5d5a98f90fcbdd515b7bb7e6151951e11
- 4958ce81e7f5b192e1417426fb70748fdd9a15b9
- 51d221c5bc7e3d566d5ce27d0ac603196c12aaf4
- 15ecb9143dfa0135ced2e726eff4800448f3d369
+ 91907f53492e3cfdabffd00b6c56e6a435fc9749
+ f4af25095e51d8f12bfde89282261dbc0f0faa10
+ 73a78bbeac0625d50756da786a59e1e1e5df95f3
+ c183c6a5be9ecf834381832e63d7f39edf147678
+ c5109127f746cb6672f871331bab9bd368d990ac
+ 3ca42f0e86986782827f221cbbd3ed66e7330b73
)
options=(!strip emptydirs)
+
+_isoimages=(freebsd linux linuxPreGlibc25 netware solaris windows winPre2k winPreVista)
+
+if [ -n "$_enable_macOS_guests" ]; then
+
+_vmware_fusion_ver=8.5.6_5234762
+# List of VMware Fusion versions: https://softwareupdate.vmware.com/cds/vmw-desktop/fusion/
+
+makedepends+=(
+ python2
+ unzip
+)
+
+source+=(
+ "https://softwareupdate.vmware.com/cds/vmw-desktop/fusion/${_vmware_fusion_ver/_//}/packages/com.vmware.fusion.tools.darwinPre15.zip.tar"
+ "https://softwareupdate.vmware.com/cds/vmw-desktop/fusion/${_vmware_fusion_ver/_//}/packages/com.vmware.fusion.tools.darwin.zip.tar"
+ unlocker.py
+)
+sha1sums+=(
+ de76483a5c58c4fbdec8dc1e339808497aa2afbb
+ 3dca561a996bea5f356ea47a62f7a0e995b5e7ce
+ 18773b64c403621a9c286797ba3c0ea618b58af6
+)
+
+_fusion_isoimages=(darwin darwinPre15)
+fi
+
+
+_create_database_file() {
+ # Create a database which contains the list of guest tools (necessary to avoid that vmware try to download them)
+ local database_filename="$pkgdir/etc/vmware-installer/database"
+ echo -n "" > $database_filename
+
+ sqlite3 $database_filename "CREATE TABLE settings(key VARCHAR PRIMARY KEY, value VARCHAR NOT NULL, component_name VARCHAR NOT NULL);"
+ sqlite3 $database_filename "INSERT INTO settings(key,value,component_name) VALUES('db.schemaVersion','2','vmware-installer');"
+ 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);"
+
+ for isoimage in ${_isoimages[@]}
+ do
+ local version=$(cat "$srcdir/extracted/vmware-tools-$isoimage/manifest.xml" | grep -oPm1 "(?<=<version>)[^<]+")
+ sqlite3 $database_filename "INSERT INTO components(name,version,buildNumber,component_core_id,longName,description,type) VALUES(\"vmware-tools-$isoimage\",\"$version\",\"${pkgver#*_}\",1,\"$isoimage\",\"$isoimage\",1);"
+ done
+
+if [ -n "$_enable_macOS_guests" ]; then
+ for isoimage in ${_fusion_isoimages[@]}
+ do
+ sqlite3 $database_filename "INSERT INTO components(name,version,buildNumber,component_core_id,longName,description,type) VALUES(\"vmware-tools-$isoimage\",\"0\",\"${_vmware_fusion_ver#*_}\",1,\"$isoimage\",\"$isoimage\",1);"
+ done
+fi
+}
+
prepare() {
extracted_dir="$srcdir/extracted"
[[ -d "$extracted_dir" ]] && rm -r "$extracted_dir"
@@ -73,17 +151,29 @@ prepare() {
bash \
"$(readlink -f "$srcdir/VMware-Workstation-Full-${pkgver/_/-}.x86_64.bundle")" \
--extract "$extracted_dir"
+
+if [ -n "$_enable_macOS_guests" ]; then
+ for isoimage in ${_fusion_isoimages[@]}
+ do
+ unzip -q com.vmware.fusion.tools.$isoimage.zip
+ rm manifest.plist
+ done
+
+ sed -i -e "s/vmx_path = '/vmx_path = '${pkgdir//\//\\/}/" \
+ -i -e "s/vmwarebase = '/vmwarebase = '${pkgdir//\//\\/}/" \
+ -i -e "s/vmx_version = .*$/vmx_version = 'VMware Player ${pkgver/_/ build-}'/" "$srcdir/unlocker.py"
+fi
}
package() {
# Make directories and copy files.
mkdir -p \
- "$pkgdir/usr"/{share,bin,doc} \
- "$pkgdir/usr/lib"/{vmware/setup,vmware-vix,vmware-ovftool} \
+ "$pkgdir/usr"/{share,bin} \
+ "$pkgdir/usr/lib"/{vmware/setup,vmware-vix,vmware-ovftool,vmware-installer/2.1.0} \
"$pkgdir/var/lib/vmware/Shared VMs" \
- "$pkgdir/run/vmware" \
- "$pkgdir/etc/vmware"
+ "$pkgdir/etc/vmware" \
+ "$pkgdir/usr/share/licenses/$pkgname"
cd "$srcdir/extracted"
@@ -92,6 +182,7 @@ package() {
vmware-workstation/doc \
vmware-workstation/man \
vmware-network-editor-ui/share/* \
+ vmware-player-app/share/* \
"$pkgdir/usr/share"
cp -r \
@@ -100,6 +191,7 @@ package() {
vmware-vix-core/bin/* \
vmware-workstation-server/{vmware-hostd,vmware-vim-cmd,vmware-wssc-adminTool} \
vmware-network-editor-ui/bin/* \
+ vmware-player-app/bin/* \
"$pkgdir/usr/bin"
cp -r \
@@ -130,18 +222,20 @@ package() {
vmware-ovftool/* \
"$pkgdir/usr/lib/vmware-ovftool"
- for isoimage in \
- freebsd \
- linux \
- netware \
- solaris \
- winPre2k \
- windows
+ cp -r \
+ vmware-installer/{python,sopython,vmis,vmis-launcher,vmware-installer,vmware-installer.py} \
+ "$pkgdir/usr/lib/vmware-installer/2.1.0"
+
+ for isoimage in ${_isoimages[@]}
do
install -Dm 644 "vmware-tools-$isoimage/$isoimage.iso" "$pkgdir/usr/lib/vmware/isoimages/$isoimage.iso"
install -Dm 644 "vmware-tools-$isoimage/$isoimage.iso.sig" "$pkgdir/usr/lib/vmware/isoimages/$isoimage.iso.sig"
done
+ mv "$pkgdir/usr/lib/vmware/licenses"/* "$pkgdir/usr/share/licenses/$pkgname"
+ rmdir "$pkgdir/usr/lib/vmware/licenses"
+ mv "$pkgdir/usr/share/doc"/{EULA,*open_source_licenses.txt} "$pkgdir/usr/share/licenses/$pkgname"
+
install -Dm 644 vmware-player-app/lib/isoimages/tools-key.pub "$pkgdir/usr/lib/vmware/isoimages/tools-key.pub"
install -Dm 644 vmware-vmx/extra/modules.xml "$pkgdir/usr/lib/vmware/modules/modules.xml"
@@ -171,7 +265,8 @@ package() {
"$pkgdir/usr/lib/vmware/bin"/* \
"$pkgdir/usr/lib/vmware/setup/vmware-config" \
"$pkgdir/usr/lib/vmware/lib"/{wrapper-gtk24.sh,libgksu2.so.0/gksu-run-helper} \
- "$pkgdir/usr/lib/vmware-ovftool"/{ovftool,ovftool.bin}
+ "$pkgdir/usr/lib/vmware-ovftool"/{ovftool,ovftool.bin} \
+ "$pkgdir/usr/lib/vmware-installer/2.1.0"/{vmware-installer,vmis-launcher}
chmod -R 600 "$pkgdir/etc/vmware/ssl"
chmod +s "$pkgdir/usr/lib/vmware/bin/vmware-vmx"
@@ -218,6 +313,7 @@ package() {
sed -i 's,@@BINARY@@,/usr/bin/vmware,' "$pkgdir/usr/share/applications/vmware-workstation.desktop"
sed -i 's,@@BINARY@@,/usr/bin/vmware-netcfg,' "$pkgdir/usr/share/applications/vmware-netcfg.desktop"
sed -i 's,@@VMWARE_INSTALLER@@,/usr/bin/vmware,' "$pkgdir/usr/share/applications/vmware-workstation.desktop"
+ sed -i 's,@@BINARY@@,/usr/bin/vmplayer,' "$pkgdir/usr/share/applications/vmware-player.desktop"
sed -i 's,@@AUTHD_PORT@@,902,' "$pkgdir/usr/lib/vmware/hostd/docroot/client/clients.xml"
@@ -243,4 +339,25 @@ package() {
for module in vmblock vmci vmmon vmnet vsock; do
patch -p2 --read-only=ignore --directory="$dkms_dir/$module-only" < "$srcdir/$module.patch"
done
+
+if [ -n "$_enable_macOS_guests" ]; then
+ # Patch VMware files to add macOS guest support
+ python2 "$srcdir/unlocker.py"
+
+ for isoimage in ${_fusion_isoimages[@]}
+ do
+ install -Dm 644 "$srcdir/payload/$isoimage.iso" "$pkgdir/usr/lib/vmware/isoimages/$isoimage.iso"
+ install -Dm 644 "$srcdir/payload/$isoimage.iso.sig" "$pkgdir/usr/lib/vmware/isoimages/$isoimage.iso.sig"
+ done
+fi
+
+ _create_database_file
+
+ # to solve bugs with incompatibles library versions:
+ ln -sf /usr/lib/libz.so.1 "$pkgdir/usr/lib/vmware/lib/libz.so.1/"
+ # if there is not a better solution, define environment variable VMWARE_USE_SHIPPED_LIBS
+ install -dm755 "$pkgdir/etc/profile.d"
+ echo -e "#export VMWARE_USE_SHIPPED_LIBS=yes" > "$pkgdir/etc/profile.d/vmware.sh"
+ chmod 755 "$pkgdir/etc/profile.d/vmware.sh"
+ ln -sf /usr/lib/libfontconfig.so.1 "$pkgdir/usr/lib/vmware/lib/libfontconfig.so.1/" # avoid a conflict with fontconfig when VMWARE_USE_SHIPPED_LIBS is defined
}