#!/bin/bash # # $Id$ # set -e # Uncomment this when reasy to be used #source ../configuration # TEMPORARY VARIABLES.. development use only declare MKFILE=Makefile declare PREV_PACKAGE="" declare BUILD_SCRIPTS=scripts # Remove this when we can use configuration declare TRACKING_DIR=/var/lib/jhalfs/BLFS HEADER="# This file is automatically generated by jhalfs # YOU MAY NEED TO EDIT THIS FILE MANUALLY # # Generated on `date \"+%F %X %Z\"`" #----------------------------------# __wrt_target() { # Create target and initialize log file #----------------------------------# local i=$1 local PREV=$2 ( cat << EOF $i: $PREV @\$(call echo_message, Building) @./progress_bar.sh \$@ & EOF ) >> $MKFILE.tmp } #----------------------------------# __write_build_cmd() { # #----------------------------------# ( cat << EOF @source ../envars.conf && ${BUILD_SCRIPTS}/\$@ >logs/\$@ 2>&1 EOF ) >> $MKFILE.tmp } #----------------------------------# __wrt_touch() { # #----------------------------------# local pkg_name=$1 local pkg_ver=$2 if [[ -n "$pkg_ver" ]] ; then ( cat << EOF @touch \$(TRACKING_DIR)/${pkg_name#*-?-}-${pkg_ver} EOF ) >> $MKFILE.tmp fi ( cat << EOF @touch \$@ && \\ sleep .25 && \\ echo -e "\n\n "\$(BOLD)Target \$(BLUE)\$@ \$(BOLD)OK && \\ echo --------------------------------------------------------------------------------\$(WHITE) EOF ) >> $MKFILE.tmp } #----------------------------# __write_entry() { # #----------------------------# local script_name=$1 local pkg_ver=$2 echo -n "${tab_}${tab_} entry for <$script_name>" #--------------------------------------------------------------------# # >>>>>>>> START BUILDING A Makefile ENTRY <<<<<<<< # #--------------------------------------------------------------------# # # Drop in the name of the target on a new line, and the previous target # as a dependency. Also call the echo_message function. __wrt_target "${script_name}" "$PREV_PACKAGE" __write_build_cmd # Include a touch of the target name so make can check # if it's already been made. __wrt_touch "${script_name}" "${pkg_ver}" # #--------------------------------------------------------------------# # >>>>>>>> END OF Makefile ENTRY <<<<<<<< # #--------------------------------------------------------------------# echo " .. OK" } #----------------------------# generate_Makefile () { # #----------------------------# echo "${tab_}Creating Makefile... ${BOLD}START${OFF}" # Start with a clean files >$MKFILE >$MKFILE.tmp for package_script in scripts/* ; do this_script=`basename $package_script` pkg_ver=$(grep "^${this_script#*-?-}[[:space:]]" ../packages | cut -f3) pkg_list="$pkg_list ${this_script}" __write_entry "${this_script}" "${pkg_ver}" PREV_PACKAGE=${this_script} done # Add a header, some variables and include the function file # to the top of the real Makefile. ( cat << EOF $HEADER PACKAGE= "`basename $PWD`" TRACKING_DIR= $TRACKING_DIR BOLD= "" RED= "" GREEN= "" ORANGE= "" BLUE= "" WHITE= "" define echo_message @echo \$(BOLD) @echo -------------------------------------------------------------------------------- @echo \$(BOLD)\$(1) target \$(BLUE)\$@\$(BOLD) @echo \$(WHITE) endef define fin_message @echo \$(BOLD) @echo -------------------------------------------------------------------------------- @echo \$(BOLD) Build complete for the package \$(BLUE)\$(PACKAGE)\$(BOLD) and its dependencies @echo \$(WHITE) endef all : $pkg_list @\$(call fin_message ) EOF ) > $MKFILE cat $MKFILE.tmp >> $MKFILE echo "${tab_}Creating Makefile... ${BOLD}DONE${OFF}" rm $MKFILE.tmp } generate_Makefile cp ../progress_bar.sh . mkdir -p logs