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):
+set +h
+
hvtrap_setup()
{
# Setting ERR trap does implicit `set -o errexit'.
# Load stage number definition
source ./stage.def
+if [ -z "${LFS_STAGE}" ]; then
+ echo "LFS_STAGE is undefined (see stage.def)"
+ return ${EXIT_FAILURE}
+fi
+
+if [ "x${LFS_STAGE}" != "xstage0" -a "x${LFS_STAGE}" != "xstage1" ]; then
+ LFS=""
+fi
+
+CLFS=${LFS}
+
# Load functions
source ../functions/fpkg
source ../functions/lpkg
# List of default archive extensions to try
DEFAULT_ARCH_EXT_LIST="tar.bz2 tar.gz tgz tar.Z tar.xz zip"
-HV_FONTS_PATH="/usr/share/fonts"
-
DEFAULT_IPKG_SCRIPT="ipkg.def"
HVMAKE="make -j ${MAKEJOBS}"
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}
export CLFS_BUILDFLAGS CLFS_TARGET CLFS_ARCH CLFS_HOST CLFS_ENDIAN CLFS_NOT_ENDIAN
-if [ -z "${LFS_STAGE}" ]; then
- echo "LFS_STAGE is undefined (see stage.def)"
- return ${EXIT_FAILURE}
-fi
-
-if [ "x${LFS_STAGE}" != "xstage0" -a "x${LFS_STAGE}" != "xstage1" ]; then
- LFS=""
-fi
-
-CLFS=${LFS}
-
test_presence_of_packages_directory()
{
if [ ! -d "$(dirname $(pwd))/packages" ]; then
echo ${1} | sed "s!.*-\([0-9].*\)!\1!g"
}
+# Extracting the version number from a complete package name using underscore as separator.
+# Arg. #1: Complete package name with version (ex: ecryptfs-utils_103 will output 103)
+get_pkg_ver_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 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]*\)-[0-9].*!\1!"
}
-# Saves the content of CFLAGS and CXXFLAGS environment variables.
-save_flags()
-{
- export OLDCFLAGS=${CFLAGS}
- export OLDCXXFLAGS=${CXXFLAGS}
-
- return ${EXIT_SUCCESS}
-}
-
-# Saves the content of CFLAGS and CXXFLAGS environment variables, and then
-# set them to empty strings.
-save_flags_no_optimizations()
-{
- export OLDCFLAGS=${CFLAGS}
- export OLDCXXFLAGS=${CXXFLAGS}
- export CFLAGS=""
- export CXXFLAGS=""
-
- return ${EXIT_SUCCESS}
-}
-
-# Restores the previous values of CFLAGS and CXXFLAGS environment variables. These
-# must have been saved first using save_flags().
-restore_flags()
-{
- export CFLAGS=${OLDCFLAGS}
- export CXXFLAGS=${OLDCXXFLAGS}
-
- return ${EXIT_SUCCESS}
-}
-
# Create symbolic links for start/stop scripts in /etc/rc.d
#
# Arg #1: script name
# Applying patch
# First argument is the name of the patch
-# Second argument is the package name (target dir in $LFS_TMP)
+# Second argument is the package name
+# Third argument: optional target directory (default is $LFS_TMP)
apply_patch()
{
local PATCH_FILE=${1}
- local TARGET_DIR=${2}
+ local PACKAGE=${2}
+ local TARGET_DIR=""
+
+ if [ $# -eq 3 ]; then
+ TARGET_DIR=${3}/${PACKAGE}
+ else
+ TARGET_DIR=${LFS_TMP}/${PACKAGE}
+ fi
if [ -z "${PATCH_FILE}" ]; then
echo
fi
echo "Applying patch: ${PATCH_FILE}"
- patch -Np1 -d ${LFS_TMP}/${TARGET_DIR} -i ${LFS_PKG_DIR}/${PATCH_FILE}
+ patch -Np1 -d ${TARGET_DIR} -i ${LFS_PKG_DIR}/${PATCH_FILE}
}
# Applying any patch(es) found for the current package.
apply_patches()
{
PACKAGE=${1}
- local TARGET_DIR=${PACKAGE}
+ local TARGET_DIR=""
# Checking for correct number of arguments
if [ $# -gt 2 ]; then
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}
for patch in ${1}-*.patch; do
- apply_patch ${patch} ${TARGET_DIR}
+ apply_patch ${patch} ${PACKAGE} ${TARGET_DIR}
done
fi
# and extract base directory name with awk.
# tar 1.23 reports an error when using pipes, so
# remove error message with "2> /dev/null"
+ # (we extract the last line from tar output)
DIRNAME=$(tar ${TAR_OPTS} -tf \
${LFS_PKG_DIR}/${PACKAGE}.${arch_ext} 2> /dev/null | \
- head -n1 | sed 's!^\./!!' | awk -F \/ '{print $1}')
+ tail -n 1 | sed 's!^\./!!' | awk -F \/ '{print $1}')
;;
zip)
DIRNAME=$(unzip -l \
echo " BUILD64: ${BUILD64}"
echo " CFLAGS: ${CFLAGS}"
echo " CPPFLAGS: ${CPPFLAGS}"
- echo " CXXFLAGS: ${CFLAGS}"
+ echo " CXXFLAGS: ${CXXFLAGS}"
echo " LDFLAGS: ${LDFLAGS}"
echo " RANLIB: ${RANLIB}"
echo " CC: ${CC}"
# Arg. #1: Package name and version (ex: gcc-4.5.1)
# Remaining arguments: Additional configure options
# Options:
+# -c Do not decompress package
# -j Disable parallel make for this package
# -l Unique identification label in 'install.log'
# (default is package name and version)
# gnome
# xorg
# pm
+# -t Enable dependency tracking
# -s Name of script to source (default is from name of package)
ipkg()
{
START_TIME=$(echo `date +%s`)
unset ALT_SCRIPT_NAME
+
+ export DECOMPRESS="1"
export IPKG_MODE="ac" # Default mode if not specified
export HVLABEL="" # Global variable
+ export ENABLE_DEPENDENCY_TRACKING="0"
local HVMAKE_ORIG=${HVMAKE}
- # Make sure to get latest variables assignments (ex: pkg-config)
- source /etc/profile
-
- while getopts "jl:m:s:" flag ;do
+ while getopts "cjl:m:s:t" flag ;do
case ${flag} in
+ c)
+ # Do not decompress package
+ DECOMPRESS="0"
+ ;;
j)
- # Disable parallel make onlyfor this package
+ # Disable parallel make only for this package
HVMAKE="make"
;;
l)
# Alternate script name
ALT_SCRIPT_NAME=${OPTARG}
;;
+ t)
+ # Do not disable dependency tracking
+ ENABLE_DEPENDENCY_TRACKING="1"
+ ;;
?)
echo "${FUNCNAME}(): Invalid option: ${OPTARG}."
return 1
# Make sure we are at a known location
cd ${SCRDIR}
+ if [ "x${LFS_STAGE}" != "xstage0" -a "x${LFS_STAGE}" != "xstage1" ]; then
+ # Make sure to update dynamic linker run-time bindings, except for
+ # stages 0 and 1 where we run as the LFS user.
+ ldconfig
+ fi
+
exec 1>&6 # Restore stdout.
# Displaying build time after the package name.
ipkg_trap_end
- # Make sure to update dynamic linker run-time bindings
- ldconfig
-
return $EXIT_SUCCESS
}