# - http://www.vmware.com/support/ws45/doc/devices_linux_kb_ws.html#1040861
#
# Conditional build:
-%bcond_with internal_libs # internal libs stuff
%bcond_without dist_kernel # without distribution kernel
+%bcond_without kernel # don't build kernel modules
%bcond_without smp # without SMP kernel modules
+%bcond_without userspace # don't build userspace utilities
+%bcond_with kernel24 # build kernel24 modules (disable kernel26)
+%bcond_with internal_libs # internal libs stuff
+%bcond_with verbose # verbose build (V=1)
#
%include /usr/lib/rpm/macros.perl
+%if %{with kernel24}
+%define _kernelsrcdir /usr/src/linux-2.4
+%endif
+
+%ifarch %{x8664}
+%undefine with_userspace
+%endif
+
+%if !%{with kernel}
+%undefine with_dist_kernel
+%endif
#
-%define _ver 5.0.0
-%define _build 13124
+%define _ver 5.5.2
+%define _build 29772
%define _rel 1
-%define _urel 90
+%define _urel 105
+%define _ccver %(rpm -q --qf "%{VERSION}" gcc)
#
Summary: VMware Workstation
Summary(pl): VMware Workstation - wirtualna platforma dla stacji roboczej
License: custom, non-distributable
Group: Applications/Emulators
Source0: http://download3.vmware.com/software/wkst/%{name}-%{_ver}-%{_build}.tar.gz
-# NoSource0-md5: 91821fc2649749911f0e2d0ca37b3eb8
+# NoSource0-md5: 6463a9bf44e10de9c11f65ed52112ff5
Source1: http://knihovny.cvut.cz/ftp/pub/vmware/vmware-any-any-update%{_urel}.tar.gz
-# Source1-md5: b8f6498f5275dc8ef3ea2d2e17061ede
+# Source1-md5: edad0bd1abf80caaf672498e14ad8727
Source2: %{name}.init
Source3: %{name}-vmnet.conf
Source4: %{name}.png
Source6: %{name}-nat.conf
Source7: %{name}-dhcpd.conf
Patch0: %{name}-Makefile.patch
-Patch1: %{name}-compat.patch
-Patch2: %{name}-run_script.patch
+Patch1: %{name}-run_script.patch
NoSource: 0
URL: http://www.vmware.com/
-BuildRequires: gcc-c++
-Requires: kernel(vmmon) = %{version}-%{_rel}
-%{?with_dist_kernel:BuildRequires: kernel-module-build >= 2.6.7}
-BuildRequires: rpm-perlprov
-BuildRequires: rpmbuild(macros) >= 1.153
+%{?with_kernel:BuildRequires: gcc-c++}
+%{?with_dist_kernel:BuildRequires: kernel%{_alt_kernel}-module-build >= 3:2.6.7}
+%{?with_userspace:BuildRequires: rpm-perlprov}
+BuildRequires: rpmbuild(macros) >= 1.332
BuildRequires: sed >= 4.0
Requires: libgnomecanvasmm
-ExclusiveArch: %{ix86}
+Requires: libview >= 0.5.5-2
+ExclusiveArch: %{ix86} %{x8664}
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%define _noautoprovfiles %{_libdir}/vmware/lib/.*\.so.*
Summary: VMware networking utilities
Summary(pl): Narzêdzia VMware do obs³ugi sieci
Group: Applications/Emulators
+Requires(post,preun): /sbin/chkconfig
Requires: %{name} = %{version}-%{release}
-Requires: kernel(vmnet) = %{version}-%{_rel}
+Requires: rc-scripts
Obsoletes: VMware-workstation-samba
%description networking
%description samba -l pl
Narzêdzia VMware do SMB.
-%package -n kernel-misc-vmmon
+%package -n kernel%{_alt_kernel}-misc-vmmon
+Summary: Kernel module for VMware Workstation
+Summary(pl): Modu³ j±dra dla VMware Workstation
+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_up
+Requires(postun): %releq_kernel_up
+%endif
+Provides: kernel(vmmon) = %{version}-%{_rel}
+
+%description -n kernel%{_alt_kernel}-misc-vmmon
+Kernel modules for VMware Workstation - vmmon.
+
+%description -n kernel%{_alt_kernel}-misc-vmmon -l pl
+Modu³y j±dra dla VMware Workstation - vmmon.
+
+%package -n kernel%{_alt_kernel}-misc-vmnet
+Summary: Kernel module for VMware Workstation
+Summary(pl): Modu³ j±dra dla VMware Workstation
+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_up
+Requires(postun): %releq_kernel_up
+%endif
+Provides: kernel(vmnet) = %{version}-%{_rel}
+
+%description -n kernel%{_alt_kernel}-misc-vmnet
+Kernel modules for VMware Workstation - vmnet.
+
+%description -n kernel%{_alt_kernel}-misc-vmnet -l pl
+Modu³y j±dra dla VMware Workstation - vmnet.
+
+%package -n kernel%{_alt_kernel}-smp-misc-vmmon
+Summary: SMP kernel module for VMware Workstation
+Summary(pl): Modu³ j±dra SMP dla VMware Workstation
+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_smp
+Requires(postun): %releq_kernel_smp
+%endif
+Provides: kernel(vmmon) = %{version}-%{_rel}
+
+%description -n kernel%{_alt_kernel}-smp-misc-vmmon
+SMP kernel modules fov VMware Workstation - vmmon-smp.
+
+%description -n kernel%{_alt_kernel}-smp-misc-vmmon -l pl
+Modu³y j±dra SMP dla VMware Workstation - vmmon-smp.
+
+%package -n kernel%{_alt_kernel}-smp-misc-vmnet
+Summary: SMP kernel module for VMware Workstation
+Summary(pl): Modu³ j±dra SMP dla VMware Workstation
+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_smp
+Requires(postun): %releq_kernel_smp
+%endif
+Provides: kernel(vmnet) = %{version}-%{_rel}
+
+%description -n kernel%{_alt_kernel}-smp-misc-vmnet
+SMP kernel module for VMware Workstation - vmnet-smp.
+
+%description -n kernel%{_alt_kernel}-smp-misc-vmnet -l pl
+Modu³y j±dra SMP dla VMware Workstation - vmnet-smp.
+
+%package -n kernel24-misc-vmmon
Summary: Kernel module for VMware Workstation
Summary(pl): Modu³ j±dra dla VMware Workstation
Release: %{_rel}@%{_kernel_ver_str}
%endif
Provides: kernel(vmmon) = %{version}-%{_rel}
-%description -n kernel-misc-vmmon
+%description -n kernel24-misc-vmmon
Kernel modules for VMware Workstation - vmmon.
-%description -n kernel-misc-vmmon -l pl
+%description -n kernel24-misc-vmmon -l pl
Modu³y j±dra dla VMware Workstation - vmmon.
-%package -n kernel-misc-vmnet
+%package -n kernel24-misc-vmnet
Summary: Kernel module for VMware Workstation
Summary(pl): Modu³ j±dra dla VMware Workstation
Release: %{_rel}@%{_kernel_ver_str}
%endif
Provides: kernel(vmnet) = %{version}-%{_rel}
-%description -n kernel-misc-vmnet
+%description -n kernel24-misc-vmnet
Kernel modules for VMware Workstation - vmnet.
-%description -n kernel-misc-vmnet -l pl
+%description -n kernel24-misc-vmnet -l pl
Modu³y j±dra dla VMware Workstation - vmnet.
-%package -n kernel-smp-misc-vmmon
+%package -n kernel24-smp-misc-vmmon
Summary: SMP kernel module for VMware Workstation
Summary(pl): Modu³ j±dra SMP dla VMware Workstation
Release: %{_rel}@%{_kernel_ver_str}
%endif
Provides: kernel(vmmon) = %{version}-%{_rel}
-%description -n kernel-smp-misc-vmmon
+%description -n kernel24-smp-misc-vmmon
SMP kernel modules fov VMware Workstation - vmmon-smp.
-%description -n kernel-smp-misc-vmmon -l pl
+%description -n kernel24-smp-misc-vmmon -l pl
Modu³y j±dra SMP dla VMware Workstation - vmmon-smp.
-%package -n kernel-smp-misc-vmnet
+%package -n kernel24-smp-misc-vmnet
Summary: SMP kernel module for VMware Workstation
Summary(pl): Modu³ j±dra SMP dla VMware Workstation
Release: %{_rel}@%{_kernel_ver_str}
%endif
Provides: kernel(vmnet) = %{version}-%{_rel}
-%description -n kernel-smp-misc-vmnet
+%description -n kernel24-smp-misc-vmnet
SMP kernel module for VMware Workstation - vmnet-smp.
-%description -n kernel-smp-misc-vmnet -l pl
+%description -n kernel24-smp-misc-vmnet -l pl
Modu³y j±dra SMP dla VMware Workstation - vmnet-smp.
%prep
-%setup -q -n vmware-distrib
-%setup -qDT -n vmware-distrib -a1
+%setup -q -n vmware-distrib -a1
+#%setup -qDT -n vmware-distrib -a1
+#mkdir vmware-any-any-update%{_urel}
cd vmware-any-any-update%{_urel}
tar xf vmmon.tar
tar xf vmnet.tar
-%patch0 -p0
-%patch1 -p0
+#tar xf ../lib/modules/source/vmmon.tar
+#tar xf ../lib/modules/source/vmnet.tar
+#%patch0 -p0
cd -
-%patch2 -p1
+#%patch1 -p1
%build
sed -i 's:vm_db_answer_LIBDIR:VM_LIBDIR:g;s:vm_db_answer_BINDIR:VM_BINDIR:g' bin/vmware
./update bridge ../bin/vmnet-bridge
%endif
+%if %{with kernel}
rm -rf built
mkdir built
-cp -a vmmon-only vmmon-only.clean
-cp -a vmnet-only vmnet-only.clean
+
+%if !%{with kernel24}
+%define ModuleBuildArgs VMWARE_VER=VME_V5 SRCROOT=$PWD VM_KBUILD=26 VM_CCVER=%{_ccver}
+
+%build_kernel_modules -c -C vmmon-only -m vmmon %{ModuleBuildArgs} <<'EOF'
+rm -f */*.o *.o
+EOF
+%build_kernel_modules -c -C vmnet-only -m vmnet %{ModuleBuildArgs} <<'EOF'
+rm -f *.o
+EOF
+
+%else
for mod in vmmon vmnet ; do
- for cfg in %{?with_dist_kernel:%{?with_smp:smp} up}%{!?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 include/{linux,config}
- touch include/config/MARKER
- ln -sf %{_kernelsrcdir}/config-$cfg .config
- ln -sf %{_kernelsrcdir}/include/linux/autoconf-$cfg.h include/linux/autoconf.h
- ln -sf %{_kernelsrcdir}/include/asm-%{_target_base_arch} include/asm
- %{__make} -C %{_kernelsrcdir} modules \
- VMWARE_VER=VME_V5 \
- M=$PWD O=$PWD \
- VM_KBUILD=26
- mv -f $mod.ko ../built/$mod-$cfg.ko
- cd -
- done
+ rm -rf $mod-only
+ tar xf ../lib/modules/source/$mod.tar
+ cd $mod-only
+ sed -i s/'^HEADER_DIR.*'/'HEADER_DIR = \/usr\/src\/linux-2.4\/include'/ Makefile
+ sed -i s/'^BUILD_DIR.*'/'BUILD_DIR = .'/ Makefile
+
+%if %{with smp}
+ %{__make} \
+ VM_KBUILD=no VMWARE_VER=VME_V5 \
+ M=$PWD O=$PWD CC=%{kgcc} \
+ INCLUDES="%{rpmcflags} -I. -D__KERNEL_SMP=1 -D__SMP__ -I%{_kernelsrcdir}/include"
+ if [ -e $mod-xxx-* ]; then
+ mv -f $mod-xxx-* ../built/$mod-smp.o
+ else
+ mv -f driver-*/$mod-xxx-* ../built/$mod-smp.o
+ fi
+
+ %{__make} VM_KBUILD=no clean
+%endif
+ %{__make} \
+ VM_KBUILD=no VMWARE_VER=VME_V5 \
+ M=$PWD O=$PWD CC=%{kgcc} \
+ INCLUDES="%{rpmcflags} -I. -I%{_kernelsrcdir}/include"
+ if [ -e $mod-xxx-* ]; then
+ mv -f $mod-xxx-* ../built/$mod.o
+ else
+ mv -f driver-*/$mod-xxx-* ../built/$mod.o
+ fi
+
+ cd ..
done
-cd ..
+%endif # kernel24
+
+%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 \
+ $RPM_BUILD_ROOT%{_libdir}/vmware/{bin,share/pixmaps} \
$RPM_BUILD_ROOT%{_mandir} \
$RPM_BUILD_ROOT%{_pixmapsdir} \
$RPM_BUILD_ROOT%{_desktopdir} \
$RPM_BUILD_ROOT/etc/rc.d/init.d \
- $RPM_BUILD_ROOT/lib/modules/%{_kernel_ver}{,smp}/misc \
$RPM_BUILD_ROOT/var/run/vmware
+%endif
+
+%if %{with kernel}
+install -d $RPM_BUILD_ROOT/lib/modules/%{_kernel_ver}{,smp}/misc
cd vmware-any-any-update%{_urel}
-install built/vmmon-%{?with_dist_kernel:up}%{!?with_dist_kernel:nondist}.ko \
- $RPM_BUILD_ROOT/lib/modules/%{_kernel_ver}/misc/vmmon.ko
-install built/vmnet-%{?with_dist_kernel:up}%{!?with_dist_kernel:nondist}.ko \
- $RPM_BUILD_ROOT/lib/modules/%{_kernel_ver}/misc/vmnet.ko
+
+%if !%{with kernel24}
+%install_kernel_modules -m vmmon-only/vmmon,vmnet-only/vmnet -d misc
+
+%else
+install built/vmmon.o \
+ $RPM_BUILD_ROOT/lib/modules/%{_kernel_ver}/misc/vmmon.o
+install built/vmnet.o \
+ $RPM_BUILD_ROOT/lib/modules/%{_kernel_ver}/misc/vmnet.o
%if %{with smp} && %{with dist_kernel}
-install built/vmmon-smp.ko \
- $RPM_BUILD_ROOT/lib/modules/%{_kernel_ver}smp/misc/vmmon.ko
-install built/vmnet-smp.ko \
- $RPM_BUILD_ROOT/lib/modules/%{_kernel_ver}smp/misc/vmnet.ko
+install built/vmmon-smp.o \
+ $RPM_BUILD_ROOT/lib/modules/%{_kernel_ver}smp/misc/vmmon.o
+install built/vmnet-smp.o \
+ $RPM_BUILD_ROOT/lib/modules/%{_kernel_ver}smp/misc/vmnet.o
%endif
+
+%endif
+
cd -
+%endif
+%if %{with userspace}
install %{SOURCE2} $RPM_BUILD_ROOT/etc/rc.d/init.d/vmnet
install %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/vmware/vmnet.conf
install %{SOURCE4} $RPM_BUILD_ROOT%{_pixmapsdir}
touch $RPM_BUILD_ROOT%{_sysconfdir}/vmware/vmnet8/dhcpd/dhcpd.leases
touch $RPM_BUILD_ROOT%{_sysconfdir}/vmware/vmnet8/dhcpd/dhcpd.leases~
+install lib/share/pixmaps/* $RPM_BUILD_ROOT%{_libdir}/vmware/share/pixmaps
+# required for starting vmware
+install lib/share/EULA.txt $RPM_BUILD_ROOT%{_libdir}/vmware/share
+
install bin/*-* $RPM_BUILD_ROOT%{_bindir}
install lib/bin/vmware-vmx $RPM_BUILD_ROOT%{_libdir}/vmware/bin
install bin/vmware $RPM_BUILD_ROOT%{_bindir}
install lib/bin/vmware $RPM_BUILD_ROOT%{_libdir}/vmware/bin
cp -r lib/lib $RPM_BUILD_ROOT%{_libdir}/vmware
+cp -r lib/libconf $RPM_BUILD_ROOT%{_libdir}/vmware
%else
install lib/bin/vmware $RPM_BUILD_ROOT%{_bindir}
%endif
+%endif
%clean
rm -rf $RPM_BUILD_ROOT
%post networking
/sbin/chkconfig --add vmnet
-if [ -r /var/lock/subsys/vmnet ]; then
- /etc/rc.d/init.d/vmnet restart >&2
-else
- echo "Run \"/etc/rc.d/init.d/vmnet start\" to start VMware networking service."
-fi
+%service vmnet restart "VMware networking service"
%preun networking
if [ "$1" = "0" ]; then
- if [ -r /var/lock/subsys/vmnet ]; then
- /etc/rc.d/init.d/vmnet stop >&2
- fi
+ %service vmnet stop
/sbin/chkconfig --del vmnet
fi
-%post -n kernel-misc-vmmon
+%post -n kernel%{_alt_kernel}-misc-vmmon
%depmod %{_kernel_ver}
-%postun -n kernel-misc-vmmon
+%postun -n kernel%{_alt_kernel}-misc-vmmon
%depmod %{_kernel_ver}
-%post -n kernel-misc-vmnet
+%post -n kernel%{_alt_kernel}-misc-vmnet
%depmod %{_kernel_ver}
-%postun -n kernel-misc-vmnet
+%postun -n kernel%{_alt_kernel}-misc-vmnet
%depmod %{_kernel_ver}
-%post -n kernel-smp-misc-vmmon
+%post -n kernel%{_alt_kernel}-smp-misc-vmmon
%depmod %{_kernel_ver}smp
-%postun -n kernel-smp-misc-vmmon
+%postun -n kernel%{_alt_kernel}-smp-misc-vmmon
%depmod %{_kernel_ver}smp
-%post -n kernel-smp-misc-vmnet
+%post -n kernel%{_alt_kernel}-smp-misc-vmnet
%depmod %{_kernel_ver}smp
-%postun -n kernel-smp-misc-vmnet
+%postun -n kernel%{_alt_kernel}-smp-misc-vmnet
%depmod %{_kernel_ver}smp
+%post -n kernel24-misc-vmmon
+%depmod %{_kernel_ver}
+
+%postun -n kernel24-misc-vmmon
+%depmod %{_kernel_ver}
+
+%post -n kernel24-misc-vmnet
+%depmod %{_kernel_ver}
+
+%postun -n kernel24-misc-vmnet
+%depmod %{_kernel_ver}
+
+%post -n kernel24-smp-misc-vmmon
+%depmod %{_kernel_ver}smp
+
+%postun -n kernel24-smp-misc-vmmon
+%depmod %{_kernel_ver}smp
+
+%post -n kernel24-smp-misc-vmnet
+%depmod %{_kernel_ver}smp
+
+%postun -n kernel24-smp-misc-vmnet
+%depmod %{_kernel_ver}smp
+
+%if %{with userspace}
%files
%defattr(644,root,root,755)
%doc doc/* lib/configurator/vmnet-{dhcpd,nat}.conf
%{_libdir}/vmware/isoimages
%if %{with internal_libs}
%attr(755,root,root) %{_libdir}/vmware/bin/vmware
-%{_libdir}/vmware/lib
+%dir %{_libdir}/vmware/lib
+%{_libdir}/vmware/lib/lib*
%attr(755,root,root) %{_libdir}/vmware/lib/wrapper-gtk24.sh
%endif
%{_libdir}/vmware/licenses
%dir %{_libdir}/vmware/messages
%{_libdir}/vmware/messages/en
%lang(ja) %{_libdir}/vmware/messages/ja
+%{_libdir}/vmware/share
%{_libdir}/vmware/xkeymap
%{_mandir}/man1/*
%attr(1777,root,root) %dir /var/run/vmware
%attr(755,root,root) %{_bindir}/vmware-smbpasswd.bin
%{_libdir}/vmware/smb
%endif
+%endif
-%files -n kernel-misc-vmmon
+%if %{with kernel}
+%if !%{with kernel24}
+%files -n kernel%{_alt_kernel}-misc-vmmon
%defattr(644,root,root,755)
/lib/modules/%{_kernel_ver}/misc/vmmon.ko*
-%files -n kernel-misc-vmnet
+%files -n kernel%{_alt_kernel}-misc-vmnet
%defattr(644,root,root,755)
/lib/modules/%{_kernel_ver}/misc/vmnet.ko*
%if %{with smp} && %{with dist_kernel}
-%files -n kernel-smp-misc-vmmon
+%files -n kernel%{_alt_kernel}-smp-misc-vmmon
%defattr(644,root,root,755)
/lib/modules/%{_kernel_ver}smp/misc/vmmon.ko*
-%files -n kernel-smp-misc-vmnet
+%files -n kernel%{_alt_kernel}-smp-misc-vmnet
%defattr(644,root,root,755)
/lib/modules/%{_kernel_ver}smp/misc/vmnet.ko*
%endif
+
+%else
+%files -n kernel24-misc-vmmon
+%defattr(644,root,root,755)
+/lib/modules/%{_kernel_ver}/misc/vmmon.o*
+
+%files -n kernel24-misc-vmnet
+%defattr(644,root,root,755)
+/lib/modules/%{_kernel_ver}/misc/vmnet.o*
+
+%if %{with smp} && %{with dist_kernel}
+%files -n kernel24-smp-misc-vmmon
+%defattr(644,root,root,755)
+/lib/modules/%{_kernel_ver}smp/misc/vmmon.o*
+
+%files -n kernel24-smp-misc-vmnet
+%defattr(644,root,root,755)
+/lib/modules/%{_kernel_ver}smp/misc/vmnet.o*
+%endif
+
+%endif
+
+%endif