source: jhalfs@ 6d48bb7

2.3 2.3.x 2.4 ablfs ablfs-more legacy new_features trunk
Last change on this file since 6d48bb7 was 486e9a7, checked in by Manuel Canales Esparcia <manuel@…>, 17 years ago

Set default value for $CLEAN

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