source: jhalfs@ d992b48

2.3.x
Last change on this file since d992b48 was 390de72, checked in by Manuel Canales Esparcia <manuel@…>, 17 years ago

Merged r3438:3440 from trunk.

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