#!/bin/bash # # opk_make.sh # # This script is meant to ease generation of a opk file. Please consult the output # when running --help for a list of available parameters and an explaination of # those. # # Required tools when running the script: # bash # echo, cat, mv, rm, mksquashfs check_for_tool() { which $1 &> /dev/null if [ "$?" -ne "0" ]; then cecho "ERROR: Could not find the program '$1'. Please make sure that it is available in your PATH since it is required to complete your request." $red exit 1 fi } print_help() { cat << EOSTREAM opk_make.sh - A script to package "something" into a OPK. Usage: $(basename ${0}) {--directory|-d} {--opk|-o} [{--help|-h}] Switches: --directory / -d Sets the folder that is to be used for the resulting opk to . This option is mandatory for the script to function correctly. --help / -h Displays this help text. --opkname / -o Sets the output filename of the resulting opk to . This option is mandatory for the script to function correctly. A version >=4.0 of squashfs is required to be available in your PATH. EOSTREAM } # Parse command line parameters while [ "${1}" != "" ]; do if [ "${1}" = "--directory" ] || [ "${1}" = "-d" ]; then FOLDER=$2 shift 2 elif [ "${1}" = "--help" ] || [ "${1}" = "-h" ]; then print_help exit 0 elif [ "${1}" = "--opkname" ] || [ "${1}" = "-o" ]; then OPKNAME=$2 shift 2 else echo "ERROR: '$1' is not a known argument. Printing --help and aborting." print_help exit 1 fi done # Probe if required variables were set echo "Checking if all required variables were set." if [ ! $OPKNAME ] || [ ! $FOLDER ]; then echo "ERROR: Not all required options were set! Please see the --help information below." print_help exit 1 else echo "OPKNAME set to '$OPKNAME'." fi # Check if the selected folder actually exists if [ ! -d $FOLDER ]; then echo "ERROR: '$FOLDER' doesn't exist or is not a folder." exit 1 else echo "FOLDER set to '$FOLDER'." fi # Make iso from folder echo "Creating an iso file based on '$FOLDER'." check_for_tool mksquashfs if [ $(mksquashfs -version | awk 'BEGIN{r=0} $3>=4{r=1} END{print r}') -eq 0 ]; then echo "ERROR: Your squashfs version is older then version 4, please upgrade to 4.0 or later" exit 1 fi mksquashfs $FOLDER $OPKNAME.opk -noappend -no-exports -no-xattrs # Final message if [ -f $OPKNAME ]; then echo "Successfully finished creating the opk '$OPKNAME'." else echo "There seems to have been a problem and '$OPKNAME' was not created. Please check the output above for any error messages. A possible cause for this is that there was not enough space available." exit 1 fi