-#
+# TODO
+# - sync modules -pl
# Conditional build:
%bcond_without dist_kernel # without distribution kernel
%bcond_without kernel # don't build kernel modules
%bcond_without userspace # don't build userspace utilities
%bcond_with internal_libs # internal libs stuff
%bcond_with verbose # verbose build (V=1)
-#
-%include /usr/lib/rpm/macros.perl
+%if %{without kernel}
+%undefine with_dist_kernel
+%endif
%ifarch %{x8664}
%undefine with_userspace
%endif
-#
-%define _ver 2.0.1
-%define _build 55017
-%define _rel 0.1
-%define _urel 113
-%define _ccver %(rpm -q --qf "%{VERSION}" gcc)
-#
+
+%define ver 3.0.0
+%define buildid 203739
+%define rel 0.1
+
+# point to some working url
+%define download_url %{nil}
+
Summary: VMware player
Summary(pl.UTF-8): VMware player - wirtualna platforma dla stacji roboczej
Name: VMware-player
-Version: %{_ver}.%{_build}
-Release: %{_rel}
+Version: %{ver}.%{buildid}
+Release: %{rel}
License: custom, non-distributable
Group: Applications/Emulators
-Source0: http://download3.vmware.com/software/vmplayer/%{name}-%{_ver}-%{_build}.i386.tar.gz
-# NoSource0-md5: 2d1b2d847cf002b2f418b94f5b973ecc
+# https://www.vmware.com/go/downloadplayer/
+Source0: %{download_url}VMware-Player-%{ver}-%{buildid}.i386.bundle
+# NoSource0-md5: 1c273da70347a381dc685b5fdf922e7d
NoSource: 0
-Source1: http://download3.vmware.com/software/vmplayer/%{name}-%{_ver}-%{_build}.x86_64.tar.gz
-# NoSource1-md5: dca7a144e1a01c69387401e46e7e3b26
+Source1: %{download_url}VMware-Player-%{ver}-%{buildid}.x86_64.bundle
+# NoSource1-md5: cf8ac6a75e4fd51a8c9c527a594f5ffc
NoSource: 1
-Source2: http://knihovny.cvut.cz/ftp/pub/vmware/vmware-any-any-update%{_urel}.tar.gz
-# Source2-md5: cb3f91f2196778e6d76d5a6697286d04
-Source3: %{name}-vmnet.conf
-Source4: %{name}.png
-Source5: %{name}.desktop
-Source6: %{name}-nat.conf
-Source7: %{name}-dhcpd.conf
-Source8: %{name}.init
-Patch0: %{name}-Makefile.patch
-Patch1: %{name}-run_script.patch
+Patch0: installer.patch
URL: http://www.vmware.com/
-BuildRequires: gcc-c++
-%{?with_dist_kernel:BuildRequires: kernel-module-build >= 3:2.6.7}
-BuildRequires: rpm-perlprov
+%{?with_dist_kernel:BuildRequires: kernel%{_alt_kernel}-module-build >= 3:2.6.7}
BuildRequires: rpmbuild(macros) >= 1.268
BuildRequires: sed >= 4.0
-Requires: libgnomecanvasmm
+Requires: atk
+Requires: cairo
+Requires: cairomm
+Requires: curl-libs >= 7.19.7-2
+Requires: expat
+Requires: fontconfig-libs
+Requires: freetype
+Requires: glib2
+Requires: glibmm
+Requires: gtk+2
+Requires: gtkmm
+Requires: gtkmm-atk
+Requires: libaio
+Requires: libarchive
+Requires: libart_lgpl
+Requires: libgcc
+Requires: libpng
+Requires: librsvg
+Requires: libsexy
+Requires: libsexymm
+Requires: libsigc++
+Requires: libstdc++
Requires: libview >= 0.5.5-2
+Requires: libxml2
Requires: openssl >= 0.9.7
-Requires: openssl < 0.9.8
+Requires: pango
+Requires: pangomm
+Requires: xorg-lib-libXau
+Requires: xorg-lib-libXcomposite
+Requires: xorg-lib-libXcursor
+Requires: xorg-lib-libXdamage
+Requires: xorg-lib-libXdmcp
+Requires: xorg-lib-libXfixes
+Requires: xorg-lib-libXft
+Requires: xorg-lib-libXinerama
+Requires: xorg-lib-libXrandr
+Requires: xorg-lib-libXrender
ExclusiveArch: %{ix86} %{x8664}
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
Summary(pl.UTF-8): Pliki pomocy dla VMware Player
Group: Applications/Emulators
Requires: %{name} = %{version}-%{release}
-Requires: mozilla
%description help
VMware Player help files.
%description networking -l pl.UTF-8
Narzędzia VMware do obsługi sieci.
+%package -n kernel%{_alt_kernel}-misc-vmci
+Summary: VMware Virtual Machine Communication Interface (VMCI)
+Summary(pl.UTF-8): VMCI (Virtual Machine Communication Interface) - interfejs komunikacyjny VMware
+Release: %{rel}@%{_kernel_ver_str}
+Group: Base/Kernel
+Requires(post,postun): /sbin/depmod
+Requires: dev >= 2.9.0-7
+%if %{with dist_kernel}
+%requires_releq_kernel
+Requires(postun): %releq_kernel
+%endif
+
+%description -n kernel%{_alt_kernel}-misc-vmci
+VMware Virtual Machine Communication Interface (VMCI).
+
+%description -n kernel%{_alt_kernel}-misc-vmci -l pl.UTF-8
+Moduł jądra Linuksa będący interfejsem komunikacyjnym VMware (VMCI -
+Virtual Machine Communication Interface).
+
+%package -n kernel%{_alt_kernel}-misc-vmblock
+Summary: VMware Blocking File System
+Summary(pl.UTF-8): Moduł jądra dla VMware Player
+Release: %{rel}@%{_kernel_ver_str}
+Group: Base/Kernel
+Requires(post,postun): /sbin/depmod
+Requires: dev >= 2.9.0-7
+%if %{with dist_kernel}
+%requires_releq_kernel
+Requires(postun): %releq_kernel
+%endif
+
+%description -n kernel%{_alt_kernel}-misc-vmblock
+VMware Blocking File System.
+
+%description -n kernel%{_alt_kernel}-misc-vmblock -l pl.UTF-8
+Moduły jądra dla VMware Player - vmblock.
+
%package -n kernel%{_alt_kernel}-misc-vmmon
-Summary: Kernel module for VMware Player
+Summary: VMware Virtual Machine Monitor
Summary(pl.UTF-8): Moduł jądra dla VMware Player
-Release: %{_rel}@%{_kernel_ver_str}
+Release: %{rel}@%{_kernel_ver_str}
Group: Base/Kernel
Requires(post,postun): /sbin/depmod
Requires: dev >= 2.9.0-7
%requires_releq_kernel
Requires(postun): %releq_kernel
%endif
-Provides: kernel(vmmon) = %{version}-%{_rel}
%description -n kernel%{_alt_kernel}-misc-vmmon
-Kernel modules for VMware Player - vmmon.
+VMware Virtual Machine Monitor.
%description -n kernel%{_alt_kernel}-misc-vmmon -l pl.UTF-8
Moduły jądra dla VMware Player - vmmon.
%package -n kernel%{_alt_kernel}-misc-vmnet
-Summary: Kernel module for VMware Player
+Summary: VMware Virtual Networking Driver
Summary(pl.UTF-8): Moduł jądra dla VMware Player
-Release: %{_rel}@%{_kernel_ver_str}
+Release: %{rel}@%{_kernel_ver_str}
Group: Base/Kernel
Requires(post,postun): /sbin/depmod
Requires: dev >= 2.9.0-7
%requires_releq_kernel
Requires(postun): %releq_kernel
%endif
-Provides: kernel(vmnet) = %{version}-%{_rel}
%description -n kernel%{_alt_kernel}-misc-vmnet
-Kernel modules for VMware Player - vmnet.
+VMware Virtual Networking Driver.
%description -n kernel%{_alt_kernel}-misc-vmnet -l pl.UTF-8
Moduły jądra dla VMware Player - vmnet.
-%prep
-%setup -q -n vmware-player-distrib -a2
-cd vmware-any-any-update%{_urel}
-tar xf vmmon.tar
-tar xf vmnet.tar
-cp -a vmmon-only{,.clean}
-cp -a vmnet-only{,.clean}
-sed -e 's/filter x86_64%/filter x86_64% amd64% ia64%/' \
- -i vmnet-only.clean/Makefile.kernel
-cd -
+%package -n kernel%{_alt_kernel}-misc-vsock
+Summary: VMware Virtual Socket Family
+Summary(pl.UTF-8): Obsługa Virtual Socket Family - rodziny gniazd wirtualnych VMware
+Release: %{rel}@%{_kernel_ver_str}
+Group: Base/Kernel
+Requires(post,postun): /sbin/depmod
+Requires: dev >= 2.9.0-7
+%if %{with dist_kernel}
+%requires_releq_kernel
+Requires(postun): %releq_kernel
+%endif
+Requires: kernel%{_alt_kernel}-misc-vmci = %{version}-%{rel}@%{_kernel_ver_str}
-%build
-sed -i 's:vm_db_answer_LIBDIR:VM_LIBDIR:g;s:vm_db_answer_BINDIR:VM_BINDIR:g' bin/vmplayer
+%description -n kernel%{_alt_kernel}-misc-vsock
+VMware Virtual Socket Family.
-cd vmware-any-any-update%{_urel}
-chmod u+w ../lib/bin/vmware-vmx ../lib/bin-debug/vmware-vmx ../bin/vmnet-bridge
+%description -n kernel%{_alt_kernel}-misc-vsock -l pl.UTF-8
+Moduł jądra Linuksa obsługujący rodzinę gniazd wirtualnych VMware
+(Virtual Socket Family).
-%if %{with kernel}
-rm -rf built
-mkdir built
-
-for mod in vmmon vmnet ; do
- for cfg in %{?with_dist_kernel:dist}%{!?with_dist_kernel:nondist}; do
- if [ ! -r "%{_kernelsrcdir}/config-$cfg" ]; then
- exit 1
- fi
- rm -rf $mod-only
- cp -a $mod-only.clean $mod-only
- cd $mod-only
- install -d o/include/linux
- ln -sf %{_kernelsrcdir}/config-$cfg o/.config
- ln -sf %{_kernelsrcdir}/Module.symvers-$cfg o/Module.symvers
- ln -sf %{_kernelsrcdir}/include/linux/autoconf-$cfg.h o/include/linux/autoconf.h
- if grep -q "^CONFIG_PREEMPT_RT=y$" o/.config; then
- sed -e '/pollQueueLock/s/SPIN_LOCK_UNLOCKED/SPIN_LOCK_UNLOCKED(pollQueueLock)/' \
- -e '/timerLock/s/SPIN_LOCK_UNLOCKED/SPIN_LOCK_UNLOCKED(timerLock)/' \
- -i ../vmmon-only/linux/driver.c
- sed -e 's/SPIN_LOCK_UNLOCKED/SPIN_LOCK_UNLOCKED(vnetHubLock)/' \
- -i ../vmnet-only/hub.c
- sed -e 's/RW_LOCK_UNLOCKED/RW_LOCK_UNLOCKED(vnetPeerLock)/' \
- -i ../vmnet-only/driver.c
- fi
- %if %{with dist_kernel}
- %{__make} -j1 -C %{_kernelsrcdir} O=$PWD/o prepare scripts
- %else
- install -d o/include/config
- touch o/include/config/MARKER
- ln -sf %{_kernelsrcdir}/scripts o/scripts
- %endif
- %{__make} -C %{_kernelsrcdir} modules \
- VMWARE_VER=VME_V5 \
- SRCROOT=$PWD \
- M=$PWD O=$PWD/o \
- VM_KBUILD=26 \
- %{?with_verbose:V=1} \
- VM_CCVER=%{_ccver}
- mv -f $mod.ko ../built/$mod-$cfg.ko
- cd -
- done
-done
+%prep
+%setup -qcT
+%ifarch %{ix86}
+export SOURCE=%{SOURCE0}
%endif
-
-%install
-rm -rf $RPM_BUILD_ROOT
-
-%if %{with userspace}
-install -d \
- $RPM_BUILD_ROOT%{_sysconfdir}/vmware \
- $RPM_BUILD_ROOT%{_sysconfdir}/vmware/vmnet8/{nat,dhcpd} \
- $RPM_BUILD_ROOT%{_bindir} \
- $RPM_BUILD_ROOT%{_libdir}/vmware/{bin,lib,share/pixmaps} \
- $RPM_BUILD_ROOT%{_mandir} \
- $RPM_BUILD_ROOT%{_pixmapsdir} \
- $RPM_BUILD_ROOT%{_iconsdir}/hicolor \
- $RPM_BUILD_ROOT%{_desktopdir} \
- $RPM_BUILD_ROOT/etc/rc.d/init.d \
- $RPM_BUILD_ROOT/var/run/vmware
+%ifarch %{x8664}
+export SOURCE=%{SOURCE1}
%endif
-%if %{with kernel}
-install -d $RPM_BUILD_ROOT/lib/modules/%{_kernel_ver}{,smp}/misc
-
-cd vmware-any-any-update%{_urel}/built
-install vmmon* $RPM_BUILD_ROOT/lib/modules/%{_kernel_ver}/misc/vmmon.ko
-install vmnet* $RPM_BUILD_ROOT/lib/modules/%{_kernel_ver}/misc/vmnet.ko
+# extract installer shell blob
+%{__sed} -ne '1,/^exit/{s,$0,$SOURCE,;p}' $SOURCE > install.sh
+%{__sed} -i -e "2iSOURCE=$SOURCE" install.sh
+%patch0 -p1
+chmod a+x install.sh
+
+./install.sh --extract bundles
+
+cd bundles/vmware-player-app/lib/modules
+%{__tar} xf source/vmblock.tar
+%{__tar} xf source/vmci.tar
+%{__tar} xf source/vmmon.tar
+%{__tar} xf source/vmnet.tar
+%{__tar} xf source/vsock.tar
+mv vmmon-only/linux/driver.c{,.dist}
+mv vmnet-only/hub.c{,.dist}
+mv vmnet-only/driver.c{,.dist}
+rm -rf binary # unusable
cd -
-%endif
-
-%if %{with userspace}
-install %{SOURCE8} $RPM_BUILD_ROOT/etc/rc.d/init.d/vmnet
-install %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/vmware/vmnet.conf
-install %{SOURCE4} $RPM_BUILD_ROOT%{_pixmapsdir}
-install %{SOURCE5} $RPM_BUILD_ROOT%{_desktopdir}
-install %{SOURCE6} $RPM_BUILD_ROOT%{_sysconfdir}/vmware/vmnet8/nat/nat.conf
-install %{SOURCE7} $RPM_BUILD_ROOT%{_sysconfdir}/vmware/vmnet8/dhcpd/dhcpd.conf
-
-touch $RPM_BUILD_ROOT%{_sysconfdir}/vmware/vmnet8/dhcpd/dhcpd.leases
-touch $RPM_BUILD_ROOT%{_sysconfdir}/vmware/vmnet8/dhcpd/dhcpd.leases~
-cp -a lib/share/icons/hicolor/* $RPM_BUILD_ROOT%{_iconsdir}/hicolor
+find '(' -name '*~' -o -name '*.orig' ')' -print0 | xargs -0 -r -l512 rm -f
-install lib/share/pixmaps/* $RPM_BUILD_ROOT%{_libdir}/vmware/share/pixmaps
-install doc/EULA $RPM_BUILD_ROOT%{_libdir}/vmware/share/EULA.txt
-
-install bin/*-* $RPM_BUILD_ROOT%{_bindir}
-install lib/bin/vmware-vmx $RPM_BUILD_ROOT%{_libdir}/vmware/bin
-install lib/lib/libvmwarebase.so.0/libvmwarebase.so.0 $RPM_BUILD_ROOT%{_libdir}
-install lib/lib/libvmwareui.so.0/libvmwareui.so.0 $RPM_BUILD_ROOT%{_libdir}
-
-cp -r lib/{bin-debug,config,help*,messages,xkeymap} \
- $RPM_BUILD_ROOT%{_libdir}/vmware
+%build
+%if %{with kernel}
+cd bundles/vmware-player-app/lib/modules
+
+%build_kernel_modules -C vmblock-only -m vmblock SRCROOT=$PWD VM_KBUILD=26 VM_CCVER=%{cc_version}
+%build_kernel_modules -C vmci-only -m vmci SRCROOT=$PWD VM_KBUILD=26 VM_CCVER=%{cc_version}
+%build_kernel_modules -C vmmon-only -m vmmon SRCROOT=$PWD VM_KBUILD=26 VM_CCVER=%{cc_version} <<'EOF'
+if grep -q "^CONFIG_PREEMPT_RT=y$" o/.config; then
+ sed -e '/pollQueueLock/s/SPIN_LOCK_UNLOCKED/SPIN_LOCK_UNLOCKED(pollQueueLock)/' \
+ -e '/timerLock/s/SPIN_LOCK_UNLOCKED/SPIN_LOCK_UNLOCKED(timerLock)/' \
+ linux/driver.c.dist > linux/driver.c
+else
+ cat linux/driver.c.dist > linux/driver.c
+fi
+EOF
-cat > $RPM_BUILD_ROOT%{_sysconfdir}/vmware/locations <<EOF
-VM_BINDIR=%{_bindir}
-VM_LIBDIR=%{_libdir}/vmware
+%build_kernel_modules -C vmnet-only -m vmnet SRCROOT=$PWD VM_KBUILD=26 VM_CCVER=%{cc_version} <<'EOF'
+if grep -q "^CONFIG_PREEMPT_RT=y$" o/.config; then
+ sed -e 's/SPIN_LOCK_UNLOCKED/SPIN_LOCK_UNLOCKED(vnetHubLock)/' \
+ hub.c.dist > hub.c
+ sed -e 's/RW_LOCK_UNLOCKED/RW_LOCK_UNLOCKED(vnetPeerLock)/' \
+ driver.c.dist > driver.c
+else
+ cat hub.c.dist > hub.c
+ cat driver.c.dist > driver.c
+fi
EOF
-%if %{with internal_libs}
-install bin/vmplayer $RPM_BUILD_ROOT%{_bindir}
-install lib/bin/vmplayer $RPM_BUILD_ROOT%{_libdir}/vmware/bin
-install lib/lib/* $RPM_BUILD_ROOT%{_libdir}/vmware/lib
-cp -r lib/libconf $RPM_BUILD_ROOT%{_libdir}/vmware
-%else
-install lib/bin/vmplayer $RPM_BUILD_ROOT%{_bindir}
+cp -a vmci-only/Module.symvers vsock-only
+%build_kernel_modules -C vsock-only -m vsock SRCROOT=$PWD VM_KBUILD=26 VM_CCVER=%{cc_version} -c
%endif
+
+%install
+rm -rf $RPM_BUILD_ROOT
+%if %{with kernel}
+%install_kernel_modules -m bundles/vmware-player-app/lib/modules/vmblock-only/vmblock -d misc
+%install_kernel_modules -m bundles/vmware-player-app/lib/modules/vmci-only/vmci -d misc
+%install_kernel_modules -m bundles/vmware-player-app/lib/modules/vmmon-only/vmmon -d misc
+%install_kernel_modules -m bundles/vmware-player-app/lib/modules/vmnet-only/vmnet -d misc
+%install_kernel_modules -m bundles/vmware-player-app/lib/modules/vsock-only/vsock -d misc
%endif
%clean
rm -rf $RPM_BUILD_ROOT
-%post networking
-/sbin/chkconfig --add vmnet
-%service vmnet restart "VMware networking service"
+%post -n kernel%{_alt_kernel}-misc-vmblock
+%depmod %{_kernel_ver}
-%preun networking
-if [ "$1" = "0" ]; then
- %service vmnet stop
- /sbin/chkconfig --del vmnet
-fi
+%postun -n kernel%{_alt_kernel}-misc-vmblock
+%depmod %{_kernel_ver}
+
+%post -n kernel%{_alt_kernel}-misc-vmci
+%depmod %{_kernel_ver}
+
+%postun -n kernel%{_alt_kernel}-misc-vmci
+%depmod %{_kernel_ver}
%post -n kernel%{_alt_kernel}-misc-vmmon
%depmod %{_kernel_ver}
%postun -n kernel%{_alt_kernel}-misc-vmnet
%depmod %{_kernel_ver}
+%post -n kernel%{_alt_kernel}-misc-vsock
+%depmod %{_kernel_ver}
+
+%postun -n kernel%{_alt_kernel}-misc-vsock
+%depmod %{_kernel_ver}
+
%if %{with userspace}
%files
%defattr(644,root,root,755)
-%doc doc/* lib/configurator/vmnet-{dhcpd,nat}.conf
-%dir %{_sysconfdir}/vmware
-%{_sysconfdir}/vmware/locations
-%attr(755,root,root) %{_bindir}/vmplayer
-%attr(755,root,root) %{_bindir}/vmware-acetool
-%attr(755,root,root) %{_bindir}/vm-support
-%attr(755,root,root) %{_libdir}/libvmwarebase.so.*
-%attr(755,root,root) %{_libdir}/libvmwareui.so.*
-%dir %{_libdir}/vmware
-%dir %{_libdir}/vmware/bin
-%dir %{_libdir}/vmware/lib
-# warning: SUID !!!
-%attr(4755,root,root) %{_libdir}/vmware/bin/vmware-vmx
-%{_libdir}/vmware/config
-%if %{with internal_libs}
-%attr(755,root,root) %{_libdir}/vmware/bin/vmware
-%{_libdir}/vmware/lib/lib*
-%attr(755,root,root) %{_libdir}/vmware/lib/wrapper-gtk24.sh
%endif
-%dir %{_libdir}/vmware/messages
-%lang(en) %{_libdir}/vmware/messages/en
-%lang(ja) %{_libdir}/vmware/messages/ja
-%{_libdir}/vmware/share
-%{_libdir}/vmware/xkeymap
-%attr(1777,root,root) %dir /var/run/vmware
-%{_iconsdir}/hicolor/*/*/*.png
-%{_iconsdir}/hicolor/*/*/*.svg
-%{_pixmapsdir}/*.png
-%{_desktopdir}/%{name}.desktop
-
-%files debug
-%defattr(644,root,root,755)
-%dir %{_libdir}/vmware/bin-debug
-# warning: SUID !!!
-%attr(4755,root,root) %{_libdir}/vmware/bin-debug/vmware-vmx
-%files help
+%if %{with kernel}
+%files -n kernel%{_alt_kernel}-misc-vmblock
%defattr(644,root,root,755)
-%{_libdir}/vmware/help*
+/lib/modules/%{_kernel_ver}/misc/vmblock.ko*
-%files networking
+%files -n kernel%{_alt_kernel}-misc-vmci
%defattr(644,root,root,755)
-%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/vmware/vmnet.conf
-%attr(754,root,root) /etc/rc.d/init.d/vmnet
-%attr(755,root,root) %{_bindir}/vmnet-bridge
-%attr(755,root,root) %{_bindir}/vmnet-detect
-%attr(755,root,root) %{_bindir}/vmnet-dhcpd
-%attr(755,root,root) %{_bindir}/vmnet-natd
-%attr(755,root,root) %{_bindir}/vmnet-netifup
-%attr(755,root,root) %{_bindir}/vmnet-sniffer
-%attr(755,root,root) %{_bindir}/vmware-ping
-%dir %{_sysconfdir}/vmware/vmnet8
-%dir %{_sysconfdir}/vmware/vmnet8/dhcpd
-%dir %{_sysconfdir}/vmware/vmnet8/nat
-%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/vmware/vmnet8/dhcpd/dhcpd.conf
-%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/vmware/vmnet8/nat/nat.conf
-%verify(not md5 mtime size) %{_sysconfdir}/vmware/vmnet8/dhcpd/dhcpd.leases*
+/lib/modules/%{_kernel_ver}/misc/vmci.ko*
-%endif
-
-%if %{with kernel}
%files -n kernel%{_alt_kernel}-misc-vmmon
%defattr(644,root,root,755)
/lib/modules/%{_kernel_ver}/misc/vmmon.ko*
%defattr(644,root,root,755)
/lib/modules/%{_kernel_ver}/misc/vmnet.ko*
+%files -n kernel%{_alt_kernel}-misc-vsock
+%defattr(644,root,root,755)
+/lib/modules/%{_kernel_ver}/misc/vsock.ko*
%endif