X-Git-Url: http://gitweb.hugovil.com/?a=blobdiff_plain;f=functions%2Fmain;h=0adc06d140a4e125c0b3a289c2d0f17abe6b146c;hb=a6cb6fc5391f8d73b7664cf9b97b038fbff1954e;hp=6fcafdf4ebe56c9021ff9ef875a3b6eeafce9a8c;hpb=76be003fe4ca3d35a009b560d59bebbe438346c2;p=hvlinux.git diff --git a/functions/main b/functions/main index 6fcafdf..0adc06d 100644 --- a/functions/main +++ b/functions/main @@ -2,6 +2,10 @@ 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'. @@ -47,6 +51,17 @@ fi # 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 @@ -75,8 +90,6 @@ TAR_OPTS="-b8" # 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}" @@ -115,17 +128,6 @@ CLFS_HOST="$(echo $MACHTYPE | \ 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 @@ -176,6 +178,19 @@ get_pkg_ver() 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() @@ -232,37 +247,6 @@ get_pkg_name() 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 @@ -599,11 +583,19 @@ hv_useradd() # 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 @@ -618,7 +610,7 @@ apply_patch() 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. @@ -631,7 +623,7 @@ apply_patch() apply_patches() { PACKAGE=${1} - local TARGET_DIR=${PACKAGE} + local TARGET_DIR="" # Checking for correct number of arguments if [ $# -gt 2 ]; then @@ -642,15 +634,13 @@ apply_patches() 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 @@ -677,9 +667,10 @@ static_decompressed_dirname() # 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 \ @@ -786,7 +777,7 @@ ipkg_display_build_infos() echo " BUILD64: ${BUILD64}" echo " CFLAGS: ${CFLAGS}" echo " CPPFLAGS: ${CPPFLAGS}" - echo " CXXFLAGS: ${CFLAGS}" + echo " CXXFLAGS: ${CXXFLAGS}" echo " LDFLAGS: ${LDFLAGS}" echo " RANLIB: ${RANLIB}" echo " CC: ${CC}" @@ -829,6 +820,7 @@ indicate_pkg_build_complete() # 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) @@ -839,24 +831,29 @@ indicate_pkg_build_complete() # 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) @@ -879,6 +876,10 @@ ipkg() # Alternate script name ALT_SCRIPT_NAME=${OPTARG} ;; + t) + # Do not disable dependency tracking + ENABLE_DEPENDENCY_TRACKING="1" + ;; ?) echo "${FUNCNAME}(): Invalid option: ${OPTARG}." return 1 @@ -944,6 +945,12 @@ ipkg() # 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. @@ -957,9 +964,6 @@ ipkg() ipkg_trap_end - # Make sure to update dynamic linker run-time bindings - ldconfig - return $EXIT_SUCCESS }