# $Id$ declare -r dotSTR=".................." #----------------------------# validate_config() { # Are the config values sane (within reason) #----------------------------# : <&2 echo -e "`eval echo ${ERROR_MSG_pt2}`" >&2 echo -e "${DD_BORDER}\n" exit 1 } # This function is only used when testing package management files. write_pkg_and_die() { echo -e "\n${DD_BORDER}" echo "Package management is requested but" >&2 echo -e $* >&2 echo -e "${DD_BORDER}\n" exit 1 } validate_file() { # For parameters ending with a '+' failure causes a warning message only echo -n "`eval echo $PARAM_VALS`" while test $# -gt 0 ; do case $1 in # Failures caused program exit "-z") [[ -z "${!config_param}" ]] && echo "${tab_}<-- NO file name given" && write_error_and_die ;; "-e") [[ ! -e "${!config_param}" ]] && echo "${tab_}<-- file does not exist" && write_error_and_die ;; "-s") [[ ! -s "${!config_param}" ]] && echo "${tab_}<-- file has zero bytes" && write_error_and_die ;; "-r") [[ ! -r "${!config_param}" ]] && echo "${tab_}<-- no read permission " && write_error_and_die ;; "-w") [[ ! -w "${!config_param}" ]] && echo "${tab_}<-- no write permission" && write_error_and_die ;; "-x") [[ ! -x "${!config_param}" ]] && echo "${tab_}<-- file cannot be executed" && write_error_and_die ;; # Warning messages only "-z+") [[ -z "${!config_param}" ]] && echo && return ;; esac shift 1 done echo } validate_dir() { # For parameters ending with a '+' failure causes a warning message only echo -n "`eval echo $PARAM_VALS`" while test $# -gt 0 ; do case $1 in "-z") [[ -z "${!config_param}" ]] && echo "${tab_}NO directory name given" && write_error_and_die ;; "-d") [[ ! -d "${!config_param}" ]] && echo "${tab_}This is NOT a directory" && write_error_and_die ;; "-w") if [[ ! -w "${!config_param}" ]]; then echo "${nl_}${DD_BORDER}" echo "${tab_}${RED}You do not have ${L_arrow}write${R_arrow}${RED} access to the directory${OFF}" echo "${tab_}${BOLD}${!config_param}${OFF}" echo "${DD_BORDER}${nl_}" exit 1 fi ;; # Warnings only "-w+") if [[ ! -w "${!config_param}" ]]; then echo "${nl_}${DD_BORDER}" echo "${tab_}WARNING-- You do not have ${L_arrow}write${R_arrow} access to the directory${OFF}" echo "${tab_} -- ${BOLD}${!config_param}${OFF}" echo "${DD_BORDER}" fi ;; "-z+") [[ -z "${!config_param}" ]] && echo "${tab_}<-- NO directory name given" && return esac shift 1 done echo } set +e PARAM_GROUP=${PROGNAME}_PARAM_LIST for config_param in ${!PARAM_GROUP}; do case $config_param in # Envvars that depend on other settings to be displayed COMPARE) [[ ! "$COMPARE" = "y" ]] && echo -e "`eval echo $PARAM_VALS`" ;; RUN_ICA) [[ "$COMPARE" = "y" ]] && echo -e "`eval echo $PARAM_VALS`" ;; RUN_FARCE) [[ "$COMPARE" = "y" ]] && echo -e "`eval echo $PARAM_VALS`" ;; ITERATIONS) [[ "$COMPARE" = "y" ]] && echo -e "`eval echo $PARAM_VALS`" ;; BOMB_TEST) [[ ! "$TEST" = "0" ]] && echo -e "`eval echo $PARAM_VALS`" ;; TARGET32) [[ -n "${TARGET32}" ]] && echo -e "`eval echo $PARAM_VALS`" ;; MIPS_LEVEL) [[ "${ARCH}" = "mips" ]] && echo -e "`eval echo $PARAM_VALS`" ;; SERVER) [[ "$GETPKG" = "y" ]] && echo -e "`eval echo $PARAM_VALS`" ;; RETRYSRCDOWNLOAD) [[ "$GETPKG" = "y" ]] && echo -e "`eval echo $PARAM_VALS`" ;; RETRYDOWNLOADCNT) [[ "$GETPKG" = "y" ]] && echo -e "`eval echo $PARAM_VALS`" ;; DOWNLOADTIMEOUT) [[ "$GETPKG" = "y" ]] && echo -e "`eval echo $PARAM_VALS`" ;; # Envars that requires some validation LUSER) echo -e "`eval echo $PARAM_VALS`" [[ "${!config_param}" = "**EDIT ME**" ]] && write_error_and_die ;; LGROUP) echo -e "`eval echo $PARAM_VALS`" [[ "${!config_param}" = "**EDIT ME**" ]] && write_error_and_die ;; # BOOK validation. Very ugly, need be fixed BOOK) if [[ "${WORKING_COPY}" = "y" ]] ; then validate_dir -z -d else echo -e "`eval echo $PARAM_VALS`" fi ;; # Validate directories, testable states: # fatal -z -d -w, # warning -z+ -w+ SRC_ARCHIVE) [[ "$GETPKG" = "y" ]] && validate_dir -z+ -d -w+ ;; # The build directory/partition MUST exist and be writable by the user BUILDDIR) validate_dir -z -d -w [[ "xx x/x" =~ x${!config_param}x ]] && write_error_and_die ;; LHOME) validate_dir -z -d ;; # Validate files, testable states: # fatal -z -e -s -w -x -r, # warning -z+ FSTAB) validate_file -z+ -e -s ;; CONFIG) validate_file -z+ -e -s ;; BOOT_CONFIG) [[ "${METHOD}" = "boot" ]] && validate_file -z -e -s ;; # Treatment of LANG parameter LANG ) # See it the locale value has been set echo -n "`eval echo $PARAM_VALS`" [[ -z "${!config_param}" ]] && echo " -- Variable $config_param cannot be empty!" && write_error_and_die echo ;; # Case of PKGMNGT: two files, packageManager.xml and packInstall.sh # must exist in $PKGMNGTDIR: PKGMNGT) echo -e "`eval echo $PARAM_VALS`" if [ ! -e "$PKGMNGTDIR/packageManager.xml" ]; then write_pkg_and_die $PKGMNGTDIR/packageManager.xml does not exist fi if [ ! -e "$PKGMNGTDIR/packInstall.sh" ]; then write_pkg_and_die $PKGMNGTDIR/packInstall.sh does not exist fi if [ ! -s "$PKGMNGTDIR/packageManager.xml" ]; then write_pkg_and_die $PKGMNGTDIR/packageManager.xml has zero size fi if [ ! -s "$PKGMNGTDIR/packInstall.sh" ]; then write_pkg_and_die $PKGMNGTDIR/packInstall.sh has zero size fi if [ ! -r "$PKGMNGTDIR/packageManager.xml" ]; then write_pkg_and_die $PKGMNGTDIR/packageManager.xml is not readable fi if [ ! -r "$PKGMNGTDIR/packInstall.sh" ]; then write_pkg_and_die $PKGMNGTDIR/packInstall.sh is not readable fi ;; # Display non-validated envars found in ${PROGNAME}_PARAM_LIST * ) echo -e "`eval echo $PARAM_VALS`" ;; esac done if [[ "${BLFS_TOOL}" = "y" ]] ; then echo "${nl_} ${BLUE}blfs-tool settings${OFF}" for config_param in ${blfs_tool_PARAM_LIST}; do echo -e "`eval echo $PARAM_VALS`" done fi if [[ "${CUSTOM_TOOLS}" = "y" ]] && [[ "${BLFS_TOOL}" = "n" ]] ; then for config_param in ${custom_tool_PARAM_LIST}; do echo -e "`eval echo $PARAM_VALS`" done fi set -e echo "${nl_}***${BOLD}${GREEN} ${PARAM_GROUP%%_*T} config parameters look good${OFF} ***${nl_}" }