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
RevLine 
[0170229]1#!/bin/bash
[12a5707]2# $Id$
[0170229]3set -e
4
[0818ea6]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
[0170229]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() {
[9e627f6]45 echo -e "\n${L_arrow}${BOLD}jhalfs-X${R_arrow} exit${OFF}\n"
[0170229]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
[0818ea6]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"
[0170229]76
77if [ ! -L $0 ] ; then
[0818ea6]78 echo "$version"
[0170229]79 echo "${nl_}${tab_}${BOLD}${RED}This script cannot be called directly: EXITING ${OFF}${nl_}"
80 exit 1
81fi
82
[1ad9211]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
[12a5707]88
[0170229]89
[1ad9211]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"
[9e627f6]94
[3c96826]95 #--- Envars not sourced from configuration (yet)
[1ad9211]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 )
[398a037]107 case $PROGNAME in
108 clfs2 ) TREE=branches/clfs-2.0/BOOK ;;
109 *) TREE=trunk/BOOK ;;
110 esac
111 LFSVRS=development
112 ;;
113 branch-* )
[1ad9211]114 LFSVRS=${BRANCH_ID}
115 TREE=branches/${BRANCH_ID#branch-}/BOOK
[398a037]116 ;;
117 * )
118 case $PROGNAME in
119 lfs | hlfs )
[1ad9211]120 LFSVRS=${BRANCH_ID}
[398a037]121 TREE=tags/${BRANCH_ID}/BOOK
[1ad9211]122 ;;
[398a037]123 clfs | clfs2 )
[1ad9211]124 LFSVRS=${BRANCH_ID}
125 TREE=tags/${BRANCH_ID}
126 ;;
[398a037]127 esac
128 ;;
[1ad9211]129 esac
[613d46b]130fi
[1ad9211]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}
[0170229]149
[47fddc8]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
[0170229]163#===========================================================
164# If the var BOOK contains something then, maybe, it points
165# to a working doc.. set WC=1, else 'null'
166#===========================================================
[1ad9211]167WC=${BOOK:+y}
[0170229]168#===========================================================
169
[1ad9211]170#===================================================
171# Set the document location...
172#===================================================
173BOOK=${BOOK:=$PROGNAME-$LFSVRS}
174#===================================================
175
[0170229]176
177#*******************************************************************#
[26a8fdf]178[[ $VERBOSITY > 0 ]] && echo -n "Loading function <func_check_version.sh>..."
[12a5707]179source $COMMON_DIR/func_check_version.sh
180[[ $? > 0 ]] && echo " function module did not load.." && exit 2
[26a8fdf]181[[ $VERBOSITY > 0 ]] && echo "OK"
[0170229]182
[26a8fdf]183[[ $VERBOSITY > 0 ]] && echo -n "Loading function <func_validate_configs.sh>..."
[12a5707]184source $COMMON_DIR/func_validate_configs.sh
185[[ $? > 0 ]] && echo " function module did not load.." && exit 2
[26a8fdf]186[[ $VERBOSITY > 0 ]] && echo "OK"
[65d83a6]187[[ $VERBOSITY > 0 ]] && echo "${SD_BORDER}${nl_}"
[0170229]188
189
190###################################
[4612459]191### MAIN ###
[0170229]192###################################
193
[47fddc8]194# Check for minimum bash,tar,gcc and kernel versions
[f15fe85]195echo
[13e816f]196check_version "2.6.2" "`uname -r`" "KERNEL"
197check_version "3.0" "$BASH_VERSION" "BASH"
198check_version "3.0" "`gcc -dumpversion`" "GCC"
[e35e794]199tarVer=`tar --version | head -n1 | cut -d " " -f4`
200check_version "1.15.0" "${tarVer}" "TAR"
[65d83a6]201echo "${SD_BORDER}${nl_}"
[13e816f]202
[3051f95]203validate_config
[65d83a6]204echo "${SD_BORDER}${nl_}"
[7e6ddf0]205echo -n "Are you happy with these settings? yes/no (no): "
[13e816f]206read ANSWER
207if [ x$ANSWER != "xyes" ] ; then
208 echo "${nl_}Fix the configuration options and rerun the script.${nl_}"
209 exit 1
210fi
[65d83a6]211echo "${nl_}${SD_BORDER}${nl_}"
[13e816f]212
[3a27393]213# Load additional modules or configuration files based on global settings
[bb8e6bc]214# compare module
[47fddc8]215if [[ "$COMPARE" = "y" ]]; then
[bb8e6bc]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#
[2c2471d]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"
[3a27393]228 #
229 # optimize configurations
[bb8e6bc]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"
[3a27393]234 # Validate optimize settings, if required
235 validate_opt_settings
[bb8e6bc]236fi
237#
238
[13e816f]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
[0170229]248if [[ ! -d $JHALFSDIR ]]; then
[a110145]249 mkdir -p $JHALFSDIR
[0170229]250fi
[3a27393]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#
[e35e794]263[[ "$TEST" != "0" ]] && [[ ! -d $TESTLOGDIR ]] && install -d -m 1777 $TESTLOGDIR
[3a27393]264#
[1ad9211]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
[0170229]272fi
[1ad9211]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}
[0170229]294
295get_book
[65d83a6]296echo "${SD_BORDER}${nl_}"
[12a5707]297
[0170229]298build_Makefile
[65d83a6]299echo "${SD_BORDER}${nl_}"
[12a5707]300
[386bc75]301run_make
Note: See TracBrowser for help on using the repository browser.