source: jhalfs@ 2b0f8a5

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

Big change allowed by using only menuconfig.

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