source: jhalfs@ 0510381

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

Merged r3175:3181 from trunk.

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