150 lines
3.4 KiB
Text
150 lines
3.4 KiB
Text
|
#####
|
|||
|
#
|
|||
|
#
|
|||
|
#
|
|||
|
# $Id$
|
|||
|
#####
|
|||
|
|
|||
|
# TEMPORARY VARIABLES.. development use only
|
|||
|
declare MKFILE=devMakefile
|
|||
|
declare PREV_PACKAGE=""
|
|||
|
declare BUILD_SCRIPTS=scripts
|
|||
|
declare TRACKING_DIR=/var/lib/jhalfs/BLFS
|
|||
|
|
|||
|
|
|||
|
#----------------------------------#
|
|||
|
__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() { #
|
|||
|
#----------------------------------#
|
|||
|
local this_script=$1
|
|||
|
local file=$2
|
|||
|
(
|
|||
|
cat << EOF
|
|||
|
@( time { ${BUILD_SCRIPTS}/${file} >>logs/${this_script} 2>&1 ; } ) 2>>logs/${this_script}
|
|||
|
EOF
|
|||
|
) >> $MKFILE.tmp
|
|||
|
}
|
|||
|
|
|||
|
#----------------------------------#
|
|||
|
__wrt_touch() { #
|
|||
|
#----------------------------------#
|
|||
|
local pkg_name=$1
|
|||
|
(
|
|||
|
cat << EOF
|
|||
|
@touch \$@ && \\
|
|||
|
touch \$(TRACKING_DIR)/${pkg_name#*-} && \\
|
|||
|
sleep .25 && \\
|
|||
|
echo -e "\n\n "\$(BOLD)Target \$(BLUE)\$@ \$(BOLD)OK && \\
|
|||
|
echo --------------------------------------------------------------------------------\$(WHITE)
|
|||
|
EOF
|
|||
|
) >> $MKFILE.tmp
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
#----------------------------#
|
|||
|
__write_entry() { #
|
|||
|
#----------------------------#
|
|||
|
local script_name=$1
|
|||
|
|
|||
|
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 "${script_name}" "${script_name}"
|
|||
|
|
|||
|
# Include a touch of the target name so make can check
|
|||
|
# if it's already been made.
|
|||
|
__wrt_touch "${script_name}"
|
|||
|
#
|
|||
|
#--------------------------------------------------------------------#
|
|||
|
# >>>>>>>> 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`
|
|||
|
if [ ! -e $TRACKING_DIR/${this_script#*-} ]; then
|
|||
|
pkg_list="$pkg_list ${this_script}"
|
|||
|
__write_entry $this_script
|
|||
|
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 $PKGXML .xml`"
|
|||
|
TRACKING_DIR= $TRACKING_DIR
|
|||
|
|
|||
|
BOLD= "[0;1m"
|
|||
|
RED= "[1;31m"
|
|||
|
GREEN= "[0;32m"
|
|||
|
ORANGE= "[0;33m"
|
|||
|
BLUE= "[1;34m"
|
|||
|
WHITE= "[00m"
|
|||
|
|
|||
|
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
|
|||
|
|
|||
|
}
|