source: jhalfs@ acaab72

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

Installing blfs-tool files.

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