source: jhalfs@ 6dc325f

experimental
Last change on this file since 6dc325f was 6dc325f, checked in by George Boudreau <georgeb@…>, 18 years ago

Added default value to CUSTOM_TOOLS parameter

  • Property mode set to 100755
File size: 13.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# These are boolean vars generated from Config.in.
94# ISSUE: If a boolean parameter is not set <true> that
95# variable is not defined by the menu app. This can
96# cause a headache if you are not careful.
97# The following parameters MUST be created and have a
98# default value.
99RUNMAKE=${RUNMAKE:-n}
100GETPKG=${GETPKG:-n}
101GETKERNEL=${GETKERNEL:-n}
102COMPARE=${COMPARE:-n}
103RUN_FARCE=${RUN_FARCE:-n}
104RUN_ICA=${RUN_ICA:-n}
105BOMB_TEST=${BOMB_TEST:-n}
106STRIP=${STRIP:=n}
107REPORT=${REPORT:=n}
108VIMLANG=${VIMLANG:-n}
109GRSECURITY_HOST=${GRSECURITY_HOST:-n}
110CUSTOM_TOOLS=${CUSTOM_TOOLS:-n}
111
112# Book surces envars
113BRANCH_ID=${BRANCH_ID:=development}
114
115case $BRANCH_ID in
116 development )
117 case $PROGNAME in
118 clfs2 ) TREE=branches/clfs-2.0/BOOK ;;
119 *) TREE=trunk/BOOK ;;
120 esac
121 LFSVRS=development
122 ;;
123 *EDIT* ) echo " You forgot to set the branch or stable book version."
124 echo " Please rerun make and fix the configuration."
125 exit 2 ;;
126 branch-* )
127 LFSVRS=${BRANCH_ID}
128 TREE=branches/${BRANCH_ID#branch-}/BOOK
129 ;;
130 2.4-branch )
131 LFSVRS=${BRANCH_ID}
132 TREE=branches/2.4-branch
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 # Tidy and Unzip version are harcoded also in wrt_blfs_tool_targets()
165 # libxml2
166 LIBXML_PKG="libxml2-2.6.26.tar.gz"
167 LIBXML_URL="ftp://xmlsoft.org/libxml2/${LIBXML_PKG}"
168 LIBXML_MD5="2d8d3805041edab967368b497642f981"
169 # libxslt
170 LIBXSLT_PKG="libxslt-1.1.17.tar.gz"
171 LIBXSLT_URL="ftp://xmlsoft.org/libxslt/${LIBXSLT_PKG}"
172 LIBXSLT_MD5="fde6a7a93c0eb14cba628692fa3a1000"
173 # tidy
174 TIDY_PKG="tidy_src_051026.tgz"
175 TIDY_URL="http://tidy.sourceforge.net/src/${TIDY_PKG}"
176 TIDY_MD5="1e39fafd6808978871346658c8da1454"
177 # tidy patch
178 TIDY_PATCH="tidy-051026-prevent_PRE_newlines-1.patch"
179 TIDY_PATCH_URL="http://www.linuxfromscratch.org/patches/blfs/svn/${TIDY_PATCH}"
180 TIDY_PATCH_MD5="82f67f7af58fc2c945b3410ae655cc1a"
181 # tidy docs
182 TIDY_DOCS="tidy_docs_051020.tgz"
183 TIDY_DOCS_URL="http://tidy.sourceforge.net/docs/${TIDY_DOCS}"
184 TIDY_DOCS_MD5="86de2f198e57399c063d2567b2a25628"
185 # unzip
186 UNZIP_PKG="unzip552.tar.gz"
187 UNZIP_URL="ftp://ftp.info-zip.org/pub/infozip/src/${UNZIP_PKG}"
188 UNZIP_MD5="9d23919999d6eac9217d1f41472034a9"
189 # DocBook XML DTD
190 DBXML_PKG="docbook-xml-4.4.zip"
191 DBXML_URL="http://www.docbook.org/xml/4.4/${DBXML_PKG}"
192 DBXML_MD5="cbb04e9a700955d88c50962ef22c1634"
193 # DocBook XSL
194 DBXSL_PKG="docbook-xsl-1.69.1.tar.bz2"
195 DBXSL_URL="http://prdownloads.sourceforge.net/docbook/${DBXSL_PKG}"
196 DBXSL_MD5="6ebd29a67f2dcc3f2220f475ee6f6552"
197 # Links
198 LINKS_PKG="links-2.1pre21.tar.bz2"
199 LINKS_URL="http://links.twibright.com/download/${LINKS_PKG}"
200 LINKS_MD5="7687e2c32e337e11c6e9d8cd8c5202c9"
201 # sudo
202 SUDO_PKG="sudo-1.6.8p12.tar.gz"
203 SUDO_URL="http://www.courtesan.com/sudo/dist/${SUDO_PKG}"
204 SUDO_MD5="b29893c06192df6230dd5f340f3badf5"
205 # sudo envar fix patch
206 SUDO_PATCH="sudo-1.6.8p12-envvar_fix-1.patch"
207 SUDO_PATCH_URL="http://www.linuxfromscratch.org/patches/blfs/svn/${SUDO_PATCH}"
208 SUDO_PATCH_MD5="454925aedfe054dff8fe0d03b209f986"
209 # wget
210 WGET_PKG="wget-1.10.2.tar.gz"
211 WGET_URL="ftp://ftp.gnu.org/gnu/wget/${WGET_PKG}"
212 WGET_MD5="795fefbb7099f93e2d346b026785c4b8"
213 # Subversion
214 SVN_PKG="subversion-1.3.1.tar.bz2"
215 SVN_URL="http://subversion.tigris.org/tarballs/${SVN_PKG}"
216 SVN_MD5="07b95963968ae345541ca99d0e7bf082"
217 # GPM
218 GPM_PKG="gpm-1.20.1.tar.bz2"
219 GPM_URL="ftp://arcana.linux.it/pub/gpm/${GPM_PKG}"
220 GPM_MD5="2c63e827d755527950d9d13fe3d87692"
221 # GPM segfaul patch
222 GPM_PATCH_1="gpm-1.20.1-segfault-1.patch"
223 GPM_PATCH_1_URL="http://www.linuxfromscratch.org/patches/blfs/svn/${GPM_PATCH_1}"
224 GPM_PATCH_1_MD5="8c88f92990ba7613014fcd1db14ca7ac"
225 # GPM silent patch
226 GPM_PATCH_2="gpm-1.20.1-silent-1.patch"
227 GPM_PATCH_2_URL="http://www.linuxfromscratch.org/patches/blfs/svn/${GPM_PATCH_2}"
228 GPM_PATCH_2_MD5="bf6cbefe20c6f15b587f19ebc1c8a37a"
229fi
230
231#--- Envars not sourced from configuration
232case $PROGNAME in
233 clfs* ) declare -r SVN="http://svn.cross-lfs.org/svn/repos" ;;
234 * ) declare -r SVN="svn://svn.linuxfromscratch.org" ;;
235esac
236declare -r LOG=000-masterscript.log
237 # Needed to can fetch BLFS book sources when building CLFS
238declare -r SVN_2="svn://svn.linuxfromscratch.org"
239
240# Set true internal variables
241COMMON_DIR="common"
242PACKAGE_DIR=$(echo $PROGNAME | tr [a-z] [A-Z])
243MODULE=$PACKAGE_DIR/master.sh
244
245
246[[ $VERBOSITY > 0 ]] && echo -n "Loading common-functions module..."
247source $COMMON_DIR/common-functions
248[[ $? > 0 ]] && echo " $COMMON_DIR/common-functions did not load.." && exit
249[[ $VERBOSITY > 0 ]] && echo "OK"
250[[ $VERBOSITY > 0 ]] && echo -n "Loading code module <$MODULE>..."
251source $MODULE
252[[ $? > 0 ]] && echo "$MODULE did not load.." && exit 2
253[[ $VERBOSITY > 0 ]] && echo "OK"
254#
255[[ $VERBOSITY > 0 ]] && echo "${SD_BORDER}${nl_}"
256
257
258#*******************************************************************#
259[[ $VERBOSITY > 0 ]] && echo -n "Loading function <func_check_version.sh>..."
260source $COMMON_DIR/func_check_version.sh
261[[ $? > 0 ]] && echo " function module did not load.." && exit 2
262[[ $VERBOSITY > 0 ]] && echo "OK"
263
264[[ $VERBOSITY > 0 ]] && echo -n "Loading function <func_validate_configs.sh>..."
265source $COMMON_DIR/func_validate_configs.sh
266[[ $? > 0 ]] && echo " function module did not load.." && exit 2
267[[ $VERBOSITY > 0 ]] && echo "OK"
268
269[[ $VERBOSITY > 0 ]] && echo -n "Loading function <custom_pkgs>..."
270source $COMMON_DIR/custom_pkgs
271[[ $? > 0 ]] && echo " function module did not load.." && exit 2
272[[ $VERBOSITY > 0 ]] && echo "OK"
273
274
275[[ $VERBOSITY > 0 ]] && echo "${SD_BORDER}${nl_}"
276
277
278###################################
279### MAIN ###
280###################################
281
282# Check for build prereequisites.
283echo
284 check_prerequisites
285echo "${SD_BORDER}${nl_}"
286
287validate_config
288echo "${SD_BORDER}${nl_}"
289echo -n "Are you happy with these settings? yes/no (no): "
290read ANSWER
291if [ x$ANSWER != "xyes" ] ; then
292 echo "${nl_}Rerun make to fix the configuration options.${nl_}"
293 exit 1
294fi
295echo "${nl_}${SD_BORDER}${nl_}"
296
297# Load additional modules or configuration files based on global settings
298# compare module
299if [[ "$COMPARE" = "y" ]]; then
300 [[ $VERBOSITY > 0 ]] && echo -n "Loading compare module..."
301 source $COMMON_DIR/func_compare.sh
302 [[ $? > 0 ]] && echo "$COMMON_DIR/func_compare.sh did not load.." && exit
303 [[ $VERBOSITY > 0 ]] && echo "OK"
304fi
305#
306# optimize module
307if [[ "$OPTIMIZE" != "0" ]]; then
308 [[ $VERBOSITY > 0 ]] && echo -n "Loading optimization module..."
309 source optimize/optimize_functions
310 [[ $? > 0 ]] && echo " optimize/optimize_functions did not load.." && exit
311 [[ $VERBOSITY > 0 ]] && echo "OK"
312 #
313 # optimize configurations
314 [[ $VERBOSITY > 0 ]] && echo -n "Loading optimization config..."
315 source optimize/opt_config
316 [[ $? > 0 ]] && echo " optimize/opt_config did not load.." && exit
317 [[ $VERBOSITY > 0 ]] && echo "OK"
318 # Validate optimize settings, if required
319 validate_opt_settings
320fi
321#
322
323# If $BUILDDIR has subdirectories like tools/ or bin/, stop the run
324# and notify the user about that.
325if [ -d $BUILDDIR/tools -o -d $BUILDDIR/bin ] && [ -z $CLEAN ] ; then
326 eval "$no_empty_builddir"
327fi
328
329# If requested, clean the build directory
330clean_builddir
331
332if [[ ! -d $JHALFSDIR ]]; then
333 mkdir -p $JHALFSDIR
334fi
335#
336# Create $BUILDDIR/sources even though it could be created by get_sources()
337if [[ ! -d $BUILDDIR/sources ]]; then
338 mkdir -p $BUILDDIR/sources
339fi
340#
341# Create the log directory
342if [[ ! -d $LOGDIR ]]; then
343 mkdir $LOGDIR
344fi
345>$LOGDIR/$LOG
346#
347[[ "$TEST" != "0" ]] && [[ ! -d $TESTLOGDIR ]] && install -d -m 1777 $TESTLOGDIR
348#
349cp $COMMON_DIR/{makefile-functions,progress_bar.sh} $JHALFSDIR/
350#
351[[ "$OPTIMIZE" != "0" ]] && cp optimize/opt_override $JHALFSDIR/
352#
353if [[ "$COMPARE" = "y" ]]; then
354 mkdir -p $JHALFSDIR/extras
355 cp extras/* $JHALFSDIR/extras
356fi
357#
358if [[ -n "$FILES" ]]; then
359 # pushd/popd necessary to deal with multiple files
360 pushd $PACKAGE_DIR 1> /dev/null
361 cp $FILES $JHALFSDIR/
362 popd 1> /dev/null
363fi
364#
365if [[ "${PROGNAME}" = "lfs" ]]; then
366 if [[ "${CUSTOM_TOOLS}" = "y" ]]; then
367 echo "Copying custom tool scripts to $JHALFSDIR"
368 mkdir -p $JHALFSDIR/custom-commands/config
369 mkdir -p $JHALFSDIR/custom-commands/scripts
370 cp -Rf custom/* $JHALFSDIR/custom-commands
371 fi
372fi
373
374#
375if [[ "$REPORT" = "y" ]]; then
376 cp $COMMON_DIR/create-sbu_du-report.sh $JHALFSDIR/
377 # After being sure that all looks sane, dump the settings to a file
378 # This file will be used to create the REPORT header
379 validate_config > $JHALFSDIR/jhalfs.config
380fi
381#
382[[ "$GETPKG" = "y" ]] && cp $COMMON_DIR/urls.xsl $JHALFSDIR/
383#
384cp $COMMON_DIR/packages.xsl $JHALFSDIR/
385#
386sed 's,FAKEDIR,'$BOOK',' $PACKAGE_DIR/$XSL > $JHALFSDIR/${XSL}
387export XSL=$JHALFSDIR/${XSL}
388
389# Install blfs-tool, if requested.
390if [[ "${BLFS_TOOL}" = "y" ]] ; then
391 # Install the files
392 [[ ! -d ${BUILDDIR}${BLFS_ROOT} ]] && mkdir -p ${BUILDDIR}${BLFS_ROOT}
393 cp -r BLFS/* ${BUILDDIR}${BLFS_ROOT}
394 cp -r menu ${BUILDDIR}${BLFS_ROOT}
395 cp $COMMON_DIR/progress_bar.sh ${BUILDDIR}${BLFS_ROOT}
396 cp README.BLFS ${BUILDDIR}${BLFS_ROOT}
397 # Clean-up
398 rm -rf ${BUILDDIR}${BLFS_ROOT}/libs/.svn
399 rm -rf ${BUILDDIR}${BLFS_ROOT}/menu/.svn
400 rm -rf ${BUILDDIR}${BLFS_ROOT}/menu/lxdialog/.svn
401 # Set some harcoded envars to their proper values
402 sed -i 's,blfs-xml,'$BLFS_XML',' ${BUILDDIR}${BLFS_ROOT}/{update_book.sh,libs/book.xsl}
403 sed -i 's,tracking-dir,'$TRACKING_DIR',' ${BUILDDIR}${BLFS_ROOT}/{update_book.sh,gen-makefile.sh}
404 # Copy the dependencies build scripts
405 cp -r $COMMON_DIR/blfs-tool-deps $JHALFSDIR/
406 rm -rf $JHALFSDIR/blfs-tool-deps/.svn
407fi
408
409get_book
410echo "${SD_BORDER}${nl_}"
411
412# Get the BLFS book, if requested.
413if [[ "${BLFS_TOOL}" = "y" ]] ; then
414 echo -n "Downloading the BLFS document, $BLFS_BRANCH_ID version... "
415 if [[ ! -d ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML} ]] ; then
416 mkdir -p ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML}
417 svn co $SVN_2/BLFS/$BLFS_TREE ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML} >>$LOGDIR/$LOG 2>&1
418 else
419 pushd ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML} 1> /dev/null
420 svn up >>$LOGDIR/$LOG 2>&1
421 popd 1> /dev/null
422 fi
423 echo -ne "done\n"
424 echo "${SD_BORDER}${nl_}"
425fi
426
427build_Makefile
428if [[ "${PROGNAME}" = "lfs" ]]; then
429 if [[ "${CUSTOM_TOOLS}" = "y" ]]; then
430 add_CustomTools
431 fi
432fi
433echo "${SD_BORDER}${nl_}"
434
435run_make
Note: See TracBrowser for help on using the repository browser.