[packages/VirtualBox] - merged udev support into main package - fix USB device detection without /proc/bus/usb - rel 5

baggins baggins at pld-linux.org
Thu Apr 11 14:59:58 CEST 2013


commit 12db98a741bbc45243cba89ed8f69906a116e318
Author: Jan Rękorajski <baggins at pld-linux.org>
Date:   Thu Apr 11 14:59:05 2013 +0200

    - merged udev support into main package
    - fix USB device detection without /proc/bus/usb
    - rel 5

 VirtualBox.spec | 40 ++++++++++++++++++----------------------
 udev.rules      |  6 ++++++
 2 files changed, 24 insertions(+), 22 deletions(-)
---
diff --git a/VirtualBox.spec b/VirtualBox.spec
index 51e8508..669bd50 100644
--- a/VirtualBox.spec
+++ b/VirtualBox.spec
@@ -32,7 +32,7 @@
 %define		_enable_debug_packages	0
 %endif
 
-%define		rel		4
+%define		rel		5
 %define		pname		VirtualBox
 Summary:	VirtualBox - x86 hardware virtualizer
 Summary(pl.UTF-8):	VirtualBox - wirtualizator sprzętu x86
@@ -151,8 +151,10 @@ Requires(pre):	/usr/sbin/groupadd
 Requires:	QtCore >= 4.7.0
 Requires:	desktop-file-utils
 Requires:	libvncserver >= 0.9.9
+Requires:	udev-core
 Suggests:	gxmessage
 Provides:	group(vbox)
+Obsoletes:	VirtualBox-udev < %{version}-%{release}
 ExclusiveArch:	%{ix86} %{x8664}
 BuildRoot:	%{tmpdir}/%{name}-%{version}-root-%(id -u -n)
 
@@ -236,20 +238,6 @@ Group:		Documentation
 %description doc
 This package contains VirtualBox User Manual.
 
-%package udev
-Summary:	udev rules for VirtualBox kernel modules
-Summary(pl.UTF-8):	Reguły udev dla modułów jądra Linuksa dla VirtualBoksa
-Group:		Base/Kernel
-Requires:	udev-core
-
-%description udev
-udev rules for VirtualBox kernel modules.
-
-You should install this package in your Host OS and in Guest OS.
-
-%description udev -l pl.UTF-8
-Reguły udev dla modułów jądra Linuksa dla VirtualBoksa.
-
 %package additions
 Summary:	VirtualBox Guest Additions
 Group:		Base
@@ -581,7 +569,8 @@ rm -rf $RPM_BUILD_ROOT
 %if %{with userspace}
 install -d $RPM_BUILD_ROOT{%{_bindir},%{_sbindir},%{_libdir}/%{pname}/ExtensionPacks} \
 	$RPM_BUILD_ROOT{%{_pixmapsdir},%{_desktopdir}} \
-	$RPM_BUILD_ROOT%{_libdir}/xorg/modules/{drivers,dri,input}
+	$RPM_BUILD_ROOT%{_libdir}/xorg/modules/{drivers,dri,input} \
+	$RPM_BUILD_ROOT{/lib/udev,/etc/udev/rules}
 
 # test if we can hardlink -- %{_builddir} and $RPM_BUILD_ROOT on same partition
 if cp -al VBox.png $RPM_BUILD_ROOT/Vbox.png 2>/dev/null; then
@@ -618,8 +607,8 @@ done
 %{__mv} $RPM_BUILD_ROOT{%{_libdir}/%{pname}/additions,%{_libdir}}/VBoxOGLpackspu.so
 %{__mv} $RPM_BUILD_ROOT{%{_libdir}/%{pname}/additions,%{_libdir}}/VBoxOGLpassthroughspu.so
 
-install -d $RPM_BUILD_ROOT/etc/udev/rules.d
 cp -a %{SOURCE11} $RPM_BUILD_ROOT/etc/udev/rules.d/virtualbox.rules
+%{__mv} $RPM_BUILD_ROOT{%{_libdir}/%{pname},/lib/udev}/VBoxCreateUSBNode.sh
 
 install -d $RPM_BUILD_ROOT/%{_lib}/security
 %{__mv} $RPM_BUILD_ROOT{%{_libdir}/%{pname}/additions,/%{_lib}/security}/pam_vbox.so
@@ -713,6 +702,15 @@ rm -rf $RPM_BUILD_ROOT
 
 %post
 %update_desktop_database
+for i in /sys/bus/usb/devices/*; do
+	if [ -r "$i/dev" ]; then
+		dev="`cat "$i/dev" 2>/dev/null || true`"
+		major="`expr "$dev" : '\(.*\):' 2> /dev/null || true`"
+		minor="`expr "$dev" : '.*:\(.*\)' 2> /dev/null || true`"
+		class="`cat $i/bDeviceClass 2> /dev/null || true`"
+		/lib/udev/VBoxCreateUSBNode.sh "$major" "$minor" "$class" vbox 2>/dev/null
+	fi
+done
 
 cat << 'EOF'
 You must install vboxdrv kernel module for this software to work:
@@ -870,7 +868,6 @@ fi
 %attr(755,root,root) %{_libdir}/%{pname}/VBoxAutostart
 %attr(755,root,root) %{_libdir}/%{pname}/VBoxBFE
 %attr(755,root,root) %{_libdir}/%{pname}/VBoxBalloonCtrl
-%attr(755,root,root) %{_libdir}/%{pname}/VBoxCreateUSBNode.sh
 %attr(755,root,root) %{_libdir}/%{pname}/VBoxDbg.so
 %attr(755,root,root) %{_libdir}/%{pname}/VBoxDD2.so
 %attr(755,root,root) %{_libdir}/%{pname}/VBoxDD.so
@@ -967,6 +964,9 @@ fi
 %{_libdir}/%{pname}/icons
 %{_libdir}/%{pname}/virtualbox.xml
 
+%config(noreplace) %verify(not md5 mtime size) /etc/udev/rules.d/virtualbox.rules
+%attr(755,root,root) /lib/udev/VBoxCreateUSBNode.sh
+
 %files additions
 %defattr(644,root,root,755)
 %{_libdir}/%{pname}/additions/VBoxGuestAdditions.iso
@@ -1002,10 +1002,6 @@ fi
 %lang(fr) %doc %{outdir}/UserManual_fr_FR.pdf
 %endif
 
-%files udev
-%defattr(644,root,root,755)
-%config(noreplace) %verify(not md5 mtime size) /etc/udev/rules.d/virtualbox.rules
-
 %files -n xorg-driver-video-vboxvideo
 %defattr(644,root,root,755)
 %attr(755,root,root) %{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
diff --git a/udev.rules b/udev.rules
index 36ae989..e9dfda7 100644
--- a/udev.rules
+++ b/udev.rules
@@ -1,3 +1,9 @@
 # udev rules for VirtualBox
 KERNEL=="vboxdrv",    GROUP="vbox", MODE="0660"
 KERNEL=="vboxnetctl", GROUP="vbox", MODE="0660"
+
+SUBSYSTEM=="usb_device", ACTION=="add", RUN+="VBoxCreateUSBNode.sh $major $minor $attr{bDeviceClass} vbox"
+SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", RUN+="VBoxCreateUSBNode.sh $major $minor $attr{bDeviceClass} vbox"
+
+SUBSYSTEM=="usb_device", ACTION=="remove", RUN+="VBoxCreateUSBNode.sh --remove $major $minor"
+SUBSYSTEM=="usb", ACTION=="remove", ENV{DEVTYPE}=="usb_device", RUN+="VBoxCreateUSBNode.sh --remove $major $minor"
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/VirtualBox.git/commitdiff/12db98a741bbc45243cba89ed8f69906a116e318



More information about the pld-cvs-commit mailing list