summaryrefslogtreecommitdiffstats
path: root/meta/recipes-core/initscripts/initscripts-1.0/populate-volatile.sh
diff options
context:
space:
mode:
authorRichard Purdie <rpurdie@linux.intel.com>2010-08-27 15:14:24 +0100
committerRichard Purdie <rpurdie@linux.intel.com>2010-08-27 15:29:45 +0100
commit29d6678fd546377459ef75cf54abeef5b969b5cf (patch)
tree8edd65790e37a00d01c3f203f773fe4b5012db18 /meta/recipes-core/initscripts/initscripts-1.0/populate-volatile.sh
parentda49de6885ee1bc424e70bc02f21f6ab920efb55 (diff)
downloadpoky-29d6678fd546377459ef75cf54abeef5b969b5cf.tar.gz
Major layout change to the packages directory
Having one monolithic packages directory makes it hard to find things and is generally overwhelming. This commit splits it into several logical sections roughly based on function, recipes.txt gives more information about the classifications used. The opportunity is also used to switch from "packages" to "recipes" as used in OpenEmbedded as the term "packages" can be confusing to people and has many different meanings. Not all recipes have been classified yet, this is just a first pass at separating things out. Some packages are moved to meta-extras as they're no longer actively used or maintained. Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
Diffstat (limited to 'meta/recipes-core/initscripts/initscripts-1.0/populate-volatile.sh')
-rwxr-xr-xmeta/recipes-core/initscripts/initscripts-1.0/populate-volatile.sh197
1 files changed, 197 insertions, 0 deletions
diff --git a/meta/recipes-core/initscripts/initscripts-1.0/populate-volatile.sh b/meta/recipes-core/initscripts/initscripts-1.0/populate-volatile.sh
new file mode 100755
index 0000000000..1813fd1240
--- /dev/null
+++ b/meta/recipes-core/initscripts/initscripts-1.0/populate-volatile.sh
@@ -0,0 +1,197 @@
1#!/bin/sh
2### BEGIN INIT INFO
3# Provides: volatile
4# Required-Start: $local_fs
5# Required-Stop: $local_fs
6# Default-Start: S
7# Default-Stop:
8# Short-Description: Populate the volatile filesystem
9### END INIT INFO
10
11. /etc/default/rcS
12
13CFGDIR="/etc/default/volatiles"
14TMPROOT="/var/tmp"
15COREDEF="00_core"
16
17[ "${VERBOSE}" != "no" ] && echo "Populating volatile Filesystems."
18
19create_file() {
20 EXEC="
21 touch \"$1\";
22 chown ${TUSER}.${TGROUP} $1 || echo \"Failed to set owner -${TUSER}- for -$1-.\" >/dev/tty0 2>&1;
23 chmod ${TMODE} $1 || echo \"Failed to set mode -${TMODE}- for -$1-.\" >/dev/tty0 2>&1 "
24
25 test "$VOLATILE_ENABLE_CACHE" = yes && echo "$EXEC" >> /etc/volatile.cache
26
27 [ -e "$1" ] && {
28 [ "${VERBOSE}" != "no" ] && echo "Target already exists. Skipping."
29 } || {
30 eval $EXEC &
31 }
32}
33
34mk_dir() {
35 EXEC="
36 mkdir -p \"$1\";
37 chown ${TUSER}.${TGROUP} $1 || echo \"Failed to set owner -${TUSER}- for -$1-.\" >/dev/tty0 2>&1;
38 chmod ${TMODE} $1 || echo \"Failed to set mode -${TMODE}- for -$1-.\" >/dev/tty0 2>&1 "
39
40 test "$VOLATILE_ENABLE_CACHE" = yes && echo "$EXEC" >> /etc/volatile.cache
41
42 [ -e "$1" ] && {
43 [ "${VERBOSE}" != "no" ] && echo "Target already exists. Skipping."
44 } || {
45 eval $EXEC &
46 }
47}
48
49link_file() {
50 EXEC="test -e \"$2\" -o -L $2 || ln -s \"$1\" \"$2\" >/dev/tty0 2>&1"
51
52 test "$VOLATILE_ENABLE_CACHE" = yes && echo " $EXEC" >> /etc/volatile.cache
53
54 [ -e "$2" ] && {
55 echo "Cannot create link over existing -${TNAME}-." >&2
56 } || {
57 eval $EXEC &
58 }
59}
60
61check_requirements() {
62
63 cleanup() {
64 rm "${TMP_INTERMED}"
65 rm "${TMP_DEFINED}"
66 rm "${TMP_COMBINED}"
67 }
68
69 CFGFILE="$1"
70
71 [ `basename "${CFGFILE}"` = "${COREDEF}" ] && return 0
72
73 TMP_INTERMED="${TMPROOT}/tmp.$$"
74 TMP_DEFINED="${TMPROOT}/tmpdefined.$$"
75 TMP_COMBINED="${TMPROOT}/tmpcombined.$$"
76
77
78 cat /etc/passwd | sed 's@\(^:\)*:.*@\1@' | sort | uniq > "${TMP_DEFINED}"
79 cat ${CFGFILE} | grep -v "^#" | cut -d " " -f 2 > "${TMP_INTERMED}"
80 cat "${TMP_DEFINED}" "${TMP_INTERMED}" | sort | uniq > "${TMP_COMBINED}"
81
82 NR_DEFINED_USERS="`cat "${TMP_DEFINED}" | wc -l`"
83 NR_COMBINED_USERS="`cat "${TMP_COMBINED}" | wc -l`"
84
85 [ "${NR_DEFINED_USERS}" -ne "${NR_COMBINED_USERS}" ] && {
86 echo "Undefined users:"
87 diff "${TMP_DEFINED}" "${TMP_COMBINED}" | grep "^>"
88 cleanup
89 return 1
90 }
91
92
93 cat /etc/group | sed 's@\(^:\)*:.*@\1@' | sort | uniq > "${TMP_DEFINED}"
94 cat ${CFGFILE} | grep -v "^#" | cut -d " " -f 3 > "${TMP_INTERMED}"
95 cat "${TMP_DEFINED}" "${TMP_INTERMED}" | sort | uniq > "${TMP_COMBINED}"
96
97 NR_DEFINED_GROUPS="`cat "${TMP_DEFINED}" | wc -l`"
98 NR_COMBINED_GROUPS="`cat "${TMP_COMBINED}" | wc -l`"
99
100 [ "${NR_DEFINED_GROUPS}" -ne "${NR_COMBINED_GROUPS}" ] && {
101 echo "Undefined groups:"
102 diff "${TMP_DEFINED}" "${TMP_COMBINED}" | grep "^>"
103 cleanup
104 return 1
105 }
106
107 # Add checks for required directories here
108
109 cleanup
110 return 0
111 }
112
113apply_cfgfile() {
114
115 CFGFILE="$1"
116
117 check_requirements "${CFGFILE}" || {
118 echo "Skipping ${CFGFILE}"
119 return 1
120 }
121
122 cat ${CFGFILE} | grep -v "^#" | \
123 while read LINE; do
124
125 eval `echo "$LINE" | sed -n "s/\(.*\)\ \(.*\) \(.*\)\ \(.*\)\ \(.*\)\ \(.*\)/TTYPE=\1 ; TUSER=\2; TGROUP=\3; TMODE=\4; TNAME=\5 TLTARGET=\6/p"`
126
127 [ "${VERBOSE}" != "no" ] && echo "Checking for -${TNAME}-."
128
129
130 [ "${TTYPE}" = "l" ] && {
131 TSOURCE="$TLTARGET"
132 [ -L "${TNAME}" ] || {
133 [ "${VERBOSE}" != "no" ] && echo "Creating link -${TNAME}- pointing to -${TSOURCE}-."
134 link_file "${TSOURCE}" "${TNAME}" &
135 }
136 continue
137 }
138
139 [ -L "${TNAME}" ] && {
140 [ "${VERBOSE}" != "no" ] && echo "Found link."
141 NEWNAME=`ls -l "${TNAME}" | sed -e 's/^.*-> \(.*\)$/\1/'`
142 echo ${NEWNAME} | grep -v "^/" >/dev/null && {
143 TNAME="`echo ${TNAME} | sed -e 's@\(.*\)/.*@\1@'`/${NEWNAME}"
144 [ "${VERBOSE}" != "no" ] && echo "Converted relative linktarget to absolute path -${TNAME}-."
145 } || {
146 TNAME="${NEWNAME}"
147 [ "${VERBOSE}" != "no" ] && echo "Using absolute link target -${TNAME}-."
148 }
149 }
150
151 case "${TTYPE}" in
152 "f") [ "${VERBOSE}" != "no" ] && echo "Creating file -${TNAME}-."
153 create_file "${TNAME}" &
154 ;;
155 "d") [ "${VERBOSE}" != "no" ] && echo "Creating directory -${TNAME}-."
156 mk_dir "${TNAME}" &
157 # Add check to see if there's an entry in fstab to mount.
158 ;;
159 *) [ "${VERBOSE}" != "no" ] && echo "Invalid type -${TTYPE}-."
160 continue
161 ;;
162 esac
163
164
165 done
166
167 return 0
168
169 }
170
171clearcache=0
172exec 9</proc/cmdline
173while read line <&9
174do
175 case "$line" in
176 *clearcache*) clearcache=1
177 ;;
178 *) continue
179 ;;
180 esac
181done
182exec 9>&-
183
184if test -e /etc/volatile.cache -a "$VOLATILE_ENABLE_CACHE" = "yes" -a "x$1" != "xupdate" -a "x$clearcache" = "x0"
185then
186 sh /etc/volatile.cache
187else
188 rm -f /etc/volatile.cache
189 for file in `ls -1 "${CFGDIR}" | sort`; do
190 apply_cfgfile "${CFGDIR}/${file}"
191 done
192fi
193
194if test -f /etc/ld.so.cache -a ! -f /var/run/ld.so.cache
195then
196 ln -s /etc/ld.so.cache /var/run/ld.so.cache
197fi