set -o errtrace # Let shell functions inherit ERR trap.
set -o errexit
-# Don' t locate and remember (hash) commands as they are looked up for
-# execution (don' t remember path):
+# Don't locate and remember (hash) commands as they are looked up for
+# execution (don't remember path):
set +h
hvtrap_setup()
CLFS=${LFS}
+CROSS_TOOLS_DIR=${CLFS}/cross-tools
+TOOLS_DIR=${CLFS}/tools
+
# Load functions
source ../functions/fpkg
source ../functions/lpkg
HVMAKE="make -j ${MAKEJOBS}"
-case "${HVL_TARGET}" in
- arm926*)
- CLFS_BUILDFLAGS="-mabi=aapcs-linux -mfloat-abi=soft"
- CLFS_TARGET="arm-linux-gnueabi"
- CLFS_ARCH=arm
- CLFS_ENDIAN=LITTLE
- ;;
- "x86_64")
- CLFS_BUILDFLAGS="-m64"
- CLFS_TARGET="${HVL_TARGET}-unknown-linux-gnu"
- CLFS_ARCH=${HVL_TARGET}
- ;;
- "x86")
- # No special flags
- CLFS_BUILDFLAGS=""
- CLFS_TARGET="i686-unknown-linux-gnu"
- CLFS_ARCH=${HVL_TARGET}
- ;;
- m68k*)
- #CLFS_BUILDFLAGS="-mcpu=51jm"
- CLFS_BUILDFLAGS=""
- CLFS_TARGET="${HVL_TARGET}-unknown-linux-gnu"
- CLFS_ARCH=${HVL_TARGET}
- ;;
- *)
- echo "Unsupported target architecture: ${HVL_TARGET}"
- return ${EXIT_FAILURE}
- ;;
-esac
+# Load default values. They can be overriden
+# by a target-specific file
+source ../targets/default
+
+if [ -f ../targets/${HVL_TARGET} ]; then
+ source ../targets/${HVL_TARGET}
+fi
+
+# When CLFS_OS is defined, define target as the standard triplet:
+CLFS_TARGET="${CLFS_ARCH}"
+if [ x"${CLFS_OS}" != x ]; then
+ CLFS_TARGET+="-${CLFS_OS}-${CLFS_ABI}"
+fi
CLFS_HOST="$(echo $MACHTYPE | \
sed "s/$(echo $MACHTYPE | cut -d- -f2)/cross/")"
-export CLFS_BUILDFLAGS CLFS_TARGET CLFS_ARCH CLFS_HOST CLFS_ENDIAN
+export CLFS_BUILDFLAGS CLFS_TARGET CLFS_ARCH CLFS_HOST
test_presence_of_packages_directory()
{
}
# Create log directory and log file for current stage if necessary
-# This should be done automatically...
-init_log_file()
+# Arg #1: log file name
+static_init_log_file()
{
+ # Checking for correct number of arguments
+ if [ $# -ne 1 ]; then
+ echo "${FUNCNAME}(), wrong number of arguments: ${*}"
+ return 1
+ fi
+
+ local LOG_FILE_NAME=${1}
+
# Scripts directory
export SCRDIR=$(pwd)
test_presence_of_packages_directory
- export LFS_PKG_DIR="$(dirname $(pwd))/packages/${LFS_STAGE}"
- export LFS_PATCHES_DIR="${SCRDIR}/patches"
+ export LFS_PKG_BASE="$(dirname $(pwd))/packages"
+ export LFS_PKG_DIR="${LFS_PKG_BASE}/${LFS_STAGE}"
export LFS_LOG_DIR=${LFS}/var/log/hvlinux-install/${LFS_STAGE}
- export LFS_LOG_FILE=${LFS_LOG_DIR}/install.log
+ export LFS_LOG_FILE=${LFS_LOG_DIR}/${LOG_FILE_NAME}
export LFS_TMP="${LFS}/tmp"
mkdir -p ${LFS_LOG_DIR} &&
fi
}
+# Create log directory and install log file for current stage if necessary
+init_log_file()
+{
+ static_init_log_file "install.log"
+ export LFS_PATCHES_DIR="${SCRDIR}/patches"
+}
+
+# Create log directory and update log file for current stage if necessary
+init_log_file_update()
+{
+ static_init_log_file "pkg-update.log"
+ export LFS_PATCHES_DIR="${LFS_PKG_DIR}/patches"
+}
+
# Check that we are logged in as the root user, and exit if this is not the case.
check_for_root_user()
{
echo ${1} | sed "s!.*_\([0-9].*\)!\1!g"
}
+# Extracting the version number from a complete package name
+# when the package name uses the underscore as the separator.
+# Arg. #1: Complete package name with version (ex: icu4c-54_1 will output 54.1)
+get_pkg_ver_underscore2()
+{
+ # Checking for correct number of arguments
+ if [ $# -ne 1 ]; then
+ echo "${FUNCNAME}(), wrong number of arguments: ${*}"
+ return 1
+ fi
+
+ local v=$(get_pkg_ver ${1})
+
+ # Replace underscore by dot
+ echo ${v} | sed "s!_!\.!g"
+}
+
+# Convert package version dots to uderscore.
+# Ex: gcc-3.4.6 will output 3_4_6
+# Arg. #1: Complete package name with version
+ver_dots_to_underscore()
+{
+ # Checking for correct number of arguments
+ if [ $# -ne 1 ]; then
+ echo "${FUNCNAME}(), wrong number of arguments: ${*}"
+ return 1
+ fi
+
+ local v=$(get_pkg_ver ${1})
+
+ # Replace dots by underscores
+ echo ${v} | sed "s!\.!_!g"
+}
+
# Extracting the first digit version number from a complete package name.
# Arg. #1: Complete package name with version (ex: gcc-3.4.4 will output 3)
get_pkg_ver1()
echo ${1} | sed "s!^.*-\([0-9]*\)\..*!\1!g"
}
+# Extracting the first digit version number from a complete package name,
+# when the package name uses the underscore as the separator.
+# Arg. #1: Complete package name with version (ex: icu4c-54_1 will output 54)
+get_pkg_ver1_underscore()
+{
+ # Checking for correct number of arguments
+ if [ $# -ne 1 ]; then
+ echo "${FUNCNAME}(), wrong number of arguments: ${*}"
+ return 1
+ fi
+
+ echo ${1} | sed "s!^.*-\([0-9]*\)_.*!\1!g"
+}
+
# Extracting the first 2 digits version number from a complete package name.
# Arg. #1: Complete package name with version (ex: gcc-3.4.4 will output 3.4)
get_pkg_ver2()
sed -i "s!\(^${VARIABLE}.*\)!\1:${VALUE}!" ${FILE}
}
-# Adding a new group, checking if it already exist before.
-# Arguments: same arguments as for standard groupadd command.
-hv_groupadd()
-{
- arguments=${*}
-
- # The last argument is the group name
- while [ $# -ne 0 ]; do
- groupname=${*}
- shift
- done
-
- if ! cat /etc/group | egrep -q "^${groupname}:"; then
- groupadd ${arguments}
- fi
-}
-
# Adding a new user, checking if it already exist before
# Arguments: same arguments as for standard useradd command.
hv_useradd()