source: jhalfs@ 66c3162

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

Removed blfs-tool envars and scripts.

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