OSDN Git Service

install copy of shell in vendor partition
authorSandeep Patil <sspatil@google.com>
Fri, 14 Apr 2017 21:01:07 +0000 (21:01 +0000)
committerandroid-build-merger <android-build-merger@google.com>
Fri, 14 Apr 2017 21:01:07 +0000 (21:01 +0000)
am: c203611510

Change-Id: I6a1da672c65522768647550df8768f9cd3285b23

Android.mk
mkshrc_vendor [new file with mode: 0644]
src/main.c

index 5e7c633..5e96b67 100644 (file)
@@ -24,32 +24,22 @@ LOCAL_MODULE := sh
 LOCAL_ADDITIONAL_DEPENDENCIES += $(LOCAL_PATH)/Android.mk
 
 # mksh source files
-LOCAL_SRC_FILES := \
+MKSH_SRC_FILES := \
     src/lalloc.c src/edit.c src/eval.c src/exec.c \
     src/expr.c src/funcs.c src/histrap.c src/jobs.c \
     src/lex.c src/main.c src/misc.c src/shf.c \
     src/syn.c src/tree.c src/var.c
 
-LOCAL_SYSTEM_SHARED_LIBRARIES := libc
-
-LOCAL_C_INCLUDES := $(LOCAL_PATH)/src
-
-# Additional flags first...
-LOCAL_CFLAGS += \
-    -DMKSH_DEFAULT_PROFILEDIR=\"/system/etc\" \
-    -DMKSHRC_PATH=\"/system/etc/mkshrc\" \
-    -DMKSH_DEFAULT_EXECSHELL=\"/system/bin/sh\" \
-    -DMKSH_DEFAULT_TMPDIR=\"/data/local\" \
+MKSH_INCLUDES := $(LOCAL_PATH)/src
 
-# ...then from Makefrag.inc: CFLAGS...
-LOCAL_CFLAGS += \
+MKSH_CFLAGS += \
     -Wno-deprecated-declarations \
     -fno-asynchronous-unwind-tables \
     -fno-strict-aliasing \
     -fstack-protector -fwrapv \
 
 # ...and CPPFLAGS.
-LOCAL_CFLAGS += \
+MKSH_CFLAGS += \
     -DDEBUG_LEAKS -DMKSH_ASSUME_UTF8 \
     -DMKSH_DONT_EMIT_IDSTRING \
     -DMKSH_BUILDSH \
@@ -85,4 +75,63 @@ LOCAL_CFLAGS += \
     -DHAVE_SYS_ERRLIST_DECL=0 -DHAVE_SYS_SIGLIST_DECL=1 \
     -DHAVE_PERSISTENT_HISTORY=0 -DMKSH_BUILD_R=551
 
+LOCAL_SRC_FILES := $(MKSH_SRC_FILES)
+
+LOCAL_SYSTEM_SHARED_LIBRARIES := libc
+
+LOCAL_C_INCLUDES := $(MKSH_INCLUDES)
+
+# Additional flags first...
+LOCAL_CFLAGS += \
+    -DMKSH_DEFAULT_PROFILEDIR=\"/system/etc\" \
+    -DMKSHRC_PATH=\"/system/etc/mkshrc\" \
+    -DMKSH_DEFAULT_EXECSHELL=\"/system/bin/sh\" \
+    -DMKSH_DEFAULT_TMPDIR=\"/data/local\" \
+
+LOCAL_CFLAGS += $(MKSH_CFLAGS)
+
 include $(BUILD_EXECUTABLE)
+
+ifeq ($(PRODUCT_FULL_TREBLE),true)
+# /vendor/etc/mkshrc
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := mkshrc_vendor
+LOCAL_MODULE_STEM := mkshrc
+LOCAL_MODULE_CLASS := ETC
+LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)
+LOCAL_SRC_FILES := $(LOCAL_MODULE)
+include $(BUILD_PREBUILT)
+
+# /vendor/bin/sh
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := sh_vendor
+LOCAL_MODULE_STEM := sh
+LOCAL_ADDITIONAL_DEPENDENCIES += $(LOCAL_PATH)/Android.mk
+LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES)
+
+# mksh source files
+LOCAL_SRC_FILES := $(MKSH_SRC_FILES)
+
+LOCAL_STATIC_LIBRARIES := libc
+
+LOCAL_C_INCLUDES := $(MKSH_INCLUDES)
+
+# Additional flags first...
+LOCAL_CFLAGS += \
+    -DMKSH_DEFAULT_PROFILEDIR=\"/vendor/etc\" \
+    -DMKSHRC_PATH=\"/vendor/etc/mkshrc\" \
+    -DMKSH_DEFAULT_EXECSHELL=\"/vendor/bin/sh\" \
+    -DMKSH_DEFPATH_OVERRIDE=\"/vendor/bin:/vendor/xbin\" \
+
+LOCAL_CFLAGS += $(MKSH_CFLAGS)
+
+LOCAL_FORCE_STATIC_EXECUTABLE := true
+
+include $(BUILD_EXECUTABLE)
+endif
+
+MKSH_SRC_FILES:=
+MKSH_CFLAGS:=
+MKSH_INCLUDES:=
diff --git a/mkshrc_vendor b/mkshrc_vendor
new file mode 100644 (file)
index 0000000..27d3982
--- /dev/null
@@ -0,0 +1,20 @@
+# Copyright (c) 2010, 2012, 2013, 2014
+#      Thorsten Glaser <tg@mirbsd.org>
+# This file is provided under the same terms as mksh.
+#-
+# Minimal /system/etc/mkshrc for Android
+#
+# Support: https://launchpad.net/mksh
+
+: ${HOSTNAME:=$(getprop ro.product.device)}
+: ${HOSTNAME:=android}
+export HOSTNAME
+
+if (( USER_ID )); then PS1='$'; else PS1='#'; fi
+PS4='[$EPOCHREALTIME] '; PS1='${|
+       local e=$?
+
+       (( e )) && REPLY+="$e|"
+
+       return $e
+}$HOSTNAME:${PWD:-?} '"$PS1 "
index a556d5d..1286b07 100644 (file)
@@ -407,6 +407,12 @@ main_init(int argc, const char *argv[], Source **sp, struct block **lp)
                }
        }
 
+       /* override default PATH regardless of environment */
+#ifdef MKSH_DEFPATH_OVERRIDE
+        vp = global(TPATH);
+        setstr(vp, MKSH_DEFPATH_OVERRIDE, KSH_RETURN_ERROR);
+#endif
+
        /* for security */
        typeset("IFS= \t\n", 0, 0, 0, 0);