Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

--- 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 "$@"