Remove old build directory
[hvlinux.git] / functions / ipkg
index b3cba7c..61ba492 100644 (file)
@@ -24,8 +24,25 @@ unset -f hvconfig_cache
 unset -f hvconfig_post
 unset -f hvbuild_post
 
+# Arg #1: Clean label for debug message (optional)
+function dir_cleanup()
+{
+    # Removing old build directory (if any)
+    if [ -d ${LFS_TMP}/${PACKAGE} ]; then
+        echo "Removing ${1} source directory"
+       rm -rf ${LFS_TMP}/${PACKAGE}
+    fi
+    if [ -d ${LFS_TMP}/${PACKAGE}-build ]; then
+        echo "Removing ${1} build directory"
+        rm -rf ${LFS_TMP}/${PACKAGE}-build
+    fi
+}
+
 ipkg_decompress_package()
 {
+    # Removing old source and build directories (if any)
+    dir_cleanup "old"
+
     echo "Decompressing package"
     decompress_package ${PACKAGE}
 
@@ -39,26 +56,16 @@ ipkg_decompress_package()
     # Saving package source size in global variable.
     SOURCE_SIZE=$(du -h -s ${LFS_TMP}/${PACKAGE} | awk '{ print $1 }')
 
-    # Removing old build directory (if any)
-    if [ -d ${LFS_TMP}/${PACKAGE}-build ]; then
-        echo "Removing old build directory"
-       rm -rf ${LFS_TMP}/${PACKAGE}-build
+    # Creating build directory (if applicable).
+    if [ ! -d ${BUILD_DIR} ]; then
+        mkdir -p ${BUILD_DIR}
     fi
-
-    # Creating build directory
-    mkdir -v ${LFS_TMP}/${PACKAGE}-build
 }
 
 # Default configure function
 hvconfig()
 {
-    if [ "x${IPKG_MODE}" = "xacnb" -o "x${IPKG_MODE}" = "xpm" ]; then
-        # Broken autoconf package that must build in source dir, or Perl module.
-        cd ${LFS_TMP}/${PACKAGE}
-    else
-        # Standard autoconf mode
-        cd ${LFS_TMP}/${PACKAGE}-build
-    fi
+    cd ${BUILD_DIR}
 
     if [ "x${IPKG_MODE}" = "xpm" ]; then
         # Configure Perl module.
@@ -66,23 +73,30 @@ hvconfig()
         # accept the default configuration.
         perl Makefile.PL -n ${CONFIGURE_OPTS}
     else
+        if [ ! -f ${SRC_DIR}/configure ]; then
+            if [ -f ${SRC_DIR}/configure.in -o \
+                    -f ${SRC_DIR}/configure.ac ]; then
+                # Try to automatically generate missing configure script.
+                touch ${SRC_DIR}/{NEWS,README,AUTHORS} # Required files
+                autoreconf -vi ${SRC_DIR}
+            fi
+        fi
+
         # Standard configure script
-        ${LFS_TMP}/${PACKAGE}/configure ${CONFIGURE_OPTS}
+        ${SRC_DIR}/configure ${CONFIGURE_OPTS}
     fi
 }
 
 # Default build function
 hvbuild()
 {
-    if [ "x${IPKG_MODE}" = "xacnb" -o \
-        "x${IPKG_MODE}" = "xnoac" -o \
-        "x${IPKG_MODE}" = "xpm" ]; then
-        # Broken autoconf package that must build in source dir, or Perl module.
-        cd ${LFS_TMP}/${PACKAGE}
-    fi
-
     ${HVMAKE}
-    ${HVMAKE} install
+
+    if [ -n "${INSTALL_DIR}" ]; then
+        ${HVMAKE} DESTDIR=${INSTALL_DIR} install
+    else
+        ${HVMAKE} install
+    fi
 }
 
 # Default patch applying function
@@ -98,21 +112,18 @@ ipkg_finish()
     cd ${SCRDIR}
 
     if [ "x${DECOMPRESS}" = "x1" ]; then
+        DU_FOLDERS="${LFS_TMP}/${PACKAGE}"
+        if [ -d ${LFS_TMP}/${PACKAGE}-build ]; then
+            DU_FOLDERS+=" ${LFS_TMP}/${PACKAGE}-build"
+        fi
+
         # Saving package build size in global variable
-        BUILD_SIZE=$(du -h -s -c ${LFS_TMP}/${PACKAGE} ${LFS_TMP}/${PACKAGE}-build | grep total | awk '{ print $1 }')
+        BUILD_SIZE=$(du -h -s -c ${DU_FOLDERS} | grep total | \
+            awk '{ print $1 }')
 
         # Some scripts need to preserve the source or build directory. They can
         # do so by renaming them.
-        if [ -d ${LFS_TMP}/${PACKAGE} ]; then
-           # Removing source directory
-            echo "Removing source directory"
-           rm -rf ${LFS_TMP}/${PACKAGE}
-        fi
-        if [ -d ${LFS_TMP}/${PACKAGE}-build ]; then
-           # Removing build directory
-            echo "Removing build directory"
-           rm -rf ${LFS_TMP}/${PACKAGE}-build
-        fi
+        dir_cleanup
     else
         BUILD_SIZE="Unknown"
     fi
@@ -166,25 +177,20 @@ ipkg_script()
     if function_exists hvconfig_cache ; then
         echo "Running configure cache script"
         hvconfig_cache
-        CONFIGURE_OPTS="\
-            ${CONFIGURE_OPTS} \
-            --cache-file=${LFS_TMP}/${PACKAGE}-build/config.cache"
+        CONFIGURE_OPTS+=" --cache-file=${BUILD_DIR}/config.cache"
     fi
 
-    if [ -x ${LFS_TMP}/${PACKAGE}/configure ]; then
+    if [ -x ${SRC_DIR}/configure ]; then
         if [ "x${ENABLE_DEPENDENCY_TRACKING}" = "x0" ]; then
             # Add option --disable-dependency-tracking if supported
-            if cat ${LFS_TMP}/${PACKAGE}/configure | \
+            if cat ${SRC_DIR}/configure | \
                 grep -q "disable-dependency-tracking"; then
-                CONFIGURE_OPTS="\
-                ${CONFIGURE_OPTS} \
-                    --disable-dependency-tracking"
+                CONFIGURE_OPTS+=" --disable-dependency-tracking"
             fi
         fi
 
         # Remove option --sysconfdir=... if not supported
-        if ! cat ${LFS_TMP}/${PACKAGE}/configure | \
-            grep -q "sysconfdir"; then
+        if ! cat ${SRC_DIR}/configure | grep -q "sysconfdir"; then
             # Split on space, one per line.
             # Remove line --sysconfdir=...
             # Join separate lines on one line
@@ -211,6 +217,9 @@ ipkg_script()
         hvconfig_post
     fi
 
+    if [ -d ${BUILD_DIR} ]; then
+        cd ${BUILD_DIR}
+    fi
     hvbuild
 
     # Execute post-build function if applicable