post-build.sh: Fixup fstab error

Ignore tmpfs when trying to remove old fstab entries.

Change-Id: I87f894eaa1ae83b8cfce906a0fb8a68354f00093
Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
This commit is contained in:
Jeffy Chen
2022-08-23 14:26:13 +08:00
parent f5fc1ea367
commit 610a3598c2

View File

@ -3,6 +3,9 @@
TARGET_DIR=$1 TARGET_DIR=$1
shift shift
FSTAB="${TARGET_DIR}/etc/fstab"
OS_RELEASE="${TARGET_DIR}/etc/os-release"
RK_LEGACY_PARTITIONS=" \ RK_LEGACY_PARTITIONS=" \
${RK_OEM_FS_TYPE:+oem:/oem:${RK_OEM_FS_TYPE}} ${RK_OEM_FS_TYPE:+oem:/oem:${RK_OEM_FS_TYPE}}
${RK_USERDATA_FS_TYPE:+userdata:/userdata:${RK_USERDATA_FS_TYPE}} ${RK_USERDATA_FS_TYPE:+userdata:/userdata:${RK_USERDATA_FS_TYPE}}
@ -19,21 +22,42 @@ function fixup_root()
echo "Fixing up rootfs type: $1" echo "Fixing up rootfs type: $1"
FS_TYPE=$1 FS_TYPE=$1
sed -i "s#\([[:space:]]/[[:space:]]\+\)\w\+#\1${FS_TYPE}#" \ sed -i "s#\([[:space:]]/[[:space:]]\+\)\w\+#\1${FS_TYPE}#" "$FSTAB"
${TARGET_DIR}/etc/fstab
} }
function fixup_basic() function fixup_part()
{
echo "Fixing up partition: ${@//: }"
SRC="$1"
MOUNT="$2"
FS_TYPE="$3"
MOUNT_OPTS="$4"
PASS="$5"
# Remove old entries with same mountpoint
sed -i "/[[:space:]]${MOUNT//\//\\\/}[[:space:]]/d" "$FSTAB"
if [ "$SRC" != tmpfs ]; then
# Remove old entries with same source
sed -i "/^${SRC//\//\\\/}[[:space:]]/d" "$FSTAB"
fi
# Append new entry
echo -e "${SRC}\t${MOUNT}\t${FS_TYPE}\t${MOUNT_OPTS}\t0 $PASS" >> "$FSTAB"
mkdir -p "${TARGET_DIR}/${MOUNT}"
}
function fixup_basic_part()
{ {
echo "Fixing up basic partition: $@" echo "Fixing up basic partition: $@"
FS_TYPE="$1" FS_TYPE="$1"
MOUNT_POINT="$2" MOUNT="$2"
MOUNT_OPTS="${3:-defaults}" MOUNT_OPTS="${3:-defaults}"
sed -i "/[[:space:]]$FS_TYPE[[:space:]]/d" ${TARGET_DIR}/etc/fstab fixup_part "$FS_TYPE" "$MOUNT" "$FS_TYPE" "$MOUNT_OPTS" 0
echo -e "${FS_TYPE}\t${MOUNT_POINT}\t${FS_TYPE}\t${MOUNT_OPTS}\t0 0" >> \
${TARGET_DIR}/etc/fstab
} }
function partition_arg() { function partition_arg() {
@ -45,9 +69,9 @@ function partition_arg() {
echo ${ARG:-$DEFAULT} echo ${ARG:-$DEFAULT}
} }
function fixup_part() function fixup_device_part()
{ {
echo "Fixing up partition: ${@//: }" echo "Fixing up device partition: ${@//: }"
DEV="$(partition_arg "$*" 1)" DEV="$(partition_arg "$*" 1)"
@ -59,13 +83,7 @@ function fixup_part()
FS_TYPE="$(partition_arg "$*" 3 ext2)" FS_TYPE="$(partition_arg "$*" 3 ext2)"
MOUNT_OPTS="$(partition_arg "$*" 4 defaults)" MOUNT_OPTS="$(partition_arg "$*" 4 defaults)"
sed -i "/[[:space:]]${MOUNT//\//\\\/}[[:space:]]/d" ${TARGET_DIR}/etc/fstab fixup_part "$DEV" "$MOUNT" "$FS_TYPE" "$MOUNT_OPTS" 2
sed -i "/^${DEV//\//\\\/}[[:space:]]/d" ${TARGET_DIR}/etc/fstab
echo -e "${DEV}\t${MOUNT}\t${FS_TYPE}\t${MOUNT_OPTS}\t0 2" >> \
${TARGET_DIR}/etc/fstab
mkdir -p ${TARGET_DIR}/${MOUNT}
} }
function fixup_fstab() function fixup_fstab()
@ -81,39 +99,38 @@ function fixup_fstab()
;; ;;
esac esac
fixup_basic proc /proc fixup_basic_part proc /proc
fixup_basic devtmpfs /dev fixup_basic_part devtmpfs /dev
fixup_basic devpts /dev/pts mode=0620,ptmxmode=0666,gid=5 fixup_basic_part devpts /dev/pts mode=0620,ptmxmode=0666,gid=5
fixup_basic tmpfs /dev/shm nosuid,nodev,noexec fixup_basic_part tmpfs /dev/shm nosuid,nodev,noexec
fixup_basic sysfs /sys fixup_basic_part sysfs /sys
fixup_basic debugfs /sys/kernel/debug fixup_basic_part debugfs /sys/kernel/debug
fixup_basic pstore /sys/fs/pstore fixup_basic_part pstore /sys/fs/pstore
if echo $TARGET_DIR | grep -qE "_recovery/target/*$"; then if echo $TARGET_DIR | grep -qE "_recovery/target/*$"; then
fixup_part "/dev/sda1:/mnt/udisk:auto:defaults::" fixup_device_part "/dev/sda1:/mnt/udisk:auto:defaults::"
fixup_part "/dev/mmcblk1p1:/mnt/sdcard:auto:defaults::" fixup_device_part "/dev/mmcblk1p1:/mnt/sdcard:auto:defaults::"
fi fi
for part in ${RK_EXTRA_PARTITIONS//@/ }; do for part in ${RK_EXTRA_PARTITIONS//@/ }; do
fixup_part $part fixup_device_part $part
done done
} }
function add_build_info() function add_build_info()
{ {
[ -f ${TARGET_DIR}/etc/os-release ] && \ [ -f "$OS_RELEASE" ] && sed -i "/^BUILD_ID=/d" "$OS_RELEASE"
sed -i "/^BUILD_ID=/d" ${TARGET_DIR}/etc/os-release
echo "Adding build-info to /etc/os-release..." echo "Adding build-info to /etc/os-release..."
echo "BUILD_INFO=\"$(whoami)@$(hostname) $(date)${@:+ - $@}\"" >> \ echo "BUILD_INFO=\"$(whoami)@$(hostname) $(date)${@:+ - $@}\"" >> \
${TARGET_DIR}/etc/os-release "$OS_RELEASE"
} }
function add_dirs_and_links() function add_dirs_and_links()
{ {
echo "Adding dirs and links..." echo "Adding dirs and links..."
cd ${TARGET_DIR} cd "$TARGET_DIR"
rm -rf mnt/* udisk sdcard data rm -rf mnt/* udisk sdcard data
mkdir -p mnt/sdcard mnt/udisk mkdir -p mnt/sdcard mnt/udisk
@ -127,7 +144,7 @@ function add_dirs_and_links()
echo "Executing $(basename $0)..." echo "Executing $(basename $0)..."
add_build_info $@ add_build_info $@
[ -f ${TARGET_DIR}/etc/fstab ] && fixup_fstab [ -f "$FSTAB" ] && fixup_fstab
add_dirs_and_links add_dirs_and_links
exit 0 exit 0