source: master.sh@ 0818ea6

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

Removed --help output.
Moved version and VT100 colors to master.sh

  • Property mode set to 100755
File size: 8.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
77if [ ! -L $0 ] ; then
78 echo "$version"
79 echo "${nl_}${tab_}${BOLD}${RED}This script cannot be called directly: EXITING ${OFF}${nl_}"
80 exit 1
81fi
82
83 PROGNAME=$(basename $0)
84 COMMON_DIR="common"
85PACKAGE_DIR=$(echo $PROGNAME | tr [a-z] [A-Z])
86 MODULE=$PACKAGE_DIR/master.sh
87 VERBOSITY=1
88
89
90[[ $VERBOSITY > 0 ]] && echo -n "Loading config params from <configuration>..."
91source configuration
92[[ $? > 0 ]] && echo "file:configuration did not load.." && exit 1
93[[ $VERBOSITY > 0 ]] && echo "OK"
94
95 #--- Envars not sourced from configuration (yet)
96declare -r SVN="svn://svn.linuxfromscratch.org"
97declare -r LOG=000-masterscript.log
98
99case $PROGNAME in
100 clfs2) LFSVRS=development; TREE=branches/clfs-2.0/BOOK ;;
101 *) LFSVRS=development; TREE=trunk/BOOK ;;
102esac
103
104if [[ ! -z ${BRANCH_ID} ]]; then
105 case $BRANCH_ID in
106 dev* | SVN | trunk )
107 case $PROGNAME in
108 clfs2 ) TREE=branches/clfs-2.0/BOOK ;;
109 *) TREE=trunk/BOOK ;;
110 esac
111 LFSVRS=development
112 ;;
113 branch-* )
114 LFSVRS=${BRANCH_ID}
115 TREE=branches/${BRANCH_ID#branch-}/BOOK
116 ;;
117 * )
118 case $PROGNAME in
119 lfs | hlfs )
120 LFSVRS=${BRANCH_ID}
121 TREE=tags/${BRANCH_ID}/BOOK
122 ;;
123 clfs | clfs2 )
124 LFSVRS=${BRANCH_ID}
125 TREE=tags/${BRANCH_ID}
126 ;;
127 esac
128 ;;
129 esac
130fi
131# These are boolean vars generated from Config.in.
132# ISSUE: If a boolean parameter is not set <true> that
133# variable is not defined by the menu app. This can
134# cause a headache if you are not careful.
135# The following parameters MUST be created and have a
136# default value.
137RUNMAKE=${RUNMAKE:-n}
138GETPKG=${GETPKG:-n}
139GETKERNEL=${GETKERNEL:-n}
140COMPARE=${COMPARE:-n}
141RUN_FARCE=${RUN_FARCE:-n}
142RUN_ICA=${RUN_ICA:-n}
143BOMB_TEST=${BOMB_TEST:-n}
144STRIP=${STRIP:=n}
145REPORT=${REPORT:=n}
146VIMLANG=${VIMLANG:-n}
147KEYMAP=${KEYMAP:=none}
148GRSECURITY_HOST=${GRSECURITY_HOST:-n}
149
150
151[[ $VERBOSITY > 0 ]] && echo -n "Loading common-functions module..."
152source $COMMON_DIR/common-functions
153[[ $? > 0 ]] && echo " $COMMON_DIR/common-functions did not load.." && exit
154[[ $VERBOSITY > 0 ]] && echo "OK"
155[[ $VERBOSITY > 0 ]] && echo -n "Loading code module <$MODULE>..."
156source $MODULE
157[[ $? > 0 ]] && echo "$MODULE did not load.." && exit 2
158[[ $VERBOSITY > 0 ]] && echo "OK"
159#
160[[ $VERBOSITY > 0 ]] && echo "${SD_BORDER}${nl_}"
161
162
163#===========================================================
164# If the var BOOK contains something then, maybe, it points
165# to a working doc.. set WC=1, else 'null'
166#===========================================================
167WC=${BOOK:+y}
168#===========================================================
169
170#===================================================
171# Set the document location...
172#===================================================
173BOOK=${BOOK:=$PROGNAME-$LFSVRS}
174#===================================================
175
176
177#*******************************************************************#
178[[ $VERBOSITY > 0 ]] && echo -n "Loading function <func_check_version.sh>..."
179source $COMMON_DIR/func_check_version.sh
180[[ $? > 0 ]] && echo " function module did not load.." && exit 2
181[[ $VERBOSITY > 0 ]] && echo "OK"
182
183[[ $VERBOSITY > 0 ]] && echo -n "Loading function <func_validate_configs.sh>..."
184source $COMMON_DIR/func_validate_configs.sh
185[[ $? > 0 ]] && echo " function module did not load.." && exit 2
186[[ $VERBOSITY > 0 ]] && echo "OK"
187[[ $VERBOSITY > 0 ]] && echo "${SD_BORDER}${nl_}"
188
189
190###################################
191### MAIN ###
192###################################
193
194# Check for minimum bash,tar,gcc and kernel versions
195echo
196check_version "2.6.2" "`uname -r`" "KERNEL"
197check_version "3.0" "$BASH_VERSION" "BASH"
198check_version "3.0" "`gcc -dumpversion`" "GCC"
199tarVer=`tar --version | head -n1 | cut -d " " -f4`
200check_version "1.15.0" "${tarVer}" "TAR"
201echo "${SD_BORDER}${nl_}"
202
203validate_config
204echo "${SD_BORDER}${nl_}"
205echo -n "Are you happy with these settings? yes/no (no): "
206read ANSWER
207if [ x$ANSWER != "xyes" ] ; then
208 echo "${nl_}Fix the configuration options and rerun the script.${nl_}"
209 exit 1
210fi
211echo "${nl_}${SD_BORDER}${nl_}"
212
213# Load additional modules or configuration files based on global settings
214# compare module
215if [[ "$COMPARE" = "y" ]]; then
216 [[ $VERBOSITY > 0 ]] && echo -n "Loading compare module..."
217 source $COMMON_DIR/func_compare.sh
218 [[ $? > 0 ]] && echo "$COMMON_DIR/func_compare.sh did not load.." && exit
219 [[ $VERBOSITY > 0 ]] && echo "OK"
220fi
221#
222# optimize module
223if [[ "$OPTIMIZE" != "0" ]]; then
224 [[ $VERBOSITY > 0 ]] && echo -n "Loading optimization module..."
225 source optimize/optimize_functions
226 [[ $? > 0 ]] && echo " optimize/optimize_functions did not load.." && exit
227 [[ $VERBOSITY > 0 ]] && echo "OK"
228 #
229 # optimize configurations
230 [[ $VERBOSITY > 0 ]] && echo -n "Loading optimization config..."
231 source optimize/opt_config
232 [[ $? > 0 ]] && echo " optimize/opt_config did not load.." && exit
233 [[ $VERBOSITY > 0 ]] && echo "OK"
234 # Validate optimize settings, if required
235 validate_opt_settings
236fi
237#
238
239# If $BUILDDIR has subdirectories like tools/ or bin/, stop the run
240# and notify the user about that.
241if [ -d $BUILDDIR/tools -o -d $BUILDDIR/bin ] && [ -z $CLEAN ] ; then
242 eval "$no_empty_builddir"
243fi
244
245# If requested, clean the build directory
246clean_builddir
247
248if [[ ! -d $JHALFSDIR ]]; then
249 mkdir -p $JHALFSDIR
250fi
251#
252# Create $BUILDDIR/sources even though it could be created by get_sources()
253if [[ ! -d $BUILDDIR/sources ]]; then
254 mkdir -p $BUILDDIR/sources
255fi
256#
257# Create the log directory
258if [[ ! -d $LOGDIR ]]; then
259 mkdir $LOGDIR
260fi
261>$LOGDIR/$LOG
262#
263[[ "$TEST" != "0" ]] && [[ ! -d $TESTLOGDIR ]] && install -d -m 1777 $TESTLOGDIR
264#
265cp $COMMON_DIR/{makefile-functions,progress_bar.sh} $JHALFSDIR/
266#
267[[ "$OPTIMIZE" != "0" ]] && cp optimize/opt_override $JHALFSDIR/
268#
269if [[ "$COMPARE" = "y" ]]; then
270 mkdir -p $JHALFSDIR/extras
271 cp extras/* $JHALFSDIR/extras
272fi
273#
274if [[ -n "$FILES" ]]; then
275 # pushd/popd necessary to deal with multiple files
276 pushd $PACKAGE_DIR 1> /dev/null
277 cp $FILES $JHALFSDIR/
278 popd 1> /dev/null
279fi
280#
281if [[ "$REPORT" = "y" ]]; then
282 cp $COMMON_DIR/create-sbu_du-report.sh $JHALFSDIR/
283 # After being sure that all looks sane, dump the settings to a file
284 # This file will be used to create the REPORT header
285 validate_config > $JHALFSDIR/jhalfs.config
286fi
287#
288[[ "$GETPKG" = "y" ]] && cp $COMMON_DIR/urls.xsl $JHALFSDIR/
289#
290cp $COMMON_DIR/packages.xsl $JHALFSDIR/
291#
292sed 's,FAKEDIR,'$BOOK',' $PACKAGE_DIR/$XSL > $JHALFSDIR/${XSL}
293export XSL=$JHALFSDIR/${XSL}
294
295get_book
296echo "${SD_BORDER}${nl_}"
297
298build_Makefile
299echo "${SD_BORDER}${nl_}"
300
301run_make
Note: See TracBrowser for help on using the repository browser.