#!/bin/bash
-# This file is 'sourced' by other scripts, therefore the above line is of no
-# use, except when modifying the file in emacs to have syntax highlighting.
+set -o errtrace # Let shell functions inherit ERR trap.
+set -o errexit
# Constants for return codes
EXIT_SUCCESS=0
echo "${FUNCNAME}(), invalid level argument : ${*}"
return 1
fi
-
+
# Making sure bootscript has correct permissions
chmod -v 740 ${LFS}/etc/rc.d/init.d/${SCRIPTNAME}
echo "${FUNCNAME}(), wrong number of arguments: ${*}"
return 1
fi
-
+
# Checking if file exists
if [ ! -f ${FILE} ]; then
echo "${FUNCNAME}(), file not found: ${FILE}"
echo "${FUNCNAME}(), wrong number of arguments: ${*}"
return 1
fi
-
+
# Checking if file exists
if [ ! -f ${FILE} ]; then
echo "${FUNCNAME}(), file not found: ${FILE}"
# Variable value is NOT enclosed by double-quotes
sed -i "s!\(^export ${VARIABLE}=.*\)!\1${SEP}${VALUE}!" ${FILE}
fi
-
+
return $?
}
echo "${FUNCNAME}(), wrong number of arguments: ${*}"
return 1
fi
-
+
# Checking if file exists
if [ ! -f ${FILE} ]; then
echo "${FUNCNAME}(), file not found: ${FILE}"
echo "${FUNCNAME}(), string already defined: ${STRING}"
return 0
fi
-
+
echo "${STRING}" >> ${FILE}
}
echo "${FUNCNAME}(), wrong number of arguments: ${*}"
return 1
fi
-
+
# Checking if file exists
if [ ! -f ${FILE} ]; then
echo "${FUNCNAME}(), file not found: ${FILE}"
last_argument=${*}
shift
done
-
+
groupadd ${arguments}
error=$?
{
arguments="${*}"
- set +e
-
# The last argument is the username
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
}
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}
# 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
exit 1
}
+ipkg_display_build_infos()
+{
+ echo "hvlinux: configure options:"
+ for opt in ${CONFIGURE_OPTS}; do
+ echo " ${opt}"
+ done
+ echo "hvlinux: environment variables:"
+ echo " HOST: ${CLFS_HOST}"
+ echo " TARGET: ${CLFS_TARGET}"
+ echo " BUILD64: ${BUILD64}"
+ echo " CFLAGS: ${CFLAGS}"
+ echo " CPPFLAGS: ${CPPFLAGS}"
+ echo " CXXFLAGS: ${CFLAGS}"
+ echo " LDFLAGS: ${LDFLAGS}"
+ echo " RANLIB: ${RANLIB}"
+ echo " CC: ${CC}"
+ echo " CXX: ${CXX}"
+ echo " AR: ${AR}"
+ echo " AS: ${AS}"
+ echo " PATH: ${PATH}"
+}
+
# Installation of a package
# Arg. #1: Package name and version (ex: gcc-4.5.1)
# Remaining arguments: Additional configure options
# 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
echo "------------------------" 1>> ${LFS_LOG_FILE}
echo "${MSGSTRING}" 1>> ${LFS_LOG_FILE}
+ exec 7>&1 # Save current "value" of stdout.
+ # All output from commands in this block sent to file $LFS_LOG_FILE.
+ exec >> ${LFS_LOG_FILE} 2>&1
+ ipkg_display_build_infos
+ exec 1>&7 7>&- # Restore stdout and close file descriptor #7.
+
# All output from commands in this block sent to file $PACKAGE_LOG.
exec > ${PACKAGE_LOG} 2>&1
return $EXIT_SUCCESS
}
+rcmd_trap_setup()
+{
+ exec 6>&1 # Save current "value" of stdout.
+ trap rcmd_trap_handler INT TERM EXIT ERR
+}
+
+rcmd_trap_end()
+{
+ trap - INT TERM EXIT ERR
+
+ # We do not restore global trap
+}
+
+rcmd_trap_handler()
+{
+ 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
+ if [ -n "${RCMD_NO_EXIT}" ]; then
+ return ${EXIT_FAILURE}
+ else
+ exit ${EXIT_FAILURE}
+ fi
+}
+
# Run command, no log
# First argument: Message to display during script
# Second argument: command + arguments
display_checkbox_msg ${MSGSTRING}
+ rcmd_trap_setup
+
echo ${CMD_WITH_ARGS} 1>> ${LFS_LOG_FILE}
# Executing command
${CMD_WITH_ARGS} 1>> ${LFS_LOG_FILE} 2>&1
+
if [ $? -ne 0 ]; then
- print_status failure
if [ -n "${RCMD_NO_EXIT}" ]; then
return ${EXIT_FAILURE}
else
# Displaying build time after the package name
print_status success
+ rcmd_trap_end
+
return $EXIT_SUCCESS
}