source: jhalfs@ a9ca77f

2.3 2.3.x 2.4 ablfs ablfs-more legacy new_features trunk
Last change on this file since a9ca77f was 3e7ceed, checked in by Manuel Canales Esparcia <manuel@…>, 18 years ago

Ported CUSTOM_TOOLS support to all books.

  • Property mode set to 100755
File size: 13.9 KB
Line 
1#!/bin/bash
2# $Id$
3set -e
4
5# VT100 colors
6declare -r BLACK=$'\e[1;30m'
7declare -r DK_GRAY=$'\e[0;30m'
8
9declare -r RED=$'\e[31m'
10declare -r GREEN=$'\e[32m'
11declare -r YELLOW=$'\e[33m'
12declare -r BLUE=$'\e[34m'
13declare -r MAGENTA=$'\e[35m'
14declare -r CYAN=$'\e[36m'
15declare -r WHITE=$'\e[37m'
16
17declare -r OFF=$'\e[0m'
18declare -r BOLD=$'\e[1m'
19declare -r REVERSE=$'\e[7m'
20declare -r HIDDEN=$'\e[8m'
21
22declare -r tab_=$'\t'
23declare -r nl_=$'\n'
24
25declare -r DD_BORDER="${BOLD}==============================================================================${OFF}"
26declare -r SD_BORDER="${BOLD}------------------------------------------------------------------------------${OFF}"
27declare -r STAR_BORDER="${BOLD}******************************************************************************${OFF}"
28
29# bold yellow > < pair
30declare -r R_arrow=$'\e[1;33m>\e[0m'
31declare -r L_arrow=$'\e[1;33m<\e[0m'
32
33
34#>>>>>>>>>>>>>>>ERROR TRAPPING >>>>>>>>>>>>>>>>>>>>
35#-----------------------#
36simple_error() { # Basic error trap.... JUST DIE
37#-----------------------#
38 # If +e then disable text output
39 if [[ "$-" =~ e ]]; then
40 echo -e "\n${RED}ERROR:${GREEN} basic error trapped!${OFF}\n" >&2
41 fi
42}
43
44see_ya() {
45 echo -e "\n${L_arrow}${BOLD}jhalfs-trunk${R_arrow} exit${OFF}\n"
46}
47##### Simple error TRAPS
48# ctrl-c SIGINT
49# ctrl-y
50# ctrl-z SIGTSTP
51# SIGHUP 1 HANGUP
52# SIGINT 2 INTRERRUPT FROM KEYBOARD Ctrl-C
53# SIGQUIT 3
54# SIGKILL 9 KILL
55# SIGTERM 15 TERMINATION
56# SIGSTOP 17,18,23 STOP THE PROCESS
57#####
58set -e
59trap see_ya 0
60trap simple_error ERR
61trap 'echo -e "\n\n${RED}INTERRUPT${OFF} trapped\n" && exit 2' 1 2 3 15 17 18 23
62#>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
63
64version="
65${BOLD} \"jhalfs-trunk\"${OFF} builder tool (development) \$Rev$
66 \$Date$
67
68 Written by George Boudreau and Manuel Canales Esparcia,
69 plus several contributions.
70
71 Based on an idea from Jeremy Huntwork
72
73 This set of files are published under the
74 ${BOLD}Gnu General Public License, Version 2.${OFF}
75"
76
77case $1 in
78 -v ) echo "$version" && exit 1 ;;
79 run ) : ;;
80 * )
81 echo "${nl_}${tab_}${BOLD}${RED}This script cannot be called directly: EXITING ${OFF}${nl_}"
82 exit 1
83 ;;
84esac
85
86VERBOSITY=1
87
88[[ $VERBOSITY > 0 ]] && echo -n "Loading config params from <configuration>..."
89source configuration
90[[ $? > 0 ]] && echo "file:configuration did not load.." && exit 1
91[[ $VERBOSITY > 0 ]] && echo "OK"
92
93# These are boolean vars generated from Config.in.
94# ISSUE: If a boolean parameter is not set <true> that
95# variable is not defined by the menu app. This can
96# cause a headache if you are not careful.
97# The following parameters MUST be created and have a
98# default value.
99RUNMAKE=${RUNMAKE:-n}
100GETPKG=${GETPKG:-n}
101GETKERNEL=${GETKERNEL:-n}
102COMPARE=${COMPARE:-n}
103RUN_FARCE=${RUN_FARCE:-n}
104RUN_ICA=${RUN_ICA:-n}
105BOMB_TEST=${BOMB_TEST:-n}
106STRIP=${STRIP:=n}
107REPORT=${REPORT:=n}
108VIMLANG=${VIMLANG:-n}
109GRSECURITY_HOST=${GRSECURITY_HOST:-n}
110CUSTOM_TOOLS=${CUSTOM_TOOLS:-n}
111REBUILD_MAKEFILE=${REBUILD_MAKEFILE:-n}
112
113# Book surces envars
114BRANCH_ID=${BRANCH_ID:=development}
115
116case $BRANCH_ID in
117 development )
118 case $PROGNAME in
119 clfs2 ) TREE=branches/clfs-sysroot/BOOK ;;
120 clfs3 ) TREE=branches/clfs-embedded/BOOK ;;
121 *) TREE=trunk/BOOK ;;
122 esac
123 LFSVRS=development
124 ;;
125 *EDIT* ) echo " You forgot to set the branch or stable book version."
126 echo " Please rerun make and fix the configuration."
127 exit 2 ;;
128 branch-* )
129 LFSVRS=${BRANCH_ID}
130 TREE=branches/${BRANCH_ID#branch-}/BOOK
131 ;;
132 * )
133 case $PROGNAME in
134 lfs | hlfs )
135 LFSVRS=${BRANCH_ID}
136 TREE=tags/${BRANCH_ID}/BOOK
137 ;;
138 clfs | clfs2 | clfs3)
139 LFSVRS=${BRANCH_ID}
140 TREE=tags/${BRANCH_ID}
141 ;;
142 esac
143 ;;
144esac
145
146# Set the document location...
147BOOK=${BOOK:=$PROGNAME-$LFSVRS}
148
149# blfs-tool envars
150BLFS_TOOL=${BLFS_TOOL:-n}
151if [[ "${BLFS_TOOL}" = "y" ]] ; then
152 BLFS_BRANCH_ID=${BLFS_BRANCH_ID:=development}
153 case $BLFS_BRANCH_ID in
154 development ) BLFS_TREE=trunk/BOOK ;;
155 *EDIT* ) echo " You forgot to set the BLFS branch or stable book version."
156 echo " Please rerun make and fix the configuration."
157 exit 2 ;;
158 branch-* ) BLFS_TREE=branches/${BLFS_BRANCH_ID#branch-}/BOOK ;;
159 * ) BLFS_TREE=tags/${BLFS_BRANCH_ID}/BOOK ;;
160 esac
161 # Dependencies envars, to can update it more easy.
162 # Tidy and Unzip version are harcoded also in wrt_blfs_tool_targets()
163 # libxml2
164 LIBXML_PKG="libxml2-2.6.26.tar.gz"
165 LIBXML_URL="ftp://xmlsoft.org/libxml2/${LIBXML_PKG}"
166 LIBXML_MD5="2d8d3805041edab967368b497642f981"
167 # libxslt
168 LIBXSLT_PKG="libxslt-1.1.17.tar.gz"
169 LIBXSLT_URL="ftp://xmlsoft.org/libxslt/${LIBXSLT_PKG}"
170 LIBXSLT_MD5="fde6a7a93c0eb14cba628692fa3a1000"
171 # tidy
172 TIDY_PKG="tidy_src_051026.tgz"
173 TIDY_URL="http://tidy.sourceforge.net/src/${TIDY_PKG}"
174 TIDY_MD5="1e39fafd6808978871346658c8da1454"
175 # tidy patch
176 TIDY_PATCH="tidy-051026-prevent_PRE_newlines-1.patch"
177 TIDY_PATCH_URL="http://www.linuxfromscratch.org/patches/blfs/svn/${TIDY_PATCH}"
178 TIDY_PATCH_MD5="82f67f7af58fc2c945b3410ae655cc1a"
179 # tidy docs
180 TIDY_DOCS="tidy_docs_051020.tgz"
181 TIDY_DOCS_URL="http://tidy.sourceforge.net/docs/${TIDY_DOCS}"
182 TIDY_DOCS_MD5="86de2f198e57399c063d2567b2a25628"
183 # unzip
184 UNZIP_PKG="unzip552.tar.gz"
185 UNZIP_URL="ftp://ftp.info-zip.org/pub/infozip/src/${UNZIP_PKG}"
186 UNZIP_MD5="9d23919999d6eac9217d1f41472034a9"
187 # DocBook XML DTD
188 DBXML_PKG="docbook-xml-4.4.zip"
189 DBXML_URL="http://www.docbook.org/xml/4.4/${DBXML_PKG}"
190 DBXML_MD5="cbb04e9a700955d88c50962ef22c1634"
191 # DocBook XSL
192 DBXSL_PKG="docbook-xsl-1.69.1.tar.bz2"
193 DBXSL_URL="http://prdownloads.sourceforge.net/docbook/${DBXSL_PKG}"
194 DBXSL_MD5="6ebd29a67f2dcc3f2220f475ee6f6552"
195 # Links
196 LINKS_PKG="links-2.1pre21.tar.bz2"
197 LINKS_URL="http://links.twibright.com/download/${LINKS_PKG}"
198 LINKS_MD5="7687e2c32e337e11c6e9d8cd8c5202c9"
199 # sudo
200 SUDO_PKG="sudo-1.6.8p12.tar.gz"
201 SUDO_URL="http://www.courtesan.com/sudo/dist/${SUDO_PKG}"
202 SUDO_MD5="b29893c06192df6230dd5f340f3badf5"
203 # sudo envar fix patch
204 SUDO_PATCH="sudo-1.6.8p12-envvar_fix-1.patch"
205 SUDO_PATCH_URL="http://www.linuxfromscratch.org/patches/blfs/svn/${SUDO_PATCH}"
206 SUDO_PATCH_MD5="454925aedfe054dff8fe0d03b209f986"
207 # wget
208 WGET_PKG="wget-1.10.2.tar.gz"
209 WGET_URL="ftp://ftp.gnu.org/gnu/wget/${WGET_PKG}"
210 WGET_MD5="795fefbb7099f93e2d346b026785c4b8"
211 # Subversion
212 SVN_PKG="subversion-1.3.1.tar.bz2"
213 SVN_URL="http://subversion.tigris.org/tarballs/${SVN_PKG}"
214 SVN_MD5="07b95963968ae345541ca99d0e7bf082"
215 # GPM
216 GPM_PKG="gpm-1.20.1.tar.bz2"
217 GPM_URL="ftp://arcana.linux.it/pub/gpm/${GPM_PKG}"
218 GPM_MD5="2c63e827d755527950d9d13fe3d87692"
219 # GPM segfaul patch
220 GPM_PATCH_1="gpm-1.20.1-segfault-1.patch"
221 GPM_PATCH_1_URL="http://www.linuxfromscratch.org/patches/blfs/svn/${GPM_PATCH_1}"
222 GPM_PATCH_1_MD5="8c88f92990ba7613014fcd1db14ca7ac"
223 # GPM silent patch
224 GPM_PATCH_2="gpm-1.20.1-silent-1.patch"
225 GPM_PATCH_2_URL="http://www.linuxfromscratch.org/patches/blfs/svn/${GPM_PATCH_2}"
226 GPM_PATCH_2_MD5="bf6cbefe20c6f15b587f19ebc1c8a37a"
227fi
228
229#--- Envars not sourced from configuration
230case $PROGNAME in
231 clfs* ) declare -r SVN="http://svn.cross-lfs.org/svn/repos" ;;
232 * ) declare -r SVN="svn://svn.linuxfromscratch.org" ;;
233esac
234declare -r LOG=000-masterscript.log
235 # Needed to can fetch BLFS book sources when building CLFS
236declare -r SVN_2="svn://svn.linuxfromscratch.org"
237
238# Set true internal variables
239COMMON_DIR="common"
240PACKAGE_DIR=$(echo $PROGNAME | tr [a-z] [A-Z])
241MODULE=$PACKAGE_DIR/master.sh
242
243
244[[ $VERBOSITY > 0 ]] && echo -n "Loading common-functions module..."
245source $COMMON_DIR/common-functions
246[[ $? > 0 ]] && echo " $COMMON_DIR/common-functions did not load.." && exit
247[[ $VERBOSITY > 0 ]] && echo "OK"
248[[ $VERBOSITY > 0 ]] && echo -n "Loading code module <$MODULE>..."
249source $MODULE
250[[ $? > 0 ]] && echo "$MODULE did not load.." && exit 2
251[[ $VERBOSITY > 0 ]] && echo "OK"
252#
253[[ $VERBOSITY > 0 ]] && echo "${SD_BORDER}${nl_}"
254
255
256#*******************************************************************#
257[[ $VERBOSITY > 0 ]] && echo -n "Loading function <func_check_version.sh>..."
258source $COMMON_DIR/libs/func_check_version.sh
259[[ $? > 0 ]] && echo " function module did not load.." && exit 2
260[[ $VERBOSITY > 0 ]] && echo "OK"
261
262[[ $VERBOSITY > 0 ]] && echo -n "Loading function <func_validate_configs.sh>..."
263source $COMMON_DIR/libs/func_validate_configs.sh
264[[ $? > 0 ]] && echo " function module did not load.." && exit 2
265[[ $VERBOSITY > 0 ]] && echo "OK"
266
267[[ $VERBOSITY > 0 ]] && echo -n "Loading function <func_custom_pkgs>..."
268source $COMMON_DIR/libs/func_custom_pkgs
269[[ $? > 0 ]] && echo " function module did not load.." && exit 2
270[[ $VERBOSITY > 0 ]] && echo "OK"
271
272
273[[ $VERBOSITY > 0 ]] && echo "${SD_BORDER}${nl_}"
274
275
276###################################
277### MAIN ###
278###################################
279
280# Check for build prereequisites.
281echo
282 check_prerequisites
283echo "${SD_BORDER}${nl_}"
284
285validate_config
286echo "${SD_BORDER}${nl_}"
287echo -n "Are you happy with these settings? yes/no (no): "
288read ANSWER
289if [ x$ANSWER != "xyes" ] ; then
290 echo "${nl_}Rerun make to fix the configuration options.${nl_}"
291 exit 1
292fi
293echo "${nl_}${SD_BORDER}${nl_}"
294
295# Load additional modules or configuration files based on global settings
296# compare module
297if [[ "$COMPARE" = "y" ]]; then
298 [[ $VERBOSITY > 0 ]] && echo -n "Loading compare module..."
299 source $COMMON_DIR/libs/func_compare.sh
300 [[ $? > 0 ]] && echo "$COMMON_DIR/libs/func_compare.sh did not load.." && exit
301 [[ $VERBOSITY > 0 ]] && echo "OK"
302fi
303#
304# optimize module
305if [[ "$OPTIMIZE" != "0" ]]; then
306 [[ $VERBOSITY > 0 ]] && echo -n "Loading optimization module..."
307 source optimize/optimize_functions
308 [[ $? > 0 ]] && echo " optimize/optimize_functions did not load.." && exit
309 [[ $VERBOSITY > 0 ]] && echo "OK"
310 #
311 # optimize configurations
312 [[ $VERBOSITY > 0 ]] && echo -n "Loading optimization config..."
313 source optimize/opt_config
314 [[ $? > 0 ]] && echo " optimize/opt_config did not load.." && exit
315 [[ $VERBOSITY > 0 ]] && echo "OK"
316 # Validate optimize settings, if required
317 validate_opt_settings
318fi
319#
320
321if [[ "$REBUILD_MAKEFILE" = "n" ]] ; then
322
323 # If $BUILDDIR has subdirectories like tools/ or bin/, stop the run
324 # and notify the user about that.
325 if [ -d $BUILDDIR/tools -o -d $BUILDDIR/bin ] && [ -z $CLEAN ] ; then
326 eval "$no_empty_builddir"
327 fi
328
329 # If requested, clean the build directory
330 clean_builddir
331
332 if [[ ! -d $JHALFSDIR ]]; then
333 mkdir -p $JHALFSDIR
334 fi
335
336 # Create $BUILDDIR/sources even though it could be created by get_sources()
337 if [[ ! -d $BUILDDIR/sources ]]; then
338 mkdir -p $BUILDDIR/sources
339 fi
340 #
341 # Create the log directory
342 if [[ ! -d $LOGDIR ]]; then
343 mkdir $LOGDIR
344 fi
345 >$LOGDIR/$LOG
346 #
347 # Copy common helper files
348 cp $COMMON_DIR/{makefile-functions,progress_bar.sh,packages.xsl} $JHALFSDIR/
349 #
350 # Fix the XSL book parser
351 sed 's,FAKEDIR,'$BOOK',' $PACKAGE_DIR/$XSL > $JHALFSDIR/${XSL}
352 export XSL=$JHALFSDIR/${XSL}
353 #
354
355 # Copy urls.xsl, if needed
356 [[ "$GETPKG" = "y" ]] && cp $COMMON_DIR/urls.xsl $JHALFSDIR/
357 #
358 # Create the test-log directory, if needed
359 [[ "$TEST" != "0" ]] && [[ ! -d $TESTLOGDIR ]] && install -d -m 1777 $TESTLOGDIR
360 #
361 # Prepare report creation, if needed
362 if [[ "$REPORT" = "y" ]]; then
363 cp $COMMON_DIR/create-sbu_du-report.sh $JHALFSDIR/
364 # After being sure that all looks sane, dump the settings to a file
365 # This file will be used to create the REPORT header
366 validate_config > $JHALFSDIR/jhalfs.config
367 fi
368 #
369 # Copy optimize files, if needed
370 [[ "$OPTIMIZE" != "0" ]] && cp optimize/opt_override $JHALFSDIR/
371 #
372 # Copy compare files, if needed
373 if [[ "$COMPARE" = "y" ]]; then
374 mkdir -p $JHALFSDIR/extras
375 cp extras/* $JHALFSDIR/extras
376 fi
377 #
378
379 # Copy custom tools config files, if requested
380 if [[ "${CUSTOM_TOOLS}" = "y" ]]; then
381 echo "Copying custom tool scripts to $JHALFSDIR"
382 mkdir -p $JHALFSDIR/custom-commands
383 cp -f custom/config/* $JHALFSDIR/custom-commands
384 fi
385 #
386 # Install blfs-tool, if requested.
387 if [[ "${BLFS_TOOL}" = "y" ]] ; then
388 # Install the files
389 [[ ! -d ${BUILDDIR}${BLFS_ROOT} ]] && mkdir -p ${BUILDDIR}${BLFS_ROOT}
390 cp -r BLFS/* ${BUILDDIR}${BLFS_ROOT}
391 cp -r menu ${BUILDDIR}${BLFS_ROOT}
392 cp $COMMON_DIR/progress_bar.sh ${BUILDDIR}${BLFS_ROOT}
393 cp README.BLFS ${BUILDDIR}${BLFS_ROOT}
394 # Clean-up
395 rm -rf ${BUILDDIR}${BLFS_ROOT}/libs/.svn
396 rm -rf ${BUILDDIR}${BLFS_ROOT}/menu/.svn
397 rm -rf ${BUILDDIR}${BLFS_ROOT}/menu/lxdialog/.svn
398 # Set some harcoded envars to their proper values
399 sed -i 's,blfs-xml,'$BLFS_XML',' ${BUILDDIR}${BLFS_ROOT}/{update_book.sh,libs/book.xsl}
400 sed -i 's,tracking-dir,'$TRACKING_DIR',' ${BUILDDIR}${BLFS_ROOT}/{update_book.sh,gen-makefile.sh}
401 # Copy the dependencies build scripts
402 cp -r $COMMON_DIR/blfs-tool-deps $JHALFSDIR/
403 rm -rf $JHALFSDIR/blfs-tool-deps/.svn
404 fi
405 #
406
407 get_book
408 echo "${SD_BORDER}${nl_}"
409
410 # Get the BLFS book, if requested.
411 if [[ "${BLFS_TOOL}" = "y" ]] ; then
412 echo -n "Downloading the BLFS document, $BLFS_BRANCH_ID version... "
413 if [[ ! -d ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML} ]] ; then
414 mkdir -p ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML}
415 svn co $SVN_2/BLFS/$BLFS_TREE ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML} >>$LOGDIR/$LOG 2>&1
416 else
417 pushd ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML} 1> /dev/null
418 svn up >>$LOGDIR/$LOG 2>&1
419 popd 1> /dev/null
420 fi
421 echo -ne "done\n"
422 echo "${SD_BORDER}${nl_}"
423 fi
424
425fi
426
427# When regeneration the Makefile we need to know also the canonical book version
428if [[ "$REBUILD_MAKEFILE" = "y" ]] ; then
429 case $PROGNAME in
430 clfs | clfs2 | clfs3 )
431 VERSION=$(xmllint --noent $JHALFSDIR/$BOOK/prologue/$ARCH/bookinfo.xml 2>/dev/null | grep subtitle | sed -e 's/^.*ion //' -e 's/<\/.*//') ;;
432 *)
433 VERSION=$(xmllint --noent $JHALFSDIR/$BOOK/prologue/bookinfo.xml 2>/dev/null | grep subtitle | sed -e 's/^.*ion //' -e 's/<\/.*//') ;;
434 esac
435fi
436
437build_Makefile
438
439echo "${SD_BORDER}${nl_}"
440
441run_make
Note: See TracBrowser for help on using the repository browser.