Patchwork usbmount: stop using blkid, use udev environment variables instead

login
register
mail settings
Submitter Sven Neumann
Date June 19, 2013, 3:56 p.m.
Message ID <1371657388-11563-1-git-send-email-s.neumann@raumfeld.com>
Download mbox | patch
Permalink /patch/252601/
State Accepted
Commit e26267ef2e4f4d2548d081fb85428fa45f9c6276
Headers show

Comments

Sven Neumann - June 19, 2013, 3:56 p.m.
The blkid binary is not any longer installed when libblkid from
util-linux is selected. udev has a builtin blkid command though
and already detects all values that we are interested in. Change
the usbmount script to use the environment variables set by udev
instead of calling blkid directly.

Signed-off-by: Sven Neumann <s.neumann@raumfeld.com>
---
 package/usbmount/Config.in                         |  8 +--
 ...unt-use-udev-environment-instead-of-blkid.patch | 71 ++++++++++++++++++++++
 package/usbmount/usbmount.mk                       |  2 +-
 3 files changed, 74 insertions(+), 7 deletions(-)
 create mode 100644 package/usbmount/usbmount-use-udev-environment-instead-of-blkid.patch
Peter Korsgaard - June 19, 2013, 8:32 p.m.
>>>>> "Sven" == Sven Neumann <s.neumann@raumfeld.com> writes:

 Sven> The blkid binary is not any longer installed when libblkid from
 Sven> util-linux is selected. udev has a builtin blkid command though
 Sven> and already detects all values that we are interested in. Change
 Sven> the usbmount script to use the environment variables set by udev
 Sven> instead of calling blkid directly.

 Sven> Signed-off-by: Sven Neumann <s.neumann@raumfeld.com>

Committed, thanks. Please don't forget to send the patch upstream as
well.
Sven Neumann - June 20, 2013, 7:10 a.m.
Hello Peter,
On Wed, 2013-06-19 at 22:32 +0200, Peter Korsgaard wrote:
> >>>>> "Sven" == Sven Neumann <s.neumann@raumfeld.com> writes:
> 
>  Sven> The blkid binary is not any longer installed when libblkid from
>  Sven> util-linux is selected. udev has a builtin blkid command though
>  Sven> and already detects all values that we are interested in. Change
>  Sven> the usbmount script to use the environment variables set by udev
>  Sven> instead of calling blkid directly.
> 
>  Sven> Signed-off-by: Sven Neumann <s.neumann@raumfeld.com>
> 
> Committed, thanks. Please don't forget to send the patch upstream as
> well.

Well, I can try, but I am afraid that usbmount is not any longer
maintained. The project page doesn't indicate any activity for year and
the last commits in their SVN repository date back to 2009 (after the
package has been officially orphaned in 2007).


Regards,
Sven

Patch

diff --git a/package/usbmount/Config.in b/package/usbmount/Config.in
index 30c7b5a..2583e7c 100644
--- a/package/usbmount/Config.in
+++ b/package/usbmount/Config.in
@@ -1,16 +1,12 @@ 
 config BR2_PACKAGE_USBMOUNT
 	bool "usbmount"
-	depends on BR2_LARGEFILE # util-linux
-	depends on BR2_USE_WCHAR # util-linux
 	depends on BR2_PACKAGE_UDEV
 	select BR2_PACKAGE_LOCKFILE_PROGS
-	select BR2_PACKAGE_UTIL_LINUX
-	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
 	help
 	  The usbmount package automatically mounts USB mass storage devices
 	  when they are plugged in, and unmounts them when they are removed.
 
 	  http://usbmount.alioth.debian.org/
 
-comment "usbmount requires a toolchain with LARGEFILE + WCHAR support"
-	depends on !(BR2_LARGEFILE && BR2_USE_WCHAR) && BR2_PACKAGE_UDEV
+comment "usbmount requires udev to be enabled"
+	depends on !BR2_PACKAGE_UDEV
diff --git a/package/usbmount/usbmount-use-udev-environment-instead-of-blkid.patch b/package/usbmount/usbmount-use-udev-environment-instead-of-blkid.patch
new file mode 100644
index 0000000..27928b5
--- /dev/null
+++ b/package/usbmount/usbmount-use-udev-environment-instead-of-blkid.patch
@@ -0,0 +1,71 @@ 
+udev can provide all the values that usbmount determined using the
+blkid binary. This patch drops use of blkid in favor of using the
+environment variables set by udev. Thus it removes the dependency
+on blkid from usbmount.
+
+Signed-off-by: Sven Neumann <s.neumann@raumfeld.com>
+--- usbmount-0.0.22/usbmount.orig	2013-06-18 14:44:40.143096147 +0200
++++ usbmount-0.0.22/usbmount	2013-06-19 16:13:09.882434896 +0200
+@@ -59,11 +59,6 @@
+     exit 0
+ fi
+ 
+-if [ ! -x /sbin/blkid ]; then
+-    log err "cannot execute /sbin/blkid"
+-    exit 1
+-fi
+-
+ # Per Policy 9.3.2, directories under /var/run have to be created
+ # after every reboot.
+ if [ ! -e /var/run/usbmount ]; then
+@@ -83,15 +78,7 @@
+     trap '( lockfile-remove /var/run/usbmount/.mount )' 0
+     log debug "acquired lock /var/run/usbmount/.mount.lock"
+ 
+-    # Grab device information from device and "divide it"
+-    #   FIXME: improvement: implement mounting by label (notice that labels
+-    #   can contain spaces, which makes things a little bit less comfortable).
+-    DEVINFO=$(/sbin/blkid -p $DEVNAME)
+-    FSTYPE=$(echo "$DEVINFO" | sed 's/.*[[:blank:]]TYPE="\([^"]*\)".*/\1/g; s/[[:blank:]]*//g;')
+-    UUID=$(echo "$DEVINFO"   | sed 's/.*[[:blank:]]UUID="\([^"]*\)".*/\1/g; s/[[:blank:]]*//g;')
+-    USAGE=$(echo "$DEVINFO"  | sed 's/.*[[:blank:]]USAGE="\([^"]*\)".*/\1/g; s/[[:blank:]]*//g;')
+-
+-    if ! echo $USAGE | egrep -q "(filesystem|disklabel)"; then
++    if ! echo $ID_FS_USAGE | egrep -q "(filesystem|disklabel)"; then
+ 	log info "$DEVNAME does not contain a filesystem or disklabel"
+ 	exit 1
+     fi
+@@ -101,14 +88,14 @@
+ 	log info "executing command: mount $DEVNAME"
+ 	mount $DEVNAME || log err "mount by DEVNAME with $DEVNAME wasn't successful; return code $?"
+ 
+-    elif grep -q "^[[:blank:]]*UUID=$UUID" /etc/fstab; then
+-        log info "executing command: mount -U $UUID"
+-	mount -U $UUID || log err "mount by UUID with $UUID wasn't successful; return code $?"
++    elif grep -q "^[[:blank:]]*UUID=$ID_FS_UUID" /etc/fstab; then
++        log info "executing command: mount -U $ID_FS_UUID"
++	mount -U $ID_FS_UUID || log err "mount by UUID with $ID_FS_UUID wasn't successful; return code $?"
+ 
+     else
+-	log debug "$DEVNAME contains filesystem type $FSTYPE"
++	log debug "$DEVNAME contains filesystem type $ID_FS_TYPE"
+ 
+-	fstype=$FSTYPE
++	fstype=$ID_FS_TYPE
+ 	# Test if the filesystem type is in the list of filesystem
+ 	# types to mount.
+ 	if in_list "$fstype" "$FILESYSTEMS"; then
+@@ -176,11 +163,13 @@
+ 
+ 		# Run hook scripts; ignore errors.
+ 		export UM_DEVICE="$DEVNAME"
++		export UM_UUID="$ID_FS_UUID"
+ 		export UM_MOUNTPOINT="$mountpoint"
+ 		export UM_FILESYSTEM="$fstype"
+ 		export UM_MOUNTOPTIONS="$options"
+ 		export UM_VENDOR="$vendor"
+ 		export UM_MODEL="$model"
++		export UM_LABEL="$ID_FS_LABEL"
+ 		log info "executing command: run-parts /etc/usbmount/mount.d"
+ 		run-parts /etc/usbmount/mount.d || :
+ 	    else
diff --git a/package/usbmount/usbmount.mk b/package/usbmount/usbmount.mk
index 69262a6..de87009 100644
--- a/package/usbmount/usbmount.mk
+++ b/package/usbmount/usbmount.mk
@@ -7,7 +7,7 @@ 
 USBMOUNT_VERSION = 0.0.22
 USBMOUNT_SOURCE = usbmount_$(USBMOUNT_VERSION).tar.gz
 USBMOUNT_SITE = $(BR2_DEBIAN_MIRROR)/debian/pool/main/u/usbmount
-USBMOUNT_DEPENDENCIES = udev lockfile-progs util-linux
+USBMOUNT_DEPENDENCIES = udev lockfile-progs
 
 define USBMOUNT_INSTALL_TARGET_CMDS
 	$(INSTALL) -m 0755 -D $(@D)/usbmount $(TARGET_DIR)/usr/share/usbmount/usbmount