Skip to Content.
Sympa Menu

sm-commit - [SM-Commit] GIT changes to test grimoire by Flavien Bridault (5a78d284289622587a488e3934dc5f9e4a55c283)

sm-commit AT lists.ibiblio.org

Subject: Source Mage code commit list

List archive

Chronological Thread  
  • From: Flavien Bridault <scm AT mail.sourcemage.org>
  • To: sm-commit AT lists.ibiblio.org
  • Subject: [SM-Commit] GIT changes to test grimoire by Flavien Bridault (5a78d284289622587a488e3934dc5f9e4a55c283)
  • Date: Sat, 17 Jun 2006 16:08:41 -0500

GIT changes to test grimoire by Flavien Bridault <vlaaad AT sourcemage.org>:

disk/udev/HISTORY | 7 ++++
disk/udev/INSTALL | 9 +++--
disk/udev/helpers/cdsymlink_helper | 61
+++++++++++++++++++++++++++++++++++++
disk/udev/rules/50-default.rules | 26 +++++++--------
4 files changed, 86 insertions(+), 17 deletions(-)

New commits:
commit 5a78d284289622587a488e3934dc5f9e4a55c283
Merge: 47608988f578c661b033bfbb1b5d14324f1911ae
df6a54a4f1fc7fa41f206b50f9f81080bd45f9ec
Author: Flavien Bridault <vlaaad AT sourcemage.org>
Commit: Flavien Bridault <vlaaad AT sourcemage.org>

Merge branch 'master' of ssh://fbridault AT scm.sourcemage.org/smgl/grimoire

commit 47608988f578c661b033bfbb1b5d14324f1911ae
Author: Flavien Bridault <vlaaad AT sourcemage.org>
Commit: Flavien Bridault <vlaaad AT sourcemage.org>

Redo last revision in git, this one was missing from the svk import,
maybe Arwed didn't have a
up-to-date repository ?

diff --git a/disk/udev/HISTORY b/disk/udev/HISTORY
index cc22e57..15b5e13 100644
--- a/disk/udev/HISTORY
+++ b/disk/udev/HISTORY
@@ -1,3 +1,10 @@
+2006-06-11 Juuso Alasuutari <iuso AT sourcemage.org>
+ * rules/50-default.rules: Removed deprecated %e from cdrom
+ rules, rewrote to use new helper script instead. Did some
+ reorganizing with cdrom and disk rules.
+ * helpers/cdsymlink_helper: Added.
+ * INSTALL: Added cdsymlink_helper script install.
+
2006-05-15 Juuso Alasuutari <iuso AT sourcemage.org>
* PRE_BUILD: Removed fix for typo in alsa rules file, was fixed
upstream
diff --git a/disk/udev/INSTALL b/disk/udev/INSTALL
index 351fc59..ed297cd 100755
--- a/disk/udev/INSTALL
+++ b/disk/udev/INSTALL
@@ -35,10 +35,11 @@ make EXTRAS="extras/run_directory extras
prefix=${INSTALL_ROOT}/ exec_prefix=${INSTALL_ROOT}/ \
V=true ${OPTS} install &&

-# Install interface name retriever script
-mkdir -p /lib/udev &&
-install -m 755 $SCRIPT_DIRECTORY/helpers/mac2name \
-$INSTALL_ROOT/lib/udev &&
+# Install helper scripts
+mkdir -p /lib/udev &&
+for file in $SCRIPT_DIRECTORY/helpers/*; do
+ install -m 755 $file $INSTALL_ROOT/lib/udev
+done &&

if [[ "$UDEV_EXTRAS" == 'y' ]]; then
make EXTRAS="extras/ata_id extras/dasd_id extras/edd_id extras/floppy
extras/scsi_id extras/usb_id extras/volume_id" prefix=${INSTALL_ROOT}/
exec_prefix=${INSTALL_ROOT}/ ${OPTS} V=true install &&
diff --git a/disk/udev/helpers/cdsymlink_helper
b/disk/udev/helpers/cdsymlink_helper
new file mode 100644
index 0000000..803cc20
--- /dev/null
+++ b/disk/udev/helpers/cdsymlink_helper
@@ -0,0 +1,61 @@
+#!/bin/bash
+
+if [[ -z "$1" ]]; then
+ echo "Not enough input!"
+ echo "Usage: $0 %k"
+ exit 1
+fi
+
+# Prevent conflicts between parallel processes by creating a lock dir
+# and using it as a queue ticket. Only the process that can create it
+# (meaning it doesn't already exist from another process) is allowed to
+# proceed, others have to wait. Maximum queue time is 5 seconds, queue
+# check happens every 20 milliseconds.
+lock()
+{
+ [[ -d /dev/.udev ]] ||
+ if ! mkdir -p /dev/.udev; then
+ echo "Cannot create /dev/.udev!"
+ exit 1
+ fi
+ LOCK_DIR=/dev/.udev/.lock-cdsymlink
+ local retry=250
+ while ! mkdir $LOCK_DIR 2>/dev/null; do
+ if ((retry==0)); then
+ echo "Cannot lock $LOCK_DIR!" >&2
+ exit 2
+ fi
+ sleep 0.02
+ ((retry-=1))
+ done
+}
+
+# Once the process is finished, delete lock dir so that the next process
+# may step forward in queue.
+unlock()
+{
+ [[ "$LOCK_DIR" ]] || return 0
+ rm -r $LOCK_DIR 2>/dev/null || return 0
+}
+
+# Find the next available symlink name for device. $1 is the device name
+# from kernel (udev's %k value), $2 is the desired symlink basename
+# (e.g. basename "cdrom" will be used to create symlinks /dev/cdrom,
+# /dev/cdrom1, etc.)
+echo_link()
+{
+ local num
+ while [[ -e /dev/$2$num ]] &&
+ [[ "$(readlink /dev/$2$num)" != "$1" ]]; do
+ ((num+=1))
+ done
+ echo -n "$2$num "
+}
+
+lock
+
+# Output symlink name for cdrom, and then for dvd if needed.
+echo_link $1 cdrom
+[[ "$ID_CDROM_DVD" ]] && echo_link $1 dvd
+
+unlock
diff --git a/disk/udev/rules/50-default.rules
b/disk/udev/rules/50-default.rules
index 7bbed58..dac5953 100644
--- a/disk/udev/rules/50-default.rules
+++ b/disk/udev/rules/50-default.rules
@@ -23,10 +23,6 @@ KERNEL=="vcs[0-9]*", NAME="vcc/%n", SY
KERNEL=="vcsa", NAME="vcc/a0", SYMLINK="%k"
KERNEL=="vcsa[0-9]*", NAME="vcc/a%n", SYMLINK="%k"

-# all block devices
-SUBSYSTEM=="block", GROUP="disk", MODE="0640"
-SUBSYSTEM=="block", SYSFS{removable}=="1", GROUP="floppy"
-
# device mapper creates its own device nodes so ignore these
KERNEL=="dm-[0-9]*", OPTIONS="ignore_device"
KERNEL=="device-mapper", NAME="mapper/control"
@@ -38,18 +34,22 @@ KERNEL=="ataraid*", NAME="%k", GROU
BUS=="scsi", KERNEL=="sr[0-9]*", GROUP="scsi"
BUS=="scsi", KERNEL=="sg[0-9]*", GROUP="burning"

-# cdrom devices
-BUS=="ide", KERNEL=="hd[a-z]", ACTION=="add", IMPORT="cdrom_id --export
$tempnode"
-BUS=="scsi", KERNEL=="sr[0-9]*", ACTION=="add", IMPORT="cdrom_id --export
$tempnode"
-BUS=="scsi", KERNEL=="scd[a-z]", ACTION=="add", IMPORT="cdrom_id --export
$tempnode"
-ENV{ID_CDROM}=="?*", SYMLINK+="cdrom%e", GROUP="cdrom"
-ENV{ID_CDROM_CD_RW}=="?*", SYMLINK+="cdrw%e", MODE="0660",
GROUP="burning"
-ENV{ID_CDROM_DVD}=="?*", SYMLINK+="dvd%e"
-ENV{ID_CDROM_DVD_R}=="?*", SYMLINK+="dvdrw%e"
+# all block devices
+SUBSYSTEM=="block", GROUP="disk", MODE="0640"
+SUBSYSTEM=="block", SYSFS{removable}=="1", GROUP="floppy", MODE="0660"
+
+# ide cdrom devices
+BUS=="ide", KERNEL=="hd[a-z]", ACTION=="add", IMPORT="cdrom_id --export
$tempnode"

-# permissions for SCSI CD devices
+# scsi cdrom devices
+BUS=="scsi", KERNEL=="sr[0-9]*", ACTION=="add", IMPORT="cdrom_id --export
$tempnode"
+BUS=="scsi", KERNEL=="scd[a-z]", ACTION=="add", IMPORT="cdrom_id --export
$tempnode"
BUS=="scsi", KERNEL=="s[grt][0-9]*", SYSFS{type}=="5", MODE="0660",
GROUP="cdrom"

+# cdrom device symlinks and permissions
+ENV{ID_CDROM}=="?*", PROGRAM="cdsymlink_helper %k", SYMLINK+="%c",
GROUP="cdrom"
+ENV{ID_CDROM_CD_R}=="?*", SYMLINK+="%c", MODE="0660", GROUP="burning"
+
# tape devices
KERNEL=="ht*", NAME="%k"
KERNEL=="nht*", NAME="%k"



  • [SM-Commit] GIT changes to test grimoire by Flavien Bridault (5a78d284289622587a488e3934dc5f9e4a55c283), Flavien Bridault, 06/17/2006

Archive powered by MHonArc 2.6.24.

Top of Page