aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYing Wang <wangying@google.com>2010-06-16 11:53:52 -0700
committerYing Wang <wangying@google.com>2010-06-16 14:57:20 -0700
commit212bd3e547d4720784d82900ec843b104f65e0d9 (patch)
treeb9d69a546d97a7ed1a85161f06dbedd76e0c95e5
parent4c6c6f56ec399911c3722c4eb06b346905a57b02 (diff)
downloadgenext2fs-212bd3e547d4720784d82900ec843b104f65e0d9.tar.gz
Split commands out of Config.mk
So that we can call the commands in release tools (in Python) later. The function definition in Config.mk is moved to build/core/Makefile. Change-Id: I23b9780fd4dac6a7f34ebf8837e2fa839e4bbf30
-rw-r--r--Android.mk16
-rw-r--r--Config.mk23
-rwxr-xr-xmkuserimg.sh105
3 files changed, 121 insertions, 23 deletions
diff --git a/Android.mk b/Android.mk
index d6e6801..2856221 100644
--- a/Android.mk
+++ b/Android.mk
@@ -1,6 +1,8 @@
# Copyright 2008 The Android Open Source Project
LOCAL_PATH:= $(call my-dir)
+
+################################
include $(CLEAR_VARS)
LOCAL_SRC_FILES := \
@@ -12,3 +14,17 @@ LOCAL_MODULE := genext2fs
include $(BUILD_HOST_EXECUTABLE)
+################################
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := mkuserimg.sh
+LOCAL_SRC_FILES := mkuserimg.sh
+LOCAL_MODULE_CLASS := EXECUTABLES
+# We don't need any additional suffix.
+LOCAL_MODULE_SUFFIX :=
+LOCAL_BUILT_MODULE_STEM := $(notdir $(LOCAL_SRC_FILES))
+LOCAL_IS_HOST_MODULE := true
+
+include $(BUILD_PREBUILT)
+
+################################
diff --git a/Config.mk b/Config.mk
deleted file mode 100644
index 15be744..0000000
--- a/Config.mk
+++ /dev/null
@@ -1,23 +0,0 @@
-# $(1): src directory
-# $(2): output file
-# $(3): label (if any)
-# $(4): ext variant (ext2, ext3, ext4)
-comma := ,
-
-define build-userimage-ext-target
- @mkdir -p $(dir $(2))
- $(hide) num_blocks=`du -sk $(1) | tail -n1 | awk '{print $$1;}'`;\
- if [ $$num_blocks -lt 20480 ]; then extra_blocks=3072; \
- else extra_blocks=20480; fi ; \
- num_blocks=`expr $$num_blocks + $$extra_blocks` ; \
- num_inodes=`find $(1) | wc -l` ; num_inodes=`expr $$num_inodes + 500`; \
- $(MKEXT2IMG) -a -d $(1) -b $$num_blocks -N $$num_inodes -m 0 $(2)
- $(if $(strip $(3)),\
- $(hide) $(TUNE2FS) -L $(strip $(3)) $(2))
- $(if $(filter ext3,$(4)), \
- $(hide) $(TUNE2FS) -j $(2))
- $(if $(filter ext4,$(4)), \
- $(hide) $(TUNE2FS) -j -O extents$(comma)uninit_bg$(comma)dir_index $(2))
- $(hide) $(TUNE2FS) -C 1 $(2)
- $(hide) $(E2FSCK) -fy $(2) ; [ $$? -lt 4 ]
-endef
diff --git a/mkuserimg.sh b/mkuserimg.sh
new file mode 100755
index 0000000..c0efdb8
--- /dev/null
+++ b/mkuserimg.sh
@@ -0,0 +1,105 @@
+#!/bin/bash
+#
+
+function usage() {
+cat<<EOT
+Usage:
+mkuserimg.sh MKEXT2IMG TUNE2FS E2FSCK SRC_DIR OUTPUT_FILE EXT_VARIANT [LABEL]
+EOT
+}
+
+if [ $# -ne 6 -a $# -ne 7 ]; then
+ usage
+ exit 1
+fi
+
+MKEXT2IMG=$1
+if [ ! -x $MKEXT2IMG -o ! -f $MKEXT2IMG ]; then
+ echo "Can not find executable $MKEXT2IMG!"
+ exit 2
+fi
+
+TUNE2FS=$2
+if [ ! -x $TUNE2FS -o ! -f $TUNE2FS ]; then
+ echo "Can not find executable $TUNE2FS!"
+ exit 3
+fi
+
+E2FSCK=$3
+if [ ! -x $E2FSCK -o ! -f $E2FSCK ]; then
+ echo "Can not find executable $E2FSCK!"
+ exit 4
+fi
+
+SRC_DIR=$4
+if [ ! -d $SRC_DIR ]; then
+ echo "Can not find directory $SRC_DIR!"
+ exit 5
+fi
+
+OUTPUT_FILE=$5
+EXT_VARIANT=$6
+LABEL=$7
+
+case $EXT_VARIANT in
+ ext2) ;;
+ ext3) ;;
+ ext4) ;;
+ *) echo "Only ext2, ext3, ext4 are supported!"; exit 6 ;;
+esac
+
+num_blocks=`du -sk $SRC_DIR | tail -n1 | awk '{print $1;}'`
+if [ $num_blocks -lt 20480 ]; then
+ extra_blocks=3072
+else
+ extra_blocks=20480
+fi
+num_blocks=`expr $num_blocks + $extra_blocks`
+num_inodes=`find $SRC_DIR | wc -l`
+num_inodes=`expr $num_inodes + 500`
+
+echo "num_blocks=$num_blocks"
+echo "num_inodes=$num_inodes"
+
+echo "$MKEXT2IMG -a -d $SRC_DIR -b $num_blocks -N $num_inodes -m 0 $OUTPUT_FILE"
+$MKEXT2IMG -a -d $SRC_DIR -b $num_blocks -N $num_inodes -m 0 $OUTPUT_FILE
+if [ $? -ne 0 ]; then
+ exit 7
+fi
+
+if [ -n $LABEL ]; then
+ echo "$TUNE2FS -L $LABEL $OUTPUT_FILE"
+ $TUNE2FS -L $LABEL $OUTPUT_FILE
+ if [ $? -ne 0 ]; then
+ exit 8
+ fi
+fi
+
+if [ $EXT_VARIANT = "ext3" ]; then
+ echo "$TUNE2FS -j $OUTPUT_FILE"
+ $TUNE2FS -j $OUTPUT_FILE
+ if [ $? -ne 0 ]; then
+ exit 9
+ fi
+elif [ $EXT_VARIANT = "ext4" ]; then
+ echo "$TUNE2FS -j -O extents,uninit_bg,dir_index $OUTPUT_FILE"
+ $TUNE2FS -j -O extents,uninit_bg,dir_index $OUTPUT_FILE
+ if [ $? -ne 0 ]; then
+ exit 10
+ fi
+fi
+
+echo "$TUNE2FS -C 1 $OUTPUT_FILE"
+$TUNE2FS -C 1 $OUTPUT_FILE
+if [ $? -ne 0 ]; then
+ exit 11
+fi
+
+echo "$E2FSCK -fy $OUTPUT_FILE"
+$E2FSCK -fy $OUTPUT_FILE
+if [ $? -ge 4 ]; then
+ echo "$E2FSCK returns value $?, no less than 4!"
+ exit 12
+else
+ exit 0
+fi