...
--- mozilla-central-bb9089ae2322/nsprpub/pr/src/io/prlog.c 2011-01-21 16:40:14.000000000 -0700 +++ mozilla-central-bb9089ae2322.bak/nsprpub/pr/src/io/prlog.c 2011-01-31 13:53:30.000000000 -0700 @@ -42,7 +42,7 @@ #include "prprf.h" #include <string.h> #ifdef ANDROID -#include <android/log.h> +//#include <android/log.h> #endif /* @@ -135,7 +135,7 @@ if (fd == _pr_stderr) { \ char savebyte = buf[nb]; \ buf[nb] = '\0'; \ - __android_log_write(ANDROID_LOG_INFO, "PRLog", buf); \ + printf("PRLog: %s", buf); \ buf[nb] = savebyte; \ } else { \ PR_Write(fd, buf, nb); \ --- mozilla-central-bb9089ae2322/js/src/jscntxt.cpp 2011-01-21 16:40:14.000000000 -0700 +++ mozilla-central-bb9089ae2322.bak/js/src/jscntxt.cpp 2011-01-31 13:49:52.000000000 -0700 @@ -46,7 +46,7 @@ #include <stdlib.h> #include <string.h> #ifdef ANDROID -# include <android/log.h> +//# include <android/log.h> # include <fstream> # include <string> #endif // ANDROID @@ -2218,12 +2218,14 @@ // Check for the known-bad kernel version (2.6.29). std::ifstream osrelease("/proc/sys/kernel/osrelease"); std::getline(osrelease, line); - __android_log_print(ANDROID_LOG_INFO, "Gecko", "Detected osrelease `%s'", - line.c_str()); +// __android_log_print(ANDROID_LOG_INFO, "Gecko", "Detected osrelease `%s'", +// line.c_str()); + printf("Gecko: Detected osrelease `%s'", line.c_str()); if (line.npos == line.find("2.6.29")) { // We're using something other than 2.6.29, so the JITs should work. - __android_log_print(ANDROID_LOG_INFO, "Gecko", "JITs are not broken"); +// __android_log_print(ANDROID_LOG_INFO, "Gecko", "JITs are not broken"); + printf("Gecko: JITs are not broken"); return false; } @@ -2243,8 +2245,9 @@ }; for (const char** hw = &blacklist[0]; *hw; ++hw) { if (line.npos != line.find(*hw)) { - __android_log_print(ANDROID_LOG_INFO, "Gecko", - "Blacklisted device `%s'", *hw); +// __android_log_print(ANDROID_LOG_INFO, "Gecko", +// "Blacklisted device `%s'", *hw); + printf("Gecko: Blacklisted device `%s'", *hw); broken = true; break; } @@ -2254,8 +2257,9 @@ std::getline(cpuinfo, line); } while(!cpuinfo.fail() && !cpuinfo.eof()); - __android_log_print(ANDROID_LOG_INFO, "Gecko", "JITs are %sbroken", - broken ? "" : "not "); +// __android_log_print(ANDROID_LOG_INFO, "Gecko", "JITs are %sbroken", +// broken ? "" : "not "); + printf("Gecko: JITs are %sborken", broken ? "" : "not "); return broken; #endif // ifndef ANDROID --- mozilla-central/nsprpub/pr/src/Makefile.in.bak 2011-02-02 15:39:53.000000000 -0700 +++ mozilla-central/nsprpub/pr/src/Makefile.in 2011-02-02 15:40:07.000000000 -0700 @@ -205,9 +205,9 @@ OS_LIBS = ws2.lib endif -ifeq ($(OS_TARGET),Android) -OS_LIBS += -llog -endif +#ifeq ($(OS_TARGET),Android) +#OS_LIBS += -llog +#endif ifeq ($(OS_TARGET),MacOSX) OS_LIBS = -framework CoreServices -framework CoreFoundation --- mozilla-central/js/src/configure.in.bak 2011-02-02 15:41:20.000000000 -0700 +++ mozilla-central/js/src/configure.in 2011-02-02 15:41:43.000000000 -0700 @@ -291,11 +291,10 @@ CFLAGS="-mandroid -I$android_platform/usr/include -msoft-float -fno-short-enums -fno-exceptions -march=armv5te -mthumb-interwork $CFLAGS" CXXFLAGS="-mandroid -I$android_platform/usr/include -msoft-float -fno-short-enums -fno-exceptions -march=armv5te -mthumb-interwork $CXXFLAGS" - dnl Add -llog by default, since we use it all over the place. dnl Add --allow-shlib-undefined, because libGLESv2 links to an dnl undefined symbol (present on the hardware, just not in the dnl NDK.) - LDFLAGS="-mandroid -L$android_platform/usr/lib -Wl,-rpath-link=$android_platform/usr/lib --sysroot=$android_platform -llog -Wl,--allow-shlib-undefined $LDFLAGS" + LDFLAGS="-mandroid -L$android_platform/usr/lib -Wl,-rpath-link=$android_platform/usr/lib --sysroot=$android_platform -Wl,--allow-shlib-undefined $LDFLAGS" dnl prevent cross compile section from using these flags as host flags if test -z "$HOST_CPPFLAGS" ; then
...
Erlang/OTP patch
The following patch was apparently necessary to get Erlang/OTP to compile on Android. Your mileage may vary.
diff --git a/erts/emulator/Makefile.in b/erts/emulator/Makefile.in
index fb8d718..4ed25c9 100644
--- a/erts/emulator/Makefile.in
+++ b/erts/emulator/Makefile.in
@@ -352,6 +352,7 @@ EMULATOR_EXECUTABLE = beam$(TF_MARKER).dll
else
ifeq ($(CC), agcc)
EMULATOR_EXECUTABLE = libbeam$(TF_MARKER).so
+EMULATOR_EXECUTABLE_REG = beam$(TF_MARKER)
else
EMULATOR_EXECUTABLE = beam$(TF_MARKER)
endif
@@ -374,7 +375,11 @@ ifeq ($(FLAVOR)-@ERTS_BUILD_SMP_EMU@,smp-no)
all:
@echo '*** Omitted build of emulator with smp support'
else
+ifeq ($(CC), agcc)
+all: generate erts_lib zlib pcre $(BINDIR)/$(EMULATOR_EXECUTABLE) $(BINDIR)/$(EMULATOR_EXECUTABLE_REG) $(UNIX_ONLY_BUILDS)
+else
all: generate erts_lib zlib pcre $(BINDIR)/$(EMULATOR_EXECUTABLE) $(UNIX_ONLY_BUILDS)
+endif
ifeq ($(OMIT_OMIT_FP),yes)
@echo '* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *'
@echo '* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *'
@@ -453,6 +458,7 @@ release_spec: all
$(INSTALL_DATA) $(RELEASE_INCLUDES) $(RELEASE_PATH)/usr/include
$(INSTALL_DATA) $(RELEASE_INCLUDES) $(RELSYSDIR)/include
$(INSTALL_PROGRAM) $(BINDIR)/$(EMULATOR_EXECUTABLE) $(RELSYSDIR)/bin
+ $(INSTALL_PROGRAM) $(BINDIR)/$(EMULATOR_EXECUTABLE_REG) $(RELSYSDIR)/bin
ifeq ($(ERLANG_OSTYPE), unix)
$(INSTALL_PROGRAM) $(BINDIR)/$(CS_EXECUTABLE) $(RELSYSDIR)/bin
endif
@@ -1013,6 +1019,13 @@ ifeq ($(CC), agcc)
$(BINDIR)/$(EMULATOR_EXECUTABLE): $(INIT_OBJS) $(OBJS) $(DEPLIBS)
$(PURIFY) $(LD) -o $(BINDIR)/$(EMULATOR_EXECUTABLE) \
$(HIPEBEAMLDFLAGS) $(LDFLAGS) $(DEXPORT) $(INIT_OBJS) $(OBJS) $(LIBS) -shared
+
+$(OBJDIR)/beam.o:
+ $(CC) $(CFLAGS) $(INCLUDES) -c beam/beam.c -o $(OBJDIR)/beam.o
+
+$(BINDIR)/$(EMULATOR_EXECUTABLE_REG): $(OBJDIR)/beam.o
+ $(PURIFY) $(LD) -o $(BINDIR)/$(EMULATOR_EXECUTABLE_REG) \
+ $(HIPEBEAMLDFLAGS) $(LDFLAGS) $(DEXPORT) $(OBJDIR)/beam.o $(LIBS) -L$(BINDIR) -lbeam
else
$(BINDIR)/$(EMULATOR_EXECUTABLE): $(INIT_OBJS) $(OBJS) $(DEPLIBS)
$(PURIFY) $(LD) -o $(BINDIR)/$(EMULATOR_EXECUTABLE) \
diff --git a/erts/emulator/sys/unix/erl_child_setup.c b/erts/emulator/sys/unix/erl_child_setup.c
index 7c6e4a2..c1a1549 100644
--- a/erts/emulator/sys/unix/erl_child_setup.c
+++ b/erts/emulator/sys/unix/erl_child_setup.c
@@ -116,7 +116,11 @@ main(int argc, char *argv[])
execv(argv[CS_ARGV_NO_OF_ARGS],&(argv[CS_ARGV_NO_OF_ARGS + 1]));
}
} else {
+#ifdef ANDROID_ARM
+ execl("/system/bin/sh", "sh", "-c", argv[CS_ARGV_CMD_IX], (char *) NULL);
+#else
execl("/bin/sh", "sh", "-c", argv[CS_ARGV_CMD_IX], (char *) NULL);
+#endif
}
return 1;
}
diff --git a/erts/emulator/sys/unix/sys.c b/erts/emulator/sys/unix/sys.c
index 31ab5d0..9a260a2 100644
--- a/erts/emulator/sys/unix/sys.c
+++ b/erts/emulator/sys/unix/sys.c
@@ -1539,7 +1539,11 @@ static ErlDrvData spawn_start(ErlDrvPort port_num, char* name, SysDriverOpts* op
}
}
} else {
+#ifdef ANDROID_ARM
+ execle("/system/bin/sh", "sh", "-c", cmd_line, (char *) NULL, new_environ);
+#else
execle("/bin/sh", "sh", "-c", cmd_line, (char *) NULL, new_environ);
+#endif
}
child_error:
_exit(1);
@@ -1660,7 +1664,12 @@ static ErlDrvData spawn_start(ErlDrvPort port_num, char* name, SysDriverOpts* op
fcntl(i, F_SETFD, 1);
qnx_spawn_options.flags = _SPAWN_SETSID;
+#ifdef ANDROID_ARM
+ /* Are we really in QNX? Then we don't need this special case here... */
+ if ((pid = spawnl(P_NOWAIT, "/system/bin/sh", "/system/bin/sh", "-c", cmd_line,
+#else
if ((pid = spawnl(P_NOWAIT, "/bin/sh", "/bin/sh", "-c", cmd_line,
+#endif
(char *) 0)) < 0) {
erts_free(ERTS_ALC_T_TMP, (void *) cmd_line);
reset_qnx_spawn();
diff --git a/erts/emulator/beam/beam.c b/erts/emulator/beam/beam.c
new file mode 100644
index 0000000..167b96e
--- /dev/null
+++ b/erts/emulator/beam/beam.c
@@ -0,0 +1,2 @@
+void erl_start(int argc, char** argv);
+int main(int argc, char** argv) { erl_start(argc, argv); }
diff --git a/lib/crypto/c_src/Makefile.in b/lib/crypto/c_src/Makefile.in
index 0b39808..5d9658e 100644
--- a/lib/crypto/c_src/Makefile.in
+++ b/lib/crypto/c_src/Makefile.in
@@ -108,7 +108,7 @@ $(OBJDIR)/%.o: %.c
$(LIBDIR)/crypto_drv.so: $(OBJS)
$(INSTALL_DIR) $(LIBDIR)
- $(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS) $(CRYPTO_LINK_LIB) $(LIBS) -lbeam
+ $(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS) $(CRYPTO_LINK_LIB) $(LIBS) -lbeam -shared
$(LIBDIR)/crypto_drv.dll: $(OBJS)
$(INSTALL_DIR) $(LIBDIR)
diff --git a/otp_build b/otp_build
index ad9d38e..b875b38 100755
--- a/otp_build
+++ b/otp_build
@@ -284,7 +284,7 @@ do_autoconf ()
export WANT_AUTOCONF_VER
fi
exp_ac_vsn=$EXPECTED_AUTOCONF_VERSION
- ac_vsn_blob=`autoconf --version`
+ ac_vsn_blob=`autoconf2.59 --version`
ac_vsn=`echo x$ac_vsn_blob | sed "s|[^0-9]*\([0-9][^ \t\n]*\).*|\1|"`
case "$ac_vsn" in
$exp_ac_vsn)
@@ -327,11 +327,11 @@ do_autoconf ()
rm -f "$d"/autom4te.cache/*
}
echo "=== running autoconf in $d"
- ( cd "$d" && autoconf ) || exit 1
+ ( cd "$d" && autoconf2.59 ) || exit 1
chdr=`cat "$file" | sed -n "s|.*\(AC_CONFIG_HEADER\).*|\1|p"`
[ "$chdr" = "AC_CONFIG_HEADER" ] || continue
echo "=== running autoheader in $d"
- ( cd "$d" && autoheader ) || exit 1
+ ( cd "$d" && autoheader2.59 ) || exit 1
done
restore_vars OVERRIDE_TARGET TARGET
...
Release patch
This final patch was necessary to make the release process for CouchDB work with Android 4.
diff -ru release.bak/sdcard/Android/data/com.your.namespace/couchdb/bin/couchdb release/sdcard/Android/data/com.your.namespace/couchdb/bin/couchdb
--- release.bak/sdcard/Android/data/com.your.namespace/couchdb/bin/couchdb 2011-02-05 01:26:00.000000000 -0700
+++ release/sdcard/Android/data/com.your.namespace/couchdb/bin/couchdb 2011-02-08 16:42:00.000000000 -0700
@@ -12,6 +12,9 @@
# License for the specific language governing permissions and limitations under
# the License.
+export HOME=/data/data/com.your.namespace
+export LD_LIBRARY_PATH=$HOME/erlang/erts-5.7.5/bin:$HOME/couchdb/bin:$HOME/couchdb/lib/couchdb/bin
+export PATH=$HOME/erlang/bin:$HOME/couchdb/bin:$PATH
BACKGROUND=false
DEFAULT_CONFIG_DIR=/sdcard/Android/data/com.your.namespace/couchdb/etc/couchdb/default.d
DEFAULT_CONFIG_FILE=/sdcard/Android/data/com.your.namespace/couchdb/etc/couchdb/default.ini
@@ -222,8 +225,8 @@
touch $PID_FILE
interactive_option="+Bd -noinput"
fi
- command="/home/matt/projects/couch/android-build/couchdb/../otp/bootstrap/bin/erl $interactive_option $ERL_START_OPTIONS \
- -env ERL_LIBS /sdcard/Android/data/com.your.namespace/couchdb/lib/couchdb/erlang/lib -couch_ini $start_arguments -s couch"
+ command="erl $interactive_option $ERL_START_OPTIONS \
+ -env ERL_LIBS /data/data/com.your.namespace/couchdb/lib/couchdb/erlang/lib -couch_ini $start_arguments -s couch"
if test "$BACKGROUND" = "true" -a "$RECURSED" = "false"; then
$0 $background_start_arguments -b -r $RESPAWN_TIMEOUT -p $PID_FILE \
-o $STDOUT_FILE -e $STDERR_FILE -R &
diff -ru release.bak/sdcard/Android/data/com.your.namespace/couchdb/etc/couchdb/local.ini release/sdcard/Android/data/com.your.namespace/couchdb/etc/couchdb/local.ini
--- release.bak/sdcard/Android/data/com.your.namespace/couchdb/etc/couchdb/local.ini 2011-02-05 01:26:00.000000000 -0700
+++ release/sdcard/Android/data/com.your.namespace/couchdb/etc/couchdb/local.ini 2011-02-08 15:58:30.000000000 -0700
@@ -5,23 +5,30 @@
; overwritten on server upgrade.
[couchdb]
+database_dir = /sdcard/Android/data/com.your.namespace/couchdb/var/lib/couchdb
+view_index_dir = /sdcard/Android/data/com.your.namespace/couchdb/var/lib/couchdb
+util_driver_dir = /data/data/com.your.namespace/couchdb/lib/couchdb
;max_document_size = 4294967296 ; bytes
+uri_file = /sdcard/Android/data/com.your.namespace/couchdb/var/lib/couchdb/couch.uri
[httpd]
-;port = 5984
-;bind_address = 127.0.0.1
+port = 5999
+bind_address = 127.0.0.1
; Uncomment next line to trigger basic-auth popup on unauthorized requests.
;WWW-Authenticate = Basic realm="administrator"
+[log]
+file = /sdcard/Android/data/com.your.namespace/couchdb/var/log/couchdb/couch.log
+level = debug
+
[couch_httpd_auth]
; If you set this to true, you should also uncomment the WWW-Authenticate line
; above. If you don't configure a WWW-Authenticate header, CouchDB will send
; Basic realm="server" in order to prevent you getting logged out.
; require_valid_user = false
-[log]
-;level = debug
-
+[query_servers]
+javascript = /data/data/com.your.namespace/couchdb/bin/couchjs_wrapper /data/data/com.your.namespace/couchdb/share/couchdb/server/main.js
; To enable Virtual Hosts in CouchDB, add a vhost = path directive. All requests to
; the Virual Host will be redirected to the path. In the example below all requests
diff -ruN release.bak/sdcard/Android/data/com.your.namespace/couchdb/bin/couchjs release/sdcard/Android/data/com.your.namespace/couchdb/bin/couchjs
--- release.bak/sdcard/Android/data/com.your.namespace/couchdb/bin/couchjs 2011-02-05 01:26:00.000000000 -0700
+++ release/sdcard/Android/data/com.your.namespace/couchdb/bin/couchjs 2011-02-05 01:37:12.000000000 -0700
@@ -1,4 +1,4 @@
-#! /bin/sh -e
+#!/system/bin/sh -e
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
@@ -63,7 +63,7 @@
}
run_couchjs () {
- exec /sdcard/Android/data/com.your.namespace/couchdb/lib/couchdb/bin/couchjs $@
+ exec LD_LIBRARY_PATH=/data/data/com.your.namespace/couchdb/lib/couchdb/bin /data/data/com.your.namespace/couchdb/lib/couchdb/bin/couchjs $@
}
parse_script_option_list () {
diff -ruN release.bak/sdcard/Android/data/com.your.namespace/couchdb/bin/couchjs_wrapper release/sdcard/Android/data/com.your.namespace/couchdb/bin/couchjs_wrapper
--- release.bak/sdcard/Android/data/com.your.namespace/couchdb/bin/couchjs_wrapper 1969-12-31 17:00:00.000000000 -0700
+++ release/sdcard/Android/data/com.your.namespace/couchdb/bin/couchjs_wrapper 2011-02-05 01:39:28.000000000 -0700
@@ -0,0 +1,3 @@
+#!/system/bin/sh
+export LD_LIBRARY_PATH=/data/data/com.your.namespace/couchdb/lib/couchdb/bin
+exec /data/data/com.your.namespace/couchdb/lib/couchdb/bin/couchjs $@
\ No newline at end of file
diff -ruN release.bak/sdcard/Android/data/com.your.namespace/couchdb/lib/couchdb/erlang/lib/couch-1.0.2/priv/couchspawnkillable release/sdcard/Android/data/com.your.namespace/couchdb/lib/couchdb/erlang/lib/couch-1.0.2/priv/couchspawnkillable
--- release.bak/sdcard/Android/data/com.your.namespace/couchdb/lib/couchdb/erlang/lib/couch-1.0.2/priv/couchspawnkillable 2011-02-05 01:26:00.000000000 -0700
+++ release/sdcard/Android/data/com.your.namespace/couchdb/lib/couchdb/erlang/lib/couch-1.0.2/priv/couchspawnkillable 2011-02-05 01:48:49.000000000 -0700
@@ -1,4 +1,4 @@
-#! /bin/sh -e
+#!/system/bin/sh -e
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
diff -ruN release.bak/sdcard/Android/data/com.your.namespace/erlang/bin/erl release/sdcard/Android/data/com.your.namespace/erlang/bin/erl
--- release.bak/sdcard/Android/data/com.your.namespace/erlang/bin/erl 2011-02-05 01:28:07.000000000 -0700
+++ release/sdcard/Android/data/com.your.namespace/erlang/bin/erl 2011-02-05 01:49:29.000000000 -0700
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/system/bin/sh
#
# %CopyrightBegin%
#
@@ -21,6 +21,7 @@
BINDIR=$ROOTDIR/erts-5.7.5/bin
EMU=beam
PROGNAME=`echo $0 | sed 's/.*\///'`
+export ERL_INETRC=$ROOTDIR/bin/erl_inetrc
export EMU
export ROOTDIR
export BINDIR
diff -ruN release.bak/sdcard/Android/data/com.your.namespace/erlang/bin/erl_inetrc release/sdcard/Android/data/com.your.namespace/erlang/bin/erl_inetrc
--- release.bak/sdcard/Android/data/com.your.namespace/erlang/bin/erl_inetrc 1969-12-31 17:00:00.000000000 -0700
+++ release/sdcard/Android/data/com.your.namespace/erlang/bin/erl_inetrc 2011-02-05 01:49:58.000000000 -0700
@@ -0,0 +1,4 @@
+%% Use erlang's internal resolver. Native DNS on android is annoying
+{lookup, [file,dns]}.
+%% TODO: Not this,
+{nameserver, {8,8,8,8}}.
\ No newline at end of file
diff -ru release.bak/sdcard/Android/data/com.your.namespace/erlang/bin/start release/sdcard/Android/data/com.your.namespace/erlang/bin/start
--- release.bak/sdcard/Android/data/com.your.namespace/erlang/bin/start 2011-02-05 01:57:26.000000000 -0700
+++ release/sdcard/Android/data/com.your.namespace/erlang/bin/start 2011-02-05 02:05:54.000000000 -0700
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/system/bin/sh
#
# %CopyrightBegin%
#
diff -ru release.bak/sdcard/Android/data/com.your.namespace/erlang/bin/start_erl release/sdcard/Android/data/com.your.namespace/erlang/bin/start_erl
--- release.bak/sdcard/Android/data/com.your.namespace/erlang/bin/start_erl 2011-02-05 01:57:26.000000000 -0700
+++ release/sdcard/Android/data/com.your.namespace/erlang/bin/start_erl 2011-02-05 02:05:48.000000000 -0700
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/system/bin/sh
#
#
# %CopyrightBegin%
diff -ru release.bak/sdcard/Android/data/com.your.namespace/erlang/erts-5.7.5/bin/erl release/sdcard/Android/data/com.your.namespace/erlang/erts-5.7.5/bin/erl
--- release.bak/sdcard/Android/data/com.your.namespace/erlang/erts-5.7.5/bin/erl 2011-02-05 01:57:26.000000000 -0700
+++ release/sdcard/Android/data/com.your.namespace/erlang/erts-5.7.5/bin/erl 2011-02-05 02:06:04.000000000 -0700
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/system/bin/sh
#
# %CopyrightBegin%
#
diff -ru release.bak/sdcard/Android/data/com.your.namespace/erlang/erts-5.7.5/bin/erl.src release/sdcard/Android/data/com.your.namespace/erlang/erts-5.7.5/bin/erl.src
--- release.bak/sdcard/Android/data/com.your.namespace/erlang/erts-5.7.5/bin/erl.src 2011-02-05 01:23:30.000000000 -0700
+++ release/sdcard/Android/data/com.your.namespace/erlang/erts-5.7.5/bin/erl.src 2011-02-05 02:06:01.000000000 -0700
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/system/bin/sh
#
# %CopyrightBegin%
#
diff -ru release.bak/sdcard/Android/data/com.your.namespace/erlang/erts-5.7.5/bin/start release/sdcard/Android/data/com.your.namespace/erlang/erts-5.7.5/bin/start
--- release.bak/sdcard/Android/data/com.your.namespace/erlang/erts-5.7.5/bin/start 2011-02-05 01:57:26.000000000 -0700
+++ release/sdcard/Android/data/com.your.namespace/erlang/erts-5.7.5/bin/start 2011-02-05 02:06:09.000000000 -0700
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/system/bin/sh
#
# %CopyrightBegin%
#
diff -ru release.bak/sdcard/Android/data/com.your.namespace/erlang/erts-5.7.5/bin/start_erl.src release/sdcard/Android/data/com.your.namespace/erlang/erts-5.7.5/bin/start_erl.src
--- release.bak/sdcard/Android/data/com.your.namespace/erlang/erts-5.7.5/bin/start_erl.src 2011-02-05 01:23:30.000000000 -0700
+++ release/sdcard/Android/data/com.your.namespace/erlang/erts-5.7.5/bin/start_erl.src 2011-02-05 02:06:06.000000000 -0700
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/system/bin/sh
#
#
# %CopyrightBegin%
diff -ru release.bak/sdcard/Android/data/com.your.namespace/erlang/erts-5.7.5/bin/start.src release/sdcard/Android/data/com.your.namespace/erlang/erts-5.7.5/bin/start.src
--- release.bak/sdcard/Android/data/com.your.namespace/erlang/erts-5.7.5/bin/start.src 2011-02-05 01:23:30.000000000 -0700
+++ release/sdcard/Android/data/com.your.namespace/erlang/erts-5.7.5/bin/start.src 2011-02-05 02:05:58.000000000 -0700
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/system/bin/sh
#
# %CopyrightBegin%
#
diff -ru release.bak/sdcard/Android/data/com.your.namespace/erlang/lib/inets-5.3/priv/bin/runcgi.sh release/sdcard/Android/data/com.your.namespace/erlang/lib/inets-5.3/priv/bin/runcgi.sh
--- release.bak/sdcard/Android/data/com.your.namespace/erlang/lib/inets-5.3/priv/bin/runcgi.sh 2011-02-05 01:22:58.000000000 -0700
+++ release/sdcard/Android/data/com.your.namespace/erlang/lib/inets-5.3/priv/bin/runcgi.sh 2011-02-05 02:06:14.000000000 -0700
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/system/bin/sh
cd $1
shift
exec env "$@"