source: jhalfs@ ee21f67

2.3 2.3.x 2.4 ablfs ablfs-more legacy new_features trunk
Last change on this file since ee21f67 was a96109a, checked in by George Boudreau <georgeb@…>, 18 years ago

more changes made to accomodate bash-3.2

  • 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-2.0/BOOK ;;
120 *) TREE=trunk/BOOK ;;
121 esac
122 LFSVRS=development
123 ;;
124 *EDIT* ) echo " You forgot to set the branch or stable book version."
125 echo " Please rerun make and fix the configuration."
126 exit 2 ;;
127 branch-* )
128 LFSVRS=${BRANCH_ID}
129 TREE=branches/${BRANCH_ID#branch-}/BOOK
130 ;;
131 * )
132 case $PROGNAME in
133 lfs | hlfs )
134 LFSVRS=${BRANCH_ID}
135 TREE=tags/${BRANCH_ID}/BOOK
136 ;;
137 clfs | clfs2 )
138 LFSVRS=${BRANCH_ID}
139 TREE=tags/${BRANCH_ID}
140 ;;
141 esac
142 ;;
143esac
144
145# Set the document location...
146BOOK=${BOOK:=$PROGNAME-$LFSVRS}
147
148# blfs-tool envars
149BLFS_TOOL=${BLFS_TOOL:-n}
150if [[ "${BLFS_TOOL}" = "y" ]] ; then
151 BLFS_BRANCH_ID=${BLFS_BRANCH_ID:=development}
152 case $BLFS_BRANCH_ID in
153 development ) BLFS_TREE=trunk/BOOK ;;
154 *EDIT* ) echo " You forgot to set the BLFS branch or stable book version."
155 echo " Please rerun make and fix the configuration."
156 exit 2 ;;
157 branch-* ) BLFS_TREE=branches/${BLFS_BRANCH_ID#branch-}/BOOK ;;
158 * ) BLFS_TREE=tags/${BLFS_BRANCH_ID}/BOOK ;;
159 esac
160 # Dependencies envars, to can update it more easy.
161 # Tidy and Unzip version are harcoded also in wrt_blfs_tool_targets()
162 # libxml2
163 LIBXML_PKG="libxml2-2.6.26.tar.gz"
164 LIBXML_URL="ftp://xmlsoft.org/libxml2/${LIBXML_PKG}"
165 LIBXML_MD5="2d8d3805041edab967368b497642f981"
166 # libxslt
167 LIBXSLT_PKG="libxslt-1.1.17.tar.gz"
168 LIBXSLT_URL="ftp://xmlsoft.org/libxslt/${LIBXSLT_PKG}"
169 LIBXSLT_MD5="fde6a7a93c0eb14cba628692fa3a1000"
170 # tidy
171 TIDY_PKG="tidy_src_051026.tgz"
172 TIDY_URL="http://tidy.sourceforge.net/src/${TIDY_PKG}"
173 TIDY_MD5="1e39fafd6808978871346658c8da1454"
174 # tidy patch
175 TIDY_PATCH="tidy-051026-prevent_PRE_newlines-1.patch"
176 TIDY_PATCH_URL="http://www.linuxfromscratch.org/patches/blfs/svn/${TIDY_PATCH}"
177 TIDY_PATCH_MD5="82f67f7af58fc2c945b3410ae655cc1a"
178 # tidy docs
179 TIDY_DOCS="tidy_docs_051020.tgz"
180 TIDY_DOCS_URL="http://tidy.sourceforge.net/docs/${TIDY_DOCS}"
181 TIDY_DOCS_MD5="86de2f198e57399c063d2567b2a25628"
182 # unzip
183 UNZIP_PKG="unzip552.tar.gz"
184 UNZIP_URL="ftp://ftp.info-zip.org/pub/infozip/src/${UNZIP_PKG}"
185 UNZIP_MD5="9d23919999d6eac9217d1f41472034a9"
186 # DocBook XML DTD
187 DBXML_PKG="docbook-xml-4.4.zip"
188 DBXML_URL="http://www.docbook.org/xml/4.4/${DBXML_PKG}"
189 DBXML_MD5="cbb04e9a700955d88c50962ef22c1634"
190 # DocBook XSL
191 DBXSL_PKG="docbook-xsl-1.69.1.tar.bz2"
192 DBXSL_URL="http://prdownloads.sourceforge.net/docbook/${DBXSL_PKG}"
193 DBXSL_MD5="6ebd29a67f2dcc3f2220f475ee6f6552"
194 # Links
195 LINKS_PKG="links-2.1pre21.tar.bz2"
196 LINKS_URL="http://links.twibright.com/download/${LINKS_PKG}"
197 LINKS_MD5="7687e2c32e337e11c6e9d8cd8c5202c9"
198 # sudo
199 SUDO_PKG="sudo-1.6.8p12.tar.gz"
200 SUDO_URL="http://www.courtesan.com/sudo/dist/${SUDO_PKG}"
201 SUDO_MD5="b29893c06192df6230dd5f340f3badf5"
202 # sudo envar fix patch
203 SUDO_PATCH="sudo-1.6.8p12-envvar_fix-1.patch"
204 SUDO_PATCH_URL="http://www.linuxfromscratch.org/patches/blfs/svn/${SUDO_PATCH}"
205 SUDO_PATCH_MD5="454925aedfe054dff8fe0d03b209f986"
206 # wget
207 WGET_PKG="wget-1.10.2.tar.gz"
208 WGET_URL="ftp://ftp.gnu.org/gnu/wget/${WGET_PKG}"
209 WGET_MD5="795fefbb7099f93e2d346b026785c4b8"
210 # Subversion
211 SVN_PKG="subversion-1.3.1.tar.bz2"
212 SVN_URL="http://subversion.tigris.org/tarballs/${SVN_PKG}"
213 SVN_MD5="07b95963968ae345541ca99d0e7bf082"
214 # GPM
215 GPM_PKG="gpm-1.20.1.tar.bz2"
216 GPM_URL="ftp://arcana.linux.it/pub/gpm/${GPM_PKG}"
217 GPM_MD5="2c63e827d755527950d9d13fe3d87692"
218 # GPM segfaul patch
219 GPM_PATCH_1="gpm-1.20.1-segfault-1.patch"
220 GPM_PATCH_1_URL="http://www.linuxfromscratch.org/patches/blfs/svn/${GPM_PATCH_1}"
221 GPM_PATCH_1_MD5="8c88f92990ba7613014fcd1db14ca7ac"
222 # GPM silent patch
223 GPM_PATCH_2="gpm-1.20.1-silent-1.patch"
224 GPM_PATCH_2_URL="http://www.linuxfromscratch.org/patches/blfs/svn/${GPM_PATCH_2}"
225 GPM_PATCH_2_MD5="bf6cbefe20c6f15b587f19ebc1c8a37a"
226fi
227
228#--- Envars not sourced from configuration
229case $PROGNAME in
230 clfs* ) declare -r SVN="http://svn.cross-lfs.org/svn/repos" ;;
231 * ) declare -r SVN="svn://svn.linuxfromscratch.org" ;;
232esac
233declare -r LOG=000-masterscript.log
234 # Needed to can fetch BLFS book sources when building CLFS
235declare -r SVN_2="svn://svn.linuxfromscratch.org"
236
237# Set true internal variables
238COMMON_DIR="common"
239PACKAGE_DIR=$(echo $PROGNAME | tr [a-z] [A-Z])
240MODULE=$PACKAGE_DIR/master.sh
241
242
243[[ $VERBOSITY > 0 ]] && echo -n "Loading common-functions module..."
244source $COMMON_DIR/common-functions
245[[ $? > 0 ]] && echo " $COMMON_DIR/common-functions did not load.." && exit
246[[ $VERBOSITY > 0 ]] && echo "OK"
247[[ $VERBOSITY > 0 ]] && echo -n "Loading code module <$MODULE>..."
248source $MODULE
249[[ $? > 0 ]] && echo "$MODULE did not load.." && exit 2
250[[ $VERBOSITY > 0 ]] && echo "OK"
251#
252[[ $VERBOSITY > 0 ]] && echo "${SD_BORDER}${nl_}"
253
254
255#*******************************************************************#
256[[ $VERBOSITY > 0 ]] && echo -n "Loading function <func_check_version.sh>..."
257source $COMMON_DIR/func_check_version.sh
258[[ $? > 0 ]] && echo " function module did not load.." && exit 2
259[[ $VERBOSITY > 0 ]] && echo "OK"
260
261[[ $VERBOSITY > 0 ]] && echo -n "Loading function <func_validate_configs.sh>..."
262source $COMMON_DIR/func_validate_configs.sh
263[[ $? > 0 ]] && echo " function module did not load.." && exit 2
264[[ $VERBOSITY > 0 ]] && echo "OK"
265
266[[ $VERBOSITY > 0 ]] && echo -n "Loading function <custom_pkgs>..."
267source $COMMON_DIR/custom_pkgs
268[[ $? > 0 ]] && echo " function module did not load.." && exit 2
269[[ $VERBOSITY > 0 ]] && echo "OK"
270
271
272[[ $VERBOSITY > 0 ]] && echo "${SD_BORDER}${nl_}"
273
274
275###################################
276### MAIN ###
277###################################
278
279# Check for build prereequisites.
280echo
281 check_prerequisites
282echo "${SD_BORDER}${nl_}"
283
284validate_config
285echo "${SD_BORDER}${nl_}"
286echo -n "Are you happy with these settings? yes/no (no): "
287read ANSWER
288if [ x$ANSWER != "xyes" ] ; then
289 echo "${nl_}Rerun make to fix the configuration options.${nl_}"
290 exit 1
291fi
292echo "${nl_}${SD_BORDER}${nl_}"
293
294# Load additional modules or configuration files based on global settings
295# compare module
296if [[ "$COMPARE" = "y" ]]; then
297 [[ $VERBOSITY > 0 ]] && echo -n "Loading compare module..."
298 source $COMMON_DIR/func_compare.sh
299 [[ $? > 0 ]] && echo "$COMMON_DIR/func_compare.sh did not load.." && exit
300 [[ $VERBOSITY > 0 ]] && echo "OK"
301fi
302#
303# optimize module
304if [[ "$OPTIMIZE" != "0" ]]; then
305 [[ $VERBOSITY > 0 ]] && echo -n "Loading optimization module..."
306 source optimize/optimize_functions
307 [[ $? > 0 ]] && echo " optimize/optimize_functions did not load.." && exit
308 [[ $VERBOSITY > 0 ]] && echo "OK"
309 #
310 # optimize configurations
311 [[ $VERBOSITY > 0 ]] && echo -n "Loading optimization config..."
312 source optimize/opt_config
313 [[ $? > 0 ]] && echo " optimize/opt_config did not load.." && exit
314 [[ $VERBOSITY > 0 ]] && echo "OK"
315 # Validate optimize settings, if required
316 validate_opt_settings
317fi
318#
319
320if [[ "$REBUILD_MAKEFILE" = "n" ]] ; then
321
322 # If $BUILDDIR has subdirectories like tools/ or bin/, stop the run
323 # and notify the user about that.
324 if [ -d $BUILDDIR/tools -o -d $BUILDDIR/bin ] && [ -z $CLEAN ] ; then
325 eval "$no_empty_builddir"
326 fi
327
328 # If requested, clean the build directory
329 clean_builddir
330
331 if [[ ! -d $JHALFSDIR ]]; then
332 mkdir -p $JHALFSDIR
333 fi
334 #
335 # Create $BUILDDIR/sources even though it could be created by get_sources()
336 if [[ ! -d $BUILDDIR/sources ]]; then
337 mkdir -p $BUILDDIR/sources
338 fi
339 #
340 # Create the log directory
341 if [[ ! -d $LOGDIR ]]; then
342 mkdir $LOGDIR
343 fi
344 >$LOGDIR/$LOG
345 #
346 [[ "$TEST" != "0" ]] && [[ ! -d $TESTLOGDIR ]] && install -d -m 1777 $TESTLOGDIR
347 #
348 cp $COMMON_DIR/{makefile-functions,progress_bar.sh} $JHALFSDIR/
349 #
350 [[ "$OPTIMIZE" != "0" ]] && cp optimize/opt_override $JHALFSDIR/
351 #
352 if [[ "$COMPARE" = "y" ]]; then
353 mkdir -p $JHALFSDIR/extras
354 cp extras/* $JHALFSDIR/extras
355 fi
356 #
357 if [[ -n "$FILES" ]]; then
358 # pushd/popd necessary to deal with multiple files
359 pushd $PACKAGE_DIR 1> /dev/null
360 cp $FILES $JHALFSDIR/
361 popd 1> /dev/null
362 fi
363 #
364 if [[ "${PROGNAME}" = "lfs" ]]; then
365 if [[ "${CUSTOM_TOOLS}" = "y" ]]; then
366 echo "Copying custom tool scripts to $JHALFSDIR"
367 mkdir -p $JHALFSDIR/custom-commands/config
368 mkdir -p $JHALFSDIR/custom-commands/scripts
369 cp -Rf custom/* $JHALFSDIR/custom-commands
370 fi
371 fi
372
373 #
374 if [[ "$REPORT" = "y" ]]; then
375 cp $COMMON_DIR/create-sbu_du-report.sh $JHALFSDIR/
376 # After being sure that all looks sane, dump the settings to a file
377 # This file will be used to create the REPORT header
378 validate_config > $JHALFSDIR/jhalfs.config
379 fi
380 #
381 [[ "$GETPKG" = "y" ]] && cp $COMMON_DIR/urls.xsl $JHALFSDIR/
382 #
383 cp $COMMON_DIR/packages.xsl $JHALFSDIR/
384 #
385 sed 's,FAKEDIR,'$BOOK',' $PACKAGE_DIR/$XSL > $JHALFSDIR/${XSL}
386 export XSL=$JHALFSDIR/${XSL}
387
388 # Install blfs-tool, if requested.
389 if [[ "${BLFS_TOOL}" = "y" ]] ; then
390 # Install the files
391 [[ ! -d ${BUILDDIR}${BLFS_ROOT} ]] && mkdir -p ${BUILDDIR}${BLFS_ROOT}
392 cp -r BLFS/* ${BUILDDIR}${BLFS_ROOT}
393 cp -r menu ${BUILDDIR}${BLFS_ROOT}
394 cp $COMMON_DIR/progress_bar.sh ${BUILDDIR}${BLFS_ROOT}
395 cp README.BLFS ${BUILDDIR}${BLFS_ROOT}
396 # Clean-up
397 rm -rf ${BUILDDIR}${BLFS_ROOT}/libs/.svn
398 rm -rf ${BUILDDIR}${BLFS_ROOT}/menu/.svn
399 rm -rf ${BUILDDIR}${BLFS_ROOT}/menu/lxdialog/.svn
400 # Set some harcoded envars to their proper values
401 sed -i 's,blfs-xml,'$BLFS_XML',' ${BUILDDIR}${BLFS_ROOT}/{update_book.sh,libs/book.xsl}
402 sed -i 's,tracking-dir,'$TRACKING_DIR',' ${BUILDDIR}${BLFS_ROOT}/{update_book.sh,gen-makefile.sh}
403 # Copy the dependencies build scripts
404 cp -r $COMMON_DIR/blfs-tool-deps $JHALFSDIR/
405 rm -rf $JHALFSDIR/blfs-tool-deps/.svn
406 fi
407
408 get_book
409 echo "${SD_BORDER}${nl_}"
410
411 # Get the BLFS book, if requested.
412 if [[ "${BLFS_TOOL}" = "y" ]] ; then
413 echo -n "Downloading the BLFS document, $BLFS_BRANCH_ID version... "
414 if [[ ! -d ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML} ]] ; then
415 mkdir -p ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML}
416 svn co $SVN_2/BLFS/$BLFS_TREE ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML} >>$LOGDIR/$LOG 2>&1
417 else
418 pushd ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML} 1> /dev/null
419 svn up >>$LOGDIR/$LOG 2>&1
420 popd 1> /dev/null
421 fi
422 echo -ne "done\n"
423 echo "${SD_BORDER}${nl_}"
424 fi
425
426fi
427
428# When regeneration the Makefile we need to know also the canonical book version
429if [[ "$REBUILD_MAKEFILE" = "y" ]] ; then
430 case $PROGNAME in
431 clfs | clfs2 )
432 VERSION=$(xmllint --noent $JHALFSDIR/$BOOK/prologue/$ARCH/bookinfo.xml 2>/dev/null | grep subtitle | sed -e 's/^.*ion //' -e 's/<\/.*//') ;;
433 *)
434 VERSION=$(xmllint --noent $JHALFSDIR/$BOOK/prologue/bookinfo.xml 2>/dev/null | grep subtitle | sed -e 's/^.*ion //' -e 's/<\/.*//') ;;
435 esac
436fi
437
438build_Makefile
439if [[ "${PROGNAME}" = "lfs" ]]; then
440 if [[ "${CUSTOM_TOOLS}" = "y" ]]; then
441 add_CustomTools
442 fi
443fi
444echo "${SD_BORDER}${nl_}"
445
446run_make
Note: See TracBrowser for help on using the repository browser.