#!/bin/bash #external by cuma [ "$EXTERNAL_ENABLED" == "y" ] || error 1 "external is used by make" #TODO: move the definition to fwmod, replace all occurrences of it in there FREETZ_LIBRARY_DIR="/usr/lib/freetz" mkdir -p "${EXTERNAL_MOD_DIR}" #preparation for Downloader outsourcing OUT_DIR="outboard" OUT_CONF="downloader.conf" MESSAGE="EXTERNAL SCRIPT:" if [ "$EXTERNAL_DOWNLOADER" == "y" ]; then if [ -e "$OUT_DIR" ]; then echo1 "\"$(pwd)/$OUT_DIR\" is used as directory for outsourced files" echo1 "all existing files in this directory will be rewritten" else echo1 "creating directory \"$(pwd)/$OUT_DIR\" for outsourced files" mkdir $OUT_DIR [ $? -ne 0 ] && error 1 "$MESSAGE Directory \"$OUT_DIR\" can not be created" fi if [ -e "$OUT_DIR/$OUT_CONF" ]; then echo1 "removing old Downloader configuration file $OUT_DIR/$OUT_CONF" rm "$OUT_DIR/$OUT_CONF" [ $? -ne 0 ] && error 1 "$MESSAGE $OUT_DIR/$OUT_CONF can not be deleted" fi echo1 "creating new Downloader configuration file $OUT_DIR/$OUT_CONF" touch "$OUT_DIR/$OUT_CONF" fi #start/stop external services for EXTERNAL_SERVICE in $(find make -maxdepth 2 -name external.services); do . $EXTERNAL_SERVICE done echo $EXTERNAL_SERVICES > "${FILESYSTEM_MOD_DIR}/etc/external.pkg" #own files EXTERNAL_FILES="$EXTERNAL_OWN_FILES" for EXT_FILES in $(find make make/libs -maxdepth 2 -name external.files) kernel/external.files; do . $EXT_FILES done EXTERNAL_FILES=$(echo $EXTERNAL_FILES | sed -e 's| |\n/|g;s|//\+|/|g' | sort) for EXTERNAL_FILE in $EXTERNAL_FILES; do FILENAME=$(basename $EXTERNAL_FILE) if [ -L "${FILESYSTEM_MOD_DIR}$EXTERNAL_FILE" -a "$EXTERNAL_LINKS" != "y" ]; then warn "$MESSAGE ${FILESYSTEM_MOD_DIR}$EXTERNAL_FILE is a symbolic link. It will not be processed" else EXTERNAL_LINKSUBDIR="" EXTERNAL_TARGETDIR="${EXTERNAL_MOD_DIR}" #subdir if [ "$EXTERNAL_SUBDIRS" == "y" ]; then EXTERNAL_LINKSUBDIR="`dirname $EXTERNAL_FILE`" EXTERNAL_TARGETDIR+="$EXTERNAL_LINKSUBDIR" mkdir -p "$EXTERNAL_TARGETDIR" fi #downloader EXTERNAL_TEMP="${FILESYSTEM_MOD_DIR}$EXTERNAL_FILE" if [ "$EXTERNAL_DOWNLOADER" == "y" ]; then FILEPERM=$(ls -l $EXTERNAL_TEMP | awk '{k=0;for(i=0;i<=8;i++)k+=((substr($1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf("%0o",k)}') echo2 "packing $FILENAME.gz for Downloader" gzip -c "$EXTERNAL_TEMP" > "$OUT_DIR/$FILENAME.gz" [ $? -ne 0 ] && error 1 "$MESSAGE $OUT_DIR/$FILENAME.gz can not be created" fi #move file if [ `ls "$EXTERNAL_TEMP" 2>/dev/null | wc -l` -gt 0 ]; then [ -e "$EXTERNAL_TARGETDIR/$FILENAME" ] && error 1 "The file $EXTERNAL_TARGETDIR/$FILENAME already exists" mv "$EXTERNAL_TEMP" "$EXTERNAL_TARGETDIR/" EXTERNAL_MSG="moved" [ "$EXTERNAL_DOWNLOADER" == "y" ] && echo "$FILENAME $FILEPERM /mod/external$EXTERNAL_LINKSUBDIR" >> $OUT_DIR/$OUT_CONF else EXTERNAL_MSG="not found" fi #link file ln -s "/mod/external$EXTERNAL_LINKSUBDIR/$FILENAME" "${FILESYSTEM_MOD_DIR}$EXTERNAL_FILE" echo2 "$EXTERNAL_FILE... $EXTERNAL_MSG & linked" fi done [ $(find $EXTERNAL_MOD_DIR -type f | wc -l) -gt 0 ] && touch "${EXTERNAL_MOD_DIR}/.external" if [ "$EXTERNAL_DOWNLOADER" == "y" ]; then echo " NOTE: Please upload zipped Downloader files from" echo " \"$(pwd)/$OUT_DIR\" to your http or ftp server" echo " and copy the Downloader configuration from" echo " \"$(pwd)/$OUT_DIR/$OUT_CONF\" into Downloader WEBUI." elif [ "$EXTERNAL_CREATEPAK" != "y" ]; then echo " NOTE: Please copy content of build/modified/external/ to your box." fi