Hi,
I think I've finally managed how to create a somewhat clean package for
open-vm-tools that installs like a charm on a Mandriva 2009.1 guest OS.
the dkms package is responsible for building modules at boot time if modules do
not exists for current kernel (done each time a kernel update is done)
the open-vm-tools package starts the correct daemon at system boot and at user
session startup.
install the rpms and everything should work out of the box (hopefully).
Packages can be found here:
http://olivier.lahaye1.free.fr/SRPMS/open-vm-tools-2009.05.22.167859-3mdv2009.1.src.rpm
http://olivier.lahaye1.free.fr/RPMS/open-vm-tools-2009.05.22.167859-3mdv2009.1.x86_64.rpm
http://olivier.lahaye1.free.fr/RPMS/open-vm-tools-devel-2009.05.22.167859-3mdv2009.1.x86_64.rpm
http://olivier.lahaye1.free.fr/RPMS/dkms-open-vm-tools-2009.05.22.167859-3mdv2009.1.x86_64.rpm
http://olivier.lahaye1.free.fr/RPMS/open-vm-tools-2009.05.22.167859-3mdv2009.1.i586.rpm
http://olivier.lahaye1.free.fr/RPMS/open-vm-tools-devel-2009.05.22.167859-3mdv2009.1.i586.rpm
http://olivier.lahaye1.free.fr/RPMS/dkms-open-vm-tools-2009.05.22.167859-3mdv2009.1.i586.rpm
Now, screen resizes, mouse can go in and out of guest os silently, copy past
between guest and host works. I did not test drag and drop and shared folders
yet.
spec file is rpmlint compliant
desktop files are desktop-file-validate compliant
I've attached the spec file.
I've also attached a new patch file that fixes the .desktop files that are not
compliant with desktop-file-validate tool.
Feel free to integrate this in the main release.
--
Olivier LAHAYE
CEA Saclay
DRT-LIST-DETECS-SSTM
%define builddate 2009.05.22
%define buildver 167859
#define debug_package %{nil}
Name: open-vm-tools
Version: %{builddate}.%{buildver}
Release: %mkrel 3
Summary: VMware Guest OS Tools
Group: System/Kernel and hardware
License: LGPLv2
URL: http://open-vm-tools.sourceforge.net/
Source0: http://downloads.sourceforge.net/%{name}/%{name}-%{builddate}-%{buildver}.tar.gz
Source1: %{name}-vmtoolsd.init
Source2: %{name}-sysconfig.mouse
#Source3: vmware-toolbox.desktop
Source4: %{name}-modprobe.vmnics
#Patch0: %{name}-%{builddate}-%{buildver}.patch
Patch0: OVT_configure_ac.patch
Patch1: OVT_doc_Makefile_am.patch
Patch2: OVT_wiperPosix_c.patch
Patch3: OVT_vmtoolsd_automake.patch
Patch4: OVT_dkms_conf.patch
Patch5: OVT_desktop-files.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
ExclusiveArch: %ix86 x86_64
BuildRequires: gtk2-devel
buildRequires: libnotify-devel
BuildRequires: libxtst-devel
BuildRequires: libxscrnsaver-devel
BuildRequires: gtkmm2.4-devel
BuildRequires: gtk+-devel
BuildRequires: libdnet-devel
BuildRequires: procps
BuildRequires: libdnet-devel
BuildRequires: libicu-devel
BuildRequires: desktop-file-utils
BuildRequires: libpam-devel
#BuildRequires: ed
BuildRequires: imagemagick
#Requires: open-vm-tools-kmod >= %{version}
#Obsoletes: open-vm-tools-kmod < %{version}
Requires: dkms-open-vm-tools >= %{version}
Provides: open-vm-tools-kmod-common = %{version}
%description
Open-vm-tools are the open source implementation of VMware Tools. They
are a set of guest operating system virtualization components that
enhance performance and user experience of VMWare virtual
machines. This package contains the user-space programs and libraries
of open-vm-tools.
%package devel
Summary: Development package for %{name}
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}
%description devel
Open-vm-tools are the open source implementation of VMware Tools. They
are a set of guest operating system virtualization components that
enhance performance and user experience of VMWare virtual
machines. This package contains the header files and symlinks to
libraries.
%package -n dkms-%{name}
Summary: Kernel modules for open-vm-tools
Group: System/Kernel and hardware
License: LGPLv2
Requires(post): dkms
Requires(preun): dkms
%description -n dkms-%{name}
Kernel modules for open-vm-tools
%prep
%setup -q -n open-vm-tools-%{builddate}-%{buildver}
# Fix DOT= in main configure.ac
%patch0
# Set PROJECT_NAME in doc Makefile.am for proper title in generated doc
%patch1
# handle fgets returncode to avoid compilation failure due to warning unallowed.
%patch2
# Fix VMTOOLSD_PLUGIN_ROOT variable to point to $(pkglibdir)/plugins/
%patch3
# Fix dkms.conf file order
%patch4
# Fix .desktop files (to comply to desktop-file-validate)
%patch5
# Fix some permissions and formats
chmod -x NEWS README ChangeLog AUTHORS COPYING
sed -i 's/\r//' README
# Fix dkms.conf
# create MODULEBUILDDIR variable so VMwareVMCIModule.symvers file is generated
sed -i -e 's|MAKE|export MODULEBUILDDIR=/var/lib/dkms/%{name}/%{version}-%{release}/build\nMAKE|g' modules/linux/dkms.conf
# swap vsock and vmci lines so vmci symvers file is generated before vsock is built
#ed modules/linux/dkms.conf <<EOF
#10m11
#19m20
#w
#EOF
%build
%configure \
--disable-static \
--disable-dependency-tracking \
--without-kernel-modules \
--without-root-privileges \
--with-gtkmm
# Disable use of rpath
sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool
sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
%make
%install
rm -rf $RPM_BUILD_ROOT
make install DESTDIR=$RPM_BUILD_ROOT
find $RPM_BUILD_ROOT -type f -name "*.la" -exec rm -f {} ';'
rm -rf $RPM_BUILD_ROOT/usr/share/open-vm-tools # useless (contains test libs)
##
## Package main
##
# Install vmware-guestd init script
mkdir -p ${RPM_BUILD_ROOT}%_initrddir
install -m 0755 %{SOURCE1} ${RPM_BUILD_ROOT}%_initrddir/vmtoolsd
# GPM vmmouse support
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig
install -m 0644 %{SOURCE2} ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig/mouse
# Move vmware-user desktop into autostart directory
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/xdg/autostart
mv $RPM_BUILD_ROOT%{_datadir}/applications/vmware-user.desktop $RPM_BUILD_ROOT%{_sysconfdir}/xdg/autostart/
# temporary fix to override https://bugs.kde.org/show_bug.cgi?id=190522
sed -i -e 's/NoDisplay/#NoDisplay/g' $RPM_BUILD_ROOT%{_sysconfdir}/xdg/autostart/vmware-user.desktop
# Install desktop file and icon for toolbox
mkdir -p $RPM_BUILD_ROOT%{_datadir}/pixmaps
install -m 0644 toolbox/bigIcon.xpm $RPM_BUILD_ROOT%{_datadir}/pixmaps/vmware-toolbox.xpm
#desktop-file-install --dir $RPM_BUILD_ROOT%{_datadir}/applications %{SOURCE3}
sed -i -e 's|lib/vmware-tools/||g' scripts/common/vmware-toolbox.desktop
desktop-file-install --dir $RPM_BUILD_ROOT%{_datadir}/applications scripts/common/vmware-toolbox.desktop
# Setup module-init-tools file for vmxnet
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/modprobe.d
install -m 0644 %{SOURCE4} $RPM_BUILD_ROOT%{_sysconfdir}/modprobe.d/vmnics
##
## Package devel
##
# Install VMCI sockets header file and guestlib hearder files.
mkdir -p $RPM_BUILD_ROOT%{_includedir}
install -m 0644 modules/linux/vsock/linux/vmci_sockets.h ${RPM_BUILD_ROOT}%{_includedir}
for file in vm_basic_types.h vmGuestLib.h vmSessionId.h includeCheck.h
do
install -m 0644 lib/include/$file $RPM_BUILD_ROOT%{_includedir}
done
#install -m 0644 lib/hgfs/cpNameInt.h $RPM_BUILD_ROOT%{_usrsrc}/%{name}-%{version}-%{release}/shared/
##
## Package dkms
##
# Create dkms tree and fill it
mkdir -p $RPM_BUILD_ROOT%{_usrsrc}/%{name}-%{version}-%{release}
cp -r modules/linux/* $RPM_BUILD_ROOT%{_usrsrc}/%{name}-%{version}-%{release}/
# Common stuffs for modules
cp lib/include/{vmware.h,vm_assert.h,includeCheck.h,vmware_pack_begin.h,vmware_pack_end.h,vm_basic_defs.h,vm_basic_types.h,vm_device_version.h,vmware_pack_init.h,vm_atomic.h,circList.h,backdoor.h,x86cpuid.h,vm_basic_asm_x86_64.h,vm_basic_asm_x86.h,vm_basic_math.h,vm_basic_asm.h,backdoor_types.h} \
$RPM_BUILD_ROOT%{_usrsrc}/%{name}-%{version}-%{release}/shared/
cp lib/backdoor/*.h \
$RPM_BUILD_ROOT%{_usrsrc}/%{name}-%{version}-%{release}/shared/
# setup shared link
for module_dir in pvscsi vmblock vmci vmhgfs vmmemctl vmsync vmxnet vmxnet3 vsock
do
(cd $RPM_BUILD_ROOT%{_usrsrc}/%{name}-%{version}-%{release}/$module_dir; ln -s ../shared)
done
# Specific stuff for pvscsi
# => none
# Specific stuff for vmblock
cp lib/include/{vmblock.h,dbllnklst.h} \
$RPM_BUILD_ROOT%{_usrsrc}/%{name}-%{version}-%{release}/vmblock/linux/
cp lib/misc/dbllnklst.c \
$RPM_BUILD_ROOT%{_usrsrc}/%{name}-%{version}-%{release}/vmblock/linux/
cp modules/shared/vmblock/* \
$RPM_BUILD_ROOT%{_usrsrc}/%{name}-%{version}-%{release}/vmblock/linux/
# => none
# Specific stuff for vmci
# => none
# Specific stuff for vmhgfs
cp lib/backdoor/backdoor*.c \
lib/hgfs/{cpName.c,cpNameInt.h,cpNameLinux.c,cpNameLite.c,hgfsEscape.c,hgfsUtil.c} \
lib/include/{cpName.h,hgfsUtil.h,hgfsEscape.h,util.h,rpcout.h,hgfsBd.h,debug.h,backdoor_def.h,guest_msg_def.h,message.h,rpcout.h,backdoor_types.h,hgfsDevLinux.h,hgfsProto.h,cpNameLite.h,escBitvector.h} \
lib/hgfsBd/hgfsBd.c \
lib/message/{messageBackdoor.c,message.c} \
lib/rpcOut/rpcout.c \
$RPM_BUILD_ROOT%{_usrsrc}/%{name}-%{version}-%{release}/vmhgfs/
# Specific stuff for vmmemctl
(cd $RPM_BUILD_ROOT%{_usrsrc}/%{name}-%{version}-%{release}/vmmemctl/; ln -s ../vmhgfs/backdoorGcc64.c ; ln -s ../vmhgfs/backdoorGcc32.c)
# Specific stuff for vmsync
cp lib/include/syncDriverIoc.h \
$RPM_BUILD_ROOT%{_usrsrc}/%{name}-%{version}-%{release}/vmsync/
# Specific stuff for vmxnet and vmxnet3
cp modules/shared/vmxnet/* \
$RPM_BUILD_ROOT%{_usrsrc}/%{name}-%{version}-%{release}/shared/
# Specific stuff for vsock
# => none
%clean
rm -rf $RPM_BUILD_ROOT
%post
# Setup guestd on initial install
/usr/share/rpm-helper/add-service vmtoolsd $1 vmtoolsd
# Fix xorg.conf so vmmouse driver is not ignored
grep -q 'Option "AutoAddDevices" "off"' /etc/X11/xorg.conf && cp -f /etc/X11/xorg.conf /etc/X11/xorg.conf.old || \
sed -i -e 's/"ServerLayout"/"ServerLayout"\n Option "AutoAddDevices" "off"/g' /etc/X11/xorg.conf
# update-desktop-database %{_datadir}/applications > /dev/null 2>&1 || :
%postun
#update-desktop-database %{_datadir}/applications > /dev/null 2>&1 || :
#/sbin/ldconfig
%preun
# Remove on uninstall
/usr/share/rpm-helper/del-service vmtoolsd $1 vmtoolsd
# Remove AutoAddDevices off from xorg.conf
grep -q 'Option "AutoAddDevices" "off"' /etc/X11/xorg.conf && \
cp -f /etc/X11/xorg.conf /etc/X11/xorg.conf.old && \
cat /etc/X11/xorg.conf.old |grep -v AutoAddDevices > /etc/X11/xorg.conf
%post -n dkms-%{name}
/usr/sbin/dkms --rpm_safe_upgrade add -m %{name} -v %{version}-%{release}
/usr/sbin/dkms --rpm_safe_upgrade build -m %{name} -v %{version}-%{release}
/usr/sbin/dkms --rpm_safe_upgrade install -m %{name} -v %{version}-%{release}
:
%preun -n dkms-%{name}
set -x
/usr/sbin/dkms --rpm_safe_upgrade remove -m %{name} -v %{version}-%{release} --all
:
%files
%defattr(-,root,root,-)
%doc AUTHORS COPYING ChangeLog NEWS README
%{_bindir}/vmtoolsd
%{_bindir}/vmware-checkvm
%{_bindir}/vmware-hgfsclient
%{_bindir}/vmware-rpctool
%{_bindir}/vmware-toolbox
%{_bindir}/vmware-toolbox-cmd
%{_bindir}/vmware-user
%{_bindir}/vmware-xferlogs
%attr(4755,root,root) %{_bindir}/vmware-user-suid-wrapper
%attr(4755,root,root) %{_sbindir}/mount.vmhgfs
/sbin/mount.vmhgfs
%{_libdir}/*.so.*
%{_datadir}/applications/*.desktop
%{_datadir}/pixmaps/*.xpm
%{_sysconfdir}/xdg/autostart/*.desktop
%{_initrddir}/*
%{_sysconfdir}/vmware-tools
%config(noreplace) %{_sysconfdir}/pam.d/*
%config(noreplace) %{_sysconfdir}/sysconfig/mouse
%config(noreplace) %{_sysconfdir}/modprobe.d/*
%{_libdir}/open-vm-tools
%files devel
%defattr(-,root,root,-)
%{_includedir}/*
%{_libdir}/libguestlib.so
%{_libdir}/libvmtools.so
%files -n dkms-%{name}
%defattr(-,root,root)
%{_usrsrc}/%{name}-%{version}-%{release}
%changelog
* Wed Jun 09 2009 Olivier Lahaye <olivier.laha...@free.fr> - 2009.05.22-167859-3mdv2009.1
- Fixed xorg vmmouse in postinstall
- Fixed NoDisplay KDE4 bug in vmware-user.desktop file
* Wed Jun 03 2009 Olivier Lahaye <olivier.laha...@free.fr> - 2009.05.22-167859-2mdv2009.1
- Fix missing headers, polished spec file.
- Fixed package groups
* Mon May 25 2009 Olivier Lahaye <olivier.laha...@free.fr> - 2009.05.22-167859-1mdv2009.1
- Update to upstream build 167859
* Fri May 15 2009 Olivier Lahaye <olivier.laha...@free.fr> - 2009.04.23-162451-1mdv2009.1
- Port to Mandriva 2009.1 from fedora
- Update to upstream build 162451
- Integrated dkms package build
* Sat Jan 10 2009 Denis Leroy <de...@poolshark.org> - 0.0.0.137496-1
- Update to upstream build 137496
* Thu Dec 18 2008 Denis Leroy <de...@poolshark.org> - 0.0.0.130226-1
- Update to upstream 130226
- Desktop patch upstreamed
* Mon Nov 10 2008 Denis Leroy <de...@poolshark.org> - 0.0.0.123053-9
- Some more cleanups
* Fri Oct 31 2008 Denis Leroy <de...@poolshark.org> - 0.0.0.123053-8
- Added toolbox icon
* Tue Oct 28 2008 Denis Leroy <de...@poolshark.org> - 0.0.0.123053-7
- Only export vmci_sockets.h file
* Mon Oct 27 2008 Orcan Ogetbil <orcan [AT] yahoo [DOT] com> 0.0.0.123053-6
- Bugfix: Doesn't build for x86_64.
- Added a devel package containing the header and .so files.
- The shell scripts in %%{_sysconfdir}/vmware-tools/ are now marked non-%%config.
- Minor SPEC file improvements.
* Mon Oct 27 2008 Denis Leroy <de...@poolshark.org> - 0.0.0.123053-5
- Fixed desktop-file-utils reqs
* Sun Oct 26 2008 Denis Leroy <de...@poolshark.org> - 0.0.0.123053-4
- Move drag'n'drop directory management to init script
- Added icon to toolbox desktop entry
- Some rpmlint cleanups
* Tue Oct 21 2008 Denis Leroy <de...@poolshark.org> - 0.0.0.123053-2
- Changed versioning
- Added patches and extra config files as sources
* Wed Oct 15 2008 Denis Leroy <de...@poolshark.org> - 0-1.2008.10.10
- First draft, based on dkms-based spec
diff -ru scripts/common.orig/vmware-toolbox.desktop scripts/common/vmware-toolbox.desktop
--- scripts/common.orig/vmware-toolbox.desktop 2009-06-09 11:22:59.000000000 +0200
+++ scripts/common/vmware-toolbox.desktop 2009-06-09 11:21:32.000000000 +0200
@@ -1,5 +1,4 @@
[Desktop Entry]
-Encoding=UTF-8
Name=VMware Toolbox
Comment=VMware Guest Toolbox utility
# have to use the full path here otherwise help won't work
@@ -7,4 +6,4 @@
Icon=vmware-toolbox
Terminal=false
Type=Application
-Categories=Application;Utility;
+Categories=Utility;
diff -ru scripts/common.orig/vmware-user.desktop scripts/common/vmware-user.desktop
--- scripts/common.orig/vmware-user.desktop 2009-06-09 11:22:59.000000000 +0200
+++ scripts/common/vmware-user.desktop 2009-06-09 11:21:47.000000000 +0200
@@ -1,6 +1,5 @@
[Desktop Entry]
Type=Application
-Encoding=UTF-8
# NB: Generation of the Open VM Tools tarball depends on this line. If you change it
# be sure to also fix up OVT staging targets.
Exec=vmware-user-suid-wrapper
------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables unlimited
royalty-free distribution of the report engine for externally facing
server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
open-vm-tools-devel mailing list
open-vm-tools-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/open-vm-tools-devel