source: jhalfs@ e2dfa2c

experimental
Last change on this file since e2dfa2c was e2dfa2c, checked in by Manuel Canales Esparcia <manuel@…>, 17 years ago

Migrated optimizations support to XSL-based code.

  • Property mode set to 100755
File size: 10.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-X${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-X\"${OFF} builder tool (experimental) \$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}
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}
121
122# Sanity check on the location of $BUILDDIR / $JHALFSDIR
123CWD=$(cd `dirname $0` && pwd)
124if [[ $JHALFSDIR == $CWD ]]; then
125 echo " The jhalfs source directory conflicts with the jhalfs build directory."
126 echo " Please move the source directory or change the build directory."
127 exit 2
128fi
129
130# Book surces envars
131BRANCH_ID=${BRANCH_ID:=development}
132
133case $BRANCH_ID in
134 development )
135 case $PROGNAME in
136 clfs2 ) TREE=branches/clfs-sysroot/BOOK ;;
137 clfs3 ) TREE=branches/clfs-embedded/BOOK ;;
138 *) TREE=trunk/BOOK ;;
139 esac
140 LFSVRS=development
141 ;;
142 *EDIT* ) echo " You forgot to set the branch or stable book version."
143 echo " Please rerun make and fix the configuration."
144 exit 2 ;;
145 branch-* )
146 LFSVRS=${BRANCH_ID}
147 TREE=branches/${BRANCH_ID#branch-}/BOOK
148 ;;
149 * )
150 case $PROGNAME in
151 lfs | hlfs )
152 LFSVRS=${BRANCH_ID}
153 TREE=tags/${BRANCH_ID}/BOOK
154 ;;
155 clfs | clfs2 | clfs3)
156 LFSVRS=${BRANCH_ID}
157 TREE=tags/${BRANCH_ID}
158 ;;
159 esac
160 ;;
161esac
162
163# Set the document location...
164BOOK=${BOOK:=$PROGNAME-$LFSVRS}
165
166# blfs-tool envars
167BLFS_TOOL=${BLFS_TOOL:-n}
168DEP_LIBXML=${DEP_LIBXML:-n}
169DEP_LIBXSLT=${DEP_LIBXSLT:-n}
170DEP_TIDY=${DEP_TIDY:-n}
171DEP_UNZIP=${DEP_UNZIP:-n}
172DEP_DBXML=${DEP_DBXML:-n}
173DEP_DBXSL=${DEP_DBXSL:-n}
174DEP_GPM=${DEP_GPM:-n}
175DEP_LYNX=${DEP_LYNX:-n}
176DEP_SUDO=${DEP_SUDO:-n}
177DEP_WGET=${DEP_WGET:-n}
178DEP_SVN=${DEP_SVN:-n}
179if [[ "${BLFS_TOOL}" = "y" ]] ; then
180 BLFS_BRANCH_ID=${BLFS_BRANCH_ID:=development}
181 case $BLFS_BRANCH_ID in
182 development ) BLFS_TREE=trunk/BOOK ;;
183 *EDIT* ) echo " You forgot to set the BLFS branch or stable book version."
184 echo " Please rerun make and fix the configuration."
185 exit 2 ;;
186 branch-* ) BLFS_TREE=branches/${BLFS_BRANCH_ID#branch-} ;;
187 * ) BLFS_TREE=tags/${BLFS_BRANCH_ID} ;;
188 esac
189fi
190
191#--- Envars not sourced from configuration
192case $PROGNAME in
193 clfs* ) declare -r SVN="http://svn.cross-lfs.org/svn/repos" ;;
194 * ) declare -r SVN="svn://svn.linuxfromscratch.org" ;;
195esac
196declare -r LOG=000-masterscript.log
197 # Needed to can fetch BLFS book sources when building CLFS
198declare -r SVN_2="svn://svn.linuxfromscratch.org"
199
200# Set true internal variables
201CODE_DIR=`pwd`
202COMMON_DIR="common"
203PACKAGE_DIR=$(echo $PROGNAME | tr '[a-z]' '[A-Z]')
204MODULE=$PACKAGE_DIR/master.sh
205
206# Qick fix until have the new code ready
207XSL=$CODE_DIR/$PACKAGE_DIR/$XSL
208
209[[ $VERBOSITY > 0 ]] && echo -n "Loading common-functions module..."
210source $COMMON_DIR/common-functions
211[[ $? > 0 ]] && echo " $COMMON_DIR/common-functions did not load.." && exit
212[[ $VERBOSITY > 0 ]] && echo "OK"
213[[ $VERBOSITY > 0 ]] && echo -n "Loading code module <$MODULE>..."
214source $MODULE
215[[ $? > 0 ]] && echo "$MODULE did not load.." && exit 2
216[[ $VERBOSITY > 0 ]] && echo "OK"
217#
218[[ $VERBOSITY > 0 ]] && echo "${SD_BORDER}${nl_}"
219
220
221#*******************************************************************#
222[[ $VERBOSITY > 0 ]] && echo -n "Loading function <func_check_version.sh>..."
223source $COMMON_DIR/libs/func_check_version.sh
224[[ $? > 0 ]] && echo " function module did not load.." && exit 2
225[[ $VERBOSITY > 0 ]] && echo "OK"
226
227[[ $VERBOSITY > 0 ]] && echo -n "Loading function <func_validate_configs.sh>..."
228source $COMMON_DIR/libs/func_validate_configs.sh
229[[ $? > 0 ]] && echo " function module did not load.." && exit 2
230[[ $VERBOSITY > 0 ]] && echo "OK"
231
232[[ $VERBOSITY > 0 ]] && echo -n "Loading function <func_custom_pkgs>..."
233source $COMMON_DIR/libs/func_custom_pkgs
234[[ $? > 0 ]] && echo " function module did not load.." && exit 2
235[[ $VERBOSITY > 0 ]] && echo "OK"
236
237
238[[ $VERBOSITY > 0 ]] && echo "${SD_BORDER}${nl_}"
239
240
241###################################
242### MAIN ###
243###################################
244
245# Check for build prereequisites.
246echo
247 check_prerequisites
248echo "${SD_BORDER}${nl_}"
249
250validate_config
251echo "${SD_BORDER}${nl_}"
252echo -n "Are you happy with these settings? yes/no (no): "
253read ANSWER
254if [ x$ANSWER != "xyes" ] ; then
255 echo "${nl_}Rerun make to fix the configuration options.${nl_}"
256 exit 1
257fi
258echo "${nl_}${SD_BORDER}${nl_}"
259
260# Load additional modules or configuration files based on global settings
261# compare module
262if [[ "$COMPARE" = "y" ]]; then
263 [[ $VERBOSITY > 0 ]] && echo -n "Loading compare module..."
264 source $COMMON_DIR/libs/func_compare.sh
265 [[ $? > 0 ]] && echo "$COMMON_DIR/libs/func_compare.sh did not load.." && exit
266 [[ $VERBOSITY > 0 ]] && echo "OK"
267fi
268#
269
270if [[ "$REBUILD_MAKEFILE" = "n" ]] ; then
271
272 # If $BUILDDIR has subdirectories like tools/ or bin/, stop the run
273 # and notify the user about that.
274 if [ -d $BUILDDIR/tools -o -d $BUILDDIR/bin ] && [ -z $CLEAN ] ; then
275 eval "$no_empty_builddir"
276 fi
277
278 # If requested, clean the build directory
279 clean_builddir
280
281 if [[ ! -d $JHALFSDIR ]]; then
282 mkdir -p $JHALFSDIR
283 fi
284
285 # Create $BUILDDIR/sources even though it could be created by get_sources()
286 if [[ ! -d $BUILDDIR/sources ]]; then
287 mkdir -p $BUILDDIR/sources
288 fi
289 #
290 # Create the log directory
291 if [[ ! -d $LOGDIR ]]; then
292 mkdir $LOGDIR
293 fi
294 >$LOGDIR/$LOG
295 #
296 # Copy common helper files
297 cp $COMMON_DIR/{makefile-functions,progress_bar.sh} $JHALFSDIR/
298 #
299
300 # Create the test-log directory, if needed
301 [[ "$TEST" != "0" ]] && [[ ! -d $TESTLOGDIR ]] && install -d -m 1777 $TESTLOGDIR
302 #
303 # Create the installed-files directory, if needed
304 [[ "$INSTALL_LOG" = "y" ]] && [[ ! -d $FILELOGDIR ]] && install -d -m 1777 $FILELOGDIR
305 #
306 # Prepare report creation, if needed
307 if [[ "$REPORT" = "y" ]]; then
308 cp $COMMON_DIR/create-sbu_du-report.sh $JHALFSDIR/
309 # After being sure that all looks sane, dump the settings to a file
310 # This file will be used to create the REPORT header
311 validate_config > $JHALFSDIR/jhalfs.config
312 fi
313 #
314 # Copy compare files, if needed
315 if [[ "$COMPARE" = "y" ]]; then
316 mkdir -p $JHALFSDIR/extras
317 cp extras/* $JHALFSDIR/extras
318 fi
319 #
320
321 # Install blfs-tool, if requested.
322 if [[ "${BLFS_TOOL}" = "y" ]] ; then
323 # Install the files
324 [[ ! -d ${BUILDDIR}${BLFS_ROOT} ]] && mkdir -p ${BUILDDIR}${BLFS_ROOT}
325 cp -r BLFS/* ${BUILDDIR}${BLFS_ROOT}
326 cp -r menu ${BUILDDIR}${BLFS_ROOT}
327 cp $COMMON_DIR/progress_bar.sh ${BUILDDIR}${BLFS_ROOT}
328 cp README.BLFS ${BUILDDIR}${BLFS_ROOT}
329 # Clean-up
330 rm -rf ${BUILDDIR}${BLFS_ROOT}/libs/.svn
331 rm -rf ${BUILDDIR}${BLFS_ROOT}/menu/.svn
332 rm -rf ${BUILDDIR}${BLFS_ROOT}/menu/lxdialog/.svn
333 # Set some harcoded envars to their proper values
334 sed -i 's,blfs-xml,'$BLFS_XML',' ${BUILDDIR}${BLFS_ROOT}/{update_book.sh,libs/book.xsl}
335 sed -i 's,tracking-dir,'$TRACKING_DIR',' ${BUILDDIR}${BLFS_ROOT}/{update_book.sh,gen-makefile.sh}
336 fi
337 #
338
339 get_book
340 echo "${SD_BORDER}${nl_}"
341
342 # Get the BLFS book, if requested.
343 if [[ "${BLFS_TOOL}" = "y" ]] ; then
344 echo -n "Downloading the BLFS document, $BLFS_BRANCH_ID version... "
345 if [[ ! -d ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML} ]] ; then
346 mkdir -p ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML}
347 svn co $SVN_2/BLFS/$BLFS_TREE ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML} >>$LOGDIR/$LOG 2>&1
348 else
349 pushd ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML} 1> /dev/null
350 svn up >>$LOGDIR/$LOG 2>&1
351 popd 1> /dev/null
352 fi
353 echo -ne "done\n"
354 echo "${SD_BORDER}${nl_}"
355 fi
356
357fi
358
359# When regenerating the Makefile we need to know also the canonical book version
360if [[ "$REBUILD_MAKEFILE" = "y" ]] ; then
361 case $PROGNAME in
362 clfs | clfs2 | clfs3 )
363 VERSION=$(xmllint --noent $JHALFSDIR/$BOOK/prologue/$ARCH/bookinfo.xml 2>/dev/null | grep subtitle | sed -e 's/^.*ion //' -e 's/<\/.*//') ;;
364 *)
365 VERSION=$(xmllint --noent $JHALFSDIR/$BOOK/prologue/bookinfo.xml 2>/dev/null | grep subtitle | sed -e 's/^.*ion //' -e 's/<\/.*//') ;;
366 esac
367fi
368
369build_Makefile
370
371echo "${SD_BORDER}${nl_}"
372
373run_make
Note: See TracBrowser for help on using the repository browser.