source: jhalfs@ 1ef456b

2.3
Last change on this file since 1ef456b was 0873ccc, checked in by George Boudreau <georgeb@…>, 15 years ago

spelling & grammar changes supplied by Gilles Espinasse

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