X-Git-Url: http://gitweb.hugovil.com/?a=blobdiff_plain;f=functions;h=89230b9afcffb510a4338dd60240f80789ad403c;hb=f920c7ef750f2163b9e407cc453b192ede2c185a;hp=ecd34f04cf8b44403614c79ee52a94bb937f6ee0;hpb=1eb363044c6ee3115e62736aed4403b750082b44;p=hvlinux.git diff --git a/functions b/functions index ecd34f0..89230b9 100644 --- a/functions +++ b/functions @@ -216,7 +216,7 @@ static_bootscript_add() echo "${FUNCNAME}(), invalid level argument : ${*}" return 1 fi - + # Making sure bootscript has correct permissions chmod -v 740 ${LFS}/etc/rc.d/init.d/${SCRIPTNAME} @@ -310,7 +310,7 @@ var_export() echo "${FUNCNAME}(), wrong number of arguments: ${*}" return 1 fi - + # Checking if file exists if [ ! -f ${FILE} ]; then echo "${FUNCNAME}(), file not found: ${FILE}" @@ -357,7 +357,7 @@ var_add() echo "${FUNCNAME}(), wrong number of arguments: ${*}" return 1 fi - + # Checking if file exists if [ ! -f ${FILE} ]; then echo "${FUNCNAME}(), file not found: ${FILE}" @@ -400,7 +400,7 @@ var_add() # Variable value is NOT enclosed by double-quotes sed -i "s!\(^export ${VARIABLE}=.*\)!\1${SEP}${VALUE}!" ${FILE} fi - + return $? } @@ -438,7 +438,7 @@ string_add() echo "${FUNCNAME}(), wrong number of arguments: ${*}" return 1 fi - + # Checking if file exists if [ ! -f ${FILE} ]; then echo "${FUNCNAME}(), file not found: ${FILE}" @@ -450,7 +450,7 @@ string_add() echo "${FUNCNAME}(), string already defined: ${STRING}" return 0 fi - + echo "${STRING}" >> ${FILE} } @@ -470,7 +470,7 @@ var_add_shadow() echo "${FUNCNAME}(), wrong number of arguments: ${*}" return 1 fi - + # Checking if file exists if [ ! -f ${FILE} ]; then echo "${FUNCNAME}(), file not found: ${FILE}" @@ -496,23 +496,14 @@ hv_groupadd() { arguments=${*} - set +e - + # The last argument is the group name while [ $# -ne 0 ]; do - last_argument=${*} + groupname=${*} shift done - - groupadd ${arguments} - error=$? - - set -e - if [ ${error} -eq 0 -o ${error} -eq 9 ]; then - # 9 means the group already exists - return ${EXIT_SUCCESS} - else - exit ${EXIT_FAILURE} + if ! cat /etc/group | egrep "^${groupname}:" 1> /dev/null 2>&1; then + groupadd ${arguments} fi } @@ -522,24 +513,14 @@ hv_useradd() { arguments="${*}" - set +e - - # The last argument is the username + # The last argument is the user name while [ $# -ne 0 ]; do - last_argument=${*} + username=${*} shift done - useradd ${arguments} - error=$? - - set -e - - if [ ${error} -eq 0 -o ${error} -eq 9 ]; then - # 9 means the user already exists - return ${EXIT_SUCCESS} - else - exit ${EXIT_FAILURE} + if ! cat /etc/passwd | egrep "^${username}:" 1> /dev/null 2>&1; then + useradd ${arguments} fi } @@ -585,13 +566,13 @@ apply_patches() echo "Usage: ${FUNCNAME} PACKAGE-NAME" exit ${EXIT_FAILURE} fi - + if [ $# -eq 2 ]; then TARGET_DIR=${2} else TARGET_DIR=${PACKAGE} fi - + # Checking if we can find at least one patch. if ls ${LFS_PKG_DIR}/${1}-*.patch 1> /dev/null 2>&1; then cd ${LFS_PKG_DIR} @@ -640,7 +621,7 @@ static_decompressed_dirname() # Decompression of a package # First argument: package name -# Second argument: directory where decompressing (optional) +# Second argument: directory where decompressing (optional, defaults to LFS_TMP) decompress_package() { # Checking for correct number of arguments @@ -763,23 +744,22 @@ ipkg_display_build_infos() # -l Unique identification label in 'install.log' # (default is package name and version) # -m Installation mode: -# ac Standard autoconf package, build in separate dir -# acnb Standard autoconf package, building in source dir -# nb No autoconf (configure) +# ac Standard autoconf package, build in separate dir (default) +# acnb Standard autoconf package, build in source dir +# noac No autoconf (configure) # gnome # xorg # pm -# -s Name of script to execute or name of definition file (default is -# to source ipkg.def) +# -s Name of script to source (default is from name of package) ipkg() { START_TIME=$(echo `date +%s`) + unset ALT_SCRIPT_NAME export IPKG_MODE="ac" export HVLABEL="" # Global variable - local SCRIPT=${DEFAULT_IPKG_SCRIPT} - while getopts "hl:m:" flag ;do + while getopts "hl:m:s:" flag ;do case ${flag} in l) # Alternate label @@ -799,13 +779,7 @@ ipkg() ;; s) # Alternate script name - SCRIPT=${OPTARG} - - # Checking if script is valid and executable - if [ ! -x ${SCRIPT} ]; then - echo "${FUNCNAME}(): cannot execute script: ${SCRIPT}" - exit ${EXIT_FAILURE} - fi + ALT_SCRIPT_NAME=${OPTARG} ;; ?) echo "${FUNCNAME}(): Invalid option: ${OPTARG}." @@ -841,10 +815,10 @@ ipkg() # Checking if package was previously successfully installed if grep "^${HVLABEL} successfully installed" ${LFS_LOG_FILE} \ - 1> /dev/null 2>&1; then + 1> /dev/null 2>&1; then return $EXIT_SUCCESS fi - + # Displaying label MSGSTRING="Installing ${HVLABEL}" display_checkbox_msg ${MSGSTRING} @@ -863,15 +837,10 @@ ipkg() # All output from commands in this block sent to file $PACKAGE_LOG. exec > ${PACKAGE_LOG} 2>&1 - if [ "x${SCRIPT}" = "x${DEFAULT_IPKG_SCRIPT}" ]; then - # Executing standard ac script. - source ${SCRDIR}/../functions-ac - source ${SCRDIR}/${DEFAULT_IPKG_SCRIPT} - ipkg_script - else - # Executing custom script. - ${SCRIPT} ${PACKAGE} ${CONFIGURE_OPTS} - fi + # Sourcing standard ac script. + source ${SCRDIR}/../functions-ipkg + source ${SCRDIR}/${DEFAULT_IPKG_SCRIPT} + ipkg_script ${ALT_SCRIPT_NAME} # Make sure we are at a known location cd ${SCRDIR} @@ -972,17 +941,21 @@ rcmd_trap_end() { trap - INT TERM EXIT ERR - # Restore global trap - #####hvtrap_setup + # We do not restore global trap } rcmd_trap_handler() { - exec 1>&6 6>&- # Restore stdout and close file descriptor #6. + exec 1>&6 6>&- # Restore stdout to fd #6, where it had been saved, + # and close file descriptor #6. print_status failure - ###rcmd_trap_end - ###exit 1 + rcmd_trap_end + if [ -n "${RCMD_NO_EXIT}" ]; then + return ${EXIT_FAILURE} + else + exit ${EXIT_FAILURE} + fi } # Run command, no log @@ -1009,19 +982,10 @@ rcmd() echo ${CMD_WITH_ARGS} 1>> ${LFS_LOG_FILE} - if [ -n "${RCMD_NO_EXIT}" ]; then - set +e - fi - # Executing command ${CMD_WITH_ARGS} 1>> ${LFS_LOG_FILE} 2>&1 - if [ -n "${RCMD_NO_EXIT}" ]; then - set -e - fi - if [ $? -ne 0 ]; then - print_status failure if [ -n "${RCMD_NO_EXIT}" ]; then return ${EXIT_FAILURE} else