Files
poky/meta/recipes-core/udev/eudev/udev-cache
Alejandro Hernandez 3e5e540513 eudev: Replaces udev with eudev for compatibility when using sysvinit on newer kernels
udev has started to fail on new kernels (4.4), due to being deprecated in favor
of systemd's udev implementation. To maintain a sysvinit alternative we also
need to provide an alternative to udev. Eudev is a fork of systemds udev,
this new eudev recipe provides upstream udev 220 funcitonality.

  - Removes patches that dont apply anymore
  - ToDo: eudev-ptest?

[YOCTO #8998]

(From OE-Core rev: a22797f7c37a865420837b5c29b270f73ee4c6ce)

Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2016-03-02 22:39:43 +00:00

2.1 KiB

#!/bin/sh -e

BEGIN INIT INFO

Provides: udev-cache

Required-Start: mountall

Required-Stop:

Default-Start: S

Default-Stop:

Short-Description: cache /dev to speedup the udev next boot

END INIT INFO

export TZ=/etc/localtime

[ -r /proc/mounts ] || exit 1 [ -x @UDEVD@ ] || exit 1 [ -d /sys/class ] || exit 1

[ -f /etc/default/rcS ] && . /etc/default/rcS DEVCACHE_TMP="/dev/shm/udev-cache-tmp.tar" SYSCONF_CACHED="/etc/udev/cache.data" SYSCONF_TMP="/dev/shm/udev.cache" DEVCACHE_REGEN="/dev/shm/udev-regen" # create to request cache regen

A list of files which are used as a criteria to judge whether the udev cache could be reused.

CMP_FILE_LIST="/proc/version /proc/cmdline /proc/devices" [ -f /proc/atags ] && CMP_FILE_LIST="$CMP_FILE_LIST /proc/atags"

List of files whose metadata (size/mtime/name) will be included in cached

system state.

META_FILE_LIST="lib/udev/rules.d/* etc/udev/rules.d/*"

Command to compute system configuration.

sysconf_cmd () { cat -- $CMP_FILE_LIST stat -c '%s %Y %n' -- $META_FILE_LIST | awk -F/ '{print $1 " " $NF;}' }

[ -f /etc/default/udev-cache ] && . /etc/default/udev-cache

if [ "$ROOTFS_READ_ONLY" = "yes" ]; then [ "$VERBOSE" != "no" ] && echo "udev-cache: read-only rootfs, skip generating udev-cache" exit 0 fi

[ "$DEVCACHE" != "" ] || exit 0 [ "${VERBOSE}" == "no" ] || echo -n "udev-cache: checking for ${DEVCACHE_REGEN}... " if ! [ -e "$DEVCACHE_REGEN" ]; then [ "${VERBOSE}" == "no" ] || echo "not found." exit 0 fi [ "${VERBOSE}" == "no" ] || echo "found." echo "Populating dev cache"

err_cleanup () { echo "udev-cache: update failed!" udevadm control --start-exec-queue rm -f -- "$SYSCONF_TMP" "$DEVCACHE_TMP" "$DEVCACHE" "$SYSCONF_CACHED" }

( set -e trap 'err_cleanup' EXIT udevadm control --stop-exec-queue sysconf_cmd > "$SYSCONF_TMP" find /dev -xdev ( -type b -o -type c -o -type l ) | cut -c 2-
| xargs tar cf "${DEVCACHE_TMP}" gzip < "${DEVCACHE_TMP}" > "$DEVCACHE" rm -f "${DEVCACHE_TMP}" mv "$SYSCONF_TMP" "$SYSCONF_CACHED" udevadm control --start-exec-queue rm -f "$DEVCACHE_REGEN" trap - EXIT ) &

exit 0