1#!/bin/sh 2 3 4f=`nvram get apps_install_folder` 5case $f in 6 "asusware.arm") 7 pkg_type=`echo $f|sed -e "s,asusware\.,,"` 8 ;; 9 "asusware.big") 10 pkg_type="mipsbig" 11 ;; 12 "asusware.mipsbig") 13 pkg_type=`echo $f|sed -e "s,asusware\.,,"` 14 ;; 15 "asusware") 16 pkg_type="mipsel" 17 ;; 18 *) 19 echo "Unknown apps_install_folder: $f" 20 exit 1 21 ;; 22esac 23APP_UCLIBC_VERSION=0.9.28 24APPS_DEV=`nvram get apps_dev` 25APPS_MOUNTED_PATH=`nvram get apps_mounted_path` 26APPS_INSTALL_FOLDER=`nvram get apps_install_folder` 27APPS_INSTALL_PATH=$APPS_MOUNTED_PATH/$APPS_INSTALL_FOLDER 28 29 30if [ -z "$APPS_MOUNTED_PATH" ]; then 31 nvram set apps_state_error=2 32 exit 1 33fi 34 35APP_BIN=$APPS_INSTALL_PATH/bin 36APP_LIB=$APPS_INSTALL_PATH/lib 37 38APP_LINK_DIR=/tmp/opt 39APP_LINK_BIN=$APP_LINK_DIR/bin 40APP_LINK_LIB=$APP_LINK_DIR/lib 41 42APP_FS_TYPE=`mount | grep $APPS_MOUNTED_PATH | sed -e "s,.*on.* type \([^ ]*\) (.*$,\1,"` 43 44APPS_MOUNTED_TYPE=`mount |grep "/dev/$APPS_DEV on " |awk '{print $5}'` 45if [ "$APPS_MOUNTED_TYPE" != "vfat" ] && [ "$APPS_MOUNTED_TYPE" != "tfat" ]; then 46 if [ "$APP_FS_TYPE" != "fuseblk" ] ; then 47 chmod -R 777 $APPS_INSTALL_PATH 48 fi 49 user_account=`nvram get http_username` 50 if [ -z "$user_account" ]; then 51 user_account="admin" 52 fi 53 if [ "$APP_FS_TYPE" != "fuseblk" ] ; then 54 chown -R "$user_account":root $APPS_INSTALL_PATH 55 fi 56 rm -rf $APP_LINK_DIR 57 ln -sf $APPS_INSTALL_PATH $APP_LINK_DIR 58 exit 0 59fi 60 61# Others files or directories 62objs=`ls -a $APPS_INSTALL_PATH |grep -v ^\.__*` 63if [ -L "$APP_LINK_DIR" ] || [ ! -d "$APP_LINK_DIR" ]; then 64 rm -rf $APP_LINK_DIR 65 mkdir -p $APP_LINK_DIR 66fi 67 68for obj in $objs; do 69 if [ "$obj" == "." ] || [ "$obj" == ".." ]; then 70 continue 71 fi 72 73 if [ "$obj" != "bin" ] && [ "$obj" != "lib" ]; then 74 if [ -d "$APP_LINK_DIR/$obj" ]; then 75 rm -rf $APP_LINK_DIR/$obj 76 fi 77 ln -sf $APPS_INSTALL_PATH/$obj $APP_LINK_DIR/$obj 78 fi 79done 80 81 82# BIN 83objs=`ls -a $APP_BIN` 84if [ -L "$APP_LINK_BIN" ] || [ ! -d "$APP_LINK_BIN" ]; then 85 rm -rf $APP_LINK_BIN 86 mkdir -p $APP_LINK_BIN 87fi 88 89# ipkg-opt 90ln -sf $APP_BIN/ipkg $APP_LINK_BIN/ipkg-opt 91 92for obj in $objs; do 93 if [ "$obj" == "." ] || [ "$obj" == ".." ]; then 94 continue 95 fi 96 97 if [ -d "$APP_LINK_BIN/$obj" ]; then 98 rm -rf $APP_LINK_BIN/$obj 99 fi 100 ln -sf $APP_BIN/$obj $APP_LINK_BIN/$obj 101done 102 103 104# LIB 105objs=`ls -a $APP_LIB` 106if [ -L "$APP_LINK_LIB" ] || [ ! -d "$APP_LINK_LIB" ]; then 107 rm -rf $APP_LINK_LIB 108 mkdir -p $APP_LINK_LIB 109fi 110 111# first find the other objs and then do uclibc. 112for obj in $objs; do 113 if [ "$obj" == "." ] || [ "$obj" == ".." ]; then 114 continue 115 fi 116 117 if [ -d "$APP_LINK_LIB/$obj" ]; then 118 rm -rf $APP_LINK_LIB/$obj 119 fi 120 ln -sf $APP_LIB/$obj $APP_LINK_LIB/$obj 121done 122 123# ipkg-opt 124ln -sf $APP_LIB/libipkg.so.0.0.0 $APP_LINK_LIB/libipkg.so.0 125ln -sf $APP_LIB/libipkg.so.0.0.0 $APP_LINK_LIB/libipkg.so 126 127# uclibc-opt 128ln -sf $APP_LIB/ld-uClibc-${APP_UCLIBC_VERSION}.so $APP_LINK_LIB/ld-uClibc.so.0 129ln -sf $APP_LIB/ld-uClibc-${APP_UCLIBC_VERSION}.so $APP_LINK_LIB/ld-uClibc.so 130ln -sf $APP_LIB/libuClibc-${APP_UCLIBC_VERSION}.so $APP_LINK_LIB/libc.so.0 131ln -sf $APP_LIB/libuClibc-${APP_UCLIBC_VERSION}.so $APP_LINK_LIB/libc.so 132ln -sf $APP_LIB/libcrypt-${APP_UCLIBC_VERSION}.so $APP_LINK_LIB/libcrypt.so.0 133ln -sf $APP_LIB/libcrypt-${APP_UCLIBC_VERSION}.so $APP_LINK_LIB/libcrypt.so 134ln -sf $APP_LIB/libgcc_s.so.1 $APP_LINK_LIB/libgcc_s.so 135if [ "$pkg_type" == "arm" ]; then 136 ln -sf $APP_LIB/libstdc++.so.6.0.2 $APP_LINK_LIB/libstdc++.so.6 137 ln -sf $APP_LIB/libstdc++.so.6.0.2 $APP_LINK_LIB/libstdc++.so 138else 139 ln -sf $APP_LIB/libstdc++.so.6.0.8 $APP_LINK_LIB/libstdc++.so.6 140 ln -sf $APP_LIB/libstdc++.so.6.0.8 $APP_LINK_LIB/libstdc++.so 141 ln -sf $APP_LIB/libdl-${APP_UCLIBC_VERSION}.so $APP_LINK_LIB/libdl.so.0 142 ln -sf $APP_LIB/libdl-${APP_UCLIBC_VERSION}.so $APP_LINK_LIB/libdl.so 143 ln -sf $APP_LIB/libintl-${APP_UCLIBC_VERSION}.so $APP_LINK_LIB/libintl.so.0 144 ln -sf $APP_LIB/libintl-${APP_UCLIBC_VERSION}.so $APP_LINK_LIB/libintl.so 145 ln -sf $APP_LIB/libmudflap.so.0.0.0 $APP_LINK_LIB/libmudflap.so.0 146 ln -sf $APP_LIB/libmudflap.so.0.0.0 $APP_LINK_LIB/libmudflap.so 147 ln -sf $APP_LIB/libmudflapth.so.0.0.0 $APP_LINK_LIB/libmudflapth.so.0 148 ln -sf $APP_LIB/libmudflapth.so.0.0.0 $APP_LINK_LIB/libmudflapth.so 149 ln -sf $APP_LIB/libnsl-${APP_UCLIBC_VERSION}.so $APP_LINK_LIB/libnsl.so.0 150 ln -sf $APP_LIB/libnsl-${APP_UCLIBC_VERSION}.so $APP_LINK_LIB/libnsl.so 151fi 152ln -sf $APP_LIB/libm-${APP_UCLIBC_VERSION}.so $APP_LINK_LIB/libm.so.0 153ln -sf $APP_LIB/libm-${APP_UCLIBC_VERSION}.so $APP_LINK_LIB/libm.so 154ln -sf $APP_LIB/libpthread-${APP_UCLIBC_VERSION}.so $APP_LINK_LIB/libpthread.so.0 155ln -sf $APP_LIB/libpthread-${APP_UCLIBC_VERSION}.so $APP_LINK_LIB/libpthread.so 156ln -sf $APP_LIB/libresolv-${APP_UCLIBC_VERSION}.so $APP_LINK_LIB/libresolv.so.0 157ln -sf $APP_LIB/libresolv-${APP_UCLIBC_VERSION}.so $APP_LINK_LIB/libresolv.so 158ln -sf $APP_LIB/librt-${APP_UCLIBC_VERSION}.so $APP_LINK_LIB/librt.so.0 159ln -sf $APP_LIB/librt-${APP_UCLIBC_VERSION}.so $APP_LINK_LIB/librt.so 160ln -sf $APP_LIB/libthread_db-${APP_UCLIBC_VERSION}.so $APP_LINK_LIB/libthread_db.so.1 161ln -sf $APP_LIB/libthread_db-${APP_UCLIBC_VERSION}.so $APP_LINK_LIB/libthread_db.so 162ln -sf $APP_LIB/libutil-${APP_UCLIBC_VERSION}.so $APP_LINK_LIB/libutil.so.0 163ln -sf $APP_LIB/libutil-${APP_UCLIBC_VERSION}.so $APP_LINK_LIB/libutil.so 164