source: jhalfs@ c03e5d0

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

Made envars from blfs-tool dependencies, to can update it more easy.

  • Property mode set to 100755
File size: 11.0 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
163 # dependencies envars, to can update it more easy.
164 # libxml2
165 LIBXML_PKG="libxml2-2.6.26.tar.gz"
166 LIBXML_URL="ftp://xmlsoft.org/libxml2/${LIBXML_PKG}"
167 LIBXML_MD5="2d8d3805041edab967368b497642f981"
168 # libxslt
169 LIBXSLT_PKG="libxslt-1.1.17.tar.gz"
170 LIBXSLT_URL="ftp://xmlsoft.org/libxslt/${LIBXSLT_PKG}"
171 LIBXSLT_MD5="fde6a7a93c0eb14cba628692fa3a1000"
172 # DocBook XSL
173 DBXSL_PKG="docbook-xsl-1.69.1.tar.bz2"
174 DBXSL_URL="http://prdownloads.sourceforge.net/docbook/${DBXSL_PKG}"
175 DBXSL_MD5="6ebd29a67f2dcc3f2220f475ee6f6552"
176 # Links
177 LINKS_PKG="links-2.1pre21.tar.bz2"
178 LINKS_URL="http://links.twibright.com/download/${LINKS_PKG}"
179 LINKS_MD5="7687e2c32e337e11c6e9d8cd8c5202c9"
180 # sudo
181 SUDO_PKG="sudo-1.6.8p12.tar.gz"
182 SUDO_URL="http://www.courtesan.com/sudo/dist/${SUDO_PKG}"
183 SUDO_MD5="b29893c06192df6230dd5f340f3badf5"
184 # wget
185 WGET_PKG="wget-1.10.2.tar.gz"
186 WGET_URL="ftp://ftp.gnu.org/gnu/wget/${WGET_PKG}"
187 WGET_MD5="795fefbb7099f93e2d346b026785c4b8"
188 # Subversion
189 SVN_PKG="subversion-1.3.1.tar.bz2"
190 SVN_URL="http://subversion.tigris.org/tarballs/${SVN_PKG}"
191 SVN_MD5="07b95963968ae345541ca99d0e7bf082"
192 # GPM
193 GPM_PKG="gpm-1.20.1.tar.bz2"
194 GPM_URL="ftp://arcana.linux.it/pub/gpm/${GPM_PKG}"
195 GPM_MD5="2c63e827d755527950d9d13fe3d87692"
196fi
197
198# Set true internal variables
199COMMON_DIR="common"
200PACKAGE_DIR=$(echo $PROGNAME | tr [a-z] [A-Z])
201MODULE=$PACKAGE_DIR/master.sh
202
203
204[[ $VERBOSITY > 0 ]] && echo -n "Loading common-functions module..."
205source $COMMON_DIR/common-functions
206[[ $? > 0 ]] && echo " $COMMON_DIR/common-functions did not load.." && exit
207[[ $VERBOSITY > 0 ]] && echo "OK"
208[[ $VERBOSITY > 0 ]] && echo -n "Loading code module <$MODULE>..."
209source $MODULE
210[[ $? > 0 ]] && echo "$MODULE did not load.." && exit 2
211[[ $VERBOSITY > 0 ]] && echo "OK"
212#
213[[ $VERBOSITY > 0 ]] && echo "${SD_BORDER}${nl_}"
214
215
216#*******************************************************************#
217[[ $VERBOSITY > 0 ]] && echo -n "Loading function <func_check_version.sh>..."
218source $COMMON_DIR/func_check_version.sh
219[[ $? > 0 ]] && echo " function module did not load.." && exit 2
220[[ $VERBOSITY > 0 ]] && echo "OK"
221
222[[ $VERBOSITY > 0 ]] && echo -n "Loading function <func_validate_configs.sh>..."
223source $COMMON_DIR/func_validate_configs.sh
224[[ $? > 0 ]] && echo " function module did not load.." && exit 2
225[[ $VERBOSITY > 0 ]] && echo "OK"
226[[ $VERBOSITY > 0 ]] && echo "${SD_BORDER}${nl_}"
227
228
229###################################
230### MAIN ###
231###################################
232
233# Check for minimum bash,tar,gcc and kernel versions
234echo
235check_version "2.6.2" "`uname -r`" "KERNEL"
236check_version "3.0" "$BASH_VERSION" "BASH"
237check_version "3.0" "`gcc -dumpversion`" "GCC"
238tarVer=`tar --version | head -n1 | cut -d " " -f4`
239check_version "1.15.0" "${tarVer}" "TAR"
240echo "${SD_BORDER}${nl_}"
241
242validate_config
243echo "${SD_BORDER}${nl_}"
244echo -n "Are you happy with these settings? yes/no (no): "
245read ANSWER
246if [ x$ANSWER != "xyes" ] ; then
247 echo "${nl_}Fix the configuration options and rerun the script.${nl_}"
248 exit 1
249fi
250echo "${nl_}${SD_BORDER}${nl_}"
251
252# Load additional modules or configuration files based on global settings
253# compare module
254if [[ "$COMPARE" = "y" ]]; then
255 [[ $VERBOSITY > 0 ]] && echo -n "Loading compare module..."
256 source $COMMON_DIR/func_compare.sh
257 [[ $? > 0 ]] && echo "$COMMON_DIR/func_compare.sh did not load.." && exit
258 [[ $VERBOSITY > 0 ]] && echo "OK"
259fi
260#
261# optimize module
262if [[ "$OPTIMIZE" != "0" ]]; then
263 [[ $VERBOSITY > 0 ]] && echo -n "Loading optimization module..."
264 source optimize/optimize_functions
265 [[ $? > 0 ]] && echo " optimize/optimize_functions did not load.." && exit
266 [[ $VERBOSITY > 0 ]] && echo "OK"
267 #
268 # optimize configurations
269 [[ $VERBOSITY > 0 ]] && echo -n "Loading optimization config..."
270 source optimize/opt_config
271 [[ $? > 0 ]] && echo " optimize/opt_config did not load.." && exit
272 [[ $VERBOSITY > 0 ]] && echo "OK"
273 # Validate optimize settings, if required
274 validate_opt_settings
275fi
276#
277
278# If $BUILDDIR has subdirectories like tools/ or bin/, stop the run
279# and notify the user about that.
280if [ -d $BUILDDIR/tools -o -d $BUILDDIR/bin ] && [ -z $CLEAN ] ; then
281 eval "$no_empty_builddir"
282fi
283
284# If requested, clean the build directory
285clean_builddir
286
287if [[ ! -d $JHALFSDIR ]]; then
288 mkdir -p $JHALFSDIR
289fi
290#
291# Create $BUILDDIR/sources even though it could be created by get_sources()
292if [[ ! -d $BUILDDIR/sources ]]; then
293 mkdir -p $BUILDDIR/sources
294fi
295#
296# Create the log directory
297if [[ ! -d $LOGDIR ]]; then
298 mkdir $LOGDIR
299fi
300>$LOGDIR/$LOG
301#
302[[ "$TEST" != "0" ]] && [[ ! -d $TESTLOGDIR ]] && install -d -m 1777 $TESTLOGDIR
303#
304cp $COMMON_DIR/{makefile-functions,progress_bar.sh} $JHALFSDIR/
305#
306[[ "$OPTIMIZE" != "0" ]] && cp optimize/opt_override $JHALFSDIR/
307#
308if [[ "$COMPARE" = "y" ]]; then
309 mkdir -p $JHALFSDIR/extras
310 cp extras/* $JHALFSDIR/extras
311fi
312#
313if [[ -n "$FILES" ]]; then
314 # pushd/popd necessary to deal with multiple files
315 pushd $PACKAGE_DIR 1> /dev/null
316 cp $FILES $JHALFSDIR/
317 popd 1> /dev/null
318fi
319#
320if [[ "$REPORT" = "y" ]]; then
321 cp $COMMON_DIR/create-sbu_du-report.sh $JHALFSDIR/
322 # After being sure that all looks sane, dump the settings to a file
323 # This file will be used to create the REPORT header
324 validate_config > $JHALFSDIR/jhalfs.config
325fi
326#
327[[ "$GETPKG" = "y" ]] && cp $COMMON_DIR/urls.xsl $JHALFSDIR/
328#
329cp $COMMON_DIR/packages.xsl $JHALFSDIR/
330#
331sed 's,FAKEDIR,'$BOOK',' $PACKAGE_DIR/$XSL > $JHALFSDIR/${XSL}
332export XSL=$JHALFSDIR/${XSL}
333
334# Install blfs-tool, if requested.
335if [[ "${BLFS_TOOL}" = "y" ]] ; then
336 # Install the files
337 [[ ! -d ${BUILDDIR}${BLFS_ROOT} ]] && mkdir -p ${BUILDDIR}${BLFS_ROOT}
338 cp -r BLFS/* ${BUILDDIR}${BLFS_ROOT}
339 cp -r menu ${BUILDDIR}${BLFS_ROOT}
340 cp $COMMON_DIR/progress_bar.sh ${BUILDDIR}${BLFS_ROOT}
341 cp README.BLFS ${BUILDDIR}${BLFS_ROOT}
342 # Clean-up
343 rm -rf ${BUILDDIR}${BLFS_ROOT}/libs/.svn
344 rm -rf ${BUILDDIR}${BLFS_ROOT}/menu/.svn
345 rm -rf ${BUILDDIR}${BLFS_ROOT}/menu/lxdialog/.svn
346 # Set some harcoded envars to their proper values
347 sed -i 's,blfs-xml,'$BLFS_XML',' ${BUILDDIR}${BLFS_ROOT}/{update_book.sh,libs/book.xsl}
348 sed -i 's,tracking-dir,'$TRACKING_DIR',' ${BUILDDIR}${BLFS_ROOT}/{update_book.sh,gen-makefile.sh}
349fi
350
351get_book
352echo "${SD_BORDER}${nl_}"
353
354# Get the BLFS book, if requested.
355if [[ "${BLFS_TOOL}" = "y" ]] ; then
356 echo -n "Downloading the BLFS document, $BLFS_BRANCH_ID version... "
357 if [[ ! -d ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML} ]] ; then
358 mkdir -p ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML}
359 svn co $SVN/BLFS/$TREE ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML} >>$LOGDIR/$LOG 2>&1
360 else
361 pushd ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML} 1> /dev/null
362 svn up >>$LOGDIR/$LOG 2>&1
363 popd 1> /dev/null
364 fi
365 echo -ne "done\n"
366 echo "${SD_BORDER}${nl_}"
367fi
368
369build_Makefile
370echo "${SD_BORDER}${nl_}"
371
372run_make
Note: See TracBrowser for help on using the repository browser.