X-Git-Url: http://gitweb.hugovil.com/?a=blobdiff_plain;f=functions%2Fmain;h=357eb1987d90d69690b5c6ea85abd487217523fe;hb=bf3b29999186b32eaeb6323c247c3d92cd139c02;hp=14f39a9cf423a8324c76a7072f603b44d3aca0c8;hpb=6cbd8248d64dfffe1716d272a2cd0702c4460d25;p=hvlinux.git diff --git a/functions/main b/functions/main index 14f39a9..357eb19 100644 --- a/functions/main +++ b/functions/main @@ -51,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 @@ -84,16 +95,10 @@ DEFAULT_IPKG_SCRIPT="ipkg.def" HVMAKE="make -j ${MAKEJOBS}" case "${HVL_TARGET}" in - arm*) + arm926*) CLFS_BUILDFLAGS="-mabi=aapcs-linux -mfloat-abi=soft" CLFS_TARGET="arm-linux-gnueabi" - CLFS_ARCH=$(echo ${CLFS_TARGET} | sed -e 's/-.*//' -e 's/arm.*/arm/g') - CLFS_ENDIAN=$(echo ${CLFS_ARCH} | sed -e 's/armeb/BIG/' -e 's/arm/LITTLE/') - if [ "${CLFS_ENDIAN}" = "LITTLE" ]; then - CLFS_NOT_ENDIAN="BIG" - else - CLFS_NOT_ENDIAN="LITTLE" - fi + CLFS_ARCH=arm ;; "x86_64") CLFS_BUILDFLAGS="-m64" @@ -106,6 +111,12 @@ case "${HVL_TARGET}" in 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} @@ -115,18 +126,7 @@ esac CLFS_HOST="$(echo $MACHTYPE | \ sed "s/$(echo $MACHTYPE | cut -d- -f2)/cross/")" -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} +export CLFS_BUILDFLAGS CLFS_TARGET CLFS_ARCH CLFS_HOST test_presence_of_packages_directory() { @@ -146,6 +146,7 @@ init_log_file() test_presence_of_packages_directory export LFS_PKG_DIR="$(dirname $(pwd))/packages/${LFS_STAGE}" + export LFS_PATCHES_DIR="${SCRDIR}/patches" export LFS_LOG_DIR=${LFS}/var/log/hvlinux-install/${LFS_STAGE} export LFS_LOG_FILE=${LFS_LOG_DIR}/install.log export LFS_TMP="${LFS}/tmp" @@ -178,6 +179,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() @@ -571,15 +585,17 @@ hv_useradd() # Applying patch # First argument is the name of the patch # Second argument is the package name -# Third argument: optional target directory (default is $LFS_TMP) +# Third argument is the subdirectory inside the patches directory +# Fourth argument: optional target directory (default is $LFS_TMP) apply_patch() { local PATCH_FILE=${1} local PACKAGE=${2} + local PDIR=${3} local TARGET_DIR="" - if [ $# -eq 3 ]; then - TARGET_DIR=${3}/${PACKAGE} + if [ $# -eq 4 ]; then + TARGET_DIR=${4}/${PACKAGE} else TARGET_DIR=${LFS_TMP}/${PACKAGE} fi @@ -590,14 +606,14 @@ apply_patch() return ${EXIT_FAILURE} fi - if [ ! -f ${LFS_PKG_DIR}/${PATCH_FILE} ]; then + if [ ! -f ${PDIR}/${PATCH_FILE} ]; then echo echo "${FUNCNAME}(): patch file '${PATCH_FILE}' not found." return ${EXIT_FAILURE} fi echo "Applying patch: ${PATCH_FILE}" - patch -Np1 -d ${TARGET_DIR} -i ${LFS_PKG_DIR}/${PATCH_FILE} + patch -Np1 -d ${TARGET_DIR} -i ${PDIR}/${PATCH_FILE} } # Applying any patch(es) found for the current package. @@ -623,13 +639,17 @@ apply_patches() TARGET_DIR=${2} 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} ${PACKAGE} ${TARGET_DIR} - done - fi + for s in common ${HVL_TARGET}; do + pdir=${LFS_PATCHES_DIR}/${s} + if [ -d ${pdir} ]; then + if ls ${pdir}/${1}-*.patch 1> /dev/null 2>&1; then + cd ${pdir} + for patch in ${1}-*.patch; do + apply_patch ${patch} ${PACKAGE} ${pdir} ${TARGET_DIR} + done + fi + fi + done return $? } @@ -654,9 +674,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 \ @@ -817,6 +838,7 @@ indicate_pkg_build_complete() # gnome # xorg # pm +# -t Enable dependency tracking # -s Name of script to source (default is from name of package) ipkg() { @@ -827,10 +849,11 @@ ipkg() 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} - while getopts "cjl:m:s:" flag ;do + while getopts "cjl:m:s:t" flag ;do case ${flag} in c) # Do not decompress package @@ -860,6 +883,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 @@ -1118,15 +1145,15 @@ get_total_build_time() for time in ${TIMES}; do HOURS=$(( $HOURS + $(echo ${time} | sed "s!^\([0-9]*\)\..*!\1!g") )) - + # The first SED command extracts the minutes (fractions of an hour). # The second SED command removed the leading zero, if applicable. MIN=$(( $MIN + $(echo ${time} | sed "s!.*\.\([0-9][0-9]\)!\1!g" | sed "s!^0\([0-9]\)!\1!g" ) )) done - + HOURS=$(( ${HOURS} + ( ${MIN} / 100 ) )) MIN=$(( ${MIN} % 100 )) - + echo "${HOURS}.${MIN}" }