X-Git-Url: http://gitweb.hugovil.com/?a=blobdiff_plain;f=functions%2Fipkg;fp=functions%2Fipkg;h=23a1e1ab0aa559af4d79f637fdeb1718a662c083;hb=f3c8db3027d5dc530e1f30c88e0235975211582e;hp=0000000000000000000000000000000000000000;hpb=0fb786eca497edb316e1dfaa4a4ccec2d6b3f694;p=hvlinux.git diff --git a/functions/ipkg b/functions/ipkg new file mode 100644 index 0000000..23a1e1a --- /dev/null +++ b/functions/ipkg @@ -0,0 +1,185 @@ +#!/bin/bash + +function_exists() +{ + local FUNCTION_NAME=$1 + + [ -z "$FUNCTION_NAME" ] && return 1 + + declare -F "$FUNCTION_NAME" > /dev/null 2>&1 + + return $? +} + +unset -f hvpatch_pre +unset -f hvconfig_pre +unset -f hvconfig_cache +unset -f hvconfig_post +unset -f hvbuild_post + +ipkg_decompress_package() +{ + echo "Decompressing package" + decompress_package ${PACKAGE} + + local DECOMPRESSED_DIRNAME=$(static_decompressed_dirname ${PACKAGE}) + + # Rename the decompressed package as per the package name if necessary + if [ "x${DECOMPRESSED_DIRNAME}" != "x${PACKAGE}" ]; then + mv -v ${LFS_TMP}/${DECOMPRESSED_DIRNAME} ${LFS_TMP}/${PACKAGE} + fi + + # Displaying package source size in log file + echo " Source size:" $(du -h -s ${LFS_TMP}/${PACKAGE} | awk '{ print $1 }') 1>> ${LFS_LOG_FILE} + + # Removing old build directory (if any) + if [ -d ${LFS_TMP}/${PACKAGE}-build ]; then + echo "Removing old build directory" + rm -rf ${LFS_TMP}/${PACKAGE}-build + 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 + + if [ "x${IPKG_MODE}" = "xpm" ]; then + # Configure Perl module. + # The option "-n" is used to avoid having to answer a question and + # accept the default configuration. + perl Makefile.PL -n ${CONFIGURE_OPTS} + else + # Standard configure script + ${LFS_TMP}/${PACKAGE}/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 +} + +# Default patch applying function +hvpatch() +{ + # Applying patches (if any) + apply_patches ${PACKAGE} +} + +ipkg_finish() +{ + # Make sure to return to scripts directory + cd ${SCRDIR} + + # Displaying package build size in log file + BUILD_SIZE=$(du -h -s -c ${LFS_TMP}/${PACKAGE} ${LFS_TMP}/${PACKAGE}-build | grep total | awk '{ print $1 }') + echo " Build size : ${BUILD_SIZE}" 1>> ${LFS_LOG_FILE} + + # 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 +} + +# This is the main function doing all the work +# Arg #1: alternate script name (optional) +ipkg_script() +{ + if [ $# -eq 1 ]; then + # Use supplied script name + PACKAGE_DEF=${SCRDIR}/pkg/${1} + else + # Use default script name + PACKAGE_DEF=${SCRDIR}/pkg/$(get_pkg_name ${PACKAGE}) + + fi + + ipkg_decompress_package + + if [ -f ${PACKAGE_DEF} ]; then + echo "Load custom package functions and definitions from ${PACKAGE_DEF}" + source ${PACKAGE_DEF} + fi + + # Execute pre-patch function if applicable + if function_exists hvpatch_pre ; then + echo "Running patch pre-script" + hvpatch_pre + fi + + hvpatch + + # Execute pre-configure function if applicable + if function_exists hvconfig_pre ; then + echo "Running configure pre-script" + hvconfig_pre + fi + + # Execute config-cache function if applicable + 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" + fi + + # Add option --disable-dependency-tracking if supported + if cat ${LFS_TMP}/${PACKAGE}/configure | \ + grep "disable-dependency-tracking" 1> /dev/null 2>&1; then + CONFIGURE_OPTS="\ + ${CONFIGURE_OPTS} \ + --disable-dependency-tracking" + fi + + ipkg_display_build_infos + + if [ "x${IPKG_MODE}" = "xnoac" ]; then + echo "Not calling configure because ${PACKAGE} has no configure script" + else + hvconfig + fi + + # Execute post-configure function if applicable + if function_exists hvconfig_post ; then + echo "Running configure post-script" + hvconfig_post + fi + + hvbuild + + # Execute post-build function if applicable + if function_exists hvbuild_post ; then + echo "Running build post-script" + hvbuild_post + fi + + ipkg_finish +}