source: jhalfs@ aecb378

2.3 2.3.x 2.4 ablfs ablfs-more legacy new_features trunk
Last change on this file since aecb378 was 8ed8336, checked in by George Boudreau <georgeb@…>, 18 years ago

Remove previous addition..

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