diff --git a/common/post-build.sh b/common/post-build.sh index 6f8d453..4f065d6 100755 --- a/common/post-build.sh +++ b/common/post-build.sh @@ -3,6 +3,9 @@ TARGET_DIR=$1 shift +FSTAB="${TARGET_DIR}/etc/fstab" +OS_RELEASE="${TARGET_DIR}/etc/os-release" + RK_LEGACY_PARTITIONS=" \ ${RK_OEM_FS_TYPE:+oem:/oem:${RK_OEM_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" FS_TYPE=$1 - sed -i "s#\([[:space:]]/[[:space:]]\+\)\w\+#\1${FS_TYPE}#" \ - ${TARGET_DIR}/etc/fstab + sed -i "s#\([[:space:]]/[[:space:]]\+\)\w\+#\1${FS_TYPE}#" "$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: $@" FS_TYPE="$1" - MOUNT_POINT="$2" + MOUNT="$2" MOUNT_OPTS="${3:-defaults}" - sed -i "/[[:space:]]$FS_TYPE[[:space:]]/d" ${TARGET_DIR}/etc/fstab - echo -e "${FS_TYPE}\t${MOUNT_POINT}\t${FS_TYPE}\t${MOUNT_OPTS}\t0 0" >> \ - ${TARGET_DIR}/etc/fstab + fixup_part "$FS_TYPE" "$MOUNT" "$FS_TYPE" "$MOUNT_OPTS" 0 } function partition_arg() { @@ -45,9 +69,9 @@ function partition_arg() { echo ${ARG:-$DEFAULT} } -function fixup_part() +function fixup_device_part() { - echo "Fixing up partition: ${@//: }" + echo "Fixing up device partition: ${@//: }" DEV="$(partition_arg "$*" 1)" @@ -59,13 +83,7 @@ function fixup_part() FS_TYPE="$(partition_arg "$*" 3 ext2)" MOUNT_OPTS="$(partition_arg "$*" 4 defaults)" - sed -i "/[[:space:]]${MOUNT//\//\\\/}[[:space:]]/d" ${TARGET_DIR}/etc/fstab - 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} + fixup_part "$DEV" "$MOUNT" "$FS_TYPE" "$MOUNT_OPTS" 2 } function fixup_fstab() @@ -81,39 +99,38 @@ function fixup_fstab() ;; esac - fixup_basic proc /proc - fixup_basic devtmpfs /dev - fixup_basic devpts /dev/pts mode=0620,ptmxmode=0666,gid=5 - fixup_basic tmpfs /dev/shm nosuid,nodev,noexec - fixup_basic sysfs /sys - fixup_basic debugfs /sys/kernel/debug - fixup_basic pstore /sys/fs/pstore + fixup_basic_part proc /proc + fixup_basic_part devtmpfs /dev + fixup_basic_part devpts /dev/pts mode=0620,ptmxmode=0666,gid=5 + fixup_basic_part tmpfs /dev/shm nosuid,nodev,noexec + fixup_basic_part sysfs /sys + fixup_basic_part debugfs /sys/kernel/debug + fixup_basic_part pstore /sys/fs/pstore if echo $TARGET_DIR | grep -qE "_recovery/target/*$"; then - fixup_part "/dev/sda1:/mnt/udisk:auto:defaults::" - fixup_part "/dev/mmcblk1p1:/mnt/sdcard:auto:defaults::" + fixup_device_part "/dev/sda1:/mnt/udisk:auto:defaults::" + fixup_device_part "/dev/mmcblk1p1:/mnt/sdcard:auto:defaults::" fi for part in ${RK_EXTRA_PARTITIONS//@/ }; do - fixup_part $part + fixup_device_part $part done } function add_build_info() { - [ -f ${TARGET_DIR}/etc/os-release ] && \ - sed -i "/^BUILD_ID=/d" ${TARGET_DIR}/etc/os-release + [ -f "$OS_RELEASE" ] && sed -i "/^BUILD_ID=/d" "$OS_RELEASE" echo "Adding build-info to /etc/os-release..." echo "BUILD_INFO=\"$(whoami)@$(hostname) $(date)${@:+ - $@}\"" >> \ - ${TARGET_DIR}/etc/os-release + "$OS_RELEASE" } function add_dirs_and_links() { echo "Adding dirs and links..." - cd ${TARGET_DIR} + cd "$TARGET_DIR" rm -rf mnt/* udisk sdcard data mkdir -p mnt/sdcard mnt/udisk @@ -127,7 +144,7 @@ function add_dirs_and_links() echo "Executing $(basename $0)..." add_build_info $@ -[ -f ${TARGET_DIR}/etc/fstab ] && fixup_fstab +[ -f "$FSTAB" ] && fixup_fstab add_dirs_and_links exit 0