source: jhalfs@ 2ee1d11

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

Merged r3147:3173 from trunk.

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