Integrate patches inside git repository
[hvlinux.git] / functions / main
index 0adc06d..2460314 100644 (file)
@@ -98,13 +98,8 @@ case "${HVL_TARGET}" in
     arm*)
         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
+        CLFS_ENDIAN=LITTLE
        ;;
     "x86_64")
        CLFS_BUILDFLAGS="-m64"
@@ -117,6 +112,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}
@@ -126,7 +127,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
+export CLFS_BUILDFLAGS CLFS_TARGET CLFS_ARCH CLFS_HOST CLFS_ENDIAN
 
 test_presence_of_packages_directory()
 {
@@ -146,6 +147,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"
@@ -584,15 +586,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
@@ -603,14 +607,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.
@@ -636,13 +640,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 $?
 }