#!/bin/bash # # $Id$ # set -e # TEMPORARY VARIABLES.. development use only declare MKFILE=Makefile declare PREV_PACKAGE="" declare BUILD_SCRIPTS=scripts 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 ( cat << EOF @touch \$@ && \\ touch \$(TRACKING_DIR)/${pkg_name#*-?-}-${pkg_ver} && \\ 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` script_ver=$(xmllint --noent ../blfs-xml/book/bookinfo.xml 2>/dev/null | \ grep -i " ${this_script#*-?-}-version " | \ cut -d "\"" -f2 ) if [ ! -e $TRACKING_DIR/${this_script#*-?-}-$script_ver ]; then pkg_list="$pkg_list ${this_script}" __write_entry "${this_script}" "${script_ver}" PREV_PACKAGE=${this_script} fi 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