Factor out a kinect_patch_udev_rules script
authorAntonio Ospite <ao2@ao2.it>
Sat, 9 Jan 2016 11:59:53 +0000 (12:59 +0100)
committerAntonio Ospite <ao2@ao2.it>
Sat, 9 Jan 2016 14:13:02 +0000 (15:13 +0100)
This allows to prepare the udev rules file at "make install" time, while
still being able to fetch the firmware at some later stage.

This makes it easier for packages to have a stable udev rules file.

kinect_fetch_fw
kinect_patch_udev_rules [new file with mode: 0755]

index 7c84cf1..9437a4d 100755 (executable)
@@ -21,9 +21,8 @@ set -e
 SDK_URL=${SDK_URL:-"http://download.microsoft.com/download/F/9/9/F99791F2-D5BE-478A-B77A-830AD14950C3/KinectSDK-v1.0-beta2-x86.msi"}
 SDK_MD5="40764fe9e00911bda5095e5be777e311"
 
 SDK_URL=${SDK_URL:-"http://download.microsoft.com/download/F/9/9/F99791F2-D5BE-478A-B77A-830AD14950C3/KinectSDK-v1.0-beta2-x86.msi"}
 SDK_MD5="40764fe9e00911bda5095e5be777e311"
 
-[ $# -lt 1 ] && { echo "usage: $(basename "$0") <firmware destdir> [<path of kinect_upload_fw binary>]" 1>&2; exit 1; }
+[ $# -lt 1 ] && { echo "usage: $(basename "$0") <firmware destdir>" 1>&2; exit 1; }
 FW_DESTDIR=$(readlink -m $1)
 FW_DESTDIR=$(readlink -m $1)
-LOADER_PATH=${2:-"/usr/local/sbin/kinect_upload_fw"}
 
 command -v wget >/dev/null 2>&1 || { echo "$(basename "$0"): command 'wget' is needed." 1>&2 ; exit 1; }
 command -v 7z >/dev/null 2>&1 || { echo "$(basename "$0"): command '7z' is needed." 1>&2; exit 1; }
 
 command -v wget >/dev/null 2>&1 || { echo "$(basename "$0"): command 'wget' is needed." 1>&2 ; exit 1; }
 command -v 7z >/dev/null 2>&1 || { echo "$(basename "$0"): command '7z' is needed." 1>&2; exit 1; }
@@ -63,10 +62,3 @@ FIRMWARE_PATH="${FW_DESTDIR}/UACFirmware"
 
 install -d "$FW_DESTDIR"
 install -m 644 "$FW_FILE" "$FIRMWARE_PATH"
 
 install -d "$FW_DESTDIR"
 install -m 644 "$FW_FILE" "$FIRMWARE_PATH"
-
-if [ -f "/lib/udev/rules.d/55-kinect_audio.rules" ];
-then
-  sed -e "s|@LOADER_PATH@|${LOADER_PATH}|g" \
-      -e "s|@FIRMWARE_PATH@|${FIRMWARE_PATH}|g" \
-      -i "/lib/udev/rules.d/55-kinect_audio.rules"
-fi
diff --git a/kinect_patch_udev_rules b/kinect_patch_udev_rules
new file mode 100755 (executable)
index 0000000..85027ce
--- /dev/null
@@ -0,0 +1,36 @@
+#!/bin/sh
+#
+# kinect_patch_udev_rules - Patch contrib/ udev rules file to load UACFirmware
+#
+# Copyright (C) 2016  Antonio Ospite <ao2@ao2.it>
+#
+# This program is free software. It comes without any warranty, to
+# the extent permitted by applicable law. You can redistribute it
+# and/or modify it under the terms of the Do What The Fuck You Want
+# To Public License, Version 2, as published by Sam Hocevar. See
+# http://sam.zoy.org/wtfpl/COPYING for more details.
+
+set -e
+
+[ $# -lt 3 ] && { echo "usage: $(basename "$0") <firmware path> <kinect_upload_fw path> <55-kinect_audio.rules path>" 1>&2; exit 1; }
+FIRMWARE_PATH="$1"
+LOADER_PATH="$2"
+UDEV_RULES_PATH="$3"
+
+[ "x$FIRMWARE_PATH" != "x" ] || { echo "Empty FIRMWARE_PATH" 1>&2; exit 1;}
+[ "x$LOADER_PATH" != "x" ] || { echo "Empty LOADER_PATH" 1>&2; exit 1;}
+
+# The udev rules file must exist the other files may not exist just yet: they
+# may be under a prefixed path different from the final one, like in the case
+# when this is called at package creation time.
+[ -f "$UDEV_RULES_PATH" ] || { echo "Cannot find the udev rules file: $UDEV_RULES_PATH" 1>&2; exit 1; }
+
+if grep -q "@LOADER_PATH@ @FIRMWARE_PATH@" "$UDEV_RULES_PATH";
+then
+  sed -e "s|@LOADER_PATH@|${LOADER_PATH}|g" \
+      -e "s|@FIRMWARE_PATH@|${FIRMWARE_PATH}|g" \
+      -i "$UDEV_RULES_PATH"
+else
+  echo "$UDEV_RULES_PATH does not contain the expected placeholders." 2>&1
+  exit 1
+fi