source: BLFS/gen-makefile.sh@ 5f14bd3

experimental
Last change on this file since 5f14bd3 was 5f14bd3, checked in by Manuel Canales Esparcia <manuel@…>, 18 years ago

Skip installed packages when processing dependencies instead of when generating the Makefile.
Fixed a bug when TARGET=xorg7

  • Property mode set to 100755
File size: 3.7 KB
Line 
1#!/bin/bash
2#
3# $Id$
4#
5set -e
6
7
8
9# TEMPORARY VARIABLES.. development use only
10declare MKFILE=Makefile
11declare PREV_PACKAGE=""
12declare BUILD_SCRIPTS=scripts
13declare TRACKING_DIR=/var/lib/jhalfs/BLFS
14
15HEADER="# This file is automatically generated by jhalfs
16# YOU MAY NEED TO EDIT THIS FILE MANUALLY
17#
18# Generated on `date \"+%F %X %Z\"`"
19
20
21#----------------------------------#
22__wrt_target() { # Create target and initialize log file
23#----------------------------------#
24 local i=$1
25 local PREV=$2
26(
27cat << EOF
28
29$i: $PREV
30 @\$(call echo_message, Building)
31 @./progress_bar.sh \$@ &
32EOF
33) >> $MKFILE.tmp
34}
35
36
37
38#----------------------------------#
39__write_build_cmd() { #
40#----------------------------------#
41(
42cat << EOF
43 @source ../envars.conf && ${BUILD_SCRIPTS}/\$@ >logs/\$@ 2>&1
44EOF
45) >> $MKFILE.tmp
46}
47
48#----------------------------------#
49__wrt_touch() { #
50#----------------------------------#
51 local pkg_name=$1
52 local pkg_ver=$2
53
54 if [[ -n "$pkg_ver" ]] ; then
55(
56cat << EOF
57 @touch \$(TRACKING_DIR)/${pkg_name#*-?-}-${pkg_ver}
58EOF
59) >> $MKFILE.tmp
60 fi
61
62(
63cat << EOF
64 @touch \$@ && \\
65 sleep .25 && \\
66 echo -e "\n\n "\$(BOLD)Target \$(BLUE)\$@ \$(BOLD)OK && \\
67 echo --------------------------------------------------------------------------------\$(WHITE)
68EOF
69) >> $MKFILE.tmp
70}
71
72
73#----------------------------#
74__write_entry() { #
75#----------------------------#
76 local script_name=$1
77 local pkg_ver=$2
78
79 echo -n "${tab_}${tab_} entry for <$script_name>"
80
81 #--------------------------------------------------------------------#
82 # >>>>>>>> START BUILDING A Makefile ENTRY <<<<<<<< #
83 #--------------------------------------------------------------------#
84 #
85 # Drop in the name of the target on a new line, and the previous target
86 # as a dependency. Also call the echo_message function.
87 __wrt_target "${script_name}" "$PREV_PACKAGE"
88 __write_build_cmd
89
90 # Include a touch of the target name so make can check
91 # if it's already been made.
92 __wrt_touch "${script_name}" "${pkg_ver}"
93 #
94 #--------------------------------------------------------------------#
95 # >>>>>>>> END OF Makefile ENTRY <<<<<<<< #
96 #--------------------------------------------------------------------#
97 echo " .. OK"
98}
99
100#----------------------------#
101generate_Makefile () { #
102#----------------------------#
103
104
105 echo "${tab_}Creating Makefile... ${BOLD}START${OFF}"
106
107 # Start with a clean files
108 >$MKFILE
109 >$MKFILE.tmp
110
111
112 for package_script in scripts/* ; do
113 this_script=`basename $package_script`
114 pkg_ver=$(grep "^${this_script#*-?-}[[:space:]]" ../packages | cut -f3)
115 pkg_list="$pkg_list ${this_script}"
116 __write_entry "${this_script}" "${pkg_ver}"
117 PREV_PACKAGE=${this_script}
118 done
119
120
121 # Add a header, some variables and include the function file
122 # to the top of the real Makefile.
123(
124 cat << EOF
125$HEADER
126
127PACKAGE= "`basename $PWD`"
128TRACKING_DIR= $TRACKING_DIR
129
130BOLD= "[0;1m"
131RED= "[1;31m"
132GREEN= "[0;32m"
133ORANGE= "[0;33m"
134BLUE= "[1;34m"
135WHITE= "[00m"
136
137define echo_message
138 @echo \$(BOLD)
139 @echo --------------------------------------------------------------------------------
140 @echo \$(BOLD)\$(1) target \$(BLUE)\$@\$(BOLD)
141 @echo \$(WHITE)
142endef
143
144
145define fin_message
146 @echo \$(BOLD)
147 @echo --------------------------------------------------------------------------------
148 @echo \$(BOLD) Build complete for the package \$(BLUE)\$(PACKAGE)\$(BOLD) and its dependencies
149 @echo \$(WHITE)
150endef
151
152all : $pkg_list
153 @\$(call fin_message )
154EOF
155) > $MKFILE
156
157 cat $MKFILE.tmp >> $MKFILE
158 echo "${tab_}Creating Makefile... ${BOLD}DONE${OFF}"
159
160 rm $MKFILE.tmp
161
162}
163
164generate_Makefile
165
166cp ../progress_bar.sh .
167
168mkdir -p logs
Note: See TracBrowser for help on using the repository browser.