Skip to content

Commit 6101267

Browse files
committed
scripts: module_utils: fix up, minor adjustments
- Fix _GET_SELINUX_LABEL behaviour - Fix ADD_TO_WORK_DIR behaviour for external directories - Fix DELETE_FROM_WORK_DIR behaviour when a symlink is passed as argument Change-Id: I630f19f92a28dd92f1c92831ef0f0e9302687946
1 parent c808051 commit 6101267

File tree

1 file changed

+39
-21
lines changed

1 file changed

+39
-21
lines changed

scripts/utils/module_utils.sh

Lines changed: 39 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -45,17 +45,16 @@ _GET_SELINUX_LABEL()
4545
FILE="/$FILE"
4646
fi
4747

48-
local PATTERN
4948
local LABEL
5049
while IFS= read -r l; do
51-
l="$(tr -s " " <<< "$l")"
52-
PATTERN="$(cut -d " " -f 1 <<< "$l")"
53-
LABEL="$(cut -d " " -f 2 <<< "$l")"
54-
if grep -q -P "$PATTERN" <<< "$FILE"; then
55-
echo "$LABEL"
50+
l="$(tr -s "\t" " " <<< "$l")"
51+
if [[ "$FILE" =~ ^$(cut -d " " -f 1 <<< "$l")$ ]]; then
52+
LABEL="$(cut -d " " -f 2 <<< "$l")"
5653
break
5754
fi
58-
done < "$FC_FILE"
55+
done <<< "$(tac "$FC_FILE")"
56+
57+
echo "$LABEL"
5958
}
6059

6160
_IS_VALID_PARTITION_NAME()
@@ -131,7 +130,7 @@ _GET_PROP_FILES_PATH()
131130
_GET_PROP_LOCATION()
132131
{
133132
local FILES
134-
FILES=$(_GET_PROP_FILES_PATH "${1:?}")
133+
FILES="$(_GET_PROP_FILES_PATH "${1:?}")"
135134

136135
if _IS_VALID_PARTITION_NAME "${1:?}"; then
137136
shift
@@ -201,19 +200,27 @@ ADD_TO_WORK_DIR()
201200
local SOURCE_FILE="$SOURCE"
202201
local TARGET_FILE="$WORK_DIR"
203202
if [[ "$PARTITION" == "system_ext" ]]; then
204-
if [[ "$SOURCE" != "$FW_DIR"* ]] || $SOURCE_HAS_SYSTEM_EXT; then
205-
SOURCE_FILE+="/$PARTITION/$FILE"
203+
if [ -d "$SOURCE/system_ext" ]; then
204+
SOURCE_FILE+="/system_ext/$FILE"
206205
else
207206
SOURCE_FILE+="/system/system/system_ext/$FILE"
208207
fi
209208

210209
if $TARGET_HAS_SYSTEM_EXT; then
211-
TARGET_FILE+="/$PARTITION/$FILE"
210+
TARGET_FILE+="/system_ext/$FILE"
212211
else
213212
PARTITION="system"
214213
FILE="system/system_ext/$FILE"
215214
TARGET_FILE+="/system/$FILE"
216215
fi
216+
elif [[ "$PARTITION" == "system" ]]; then
217+
if [ -d "$SOURCE/system/system" ]; then
218+
SOURCE_FILE+="/system/$FILE"
219+
TARGET_FILE+="/system/$FILE"
220+
else
221+
SOURCE_FILE+="/system/${FILE//system\//}"
222+
TARGET_FILE+="/system/system/${FILE//system\//}"
223+
fi
217224
else
218225
SOURCE_FILE+="/$PARTITION/$FILE"
219226
TARGET_FILE+="/$PARTITION/$FILE"
@@ -234,6 +241,7 @@ ADD_TO_WORK_DIR()
234241
local TMP
235242
TMP="${TARGET_FILE//$WORK_DIR\//}"
236243
[[ "$PARTITION" == "system" ]] && TMP="${TMP//system\/system\//system/}"
244+
TMP="${TMP%/.}"
237245
if ! grep -q -F "$TMP " "$WORK_DIR/configs/fs_config-$PARTITION" 2> /dev/null; then
238246
echo "$TMP $USER $GROUP $MODE capabilities=0x0" >> "$WORK_DIR/configs/fs_config-$PARTITION"
239247
fi
@@ -244,26 +252,30 @@ ADD_TO_WORK_DIR()
244252

245253
if [ -d "$TARGET_FILE" ]; then
246254
local FILES
247-
FILES="$(find "$SOURCE_FILE")"
255+
FILES="$(find "${SOURCE_FILE%/.}")"
248256
FILES="${FILES//$SOURCE\//}"
249257
[[ "$PARTITION" == "system" ]] && FILES="${FILES//system\/system\//system/}"
258+
$TARGET_HAS_SYSTEM_EXT || FILES="${FILES//system_ext\//system/system_ext/}"
250259

260+
# shellcheck disable=SC2116
251261
for f in $(echo "$FILES"); do
262+
_IS_VALID_PARTITION_NAME "$f" && continue
263+
252264
if ! grep -q -F "$f " "$WORK_DIR/configs/fs_config-$PARTITION" 2> /dev/null; then
253265
if grep -q -F "$f " "$SOURCE/fs_config-$PARTITION" 2> /dev/null; then
254266
grep -F "$f " "$SOURCE/fs_config-$PARTITION" >> "$WORK_DIR/configs/fs_config-$PARTITION"
255267
else
256-
if [ -d "$SOURCE/$f" ] || [ -d "$SOURCE/system/$f" ]; then
268+
if [ -d "$SOURCE/$f" ] || [ -d "$SOURCE/system/$f" ] || [ -d "$SOURCE/${f//system\//}" ]; then
257269
if [[ "$PARTITION" == "vendor" ]]; then
258-
echo "$TMP 0 2000 755 capabilities=0x0" >> "$WORK_DIR/configs/fs_config-vendor"
270+
echo "$f 0 2000 755 capabilities=0x0" >> "$WORK_DIR/configs/fs_config-vendor"
259271
else
260-
echo "$TMP 0 0 755 capabilities=0x0" >> "$WORK_DIR/configs/fs_config-$PARTITION"
272+
echo "$f 0 0 755 capabilities=0x0" >> "$WORK_DIR/configs/fs_config-$PARTITION"
261273
fi
262274
else
263275
if [[ "$PARTITION" == "vendor" ]]; then
264-
echo "$TMP 0 2000 644 capabilities=0x0" >> "$WORK_DIR/configs/fs_config-vendor"
276+
echo "$f 0 2000 644 capabilities=0x0" >> "$WORK_DIR/configs/fs_config-vendor"
265277
else
266-
echo "$TMP 0 0 644 capabilities=0x0" >> "$WORK_DIR/configs/fs_config-$PARTITION"
278+
echo "$f 0 0 644 capabilities=0x0" >> "$WORK_DIR/configs/fs_config-$PARTITION"
267279
fi
268280
fi
269281
fi
@@ -278,9 +290,12 @@ ADD_TO_WORK_DIR()
278290
fi
279291
done
280292
else
281-
TMP="$(dirname "${TARGET_FILE//$WORK_DIR\//}")"
293+
TMP="${TARGET_FILE%/.}"
294+
TMP="$(dirname "${TMP//$WORK_DIR\//}")"
282295
[[ "$PARTITION" == "system" ]] && TMP="${TMP//system\/system\//system/}"
283296
while [[ "$TMP" != "." ]]; do
297+
_IS_VALID_PARTITION_NAME "$TMP" && break
298+
284299
if ! grep -q -F "$TMP " "$WORK_DIR/configs/fs_config-$PARTITION" 2> /dev/null; then
285300
if grep -q -F "$TMP " "$SOURCE/fs_config-$PARTITION" 2> /dev/null; then
286301
grep -F "$TMP " "$SOURCE/fs_config-$PARTITION" >> "$WORK_DIR/configs/fs_config-$PARTITION"
@@ -298,10 +313,13 @@ ADD_TO_WORK_DIR()
298313
TMP="$(dirname "$TMP")"
299314
done
300315

301-
TMP="$(dirname "${TARGET_FILE//$WORK_DIR\//}")"
316+
TMP="${TARGET_FILE%/.}"
317+
TMP="$(dirname "${TMP//$WORK_DIR\//}")"
302318
[[ "$PARTITION" == "system" ]] && TMP="${TMP//system\/system\//system/}"
303319
while [[ "$TMP" != "." ]]
304320
do
321+
_IS_VALID_PARTITION_NAME "$TMP" && break
322+
305323
if ! grep -q -F "/${TMP//\./\\.} " "$WORK_DIR/configs/file_context-$PARTITION" 2> /dev/null; then
306324
if grep -q -F "/${TMP//\./\\.} " "$SOURCE/file_context-$PARTITION" 2> /dev/null; then
307325
grep -F "/${TMP//\./\\.} " "$SOURCE/file_context-$PARTITION" >> "$WORK_DIR/configs/file_context-$PARTITION"
@@ -354,7 +372,7 @@ DELETE_FROM_WORK_DIR()
354372
fi
355373

356374
FILE_PATH="$(_GET_WORK_DIR_PARTITION_PATH "$PARTITION")/$FILE"
357-
if [ ! -e "$FILE_PATH" ]; then
375+
if [ ! -e "$FILE_PATH" ] && [ ! -L "$FILE_PATH" ]; then
358376
echo "File not found: $FILE_PATH"
359377
return 0
360378
fi
@@ -414,7 +432,7 @@ GET_PROP()
414432
FILES="$1"
415433
shift
416434
else
417-
FILES=$(_GET_PROP_FILES_PATH "${1:?}")
435+
FILES="$(_GET_PROP_FILES_PATH "${1:?}")"
418436
if _IS_VALID_PARTITION_NAME "${1:?}"; then
419437
shift
420438
fi

0 commit comments

Comments
 (0)